我有两个输入
a - ba += b我有一个有选择的作品
void AssignmentExpression() : {}
{
LOOKAHEAD(3) ConditionalExpression()
| LOOKAHEAD(3) UnaryExpression() AssignmentOperator() AssignmentExpression()
}使用此产品,输入(1)工作,但输入(2)不工作。
如果我把产品中的选择交换成
void AssignmentExpression() : {}
{
LOOKAHEAD(3) UnaryExpression() AssignmentOperator() AssignmentExpression()
| LOOKAHEAD(3) ConditionalExpression()
}则输入(2)起作用,但输入(1)不起作用。
我该怎么解决这个问题?增加查找参数没有帮助。
发布于 2015-03-29 19:48:21
见递归下降的表达式解析。遵循“经典解决方案”。
由于您使用的是JJTree,所以使用javacc创建一个生成二叉树的计算器语法问题的答案将是有帮助的。
发布于 2015-03-30 09:23:27
你可以试试
void AssignmentExpression() : {}
{
LOOKAHEAD(UnaryExpression() AssignmentOperator() )
UnaryExpression() AssignmentOperator() AssignmentExpression()
| ConditionalExpression()
}如果没有看到更多的语法,就很难知道这是否有效。由于使用展望规范将禁止来自JavaCC的任何警告--JavaCC“假设”您知道自己在做什么--您必须自己进行分析。
我的另一个答案更好。
https://stackoverflow.com/questions/29332297
复制相似问题