71 lines
2.4 KiB
Text
71 lines
2.4 KiB
Text
%{ // Ne pas toucher
|
|
#include "as.tab.h"
|
|
int yywrap(void){return 1;}
|
|
void
|
|
yyerror (char const *s)
|
|
{
|
|
fprintf (stderr, "%s\n", s);
|
|
}
|
|
|
|
%}
|
|
|
|
%%
|
|
|
|
|
|
"main" { return tMAIN; } // Token de la fonction main
|
|
|
|
"{" { return tOBRACKET; } // Token accolade ouvrante
|
|
"}" { return tCBRACKET; } // Token accolade fermante
|
|
"(" { return tOBRACE; } // Token parenthèse ouvrante
|
|
")" { return tCBRACE; } // Token parenthèse fermante
|
|
|
|
"const" { return tCONST; } // Token constante
|
|
"int" { return tINT; } // Token type int
|
|
|
|
"if" { return tIF; } // Token if
|
|
"else" { return tELSE; } // Token else
|
|
"while" { return tWHILE; } // Token while
|
|
|
|
"return" {return tRETURN; } // Token return
|
|
|
|
"<" { return tLT; } // Token plus petit que
|
|
">" { return tGT; } // Token plus grand que
|
|
"==" { return tEQCOND; } // Token égal comparaison
|
|
|
|
"!" { return tNOT; } // Token NOT
|
|
"&&" { return tAND; } // Token ET
|
|
"||" { return tOR; } // Token OU
|
|
|
|
"&" { return tADDR; } // Token adresse
|
|
"[" { return tOCROCH; } // Token crochet ouvrante
|
|
"]" { return tCCROCH; } // Token crochet ouvrante
|
|
|
|
"get" { return tGET; } // Token fonction get
|
|
"print" { return tPRINT; } // Token fonction print
|
|
"stop" { return tSTOP; } // Token fonction stop
|
|
|
|
"+" { return tADD; } // Token addition
|
|
"-" { return tSUB; } // Token soustraction
|
|
"*" { return tMUL; } // Token multiplication
|
|
"/" { return tDIV; } // Token division
|
|
|
|
"=" { return tEQ; } // Token egal affectation
|
|
|
|
";" { return tPV; }
|
|
"," { return tCOMA; }
|
|
|
|
[0-9]+ { yylval.nombre = atoi(yytext); return tNB; } // Token nombre au format classique
|
|
[0-9]+e[0-9]+ { yylval.nombre = -1; return tNB; } // Token nombre au format exponentiel
|
|
|
|
["][^"]*["] { strcpy(yylval.str, yytext); return tSTR; }
|
|
|
|
[a-zA-Z][a-zA-Z0-9_]* { strcpy(yylval.id, yytext); return tID; } // Chaine de caractère (identifiant variable, fonction..)
|
|
|
|
|
|
" " {} //Ne pas les retourner à Yacc (espace)
|
|
" " {} //Ne pas les retourner à Yacc (tabulation)
|
|
"\n" {} //Ne pas les retourner à Yacc (retour chariot)
|
|
|
|
%%
|
|
|
|
|