update
This commit is contained in:
parent
e2cefa124e
commit
352735a843
|
@ -129,7 +129,8 @@ enum parse_error
|
||||||
dynamic_id_not_end,
|
dynamic_id_not_end,
|
||||||
multi_assign_lack_val,
|
multi_assign_lack_val,
|
||||||
lack_definition,
|
lack_definition,
|
||||||
lack_loop_iter
|
lack_loop_iter,
|
||||||
|
lack_func_content
|
||||||
};
|
};
|
||||||
|
|
||||||
void error_info(int line,int error_type,std::string error_str="")
|
void error_info(int line,int error_type,std::string error_str="")
|
||||||
|
@ -163,6 +164,7 @@ void error_info(int line,int error_type,std::string error_str="")
|
||||||
case multi_assign_lack_val:detail="multi-assignment lacks value list.";break;
|
case multi_assign_lack_val:detail="multi-assignment lacks value list.";break;
|
||||||
case lack_definition: detail="expected a definition expression here.";break;
|
case lack_definition: detail="expected a definition expression here.";break;
|
||||||
case lack_loop_iter: detail="expected an iterator to loop through.";break;
|
case lack_loop_iter: detail="expected an iterator to loop through.";break;
|
||||||
|
case lack_func_content: detail="expected arguments or expression block here.";break;
|
||||||
}
|
}
|
||||||
std::cout<<detail<<std::endl;
|
std::cout<<detail<<std::endl;
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -370,6 +370,12 @@ nasal_ast nasal_parse::func_gen()
|
||||||
++error;
|
++error;
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
if(tok_list[ptr].type!=tok_left_curve && tok_list[ptr].type!=tok_left_brace)
|
||||||
|
{
|
||||||
|
++error;
|
||||||
|
error_info(error_line,lack_func_content);
|
||||||
|
return node;
|
||||||
|
}
|
||||||
if(tok_list[ptr].type==tok_left_curve)
|
if(tok_list[ptr].type==tok_left_curve)
|
||||||
{
|
{
|
||||||
node.add_child(args_list_gen());
|
node.add_child(args_list_gen());
|
||||||
|
@ -531,7 +537,7 @@ nasal_ast nasal_parse::exprs_gen()
|
||||||
{
|
{
|
||||||
node.add_child(expr());
|
node.add_child(expr());
|
||||||
++ptr;
|
++ptr;
|
||||||
if(ptr<tok_list_size || tok_list[ptr].type==tok_semi)
|
if(ptr<tok_list_size && tok_list[ptr].type==tok_semi)
|
||||||
++ptr;
|
++ptr;
|
||||||
else if(node.get_children().empty() || need_semi_check(node.get_children().back()))
|
else if(node.get_children().empty() || need_semi_check(node.get_children().back()))
|
||||||
{
|
{
|
||||||
|
@ -779,7 +785,15 @@ nasal_ast nasal_parse::scalar()
|
||||||
else if(tok_list[ptr].type==tok_identifier)
|
else if(tok_list[ptr].type==tok_identifier)
|
||||||
node=id_gen();
|
node=id_gen();
|
||||||
else if(tok_list[ptr].type==tok_func)
|
else if(tok_list[ptr].type==tok_func)
|
||||||
node=func_gen();
|
{
|
||||||
|
if(ptr+1<tok_list_size && tok_list[ptr+1].type==tok_identifier)
|
||||||
|
{
|
||||||
|
++ptr;
|
||||||
|
node=id_gen();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
node=func_gen();
|
||||||
|
}
|
||||||
else if(tok_list[ptr].type==tok_left_bracket)
|
else if(tok_list[ptr].type==tok_left_bracket)
|
||||||
node=vector_gen();
|
node=vector_gen();
|
||||||
else if(tok_list[ptr].type==tok_left_brace)
|
else if(tok_list[ptr].type==tok_left_brace)
|
||||||
|
|
Loading…
Reference in New Issue