%{ int var = 0; #include #define eq(X,Y) (strcmp(X,Y) == 0) #define ne(X,Y) (strcmp(X,Y) != 0) #define par(X,Y) { printf(X); yysval.str=strdup(yytext);\ yylval.str=yysval.str;yysetvalue(Y);} extern YYSEMTYPE yysval; extern YYSTYPE yylval; %} %initnlex port %feat CAT G N TR P T SEM I Prep Art FSEM %% [0-9]+ {par("(int)",INTEIRO); return 0; } [A-Z]\. {par("(abrev)",ABR); return 0; } \; {par("(PUNCT)",PUNCT); return 0; } \. {par("(EOF)",EOF); return 0; } <> {par("(EOF)",EOF); return 0; } «{P}» {par("(pn_a)",PN); return 0; } %word {*CAT=nc*} { par("(nome)", NOUN); } {*CAT=cp*} { par("(prep)", PREP); } {*CAT=np,UC*} { par("(pn)", PN); } {*CAT=prep*} { par("(prep)", PREP); } {*CAT=v,T=i*} { ; /* rejeito imperativos */ } {*CAT=v,T=inf*} { par("(inf)", INF); } {*CAT=v,T=ppa*} { par("(ppa)", PPA); } {*CAT=v,ROOT=ser*} { par("(ser)", SER); } {*CAT=v,ROOT=estar*} { par("(ser)", SER); } {*CAT=v,ROOT=ter*} { par("(ter)", TER); } {*CAT=v*} { par("(v)", VERB); } {*CAT=art*} { par("(art)", DET); } {*CAT=pind*} { par("(pind)", PIND); } {*CAT=a_nc*} { par("(nome)", NOUN); par("(adj)", ADJ); } {*CAT=adj*} { par("(adj)", ADJ); } {*CAT=adv*} { par("(adv)", ADV); } {**} { printf("[%s]", yytext); yysetvalue(UNDEF); } <> { printf(".\n"); return 0; } %undef {**} { par("???", UNDEF); } <> { printf(".\n"); return 0; } %%