我正在尝试编写这样的flex规则:
%%
[0-9]+ yylval=atoi(yytext); return NUMBER;
[<] return LANGLE;
[/>] return CLOSERANGLE;
[>] return RANGLE;
[/] return SLASH;
[ a-zA-Z0-9] yylval=strdup(yytext); return ANYTHING;
\n /* ignore end of line */;
[ \t]+ /* ignore whitespace */;
%%
当我针对该文件运行flex程序时,它说:
example4.l:19: warning, rule cannot be matched
example4.l:20: warning, rule cannot be matched
我想这是因为在[/>]
规则中,它与/
或>
匹配。但问题是如何编写该规则以使其与/
和 >
匹配?
我尝试了文档:它说:
‘rs’
the regular expression ‘r’ followed by the regular expression ‘s’; called concatenation
我不是这样做的吗?怎么了?以及如何应对这个问题?
答案 0 :(得分:1)
我想这是因为在规则[/&gt;]中它匹配/或&gt;
完全。
但问题是如何编写该规则以使其匹配/和&gt;一起?
"/>"
我不是这样做的吗?
没有。 [/]
匹配 / ,[>]
匹配&gt; 。所以[/][>]
会起作用。但引用的形式更为正常。