Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.52 KB | None | 0 0
  1. /******** Grammaire : à faire **********/
  2. float F(float x)
  3. {
  4. if (currentToken()->type == VAR)
  5. {
  6. consume(VAR);
  7. return x;
  8. }
  9. else if (currentToken()->type == NUMBER)
  10. {
  11. consume(NUMBER);
  12. return x;
  13. }
  14. else if (currentToken()->type == LB)
  15. {
  16. consume(LB);
  17. return A(x);
  18. consume(RB);
  19. }
  20. }
  21. float Tp(float x)
  22. {
  23. if (currentToken()->type == MULT || currentToken()->type == DIV)
  24. {
  25. consume(currentToken()->type);
  26. x=F(x);
  27. return Tp(x);
  28. }else
  29. {
  30. return x;
  31. }
  32.  
  33. }
  34. float T(float x)
  35. {
  36. x=F(x);
  37. return Tp(x);
  38. }
  39. float Ep(float x)
  40. {
  41. if (currentToken()->type == MINUS || currentToken()->type == PLUS)
  42. {
  43. consume(currentToken()->type);
  44. x=T(x);
  45. return Ep(x);
  46. }else
  47. {
  48. return x;
  49. }
  50.  
  51. }
  52. float E(float x)
  53. {
  54. x=T(x);
  55. return Ep(x);
  56. }
  57. float A(float x)
  58. {
  59. if (currentToken()->type == VAR)
  60. {
  61. consume(VAR);
  62. consume(ASSIGN);
  63. return A(x);
  64. }
  65. else
  66. {
  67. return E(x);
  68. }
  69. }
  70. void Sp(float x)
  71. {
  72. A(x);
  73. consume(SEMICOLON);
  74. printf("%f",x);
  75. }
  76.  
  77. /******** Exemple de programme principal (lecture du fichier passé en paramètres ******/
  78. int main(int argc, char *argv[])
  79. {
  80. fprintf(stderr, "Lexing from %s.\n", argv[1]);
  81. initLexer(argv[1]);
  82. // Appeler la racine de la grammaire...
  83. Sp(0);
  84. // Vérifier que tout le programme a été lu...
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement