0

У меня есть следующие в файле JavaCC:Удаление прямой леворекурсивные в JavaCC

void condition() : {} 
{ 
    expression() comp_op() expression() 
    | condition() (<AND> | <OR>) condition() 
} 

где <AND> является «& &» и <OR> является «||». Это вызывает проблемы из-за того, что это прямая левая рекурсия. Как я могу это исправить?

ответ

2

Состояние по существу 1 или более expression comp_op expression, разделенное AND или OR. Вы можете сделать следующее:

condition --> simpleCondition ((<AND> | <OR>) simpleCondition)* 
simpleCondition --> expression comp_op expression