1
我需要描述包含某个词的令牌。该单词可能包含英文字母和一些其他特殊符号,但不应以某些定义的英文字母(例如,“O”)开头。javacc令牌正则表达式and_symbol_in
看起来我需要AND_SYMBOL_IN操作或其他东西,但我没有找到JavaCC的文档中 我需要的行为是这样的:?
TOKEN : { < LETTERS: (
(~["O", "-"] AND_SYMBOL_IN ["a"-"z","A"-"Z","-",".","&","|","0"-"9"])? (["a"-"z","A"-"Z","-",".","&","|","0"-"9"])+
) > }
我可以创造特殊的记号(如下面),但我相信有更多好看的决定,isn`t它
TOKEN : { < #LETTEREX: (
["a"-"z","A"-"N","P"-"Z",".","&","|","0"-"9","-"]) > }
TOKEN : { < LETTERS: (
(<LETTEREX>) (<LETTEREX> | ["O"])+
) > }
互联网似乎没有描述'AND_SYMBOL_IN'的文档,所以如果没有JavaCC的个人知识,我们不能帮你。 – Borodin 2012-01-31 13:39:07
我怀疑是否有'更好'(即更简洁)的解决方案 - 你想要的是在令牌识别中迭代正则表达式匹配。我不认为任何人都会为一个词法生成器一般地实现这个功能。它可能是unicode上下文中的一些特殊需求所期望的,但对于您的任务,我建议坚持您的解决方案。另一个选择可能是设置TOKEN_FACTORY并在匹配'word'时调整'newToken'返回不同的标记 - 请参阅javacc文档。希望有所帮助,关心 – collapsar 2012-02-01 12:10:07