【发布时间】:2018-09-15 17:23:35
【问题描述】:
在制作XML解析器的过程中:
正如标题所暗示的,我已经记录了如下代码中所示的规则,但 flex 似乎错过了一个特定的规则。
有问题的行是:
{boolean} {yylval.booleanval = strdup(yytext); if(err==1){printf("\t\t\t\t\t\t");}; return BOOLEAN;}```
当明确声明 flex 似乎忽略它时,其他规则不会出现此类问题。
弹性代码:
%option noyywrap
%option yylineno
string [_a-zA-Z][_a-zA-Z0-9]*
digit [0-9]
integer {digit}+
boolean "True" | "False"
text ({string}| )*
%%
. {printf("%s",yytext);}
{boolean} {yylval.booleanval = strdup(yytext); if(err==1){printf("\t\t\t\t\t\t");}; return BOOLEAN;}
{integer} {return INT;}
{string} {return STRING;}
%%
【问题讨论】:
标签: parsing bison flex-lexer