2014-11-05 2 views
1

В настоящее время я работаю с JavaCC grammar по телефону ECMAScript 5.1. Я несколько новичок в JavaCC, поэтому я бы очень хотел помочь в следующем вопросе.Как я могу переписать это CallExpression не рекурсивно?

§ 11.2 Left-Hand-Side Выражения определяет следующие CallExpression производства:

CallExpression : 
    MemberExpression Arguments 
    CallExpression Arguments 
    CallExpression [ Expression ] 
    CallExpression . IdentifierName 

Это оставил рекурсивным и, следовательно, не работает в JavaCC как есть.

Я имею в виду, чтобы переписать его следующим образом (.jj -similar псевдокод):

CallExpression : 
    MemberExpression Arguments (Arguments | "[" Expression "]" | "." IdentifierName)* 

Это правильный перезапись?

+0

Проблема заключается не в том, что правило является рекурсивным. Проблема в том, что она оставлена ​​рекурсивной. –

+0

@ TheodoreNorvell Спасибо, я обновил вопрос. – lexicore

ответ

2

Да, это правильная переписывание. В общем

A --> B | A C 

можно переписать в виде

A --> B (C)* 
Смежные вопросы