当我尝试定义这样的 token 时:
NAP (([0-9])/([a-z]))
...这意味着只有字母后面有一个数字(r/s),我尝试使用这个:
{NAP} showToken("NAP");
...编译器抛出“无法识别的规则”。
有谁知道为什么吗?
最佳答案
您不能在括号内使用 Flex 的 / 运算符。这可能会导致它无法在定义中使用,具体取决于您的 Flex 版本,因为 Flex 隐式地用括号包围了定义的扩展。
只需在规则中直接写入正则表达式即可。 (并且括号周围不需要多余的括号。)
[0-9]/[a-z] showToken("NAP");
关于regex - 柔性/莱克斯 : Lookahead predicate - unrecognized rule,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22529272/