gpt4 book ai didi

java - 如何让antlr语法识别带空格的字符串?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:15:00 26 4
gpt4 key购买 nike

我正在尝试在 antlr4 中编写语法。但我无法选择性地忽略规则中的空格。附上我的语法。如果 token 与 alphaNumericWSC 匹配,我应该在这里允许一个空格(WHITESPACE 的 token ),但在所有其他地方我想跳过 WHITESPACE。

WHITESPACE  :   [ \t\n\r]+ -> skip
alphaNumericWSC : AlphaNumeric (',' AlphaNumeric)*
| AlphaNumeric (' ' AlphaNumeric)*
;

换句话说,我只想不忽略此规则 alphaNumericWSC 中的空格。

在此先感谢您的帮助。

最佳答案

给定的词法分析器空白规则将在它到达解析器之前消耗所有空白。因此,如果空格对解析器很重要,请不要使用它。

ANTLR 提供了词法分析器模式,可用于在空白敏感和不敏感源区域之间切换。模式确实需要识别一些可用于在模式之间切换的明确源特征。

所以问题是什么时候 AlphaNumeric (' ' AlphaNumeric)* 有效。如果有特别适用的标记,例如 := leading 和 ; trailing,定义模式:

alphaNumericWSC : AlphaNumeric (Comma AlphaNumeric)* 
| AlphaNumeric (WS AlphaNumeric)*
;


AlphaNumeric : AlphaNum ;
Mark : ':=' -> pushMode(WSS);
Semi : ';' ;
Comma : ',' ;
WHITESPACE : [ \t\n\r]+ -> skip;

mode WSS;
WS : ' '+ ;
AlphaNumeric2 : AlphaNum -> type(AlphaNumeric);
Semi2 : ';' -> type(Semi), popMode();
WHITESPACE2 : [\t\n\r]+ -> skip;

fragment AlphaNum : .... ;

关于java - 如何让antlr语法识别带空格的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37199147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com