yytext包含不匹配的字符

时间:2015-11-23 14:18:10

标签: regex string match flex-lexer lex

背景

我正在使用 flex 为我正在实现的编程语言生成词法分析器。

我对此标识符规则有一些问题:

[a-zA-Z_][a-zA-Z_0-9]* {
    printf("yytext is %s\n", yytext);    
    yylval.s = yytext;
    return TOK_IDENTIFIER;
}

当我的解析器解析这样的表达式时,规则可以正常工作:

var0 = var1 + var2;

printf语句将打印出来:

yytext is 'var0'
yytext is 'var1'
yytext is 'var2'

它应该是什么。

问题

但是当我的解析器正在解析像这样的函数声明时:

func(array[10] type, arg2 wef, arg3 afe);

现在printf语句将打印出来:

yytext is 'array['
yytext is 'arg2 wef'
yytext is 'arg3 afe'

问题是yytext包含不匹配的字符。

问题

为什么 flex yytext中包含这些字符?如何解决此问题?

0 个答案:

没有答案