用lex查找过去时的单词

时间:2014-10-15 07:24:42

标签: lex

我想知道如何用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过去时 这是必需的输出:         想要的是过去式         爱是过去式         获得的是过去式         维持过去时态         决定是过去式         收到的是过去时的

1 个答案:

答案 0 :(得分:1)

您的模式要求匹配单个字母后跟ed,这就是打印的内容。要匹配(并因此打印)整个单词,您需要一个像[a-zA-Z]+这样的模式来匹配整个单词。