ANTLR 4解析器匹配任何令牌

时间:2019-04-09 13:51:15

标签: antlr antlr4


快速提问(希望如此)。

我希望我的解析器接受两个特定令牌之间的任何令牌。

所以在我的特殊情况下,它看起来像这样:

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 个答案:

答案 0 :(得分:3)

您可以执行以下操作:

[0, x_0]

其中xpathvar : XPATH parens ; parens : BRACKET_OPEN ( ~( BRACKET_OPEN | BRACKET_CLOSED ) | parens )* BRACKET_CLOSED ; 与除~( BRACKET_OPEN | BRACKET_CLOSED )BRACKET_OPEN之外的任何令牌(不是任何字符!)匹配。