用unicode [ANTLR 4]写一个语法规则名称



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

atomExp returns [double value] : n=Number {$value = Double.parseDouble($n.text);} | '(' exp=additionExp ')' {$value = $exp.value;} ;

然而,假设我想编写相同的规则,但不是将其名称写成"atomExp",而是将其名称写成阿拉伯语单词"تعبير"

تعبير returns [double value] : n=Number {$value = Double.parseDouble($n.text);} | '(' exp=additionExp ')' {$value = $exp.value;} ;

但是当我试着那样写的时候,我得到了"no viable alternative"错误。有人能解决我的问题吗?提前感谢

查看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 تعبير似乎不符合ID规则的NameChar*部分

相关内容

  • 没有找到相关文章

最新更新