快速提问(希望如此)。
我希望我的解析器接受两个特定令牌之间的任何令牌。
所以在我的特殊情况下,它看起来像这样:
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()!$[]!)
感谢您的帮助^^
答案 0 :(得分:3)
您可以执行以下操作:
[0, x_0]
其中xpathvar
: XPATH parens
;
parens
: BRACKET_OPEN ( ~( BRACKET_OPEN | BRACKET_CLOSED ) | parens )* BRACKET_CLOSED
;
与除~( BRACKET_OPEN | BRACKET_CLOSED )
和BRACKET_OPEN
之外的任何令牌(不是任何字符!)匹配。