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