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.

analyse_syntaxique.y 1.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. %union {
  2. int nombre;
  3. }
  4. %token<nombre> tENTIER
  5. %token tADD
  6. %token tSUB
  7. %token tMUL
  8. %token tDIV
  9. %token tPO
  10. %token tPF
  11. %token tAO
  12. %token tAF
  13. %token tERROR
  14. %token tPV
  15. %token tVIRGULE
  16. %token tAFFECTATION
  17. %token tEGAL
  18. %token tDIFF
  19. %token tLT
  20. %token tGT
  21. %token tGTE
  22. %token tLTE
  23. %token tMAIN
  24. %token tINT
  25. %token tPRINT
  26. %token tRETURN
  27. %token tOR
  28. %token tAND
  29. %token tIF
  30. %token tELSE
  31. %token tWHILE
  32. %token tCONST
  33. %token tVAR
  34. %token tNOT
  35. %left tADD
  36. %left tSUB
  37. %right tEGAL
  38. %type<nombre> E
  39. %%
  40. C : Fonctions Main ;
  41. Fonctions : Fonction Fonctions | Fonction | ;
  42. Fonction : tINT tVAR tPO Params tPF Body ;
  43. Main : tINT tMAIN tPO tPF Body ;
  44. Params : | Param SuiteParams ;
  45. Param : tINT tVAR ;
  46. // Ps : P Ps | ;
  47. // P : tINT tID ttVIRGULE
  48. // Ps =>* tINT tID ttVIRGULE tINT tID ttVIRGULE
  49. // Ps => P Ps => P P Ps ...
  50. SuiteParams : tVIRGULE Param SuiteParams | ;
  51. Body : tAO Instructions tAF ;
  52. Instructions : Instruction Instructions | ;
  53. Instruction : Aff | If | While | tRETURN | Print | Decl | Invocation tPV ;
  54. Decl : Type Valeur SuiteDecl tPV;
  55. SuiteDecl: tVIRGULE Valeur SuiteDecl | ;
  56. Type : tINT | tCONST tINT ;
  57. Valeur : tVAR | Affbis ;
  58. Affbis : tVAR tAFFECTATION E;
  59. Aff : Affbis tPV ;
  60. E : tENTIER | tVAR | E tADD E | E tMUL E | E tSUB E | E tDIV E | Invocation | tPO E tPF | tSUB E ;
  61. // E : tID tPlus tID | ...
  62. If : tIF tPO Cond tPF Body Else;
  63. Else : | tELSE Body |tELSE tIF tPO Cond tPF Body Else;
  64. While : tWHILE tPO Cond tPF Body ;
  65. Cond : Cond tAND Cond | Cond tOR Cond | E tEGAL E | E tDIFF E | E tLT E | E tGT E | E tLTE E | E tGTE E| tNOT Cond ;
  66. Print : tPRINT tPO tVAR tPF tPV ;
  67. Invocation : tVAR tPO Args tPF ;
  68. Args : | Arg SuiteArgs ;
  69. Arg : tVAR ;
  70. SuiteArgs : tVIRGULE Arg SuiteArgs ;
  71. RETURN : tRETURN E tPV ;
  72. %%