Advertisement
Mohamed_AIT_RAMI

calcArith

Jan 29th, 2019
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.36 KB | None | 0 0
  1. //
  2. // Created by Ait Rami on 1/26/2019.
  3. //
  4. float calcArith(char *_exp);
  5.  
  6. char *expressionToParse;
  7.  
  8. char peek()
  9. {
  10.     return *expressionToParse;
  11. }
  12.  
  13. char get()
  14. {
  15.     return *expressionToParse++;
  16. }
  17.  
  18. float expression();
  19.  
  20. float number()
  21. {
  22.     float result = get() - '0';
  23.     while (peek() >= '0' && peek() <= '9')
  24.     {
  25.         result = 10*result + get() - '0';
  26.     }
  27.     return result;
  28. }
  29.  
  30. float factor()
  31. {
  32.     if (peek() >= '0' && peek() <= '9')
  33.         return number();
  34.     else if (peek() == '(')
  35.     {
  36.         get(); // '('
  37.         float result = expression();
  38.         get(); // ')'
  39.         return result;
  40.     }
  41.     else if (peek() == '-')
  42.     {
  43.         get();
  44.         return -factor();
  45.     }
  46.     return 0; // error
  47. }
  48.  
  49. float term()
  50. {
  51.     float result = factor();
  52.     while (peek() == '*' || peek() == '/')
  53.         if (get() == '*')
  54.             result *= factor();
  55.         else
  56.             result /= factor();
  57.     return result;
  58. }
  59.  
  60. float expression()
  61. {
  62.     float result = term();
  63.     while (peek() == '+' || peek() == '-')
  64.         if (get() == '+')
  65.             result += term();
  66.         else
  67.             result -= term();
  68.     return result;
  69. }
  70.  
  71. float calcArith(char* _exp) {
  72.     expressionToParse=calloc(80, sizeof(char));
  73.     strcpy(expressionToParse,_exp);
  74.     //printf("%s",expressionToParse);
  75.     return expression();
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement