gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:28:45 24 4
gpt4 key购买 nike

我正在尝试实现一个 Java-Python 翻译器。我正在使用 flex 来识别一些 java token 。我用这个正则表达式管理整数:

...
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(因此是算术表达式)?

最佳答案

正如评论中已经说过的,您需要引入一个 ++ token 。

你说你不需要处理一元运算符。即便如此,您仍然需要 token 。 5++67 在 Java 中是一个错误,因为 ++ 是它自己的标记。如果不是,5++67 将相当于 5++67。因此,如果您想在本例中得到与 Java 中相同的错误,您还需要有一个 ++ token - 即使您从未使用过它。

关于c - Java-Python 翻译器中求和运算的语法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52237841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com