## ★ Aan de slag 57

Gegeven is de onderstaande grammatica voor expressies.
Dit is een kleine uitbreiding van de grammatica die we eerder gebruikt hebben, met vermenigvuldiging als uitbreiding.
Het startsymbool is Expr, de hulpsymbolen zijn Expr, Term, Factor, Number, Addop en Mulop.
De eindsymbolen (taalsymbolen) zijn “0”, “1”, “2”, “3”, “+”, “-“, “*”, “/”, “(” en “)”.

1. Expr -> Term (Addop Term)*
2. Term -> Factor (Mulop Factor)*
3. Factor -> Number | "(" Expr ")"
4. Number -> "0" | "1" | "2" | "3"
5. Addop -> "+" | "-"
6. Mulop -> "*" | "/"

1. Maak met deze regels een afleiding voor “1+2*3”. Teken de bijbehorende afleidingsboom. Laat daarmee zien dat deze grammatica aangeeft dat vermenigvuldigen (“*”) voor optellen (“+”) gaat.
2. Maak een grammatica voor zinnen die uit netjes gepaarde haakjes “(” en “)” bestaan. Enkele voorbeelden: “()” “((()))()” “()()()”. Enkele tegenvoorbeelden (van “niet-zinnen”): “(” “)(” “((())()”
3. Geef een grammatica voor de decimale notatie van gehele getallen. De eindsymbolen zijn hierbij de cijfers “0”..”9”. De notatie begint niet met een 0, tenzij het getal 0 is. Enkele voorbeelden: “0” “12” “900” “1234567890987654321”. Enkele tegenvoorbeelden: “00” “007”.
4. Breid deze grammatica uit voor getallen met een decimale punt. Welke eindsymbo(o)l(en) krijg je er dan bij?

​