我在编译器设计课程中,必须学习flex用于词法分析。现在,根据我的理解,flex将输入流中的字符与转换规则进行匹配,并相应地给出输出。 因此,下面的代码应该输出一个等于“hello world”长度的“字符”字符串 - 1.但是它的打印“再见”。我在这里理解错了吗?
代码:
%%
[a-zA-Z] printf("character");
"hello world" printf("goodbye");
%%
答案 0 :(得分:0)
你的词法分析器不识别空格,因此它使用带有指定字符串的规则。插入此规则:
[ \t\n\r] printf("%s", yytext);
然而,根据documentation,它将解决最长匹配的模糊性,这仍然是"再见"规则。