Flex无法识别类型的模式(?r-s:pattern)

时间:2014-10-15 09:05:40

标签: flex-lexer lex

我安装了Flex版本2.5.4。

每当我输入以下形式的flex程序时:

%{
#include<stdio.h>
%}
%%
(?i:foo) printf("foo found");
%%

我在线路上遇到无法识别的规则错误(?i:foo)......

请让我知道我做错了什么。

由于

1 个答案:

答案 0 :(得分:1)

如果要使用模式标志,则需要升级flex版本。版本2.5.35中添加了模式语法(?i:...)(但您也可以更新到当前版本,2.5.39)。

注意:ubuntu有两个flex包:flexflex-old。从逻辑上讲,flex-oldflex的旧版本(实际上是2.5.4)。我不知道在什么情况下ubuntu安装会包含过时的flex,但如果您发现自己安装了flex-old,则应该能够使用flex将其替换为apt-get install }。