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