首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flex:未被识别的规则`(?s:.)

Flex:未被识别的规则`(?s:.)
EN

Stack Overflow用户
提问于 2022-01-01 13:43:30
回答 1查看 79关注 0票数 0

在我的flex程序中,我无法使用任何这些正则表达式。其中任何一个的使用都会产生unrecognized rule错误。

代码语言:javascript
复制
%{
#include<stdio.h>
%}

%option nodefault
%option noyywrap
%option outfile="scanner.c"

%%

(?i:a) printf("rule1");

(?s:.) printf("rule2");

(?x:a b) printf("rule3");

(?#foo) printf("rule4");

[a-z]{-}[aeiou] printf("rule5");

%%

所有这些都在文档中得到了很好的定义。我很困惑,我是不是用错了flex变体!我使用的是带有GnuWin32 flex v2.5.4的windows机器。

这是正在生成的错误:

代码语言:javascript
复制
$flex misc/test_lexer.l
"misc/test_lexer.l", line 11: unrecognized rule
"misc/test_lexer.l", line 11: unrecognized rule
"misc/test_lexer.l", line 11: unrecognized rule
"misc/test_lexer.l", line 11: unrecognized rule
"misc/test_lexer.l", line 11: unrecognized rule
"misc/test_lexer.l", line 11: unrecognized rule
"misc/test_lexer.l", line 13: unrecognized rule
"misc/test_lexer.l", line 13: unrecognized rule
"misc/test_lexer.l", line 13: unrecognized rule
"misc/test_lexer.l", line 13: unrecognized rule
"misc/test_lexer.l", line 13: unrecognized rule
"misc/test_lexer.l", line 13: unrecognized rule
"misc/test_lexer.l", line 15: unrecognized rule
"misc/test_lexer.l", line 15: unrecognized rule
"misc/test_lexer.l", line 15: unrecognized rule
"misc/test_lexer.l", line 15: unrecognized rule
"misc/test_lexer.l", line 15: unrecognized rule
"misc/test_lexer.l", line 17: unrecognized rule
"misc/test_lexer.l", line 17: unrecognized rule
"misc/test_lexer.l", line 17: unrecognized rule
"misc/test_lexer.l", line 17: unrecognized rule
"misc/test_lexer.l", line 17: unrecognized rule
"misc/test_lexer.l", line 17: unrecognized rule
"misc/test_lexer.l", line 17: unrecognized rule
"misc/test_lexer.l", line 19: unrecognized rule
"misc/test_lexer.l", line 19: unrecognized rule
"misc/test_lexer.l", line 19: unrecognized rule
"misc/test_lexer.l", line 19: unrecognized rule
"misc/test_lexer.l", line 19: unrecognized rule
"misc/test_lexer.l", line 19: unrecognized rule
"misc/test_lexer.l", line 19: unrecognized rule
"misc/test_lexer.l", line 19: unrecognized rule
"misc/test_lexer.l", line 19: unrecognized rule
"misc/test_lexer.l", line 19: unrecognized rule
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-01 16:56:27

如果要使用这些构造,则需要更新flex安装。

Flex2.5.4是25年前发布的,它没有实现{-},也没有实现任何(?:...)语法。

您引用的手册也不是当前版本,它指定:

这个版本的flex手动文档的flex版本为2.6.3。最后一次更新是在2017年1月13日。

Flex v2.5.4确实实现了/尾随上下文操作符,这个操作符在这个问题的原始版本中。但是请注意,/不能在括号内使用,而且由于flex通常在宏展开周围添加括号,所以/也不能用于宏展开。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70549254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档