regex - 柔性/莱克斯 : Lookahead predicate - unrecognized rule

标签 regex lex flex-lexer

当我尝试定义这样的 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/

相关文章:

c - 有什么方法可以替换 yywrap 定义?争论等

regex - 为什么我只得到第一个捕获组?

regex - 我可以在正则表达式中使用求和吗?

c - 解析多个文件时错误的 lex 状态

Bison 不创建 tab.h 文件

c - flex/lex 中字符串文字的正则表达式

c - Flex 中的链接未完成问题

正则表达式:在第一次出现字符(包括它)后获取字符串

javascript - 如何使用 jQuery/Javascript 隐藏 anchor 标记之前的元素?

c++ - Bison 中的错误报告和 token 别名