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