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. /* digi() is a user defined function */
  16. {dig} {digi();}
  17. {add} {op=1;}
  18. {sub} {op=2;}
  19. {mul} {op=3;}
  20. {div} {op=4;}
  21. {pow} {op=5;}
  22. {ln} {printf("\n The Answer :%f\n\n",a);}
  23.  
  24. %%
  25. digi()
  26. {
  27. if(op==0)
  28.  
  29. /* atof() is used to convert
  30.   - 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. }
Success #stdin #stdout #stderr 0.02s 6932KB
stdin
3+3
stdout
Standard output is empty
stderr
ERROR: /home/crIE52/prog:67:1: Syntax error: Unexpected end of file
ERROR: '$runtoplevel'/0: Undefined procedure: program/0
   Exception: (3) program ? EOF: exit