%{ #include #define _S s->sem[s->n_sol] #define _C s->cat[s->n_sol] #define nlnext (s->n_sol++) #define llex(A,B,C) {sprintf( s->cat[s->n_sol],"'%s'.",B);\ sprintf( s->sem[s->n_sol],"'%s'.",C);nlnext; return A;} #define catGN sprintf(_C,"%s('%s','%s').",CAT,G,N) #define catGN2 sprintf(_C,"%s('%s','%s').",CAT,G,N) #define root sprintf(_S,"'%s'.",ROOT) #define yysem sprintf(_S,"'%s'.",yytext) #define YY_DECL char * yylex(State *s) %} %initnlex port %feat CAT G N TR P T SEM I Prep Art PFSEM FSEM C Pdem AP AG AN Ppes Pind GR ABR %% {P} {llex("\n\n","par","par");} <> {return "eof";} [0-9]+ {llex(yytext,"ncard",yytext); } [0-9]+\% {llex(yytext,"perc",yytext); } [0-9]+º {yysem ; sprintf(_C,"%s('%s','%s').","nord","m","s"); return yytext;} [0-9]+ª {yysem ; sprintf(_C,"%s('%s','%s').","nord","f","s"); return yytext;} [0-9]+h[0-9][0-9] {llex(yytext,"nc(f,p)",yytext); } [A-Z]\. {llex(yytext,"abr",yytext); } [;:,()] {llex(yytext,"p1",yytext); } [.?!] {llex(yytext,"p0",yytext); } «[^»]*» {llex("«...»","quote","quote");} %word {*CAT=np*} { sprintf(_S,"'%s'::'%s'.",ROOT,SEM); catGN; nlnext;} {*CAT=nc*} { sprintf(_S,"X::'%s'.",ROOT); catGN2; nlnext;} {*CAT=a_nc*} { sprintf(_S,"X::'%s'.",ROOT); catGN2; nlnext;} {*CAT=art*} { root; catGN2; nlnext;} {*CAT=nord*} { root; catGN; nlnext;} {*CAT=v,T=ppa*} { root; sprintf(_C,"v(%s,ppa(%s,%s)).",TR,G,N);nlnext;} {*CAT=v,T=inf*} { root; sprintf(_C,"v(%s,inf).",TR); nlnext;} {*CAT=v,T=g*} { root; sprintf(_C,"v(%s,g).",TR);nlnext;} {*CAT=v,ROOT=ser*} { root; sprintf(_C,"v(ser,%s('%s','%s')).",T,P,N); nlnext;} {*CAT=v,P=1_3*} { root; sprintf(_C,"v(%s,%s(%s,%s)).",TR,T,"3",N); nlnext; root; sprintf(_C,"v(%s,%s(%s,%s)).",TR,T,"1",N); nlnext; } {*CAT=v*} { root; sprintf(_C,"v(%s,%s(%s,%s)).",TR,T,P,N); nlnext;} {*CAT=adj*} { root; catGN2 ; nlnext;} {*CAT=ppos*} { sprintf(_S,"%s%s.",N,P) ; sprintf(_C,"ppos('%s','%s','%s').",P,G,N);nlnext;} {*CAT=ppes*} { sprintf(_S,"%s%s.",N,P) ; sprintf(_C,"ppes('%s','%s','%s','%s').",P,G,N,C);nlnext;} {**} { root; sprintf(_C,"'%s'.",CAT); nlnext;} <> { return yytext ;} %undef {*AUC*} { sprintf(_S,"X::undef(sigla('%s')).",nltext); sprintf(_C,"np(_,_)."); nlnext;} {*UC*} { sprintf(_S,"X::undef('%s').",nltext); sprintf(_C,"np(_,_)."); nlnext;} {**} { sprintf(_S,"undef('%s').",nltext); sprintf(_C,"X."); nlnext;} <> { return yytext ;} %% yywrap(){return 1;}