Example: Desk Calculator
%{ /* simcalc.y -- Simple Desk Calculator */ /* Aho, Sethi & Ullman, Compilers, Fig. 4.56 */ #include <ctype.h> #include <stdio.h> %} %token DIGIT /* = #define DIGIT 257 */ %% line : expr '\n' { printf("%d\n", $1); } ; expr : expr '+' term { $$ = $1 + $3; } | term ; term : term '*' factor { $$ = $1 * $3; } | factor ; factor: '(' expr ')' { $$ = $2; } | DIGIT ; %% yylex() { int c; c = getchar(); if (isdigit(c)) { yylval = c - '0' ; return DIGIT; } return c; }