2014-10-15 3 views
0

나는 시제로 단어를 식별하고 인쇄하기 위해 lex에 코드를 작성하는 방법을 알고 싶습니다. 샘플 코드를 작성했지만 이전 시제의 단어를 식별해도 단어를 인쇄하지 않습니다. 내가 입력으로 다음했다 때 Pls는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에 네드 과거 시제 에 과거 시제에 있습니다 사랑 싶 었는 이것은 내가 가진 출력 받은 결정 유지가 늘 NED는 과거 시제 DED에 과거 시제 VED에 이것은 필요한 출력되는 과거 시제 에 있습니다 원한이 긴장이 좋아 과거에 얻은 과거 시제 에 과거 시제 MAINT에 과거 시제

답변

1

귀하의 패턴이 인쇄있어 무엇 때문에, ed 다음에 하나의 문자와 일치하도록 요청에 ained 결정 과거 시제 에받은 과거 시제 에있다. 전체 단어와 일치 시키려면 (인쇄하여) 단어 전체를 일치 시키려면 [a-zA-Z]+과 같은 패턴이 필요합니다.

+0

실수를 지적 해 주셔서 감사합니다. 나는 그 것을 알지 못했습니다. :) – user3527594

+0

어떻게 과거 시제가 주어 졌는지 루트 단어를 인쇄합니까? 예를 들면 : 사랑한다면 단어가 입력으로 주어진 다음 "루트 단어가 사랑"으로 출력을 얻으려면 어떻게이 코드를 수정할 수 있습니까? – user3527594

+0

@ user3527594 : 질문에 대한 질문이 아닙니다. 당신이 원하는 결과물은 과거의 긴장된 단어였습니다. 하지만 근본이 지나간 "ed"가 삭제 된 과거 시제 단어라는 사실을 알고 있기 때문에 어렵지 않아야합니다. –

관련 문제