ANTLR 4 Парсер соответствует любому токену - PullRequest
0 голосов
/ 09 апреля 2019


быстрый вопрос (надеюсь).

Я хочу, чтобы мой анализатор принимал любой токен между двумя определенными токенами.

Так что в моем конкретном случае это выглядит так:

XPATH: 'xpath';

BRACKET_OPEN: '(';

BRACKET_CLOSED: ')';

xpathvar
:
    XPATH BRACKET_OPEN (any token or char between here) BRACKET_CLOSED
;

Я уже пытался создать токен ANY: .;, но он никогда не совпадал или не совпадал всегда.


Так что я бы хотел, чтобы правило xpathvar совпадало с xpath( anything here, even special chars()!$[]!)

Спасибо за вашу помощь ^^

1 Ответ

3 голосов
/ 10 апреля 2019

Вы можете сделать что-то вроде этого:

xpathvar
 : XPATH parens
 ;

parens
 : BRACKET_OPEN ( ~( BRACKET_OPEN | BRACKET_CLOSED ) | parens )* BRACKET_CLOSED
 ;

, где ~( BRACKET_OPEN | BRACKET_CLOSED ) соответствует любому токену (не любому символу!), Кроме BRACKET_OPEN и BRACKET_CLOSED.

...