Как ANTLR разделяет токены

#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);
  

Вы можете проанализировать свое выражение ожидаемым образом.