Проблема
Я только начал использовать ANTLR (4.3 для .NET) и после отладки довольно долгое время, я должен сдаться. Я получаю NoViableAltException
в последних 4 строках - но я действительно не знаю, как это исправить ...NoViableAltException в Antlr4.3 грамматике
Итак, у вас есть какие-нибудь намеки на меня?
Поведение Предполагаемого
Сформированный анализатор должен разобрать строки как Hello {User.Name}!
или Hello {{ {User.Name("}")} }}!
где User.Name
и User.Name("}")
, как ожидаются, вывести из expression
правил и всего остального от plainString
. Тем не менее, я еще не был в состоянии проверить это ...
Грамматика
grammar PatternString;
@namespace{PatternStringParser.AntlrGenerated}
patternString: (plainString | expressionString)+;
plainString: (PLAINSTRINGLITERAL | '""' | '{{' | '}}')+;
expressionString: '{' expression* '}';
expression: BALANCEDSTRINGLITERAL+
| '(' expression ')'
| '[' expression ']'
| '{' expression '}'
| '"' string '"'
| '\'' character '\'';
string: (STRINGLITERAL | '\\"')+;
character: (CHARACTERLITERAL | '\'')+;
PLAINSTRINGLITERAL: ~[\"\{\}]; // <= NoViableAltException
BALANCEDSTRINGLITERAL: ~[\"\{\(\[\']; // <= NoViableAltException
CHARACTERLITERAL: ~[\']; // <= NoViableAltException
STRINGLITERAL: ~[\"]; // <= NoViableAltException
Уже исправлено это случайным образом, но спасибо за ваш ответ, который облегчит его в следующий раз! – Markus