Background
I am using flex to generate a lexer for a programming language I am implementing.
I have some problems with this rule for identifiers:
[a-zA-Z_][a-zA-Z_0-9]* {
printf("yytext is %s
", yytext);
yylval.s = yytext;
return TOK_IDENTIFIER;
}
The rule works as it should when my parser is parsing expressions like this:
var0 = var1 + var2;
The printf
statement will print out this:
yytext is 'var0'
yytext is 'var1'
yytext is 'var2'
Which is what it should.
The problem
But when my parser is parsing function declarations like this one:
func(array[10] type, arg2 wef, arg3 afe);
Now the printf
statement will print this:
yytext is 'array['
yytext is 'arg2 wef'
yytext is 'arg3 afe'
The problem is that yytext
contains characters that are not in the match.
Question
Why does flex include these characters in yytext
and how can I solve this problem?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…