waf

FORK: waf with some random patches
git clone https://git.neptards.moe/neptards/waf.git
Log | Files | Refs | README

calc.y (750B)


      1 %{
      2 #define YYSTYPE double
      3 #include <stdio.h>
      4 // yylex() is generated by flex 
      5 int yylex(void);
      6 // we have to define yyerror()
      7 int yyerror (char const *);
      8 
      9 %}
     10 %token NUMBER
     11 
     12 %left '+' '-'
     13 %left '*' '/'
     14 %right '('
     15 
     16 %%
     17 stmtlist: statement '\n' stmtlist {
     18 	printf("done with statement equal to [%g]\n", $1);
     19 	} | // EMPTY RULE i.e. stmtlist -> nil
     20 	{ printf("DONE\n") ;};
     21 
     22 statement:	expression { printf("VALUE=%g\n",$1); };
     23 
     24 expression:	expression '+' expression { $$ = $1 + $3; } |
     25 		expression '-' expression { $$ = $1 - $3; } |
     26 		expression '*' expression { $$ = $1 * $3; } |
     27 		expression '/' expression { 
     28 			if($3 !=0) { $$ = $1 / $3; } else 
     29 			{ printf("div by zero\n"); $$=0;} } |
     30 		'(' expression ')' { $$ = $2; } |
     31 		NUMBER { $$ = $1; } ;
     32 
     33 %%