This commit is contained in:
Valk Richard Li 2020-10-24 12:16:55 +08:00
parent 6daae85740
commit 67ae3505fb
3 changed files with 10 additions and 4 deletions

View File

@ -59,11 +59,11 @@ multive_expr::=
(unary|scalar) ('*' | '/') (unary|scalar)
;
unary::=
('-'|'!') scalar
('-'|'!') (unary|scalar)
;
scalar::=
function {call_scalar}
|identifier {call_scalar}
|[func] identifier {call_scalar}
|vector {call_scalar}
|hash {call_scalar}
|number

View File

@ -140,7 +140,7 @@ enum parse_error
void error_info(int line,int error_type,std::string error_str="")
{
std::string detail;
std::cout<<">> [parse] error_info: [line "<<line<<"] ";
std::cout<<">> [parse] error: [line "<<line<<"] ";
switch(error_type)
{
case unknown: std::cout<<"unknown error.\n"; break;

View File

@ -834,7 +834,13 @@ nasal_ast nasal_parse::unary()
case tok_not:node.set_type(ast_unary_not);break;
}
++ptr;
if(ptr<tok_list_size) node.add_child(scalar());
if(ptr<tok_list_size)
{
if(tok_list[ptr].type==tok_sub || tok_list[ptr].type==tok_not)
node.add_child(unary());
else
node.add_child(scalar());
}
else{ ++error; error_info(error_line,lack_calculation);}
return node;
}