%{ #define set_estado(x) BEGIN(_stack[_i]=x) #define push_to_stack(x) _stack[++_i]=YY_START; set_estado(x) #define pop_back set_estado(_stack[--_i]) #include #include #define MAX 1000 int _i=0; int j=0,i=0; int _stack[MAX]; int cont_item=0; int cont_pag=11; int cont_titulo=0; int cont_subtit1=0; int cont_subtit2=0; int cont_subtit3=0; char *idbibs[]={"FRS90","BEL56a","BEL56b","BOY74","INO39","CUN38", "CUN07","CUN11","CUN90","CUN66","FRA60","DUA87", "DUA90a","DUA90b","DUL41","EUL96","FRE72","GIU89", "GOL77","GON40","ANT49","GRA90","HEA81","HEY72", "CAR89","ISA66","MAR87","MUL57a","MUL70","MUL36", "MUL60","MUL57b","NEW11","HER30","OLI89","PAL33", "PES67","JOA88","QUE72","ANT90","ROD87","ROD88", "SMI59","TEI25","YOU78","YOU73"}; /* e1 - inicial e2 - paginas e3 - titulo e4 - bibliografia e6 - descricao e7 - em e8 - sc e9 - sc_acentos */ %} PALAVRA [a-zA-Z&0-9\[\]]+ BLANK [ \t\n] PONTUACAO [:\.;',?!\-_] TEXTO ({BLANK}*{PALAVRA}{BLANK}*{PONTUACAO}*{BLANK}*)+ %Start e1 e2 e3 e4 e6 e7 e8 e9 %% set_estado(e1); \\novapagina printf(""); \\centrado\{\{\\large{BLANK}\\realce\{(.+)\}\}\} {printf(""); j=26; while(j<(yyleng - 3)){ printf("%c",yytext[j]); j++; } printf(""); } \\begin\{description\} push_to_stack(e4); \\item {if(cont_item==0){ printf("\n",idbibs[cont_item]); printf("%s\n",idbibs[cont_item++]); printf(""); push_to_stack(e6);} else{ printf("\n\n"); printf("\n",idbibs[cont_item]); printf("%s\n",idbibs[cont_item++]); printf(""); push_to_stack(e6);} } \\item {printf("\n");pop_back; yyless(0);} \\end\{description\} {printf("\n\n\n\n\n"); pop_back;pop_back;} \{\\sc push_to_stack(e8); {TEXTO}(\n)*\} {i=0; while(yytext[i]!='}'){ if(yytext[i]!='&') printf("%c",toupper(yytext[i])); else{ printf("&"); printf("%c",toupper(yytext[i+1])); i=i+2; while(yytext[i]!=';'){ printf("%c",yytext[i]); i++; } printf("%c",yytext[i]); } i++; } pop_back; } \{\\em push_to_stack(e7); \} {i=0; while(yytext[i]!='}'){ printf("%c", yytext[i]); i++;} pop_back;} %%