fork download
  1. alpha [A-Za-z]
  2. digit [0-9]
  3. %%
  4. [ \t\n]
  5. if return IF;
  6. then return THEN;
  7. else return ELSE;
  8. {digit}+ return NUM;
  9. {alpha}({alpha}|{digit})* return ID;
  10. "<=" return LE;
  11. ">=" return GE;
  12. "==" return EQ;
  13. "!=" return NE;
  14. "||" return OR;
  15. "&&" return AND;
  16. . return yytext[0];
  17. %%
  18.  
  19.  
  20. %{
  21. #include <stdio.h>
  22. #include <stdlib.h>
  23. %}
  24. %token ID NUM IF THEN LE GE EQ NE OR AND ELSE
  25. %right '='
  26. %left AND OR
  27. %left '<' '>' LE GE EQ NE
  28. %left '+''-'
  29. %left '*''/'
  30. %right UMINUS
  31. %left '!'
  32. %%
  33.  
  34. S : ST {printf("Input accepted.\n");exit(0);};
  35. ST : IF '(' E2 ')' THEN ST1';' ELSE ST1';'
  36. | IF '(' E2 ')' THEN ST1';'
  37. ;
  38. ST1 : ST
  39. | E
  40. ;
  41. E : ID'='E
  42. | E'+'E
  43. | E'-'E
  44. | E'*'E
  45. | E'/'E
  46. | E'<'E
  47. | E'>'E
  48. | E LE E
  49. | E GE E
  50. | E EQ E
  51. | E NE E
  52. | E OR E
  53. | E AND E
  54. | ID
  55. | NUM
  56. ;
  57. E2 : E'<'E
  58. | E'>'E
  59. | E LE E
  60. | E GE E
  61. | E EQ E
  62. | E NE E
  63. | E OR E
  64. | E AND E
  65. | ID
  66. | NUM
  67. ;
  68.  
  69. %%
  70.  
  71.  
  72. main()
  73. {
  74. printf("Enter the exp: ");
  75. yyparse();
  76. }
Not running #stdin #stdout 0s 0KB
stdin
if(a==1)  then b=1; else b=2;
stdout
Standard output is empty