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