Я пытаюсь реализовать переводчик Java-Python.Я использую flex для распознавания некоторых токенов Java.Я управлял целым числом с помощью этого регулярного выражения:
...
digit [0-9]
number (\+|\-)?{digit}+
...
%%
...
{number} {yylval.i= atoi (yytext);return(NUMBER);}
"+" {return (ADD);}
В синтаксическом анализаторе я определяю эту продукцию:
ArithmeticExpression
: ExpressionStatement ADD ExpressionStatement
| ExpressionStatement SUB ExpressionStatement
| ExpressionStatement MULT ExpressionStatement
| ExpressionStatement DIV ExpressionStatement
| ExpressionStatement MOD ExpressionStatement
;
ExpressionStatement
: NUMBER
;
, если я передаю ввод выражениям переводчика, подобным этому:
int a = 5 ++67; (syntax error in java)
как мне справиться с этой ситуацией, чтобы переводчик распознал 5 ++ 67 как ошибку, а не как 5 + +67 (для ArithmeticExpression)?