%{ #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]) #define MAX 10 int _stack[MAX]; int _i=0; int cont_idmat=19; %} NUMINT [0-9]+ BLANK [ \t\n] TEXTOMAT [\\\{\}\(\)\[\]&;=a-zA-Z0-9:\-\.,_+\^\n \t]+ %Start e1 e2 e3 e4 e5 %% set_estado(e1); \ {switch (cont_idmat) {case 50:{printf("", cont_idmat); push_to_stack(e2); break;} case 51:{printf("", cont_idmat); push_to_stack(e2); break;} case 52:{printf("", cont_idmat); push_to_stack(e2); break;} case 53:{printf("", cont_idmat); push_to_stack(e2); break;} case 54:{printf("", cont_idmat); push_to_stack(e2); break;} case 55:{printf("", cont_idmat); push_to_stack(e2); break;} case 61:{printf("", cont_idmat); push_to_stack(e2); break;} case 62:{printf("", cont_idmat); push_to_stack(e2); break;} case 63:{printf("", cont_idmat); push_to_stack(e2); break;} case 64:{printf("", cont_idmat); push_to_stack(e2); break;} case 65:{printf("", cont_idmat); push_to_stack(e2); break;} case 66:{printf("", cont_idmat); push_to_stack(e2); break;} case 67:{printf("", cont_idmat); push_to_stack(e2); break;} case 68:{printf("", cont_idmat); push_to_stack(e2); break;} default:{printf("", cont_idmat); push_to_stack(e3);} } cont_idmat++; } {TEXTOMAT}\<\/matematica\> {ECHO; pop_back;} {TEXTOMAT}\<\/matematica\> {; printf(""); pop_back;} %%