ANTLR4 + Python - как получить доступ к фрагментным токенам (суб токенам) от слушателя? - PullRequest
0 голосов
/ 20 ноября 2018

Как я могу получить доступ к токену MONTH_NAME или DIGITS из слушателя, используя следующую грамматику:

date : DATE_BULK;
DATE_BULK :  DIGITS SEPARATOR DIGITS SEPARATOR DIGITS
          |  DIGITS WHITE_SPACE MONTH_NAME WHITE_SPACE DIGITS ;
fragment MONTH_NAME : 'Jan' |
                      'Feb' |
                      ;

В слушателе я могу сделать:

def exitDate(self, ctx):
    dateBulk = ctx.DATE_BULK().getText()

Ноэто дает всю дату, которую я затем должен проанализировать вручную, используя регулярные выражения или другие методы.

  • PS: я не могу избавиться от фиктивной DATE_BULK и определить date, используя правиланепосредственно из-за структурных ограничений в моей общей грамматике, которая довольно сложна.

1 Ответ

0 голосов
/ 20 ноября 2018

Я не могу избавиться от манекена DATE_BULK и определить date, используя правила [...]

Тогда ответ прост: вы не можете,DATE_BULK является одним токеном и не может быть разделен в вашем парсере (конечно, кроме использования подстрок-функций Python).

...