Advertisement
Benjo_M

flex

Dec 11th, 2019
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. %option noyywrap
  2. %{
  3. #include <string>
  4.  
  5. // structure pour stocker les adresses pour les sauts condistionnels et autres...
  6. typedef struct adr {
  7. int ic_goto;
  8. int ic_false;
  9. } t_adresse;
  10.  
  11. #include "benjotest.bison.hpp"
  12.  
  13. using namespace std;
  14.  
  15. %}
  16. %%
  17.  
  18. [0-9]+(\.[0-9]*)?([Ee][0-9]+)? { yylval.valeur = atof(yytext); return NUMBER; }
  19.  
  20. Répéter|Réitérer { return REPEAT; }
  21.  
  22. PLUS|(P|p)lus { return '+'; }
  23. MOINS|(M|m)oins { return '-'; }
  24. FOIS|(F|f)ois { return '*'; }
  25. SUR|(S|s)ur { return '-'; }
  26.  
  27. ET|(E|e)t { return '&'; }
  28.  
  29. (D|d)emander {return ASK;}
  30. (A|a)fficher|(I|i)mprimer {return PRINT;}
  31.  
  32. si|SI|Si {return SI;}
  33. Alors|alors|ALORS {return ALORS;}
  34. Sinon|sinon|SINON {return SINON;}
  35. FinSi|finsi|FINSI {return FINSI;}
  36.  
  37. ==|(E|e|é)quivaut|(E|e|é)quivalent {return DOUBLE_EGAL;}
  38. =>|(S|s)up(é|e)rieur {return SUP_EGAL;}
  39. (S|s)trict(S|s)up(é|e)rieur|> {return SUP_STRICT;}
  40. =<|(I|i)nf(é|e)rieur {return INF_EGAL;}
  41. (S|s)trict(I|i)nf(é|e)rieur|< {return INF_STRICT;}
  42.  
  43. POURDE {return POURDE;}
  44. JUSQUA {return JUSQUA;}
  45. FINPOUR {return FINPOUR;}
  46.  
  47. TANTQUE {return TANTQUE;}
  48. FAIRE {return FAIRE;}
  49. FINTANTQUE {return FINTANTQUE;}
  50.  
  51.  
  52. [A-Za-z_][0-9A-Za-z_]* { strcpy(yylval.nom,yytext); return VARIABLE; }
  53. \"[A-Za-z_][0-9A-Za-z_]*\" { strcpy(yylval.nom,yytext); return TEXT; }
  54.  
  55. \r\n { return '\n'; }
  56. \r { return '\n'; }
  57. \n { return '\n'; }
  58.  
  59. [ \t] { }
  60.  
  61. . { return yytext[0]; }
  62.  
  63. %%
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement