compilator-2000/al.lex
2021-04-06 16:19:44 +02:00

72 lines
1.5 KiB
Text

%{
#include "asm_instructions.h"
#include "symbol_table.h"
#include "as.tab.h"
%}
D [0-9]
%%
{D}+(e{D}+)? {
yylval.nombre = atoi(yytext);
return tNB;
}
"+" {
yylval.instruction = ADD;
return tADD;
}
"-" {
yylval.instruction = SOU;
return tSUB;
}
"*" {
yylval.instruction = MUL;
return tMUL;
}
"/" {
yylval.instruction = DIV;
return tDIV;
}
"=" { return tEQ; }
"(" { return tPO; }
")" { return tPF; }
";" { return tPV; }
"," { return tVIRG; }
"{" { return tAO; }
"}" { return tAF; }
"!" { return tNOT; }
"==" { return tEQ2; }
"!=" { return tNOTEQ; }
"<" { return tINF; }
"<=" { return tINFEQ; }
">" { return tSUP; }
">=" { return tSUPEQ; }
"&&" { return tAND; }
"||" { return tOR; }
[ \t\n]+ { }
"int" { return tINT; }
"const" { return tCONST; }
"main" { return tMAIN; }
"if" { return tIF; }
"else" { return tELSE; }
"elsif" { return tELSIF; }
"while" { return tWHILE; }
"printf" { return tPRINTF; }
[a-zA-Z][a-zA-Z0-9_]* {
yylval.symbol_name = malloc(sizeof(yytext));
strcpy(yylval.symbol_name, yytext);
return tID;
}
%%
int yywrap() {
return 1;
}
// int main () {
// yylex();
// return 1;
// }