我安装了Flex版本2.5.4。
每当我输入以下形式的flex程序时:
%{
#include<stdio.h>
%}
%%
(?i:foo) printf("foo found");
%%
我在线路上遇到无法识别的规则错误(?i:foo)......
请让我知道我做错了什么。
由于
答案 0 :(得分:1)
如果要使用模式标志,则需要升级flex版本。版本2.5.35中添加了模式语法(?i:...)
(但您也可以更新到当前版本,2.5.39)。
注意:ubuntu有两个flex包:flex
和flex-old
。从逻辑上讲,flex-old
是flex
的旧版本(实际上是2.5.4)。我不知道在什么情况下ubuntu安装会包含过时的flex,但如果您发现自己安装了flex-old
,则应该能够使用flex
将其替换为apt-get install
}。