ANTLR 4解析器匹配任何令牌
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ANTLR 4解析器匹配任何令牌相关的知识,希望对你有一定的参考价值。
快速提问(希望如此)。
我希望我的解析器接受两个特定令牌之间的任何令牌。
所以在我的特定情况下它看起来像这样:
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()!$[]!)
谢谢你的帮助^^
答案
你可以这样做:
xpathvar
: XPATH parens
;
parens
: BRACKET_OPEN ( ~( BRACKET_OPEN | BRACKET_CLOSED ) | parens )* BRACKET_CLOSED
;
其中~( BRACKET_OPEN | BRACKET_CLOSED )
匹配任何令牌(不是任何角色!),除了BRACKET_OPEN
和BRACKET_CLOSED
。
以上是关于ANTLR 4解析器匹配任何令牌的主要内容,如果未能解决你的问题,请参考以下文章
ANTLR4入门:使用mave ANTLR4插件(antlr4-maven-plugin)执行语法解析生成器