fork download
  1. % {
  2. int op = 0,i;
  3. float a, b;
  4. % }
  5.  
  6. dig [0-9]+|([0-9]*)"."([0-9]+)
  7. add "+"
  8. sub "-"
  9. mul "*"
  10. div "/"
  11. pow "^"
  12. ln \n
  13. %%
  14. {dig} {digi();}
  15. {add} {op=1;}
  16. {sub} {op=2;}
  17. {mul} {op=3;}
  18. {div} {op=4;}
  19. {pow} {op=5;}
  20. {ln} {printf("\n The Answer :%f\n\n",a);}
  21.  
  22. %%
  23. digi()
  24. {
  25. if(op==0)
  26. a=atof(yytext);
  27.  
  28. else
  29. {
  30. b=atof(yytext);
  31.  
  32. switch(op)
  33. {
  34. case 1:a=a+b;
  35. break;
  36.  
  37. case 2:a=a-b;
  38. break;
  39.  
  40. case 3:a=a*b;
  41. break;
  42.  
  43. case 4:a=a/b;
  44. break;
  45.  
  46. case 5:for(i=a;b>1;b--)
  47. a=a*i;
  48. break;
  49. }
  50. op=0;
  51. }
  52. }
  53.  
  54. main(int argv,char *argc[])
  55. {
  56. yylex();
  57. }
  58.  
  59. yywrap()
  60. {
  61. return 1;
  62. }
  63.  
Success #stdin #stdout #stderr 0.02s 6772KB
stdin
3+3
stdout
Standard output is empty
stderr
ERROR: /home/4uJpxc/prog:62:1: Syntax error: Unexpected end of file
ERROR: '$runtoplevel'/0: Undefined procedure: program/0
   Exception: (3) program ? EOF: exit