Я написал некоторый код Xtext и попытался изобразить Prologsyntax.Теперь у меня есть проблема с левой рекурсией, и я не знаю, что это такое и как решить мою проблему.
Строка NotEmptyList вызвала некоторые ошибки.
PrologDsl: program=Program exquery=Exquery;
Program: clause+=Clause+;
Exquery: '?-' query=Query '.';
Query: predicate=Predicate (',' nthPredicate+=Predicate)*;
Clause: fact=Fact | rule=Rule;
Fact: predicate=Predicate '.';
Rule: predicate=Predicate ':-' query=Query '.';
Predicate: functor=Functor '(' term=Term (',' nthTerm+=Term)* ')';
Functor:IDENT;
Term:atom=Atom|list=List;
Atom: atom=(IDENT| VARIABLE | NUMBER);
List: emptyList = '[]' | list = NotEmptyList;
NotEmptyList: '[' folge=Folge ']' | '[' atom=Atom | term=Term ']';
Folge: atom=Atom (',' nthAtom+=Atom)* ;
terminal NUMBER:INT;
terminal VARIABLE: 'A'..'Z';
terminal IDENT: 'a'..'z'('a'..'z'|'A'..'Z'|'_'|'0'..'9')*;
Я верю, чтоЯ должен включить некоторые новые правила или я могу что-то упростить?
Извините, я паршивый новичок.
Заранее спасибо!