Guest User

Untitled

a guest
Feb 15th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.01 KB | None | 0 0
  1. %{
  2. #include<stdio.h>
  3. #include<math.h>
  4. #include<stdlib.h>
  5. %}
  6.  
  7. %union {int num; float NUM;}
  8. %start line
  9. %token cos1
  10. %token sin1
  11. %token tan1
  12. %token pow1
  13. %token <num> number
  14. %token <NUM> NUMBER
  15. %type <num> exp
  16. %%
  17.  
  18. line : exp
  19. | line exp
  20. ;
  21.  
  22. exp : number {$$=$1;}
  23. | exp '+' number {$$=$1+$3;printf("\n%d+%d=%d\n",$1,$3,$$);}
  24. | exp '-' number {$$=$1-$3;printf("\n%d-%d=%d\n",$1,$3,$$);}
  25. | exp '*' number {$$=$1*$3;printf("\n%d*%d=%d\n",$1,$3,$$);}
  26. | exp '/' number {$$=$1/$3;printf("\n%d/%d=%d\n",$1,$3,$$);}
  27. | exp '^' number {$$=$1^$3;printf("\n%d^%d=%d\n",$1,$3,$$);}
  28. | exp '&' number {$$=$1&$3;printf("\n%d&%d=%d\n",$1,$3,$$);}
  29. | '!' number {$$=!$2;printf("\n!%d=%d\n",$2,$$);}
  30. | exp '|' number {$$=$1|$3;printf("\n%d|%d=%d\n",$1,$3,$$);}
  31. | cos1 NUMBER {printf("%f",cos(($2/180)*3.14));}
  32. | sin1 NUMBER {printf("%f",sin(($2/180)*3.14));}
  33. | tan1 NUMBER {printf("%f",tan(($2/180)*3.14));}
  34. | exp pow1 number {printf("%f",pow($1,$3));}
  35. ;
  36.  
  37. %%
  38.  
  39. int main(){
  40. yyparse();
  41. return 0;
  42. }
  43. int yyerror(){
  44. exit(0);
  45. }
Add Comment
Please, Sign In to add comment