解析意外字符时,Lex 和 Yacc 不会报告错误。#set label sample
在下面的代码中,解析时没有错误,但#
无效。
代码的 Lex 部分
identifier [\._a-zA-Z0-9\/]+
<INITIAL>{s}{e}{t} {
return SET;
}
<INITIAL>{l}{a}{b}{e}{l} {
return LABEL;
}
<INITIAL>{i}{d}{e}{n}{t}{i}{f}{i}{e}{r} {
strncpy(yylval.str, yytext,1023);
yylval.str[1023] = '\0';
return IDENTIFIER;
}
Yacc 部分代码。
definition : SET LABEL IDENTIFIER
{
cout<<"set label "<<$3<<endl;
};
解析的时候#set sample label
应该会报错,因为#
是意外字符。但是没有报错。我应该如何修改代码以便报告错误?