Flex / Lex:Lookahead谓词 - 无法识别的规则

时间:2014-03-20 09:57:51

标签: regex lex flex-lexer

当我尝试定义这样的标记时:

NAP (([0-9])/([a-z]))

...这只是一个数字,只有当一个字母跟在它后面(r / s),我试着用这个:

{NAP}   showToken("NAP");

...编译器抛出"无法识别的规则"。

有谁知道为什么?

1 个答案:

答案 0 :(得分:2)

您不能在括号内使用flex的 / 运算符。这可能使得无法在定义中使用,具体取决于你的flex版本,因为flex隐含地用括号括起了定义的扩展。

直接在规则中编写正则表达式。 (并且不需要括号周围的冗余括号。)

[0-9]/[a-z]     showToken("NAP");