弹性输出没有显示正确的行为
flex output not showing correct behavior
我在上编译器设计课程,必须学习 flex 进行词法分析。现在,据我所知,flex 将输入流中的字符与翻译规则相匹配,并相应地给出输出。
所以,下面的代码应该输出一个 "character" 的字符串,等于 "hello world" - 1 的长度。但是它打印的是 "goodbye" 。我在这里理解错了吗?
代码:
%%
[a-zA-Z] printf("character");
"hello world" printf("goodbye");
%%
您的词法分析器无法识别空格,因此它使用具有指定字符串的规则。插入这条规则:
[ \t\n\r] printf("%s", yytext);
但是,根据documentation,它会解决最长匹配的歧义,仍然是"goodbye"规则。
我在上编译器设计课程,必须学习 flex 进行词法分析。现在,据我所知,flex 将输入流中的字符与翻译规则相匹配,并相应地给出输出。 所以,下面的代码应该输出一个 "character" 的字符串,等于 "hello world" - 1 的长度。但是它打印的是 "goodbye" 。我在这里理解错了吗?
代码:
%%
[a-zA-Z] printf("character");
"hello world" printf("goodbye");
%%
您的词法分析器无法识别空格,因此它使用具有指定字符串的规则。插入这条规则:
[ \t\n\r] printf("%s", yytext);
但是,根据documentation,它会解决最长匹配的歧义,仍然是"goodbye"规则。