Het volgende voorbeeld is een grammatica voor eenvoudige expressies.
We beperken ons hierbij tot expressies met gehele getallen, haakjes, optellen en aftrekken.
1. Expr -> Term (Operator Term)*
2. Term -> Number | "(" Expr ")"
3. Number -> "0" | "1" | "2" | "3"
4. Operator -> "+" | "-"
Hier betekent “*” : herhaal het voorafgaande 0 of meer keer.
Ook deze regels kunnen we weergeven in een syntaxdiagram:
Voorbeeld: afleiding van “1-(2+3)”
Expr
=> (regel 1; herhaal rechterdeel 1 keer)
Term Operator Term
=> (regel 2, 1e alternatief)
Number Operator Term
=> (regel 3)
"1" Operator Term
=> (regel 4)
"1-" Term
=> (regel 2, 2e alternatief)
"1-(" Expr ")"
=> (regel 1; herhaal rechterdeel 1 keer)
"1-(" Term Operator Term ")"
=> (regel 2, 1e alternatief)
"1-(" Number Operator Term ")"
=> (regel 3)
"1-(2" Operator Term ")"
=> (regel 4)
"1-(2+" Term ")"
=> (regel 2, 1e alternatief)
"1-(2+" Number ")"
=> (regel 3)
"1-(2+3)"
De bijbehorende boom ziet er als volgt uit:
We kunnen deze boom vereenvoudigen door alle hulpsymbolen weg te laten:
Uit deze afleiding, en de bijbehorende boom, kun je zien dat het deel tussen haakjes eerst berekend moet worden: met haakjes kun je de volgorde van de berekening precies aangeven.
Dit is een voorbeeld hoe de structuur van een “zin” zoals die volgt uit de regels van de grammatica, de betekenis van die zin bepaalt.