%{ int var=0; %} %initnlex port %feat CAT G N T TR P %% %word {*CAT=nc,G=m*} { printf("rule 0 - nc masc ROOT=%s\n", ROOT); var=1;} {*CAT=nc,G=f*} { printf("rule 1 - nc fem CAT=%s\n", CAT);var=2; } {*CAT=np*} { printf("rule 2 - np;\n");var=3;} {**} { printf("rule 3 - default;\n");var=4;} %undef {**} { printf("Undefined word %s\n", yytext);var=5;} <> { printf("EOW\n"); return(var);} %% main() { do { printf("-(%d)---------------------\n",yylex()); } while (strcmp(yytext, "fim")); }