flex 无法识别的规则(关于可选短语)
flex's unrecognized rule (about an optional phrase)
我写了一个简单的flex文件:
%{
#include "question.tab.h"
%}
%%
COMMON(/[45]\.0)? return GOTCHA;
[a-z]+ return ETC;
%%
并尝试编译。(flex -d question.l
)
然后输出如下。
question.l:7: unrecognized rule
question.l:7: unrecognized rule
question.l:7: unrecognized rule
question.l:7: unrecognized rule
question.l:7: unrecognized rule
question.l:7: unrecognized rule
question.l:7: unrecognized rule
question.l:7: unrecognized rule
question.l:7: unrecognized rule
question.l:7: unrecognized rule
我希望 flex
到 return GOTCHA
当它捕获 COMMON
、COMMON/4.0
、COMMON/5.0
.
我应该修复正则表达式的哪一部分?
谢谢你的提前。
/
符号是flex中的一个特殊字符。它用于前瞻,而您使用它的方式是非法的(flex 只允许在表达式的末尾进行前瞻,而不是在组内)。
由于您实际上并不需要前瞻,而是要匹配文字斜杠,因此您应该将其放在引号中或使用反斜杠将其转义。
我写了一个简单的flex文件:
%{
#include "question.tab.h"
%}
%%
COMMON(/[45]\.0)? return GOTCHA;
[a-z]+ return ETC;
%%
并尝试编译。(flex -d question.l
)
然后输出如下。
question.l:7: unrecognized rule
question.l:7: unrecognized rule
question.l:7: unrecognized rule
question.l:7: unrecognized rule
question.l:7: unrecognized rule
question.l:7: unrecognized rule
question.l:7: unrecognized rule
question.l:7: unrecognized rule
question.l:7: unrecognized rule
question.l:7: unrecognized rule
我希望 flex
到 return GOTCHA
当它捕获 COMMON
、COMMON/4.0
、COMMON/5.0
.
我应该修复正则表达式的哪一部分?
谢谢你的提前。
/
符号是flex中的一个特殊字符。它用于前瞻,而您使用它的方式是非法的(flex 只允许在表达式的末尾进行前瞻,而不是在组内)。
由于您实际上并不需要前瞻,而是要匹配文字斜杠,因此您应该将其放在引号中或使用反斜杠将其转义。