gpt4 book ai didi

java - 用 unicode 编写语法规则名称 [ANTLR 4]

转载 作者:行者123 更新时间:2023-11-30 08:09:26 24 4
gpt4 key购买 nike

我还是 ANTLR 4 的初学者,我想知道是否有一种方法可以用 unicode 编写语法规则名称。例如,以下规则就可以:

atomExp 返回 [ double 值]
: n=数字 {$value = Double.parseDouble($n.text);}
| '('exp=additionExp')' {$value = $exp.value;}
;

但是,假设我想编写相同的规则,但我不想将其名称写为“atomExp”,而是想将其名称写为阿拉伯语单词“TÀ 巴里”

返回[ double 值]
: n=数字 {$value = Double.parseDouble($n.text);}
| '('exp=additionExp')' {$value = $exp.value;}
;

但是当我尝试以这种方式编写它时,我收到“没有可行的替代方案”错误。有人可以解决我的问题吗?提前致谢

最佳答案

查看 the lexer grammar for ANTLR4 时,您可以看到词法分析器和解析器名称支持某些 Unicode 字符:

/** Allow unicode rule/token names */
ID : NameStartChar NameChar*;

fragment
NameChar
: NameStartChar
| '0'..'9'
| '_'
| '\u00B7'
| '\u0300'..'\u036F'
| '\u203F'..'\u2040'
;

fragment
NameStartChar
: 'A'..'Z'
| 'a'..'z'
| '\u00C0'..'\u00D6'
| '\u00D8'..'\u00F6'
| '\u00F8'..'\u02FF'
| '\u0370'..'\u037D'
| '\u037F'..'\u1FFF'
| '\u200C'..'\u200D'
| '\u2070'..'\u218F'
| '\u2C00'..'\u2FEF'
| '\u3001'..'\uD7FF'
| '\uF900'..'\uFDCF'
| '\uFDF0'..'\uFFFD'
; // ignores | ['\u10000-'\uEFFFF] ;

INT : [0-9]+
;

但是,您的 ID Tear 似乎不符合 ID 规则的 NameChar* 部分。

关于java - 用 unicode 编写语法规则名称 [ANTLR 4],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30614712/

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