#antlr4
#antlr4
Вопрос:
У меня есть грамматика, где CHAR — это токен. Законным выражением для моей грамматики является CHAR(2) . Дело в том, что ANTLR, похоже, получает всю строку CHAR(2) в качестве токена, следовательно, выдает ошибку как неизвестный токен. Чтобы решить эту проблему, я должен вставить пробелы после токена, например, CHAR (2) . Итак, как я могу сказать ANTLR разделить токены?
Спасибо
Комментарии:
1. Пожалуйста, отредактируйте свой вопрос и добавьте грамматику.
2. Если вы узнаете больше о замечательных инструментах для разработки грамматики ANTLR, plugins.jetbrains.com/plugin/7358-antlr-v4-grammar-plugin вы можете визуально отлаживать свои правила лексера / синтаксического анализатора.
Ответ №1:
Со следующей грамматикой:
expression
: STRING CHAR LPAREN NUMBER RPAREN
;
STRING: 'String';
CHAR: 'CHAR';
NUMBER: [0-9] ;
LPAREN: '(';
RPAREN: ')';
ID: [A-Za-z] ;
WS: [ trn] -> channel(HIDDEN);
Вы можете проанализировать свое выражение ожидаемым образом.