stm
и stmList
дают мне эту ошибку, кажется, что ANTLR видит это как возможный бесконечный цикл рекурсии. Как я могу этого избежать? Следующие наборы правил взаимно леворекурсивны [stmList]
stmList: stm stmList | ;
stm: ifStm | whStm;
ifStm: ifPart elifPart* elsePart?;
ifPart: IF LB exp RB CLB stmList CRB;
elifPart: ELIF LB exp RB CLB stmList CRB;
elsePart: ELSE CLB stmList CRB;
whStm: WHILE LB exp RB CLB stmList CRB;
LB: '(';
RB: ')';
CLB: '{';
CRB: '}';
WHILE: 'While';
IF: 'If';
ELIF: 'Elif';
ELSE: 'Else';
stmList
является праворекурсивным. Здесь нет левой рекурсии. - person Chris Dodd   schedule 15.04.2021