%{ int pr=1; %} %initnlex port %feat CAT G N TR P T SEM I Prep Art PFSEM FSEM C Pdem AP AG AN Ppes Pind ABR GR ID ([a-zA-Z0-9_]+) email ({ID}\@{ID}(\.{ID})*) %% [A-Z]\. { printf("(abre)%s\n",yytext);} \$[^$]\$ { printf("(np m)<%s>", yytext);} {email} { printf("(np ms)%s\n",yytext);} [0-9]+ { printf("(ncard)%s\n",yytext);} [0-9]+\% { printf("(nprec)%s\n",yytext);} [0-9]+º { printf("(nord m)%s\n",yytext);} [0-9]+h[0-9][0-9]m? { printf("(nc fp)%s\n",yytext);} [0-9]+(cm|mm|m|km) { printf("(nc mp)%s\n",yytext);} [;:,] { printf("(p1)%s\n",yytext);} [.?!] { printf("(p0)%s\n",yytext);} «[^»]*» { printf("«...»","quote","quote");} {P} { printf("(parag)\n\n");} %word {*CAT=nc*} { printf("(nc %s%s)",G,N);} {*CAT=np*} { printf("(np)");} {*CAT=prep*} { printf("(p)");} {*CAT=v,T=i*} { ;} {*CAT=v,ROOT=ser*} { printf("(ser %s%s%s)",T,N,P);} {*CAT=v,ROOT=ter*} { printf("(ter %s%s%s)",T,N,P);} {*CAT=v,T=ppa*} { printf("(vpp %s%s)",G,N);} {*CAT=v*} { printf("(v %s%s%s)",T,N,P);} {*CAT=art*} { printf("(art)");} {*CAT=pind*} { printf("(pind %s%s)",G,N);} {**} { printf("(%s)",CAT);} <> { if(pr){printf("[%s]%s\n",ROOT,nltext);}else{pr=1;}} %undef {*CAT=v*} { printf("(v? %s%s%s)",T,N,P);} {*CAT=nc*} { printf("(nc? %s%s)",G,N);} {*CAT=adv*} { printf("(adv?)");} {*CAT=adj*} { printf("(adj?-%s%s)",G,N);} {*nltext=pt*} { printf("(np ms)Portugal\n");pr=0;} {*UC*} { printf("(np?)");} {*AUC*} { printf("(abre?)");} {**} { printf("(?)");} <> { if(pr){printf("[%s]%s\n",ROOT,nltext);}else{pr=1;}} %% main() { yylex(); }