No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

al.lex 2.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. %{ // Ne pas toucher
  2. #include "as.tab.h"
  3. int yywrap(void){return 1;}
  4. void
  5. yyerror (char const *s)
  6. {
  7. fprintf (stderr, "%s\n", s);
  8. }
  9. %}
  10. %%
  11. "main" { return tMAIN; } // Token de la fonction main
  12. "{" { return tOBRACKET; } // Token accolade ouvrante
  13. "}" { return tCBRACKET; } // Token accolade fermante
  14. "(" { return tOBRACE; } // Token parenthèse ouvrante
  15. ")" { return tCBRACE; } // Token parenthèse fermante
  16. "const" { return tCONST; } // Token constante
  17. "int" { return tINT; } // Token type int
  18. "if" { return tIF; } // Token if
  19. "else" { return tELSE; } // Token else
  20. "while" { return tWHILE; } // Token while
  21. "return" {return tRETURN; } // Token return
  22. "<" { return tLT; } // Token plus petit que
  23. ">" { return tGT; } // Token plus grand que
  24. "==" { return tEQCOND; } // Token égal comparaison
  25. "&&" { return tAND; } // Token ET
  26. "||" { return tOR; } // Token OU
  27. "&" { return tADDR; } // Token adresse
  28. "[" { return tOCROCH; } // Token crochet ouvrante
  29. "]" { return tCCROCH; } // Token crochet ouvrante
  30. "get" { return tGET; } // Token fonction get
  31. "printf" { return tPRINTF; } // Token fonction print
  32. "stop" { return tSTOP; } // Token fonction stop
  33. "+" { return tADD; } // Token addition
  34. "-" { return tSUB; } // Token soustraction
  35. "*" { return tMUL; } // Token multiplication
  36. "/" { return tDIV; } // Token division
  37. "=" { return tEQ; } // Token egal affectation
  38. ";" { return tPV; }
  39. "," { return tCOMA; }
  40. [0-9]+ { yylval.nombre = atoi(yytext); return tNB; } // Token nombre au format classique
  41. [0-9]+e[0-9]+ { yylval.nombre = -1; return tNB; } // Token nombre au format exponentiel
  42. [a-zA-Z][a-zA-Z0-9_]* { strcpy(yylval.id, yytext); return tID; } // Chaine de caractère (identifiant variable, fonction..)
  43. " " {} //Ne pas les retourner à Yacc (espace)
  44. " " {} //Ne pas les retourner à Yacc (tabulation)
  45. "\n" {} //Ne pas les retourner à Yacc (retour chariot)
  46. %%