2010-01-18 65 views
0

我在使用flex做词法分析器的时候很开心。问题是,我的代码编辑器没有给文件的语法着色,而且看起来我的规则中有一个错误。因为我也不太清楚如何使用单引号和双引号内的时间间隔,我想我会分享与你的代码片段:这个(f)lex代码段中的语法错误在哪里?

[^\\\'\n]+ 
{ 
    wchar_t* string; 
    utf8_decode(yytext, &string); 
    yyextra->append(string); 
    free(string); 
} 

的Flex告诉我有一个在utf8_decode线“无法识别规则” 。如果我删除整个规则,事情再次看起来很好。

任何人都可以告诉我在这里做错了吗?

回答

2

该操作必须在与该模式相同的行上开始。所以使用

[^\\\'\n]+ { 
    wchar_t* string; 
    utf8_decode(yytext, &string); 
    yyextra->append(string); 
    free(string); 
} 
+1

是的的确的。我刚刚在其他地方看过。这实际上很不起眼。 :( – zneak 2010-01-18 06:06:16