[text] calc

Viewer

  1. // calculator.l
  2. %{
  3. #include "y.tab.h"
  4. %}
  5.  
  6. %%
  7. "+"     { return PLUS; }
  8. "-"     { return MINUS; }
  9. "*"     { return MULT; }
  10. "/"     { return DIV; }
  11. "("     { return LPAREN; }
  12. ")"     { return RPAREN; }
  13. [0-9]+  { yylval = atoi(yytext); return NUMBER; }
  14. [ \t\n] ;
  15. .       { return yytext[0]; }
  16. %%
  17.  
  18. int yywrap() {
  19.     return 1;
  20. }
  21.  
  22. // calculator.y
  23. %{
  24. #include <stdio.h>
  25. #include <stdlib.h>
  26. %}
  27.  
  28. %token NUMBER PLUS MINUS MULT DIV LPAREN RPAREN
  29. %left PLUS MINUS
  30. %left MULT DIV
  31.  
  32. %%
  33.  
  34. calc    : expr { printf("Result: %d\n", $1); }
  35.         ;
  36.  
  37. expr    : expr PLUS expr  { $$ = $1 + $3; }
  38.         | expr MINUS expr { $$ = $1 - $3; }
  39.         | expr MULT expr  { $$ = $1 * $3; }
  40.         | expr DIV expr   { $$ = $1 / $3; }
  41.         | LPAREN expr RPAREN { $$ = $2; }
  42.         | NUMBER          { $$ = $1; }
  43.         ;
  44.  
  45. %%
  46.  
  47. int main() {
  48.     yyparse();
  49.     return 0;
  50. }
  51.  
  52. int yyerror(char *s) {
  53.     printf("Error: %s\n", s);
  54.     return 0;
  55. }
  56.  

Editor

You can edit this paste and save as new:


File Description
  • calc
  • Paste Code
  • 28 Feb-2024
  • 971 Bytes
You can Share it: