こんにちは、言語のパーサーを作ろうとしています。
しかし、X > 5 のような論理式を if 式に入れると、パーサーはエラーを返します。
たとえば、次のステートメントを作成するとif (x>5) a=3;
、パーサーはエラー条件 x>5 を返します。
結果なしで問題を修正しようとしています。私はフレックス/バイソンの初心者です。
どんな助けでも;
フレックスファイルは次のとおりです。
`.....
"!" {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 ;