Синтаксические предикаты ANTLR для JAVACC

В ANTLR мы можем использовать синтаксис предикаты для решения определенных проблем следующим образом. Это всего лишь простой пример.

a : (L K)=> b
   | c
   ;

b : L K
   ;

c : L M
   ;

Я хочу знать, как добиться того же в JAVACC? Спасибо.


person Bee    schedule 03.03.2012    source источник


Ответы (1)


В javacc есть концепция под названием SYNTACTIC LOOKAHEAD. Вы можете использовать это для достижения такого же поведения.

В качестве примера предположим, что ваше грамматическое правило выглядит следующим образом. void Expr (): {} {Call () | Var ()}

Если вам нужно выполнить просмотр неизвестного времени, вы можете что-то вроде

void Expr():
{}
{
LOOKAHEAD(Call())
Call () | Var()
}

Для получения дополнительной информации см. http://javacc.java.net/doc/lookahead.html

person Tanya    schedule 03.03.2012