我目前正在为JavaCC grammar使用ECMAScript 5.1。我对JavaCC有点陌生,因此希望对以下问题有所帮助。
§11.2左侧表达式定义以下CallExpression
生成:
CallExpression :
MemberExpression Arguments
CallExpression Arguments
CallExpression [ Expression ]
CallExpression . IdentifierName
这是递归的,因此在JavaCC中无法正常使用。
我正在考虑将其重写如下(
.jj
-类似的伪代码):CallExpression :
MemberExpression Arguments ( Arguments | "[" Expression "]" | "." IdentifierName )*
这是正确的重写吗?
最佳答案
是的,这是正确的重写。一般来说
A --> B | A C
可以改写成
A --> B (C)*
关于javascript - 我该如何以非递归方式重写此CallExpression?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26756470/