Advertisement
Guest User

Untitled

a guest
Oct 26th, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. #include "ft_functs.h"
  2. #include "eval_expr.h"
  3.  
  4. int parse_number(char **expr)
  5. {
  6. int nbr;
  7.  
  8. while (**expr == ' ')
  9. (*expr)++;
  10. if (**expr == '(')
  11. {
  12. (*expr)++;
  13. nbr = parse_sum(expr);
  14. if (**expr == ')')
  15. (*expr)++;
  16. return (nbr);
  17. }
  18. return (ft_atoi(expr));
  19. }
  20.  
  21. int parse_factors(char **expr)
  22. {
  23. int nbr;
  24. int nbr2;
  25. char op;
  26.  
  27. nbr = parse_number(expr);
  28. while (**expr)
  29. {
  30. while (**expr == ' ')
  31. (*expr)++;
  32. op = **expr;
  33. if (op != '/' && op != '*' && op != '%')
  34. return (nbr);
  35. (*expr)++;
  36. nbr2 = parse_number(expr);
  37. if (op == '/')
  38. nbr /= nbr2;
  39. else if (op == '*')
  40. nbr *= nbr2;
  41. else
  42. nbr %= nbr2;
  43. }
  44. return (nbr);
  45. }
  46.  
  47. int parse_sum(char **expr)
  48. {
  49. int nbr;
  50. int nbr2;
  51. char op;
  52.  
  53. nbr = parse_factors(expr);
  54. while (**expr)
  55. {
  56. while (**expr == ' ')
  57. (*expr)++;
  58. op = **expr;
  59. if (op != '+' && op != '-')
  60. return (nbr);
  61. (*expr)++;
  62. nbr2 = parse_factors(expr);
  63. if (op == '+')
  64. nbr += nbr2;
  65. else
  66. nbr -= nbr2;
  67. }
  68. return (nbr);
  69. }
  70.  
  71. int eval_expr(char *expr)
  72. {
  73. return (parse_sum(&expr));
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement