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();} /*** digi() is a user defined function ***/
  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 result :%f\n\n",a);}
  22.  
  23. %%
  24. digi()
  25. {
  26. if(op==0)
  27. a=atof(yytext); /*** atof() is used to convert the ASCII input to float***/
  28. else
  29. {
  30. b=atof(yytext);
  31. switch(op)
  32. {
  33. case 1:a=a+b;
  34. break;
  35. case 2:a=a-b;
  36. break;
  37. case 3:a=a*b;
  38. break;
  39. case 4:a=a/b;
  40. break;
  41. case 5:for(i=a;b>1;b--)
  42. a=a*i;
  43. break;
  44. }
  45. op=0;
  46. }
  47. }
  48. main(int argv,char *argc[])
  49. {
  50. yylex();
  51. }
  52. yywrap()
  53. {
  54. return 1;
  55. }
Success #stdin #stdout #stderr 0.02s 6924KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
ERROR: /home/rOszaf/prog:55:0: Syntax error: Unexpected end of file
ERROR: '$runtoplevel'/0: Undefined procedure: program/0
   Exception: (3) program ? EOF: exit