У меня есть требование, где я написал лексический маркер, как:Есть ли токен по умолчанию, доступный в ANTLR, если он не соответствует ни одному из уже определенных токенов?
IF_LEXER_TOKEN: ('I')('F') (.)* ('E')('N')('D')_('I')('F')
ANY :(options {greedy=true;}: .)* ;
Но если вход в виде:
IF a>b then a=b END_IF
IF c>d then c=d
В этом случае ожидаемое поведение является то, что он должен использовать маркер IF_LEXER_TOKEN для первой строки и ЛЮБОЙ токен для второй строки, но вместо этого он рассматривает ЛЮБОЙ токен для обеих строк. Просьба помочь. Примечание: из-за некоторых ограничений я не могу создать правило анализатора для сценария выше.
Почему вы помещаете все свои однотонные жетоны в собственную пару круглых скобок? Выглядит странно. –