我目前正在为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/

10-11 08:24