Java-Python 翻译器中求和运算的语法问题

Syntax problem with sum operation in Java-Python translator

我正在尝试实现一个 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)?

评论里已经说了,需要引入一个++代币。

你说你不需要处理一元运算符。即便如此,您仍然需要令牌。 5 ++67 是 Java 中的一个错误,正是因为 ++ 是它自己的标记。如果不是,5 ++67 将等同于 5 + +67。所以如果你想在这种情况下得到与 Java 中相同的错误,你还需要有一个 ++ 令牌 - 即使你从未使用过它。