我试图创建一个规则来创建一个字符串并打印它。 所以这是代码:
%{
char buff[200];
char *s;
}%
%X STRLIT
%%
\" {BEGIN STRLIT; s = buf;}
<STRLIT><<EOF>> {printf("unterminated string literal\n");
BEGIN 0;}
<STRLIT>\\ {*s++ = '\\';}
<STRLIT>\f {*s++ = '\f';}
<STRLIT>\n ;
<STRLIT>\r ;
<STRLIT>\t {*s++ = '\t';}
<STRLIT>. {*s++ = *yytext;}
<STRLIT>\" {*s = 0;printf("STRING(%s)\n",buf);BEGIN 0;}
错误在最后一行,但我不知道为什么。
答案 0 :(得分:1)
当可以在当前输入上匹配多个规则并产生相同大小的匹配项时,<--created two buttons-->
<a onlick="mortagecalculator" data-attr="mortage">Use Now</a>
<a onlick="mortagecalculator" data-attr="penalty">Use Now</a>
将采用首先定义的规则。
因此,例如,如果有一个flex
,则规则\t
和\t
都可以匹配,但是.
首先出现,因此被使用。但是,如果出现\t
,则使用"
,因为.
在其flex文件中。因此,不可能使用\"
中的\"
规则,这就是错误所在。
要解决此问题,只需将STRLIT
移至最后一条规则即可。这样,只有在其他任何规则都不匹配的情况下,它才会匹配。