У меня возникли проблемы с созданием части моей грамматики ANTLR для моего языка программирования.
Я получаю сообщение об ошибке, когда происходит вторая часть объявления type
:
public type
: ID ('.' ID)* ('?')? -> ^(R__Type ID ID* ('?')?)
| '(' type (',' type)* ')' ('?')? -> ^(R__Type type* ('?')?)
;
Я пытаюсь найти совпадение:
- Строка типа
System.String
(работает нормально)
- Кортеж, такой как
(System.String, System.Int32)
Ошибка возникает немного выше по дереву и гласит:
[fatal] rule statement has non-LL(*) decision due to recursive rule invocations reachable from alts 1,2. Resolve by left-factoring or using syntactic predicates or using backtrack=true option.
Что я делаю не так?