%{ #include #include "y.tab.h" %} %x COMENTARIOL %x COMENTARIOB %x STRING %% "//" BEGIN COMENTARIOL; "\n" BEGIN 0; . ; "/*" BEGIN COMENTARIOB; "*/" BEGIN 0; . ; "\"" BEGIN STRING; [^"]* {yylval.nome = strdup(yytext); return string;} "\"" BEGIN 0; PROGRAM {return PROGRAM;} DECLARATIONS {return DECLARATIONS;} STATEMENTS {return STATEMENTS;} INTEGER {return INTEGER;} BOOLEAN {return BOOLEAN;} ARRAY {return ARRAY;} SIZE {return SIZE;} TRUE {return TRUE;} FALSE {return FALSE;} SAY {return SAY;} SAYL {return SAYL;} SAYS {return SAYS;} ASK {return ASK;} IF {return IF;} THEN {return THEN;} ELSE {return ELSE;} WHILE {return WHILE;} OPENWINDOW {return OPENWINDOW;} LINHA {return LINHA;} PONTO {return PONTO;} CIRCULO {return CIRCULO;} COR {return COR;} REFRESH {return REFRESH;} CLEAR {return CLEAR;} "->" {return AT;} "||" {return BB;} "&&" {return EE;} "**" {return AA;} "==" {return IGUAL;} "!=" {return DIFERENTE;} "<=" {return MENORIGUAL;} ">=" {return MAIORIGUAL;} "in" {return IN;} [0-9]+ {yylval.num = atoi(yytext); return number;} [a-zA-Z][a-zA-Z0-9]* {yylval.nome = strdup(yytext); return identifier;} [a-zA-Z]+ {yylval.nome = strdup(yytext); return string;} [{}[\]();,=?<>+-/*] {return yytext[0]; /* ER para todos os caracters unicos */} [ \t\n]+ {;} . {fprintf(stderr,"Erro Lexico\n\n");} %% int yywrap() {return 1;}