我想知道如何用lex编写代码来识别和打印过去时的单词。我已经编写了一个示例代码,但它不打印该单词,尽管它标识了过去时的单词。请帮忙
%{
#include<stdio.h>
%}
%%
[a-zA-Z]"ed" {printf("%s is in past tense\n",yytext);}
[a-zA-Z0-9,$.]
%%
main()
{
yyin = fopen("pos.c","r");
yylex();
}
当我将以下内容作为输入时: 希望被爱的获得维持决定收到 这是我得到的输出: 特德是过去式 ved过去时 奈德是过去式 奈德是过去式 ded是过去式 ved过去时 这是必需的输出: 想要的是过去式 爱是过去式 获得的是过去式 维持过去时态 决定是过去式 收到的是过去时的
答案 0 :(得分:1)
您的模式要求匹配单个字母后跟ed
,这就是打印的内容。要匹配(并因此打印)整个单词,您需要一个像[a-zA-Z]+
这样的模式来匹配整个单词。