JavaCC中不支持速记字符类(例如\ d)

时间:2012-06-07 14:41:53

标签: javacc

我正在尝试学习使用JavaCC并意识到它支持正则表达式。叫我懒惰,但我认为定义数字的默认/常用方式有点太长了:

TOKEN : { < #DIGITS : (["0" - "9"])+ >}

我尝试使用速记字符类,例如:

TOKEN : { < #DIGITS : (\d)+ >}

但“编译器编译器”似乎并不喜欢它。我得到了速记字符的词法错误。我找不到有关此事的任何文件,所以我不确定我是做错了什么还是根本不支持。如果有人能够确认/否认我的假设,那个javacc在速记人物课上表现不佳,我会非常感激。

1 个答案:

答案 0 :(得分:1)

您发现它不受支持是正确的。 JavaCC中的正则表达式仅由字符串文字,对其他正则表达式的引用以及对预定义正则表达式的引用组成。 EOF&gt ;.

但是,您使用的代码所做的就是创建自己的快捷方式。数字符号表示符号是私有的,即只能在正则表达式中使用。因此,将其定义为TOKEN:{&lt; #D:([“0” - “9”])+&gt;那意味着你可以使用&lt; D>在其他标记定义中。

二进制发行版中包含的示例语法javacc.jj是官方语法,因此查看此文件可以看到该语法可解析的内容。输出似乎是一个基本上是语法验证器。