IDENT = [A-Za-z_][A-Za-z0-9_]*
NUMBER = [0-9]+(\.[0-9]+)?
Expr → Term (("+"|"-") Term)*
Term → Factor (("*"|"/") Factor)*
Factor→ NUMBER | IDENT | "(" Expr ")"
Actions: shift s_i, reduce A→α, goto transitions; parse stack drives decisions
# bison example (skeleton)
bison -d parser.y && flex lexer.l && cc parser.tab.c lex.yy.c -o parser