В ANTLR мы можем использовать синтаксис предикаты для решения определенных проблем следующим образом. Это всего лишь простой пример.
a : (L K)=> b
| c
;
b : L K
;
c : L M
;
Я хочу знать, как добиться того же в JAVACC? Спасибо.
В ANTLR мы можем использовать синтаксис предикаты для решения определенных проблем следующим образом. Это всего лишь простой пример.
a : (L K)=> b
| c
;
b : L K
;
c : L M
;
Я хочу знать, как добиться того же в JAVACC? Спасибо.
В javacc есть концепция под названием SYNTACTIC LOOKAHEAD. Вы можете использовать это для достижения такого же поведения.
В качестве примера предположим, что ваше грамматическое правило выглядит следующим образом. void Expr (): {} {Call () | Var ()}
Если вам нужно выполнить просмотр неизвестного времени, вы можете что-то вроде
void Expr():
{}
{
LOOKAHEAD(Call())
Call () | Var()
}
Для получения дополнительной информации см. http://javacc.java.net/doc/lookahead.html