Olá, estou tentando rodar um arquivo FLEX no meu windows, porem estou tendo alguns problemas:
Código do arquivo Lexico.l:
%option noyywrap
%{
#include <stdio.h>
#include "sintatico.tab.h"
%}
DIGIT [0-9]
ID [a-z][a-z0-9]*
%%
program {return(S_PROGRAM);}
if {return (S_IF); }
then {return (S_THEN); }
else {return (S_ELSE); }
while {return(S_WHILE);}
do {return(S_DO);}
var {return(S_VAR);}
begin {return(S_BEGIN);}
end {return(S_END);}
"/" {return(S_DIV);}
and {return(S_AND);}
or {return(S_OR);}
not {return(S_NOT);}
write {return(S_WRITE);}
read {return(S_READ);}
"+" {return(S_MAIS);}
"-" {return(S_MENOS);}
"*" {return(S_VEZES);}
":=" {return(S_ATRIBUI);}
":" {return(S_DOISPTOS);}
"." {return(S_PONTO);}
";" {return(S_PONTOVG);}
"," {return(S_VIRGULA);}
"(" {return(S_ABREPAR);}
")" {return(S_FECHAPAR);}
">" {return(S_MAIOR);}
"<" {return(S_MENOR);}
">=" {return(S_MAIGUAL);}
"<=" {return(S_MEIGUAL);}
"=" {return(S_IGUAL);}
"<>" {return(S_DIFERENTE);}
{DIGIT}+ {
strcpy(lexema,yytext);
return(S_NUMERO);
}
{ID} {
strcpy(lexema,yytext);
return(S_IDENTIF);
}
[ \t] /* faz nada. ignora espacos e tabulacao */
[\n] { numero_da_linha++; }
<<EOF>> { return (0); }
. {
printf("\nErro lexico. SIMBOLO DESCONHECIDO: [%s]. LINHA: %d.\n",yytext,numero_da_linha);
exit(1);
}
%%