您好我正在尝试为一种语言制作解析器。
但是,当我将这样的逻辑表达式: X > 5 放入 if 表达式时,解析器会返回一个错误。
例如,如果我做出这样的声明:if (x>5) a=3;
那么解析器返回一个错误条件 x>5。
我正在尝试解决没有结果的问题。我是 flex/bison 的新手。
任何帮助;
这是弹性文件:
`.....
"!" {return NOT;}
"+" | "-" {return MONAD_OPERATOR;}
"*" | "/" | "%" {return DIAD_OPERATOR;}
"==" | "!=" | ">" | "<" | ">=" | "<=" {return SXES_OPERATOR;}
...`
这是野牛文件:
...
if_statement : IF '(' logic_expression ')' statement NEWLINE
| IF '(' logic_expression ')' statement ELSE statement NEWLINE
; ;
logic_expression :
logic_expression sxes_operator logic_expression
| ID
| NUM
| logic_expression diad_operator logic_expression
| '(' logic_expression ')'
| NOT logic_expression
| logic_expression log_operator logic_expression
;
monad_operator : MONAD_OPERATOR ;
diad_operator : DIAD_OPERATOR ;
sxes_operator : SXES_OPERATOR ;