Ga naar hoofdinhoud

Stellingen — eerst voorspellen

Leerdoel: je toetst je beeld van een context-vrije grammatica voordat je gaat bouwen. Denk eerst zelf na, klik dan open. De stellingen gaan over het mini-voorbeeld van de vorige pagina:

Zin -> Groet Naam
Groet -> "hallo" | "hoi"
Naam -> "sam" | "kim"

Stelling 1​

Deze grammatica accepteert de zin hallo sam.

Waar of niet waar?

Waar. hallo is een geldige Groet en sam een geldige Naam, dus samen vormen ze een Zin.


Stelling 2​

De grammatica accepteert ook sam hallo.

Waar of niet waar?

Niet waar. De regel Zin -> Groet Naam zegt: eerst een groet, dan een naam. Hier staat het andersom, dus de zin is afgekeurd.


Stelling 3​

Groet en Naam zijn terminals.

Waar of niet waar?

Niet waar. Groet en Naam zijn non-terminals: groepen die uit andere bouwstenen bestaan. De terminals zijn de echte woorden tussen aanhalingstekens, "hallo", "hoi", "sam" en "kim".


Stelling 4​

Een grammatica controleert of een zin qua betekenis klopt.

Waar of niet waar?

Niet waar. Een CFG kijkt alleen naar de vorm. Of de zin ergens op slaat, kan de grammatica niets schelen: hoi kim komt erdoor, ook al weet de computer niet wie Kim is.


Stelling 5​

Eén zin kan nooit meer dan één boom hebben.

Waar of niet waar?

Niet waar. Sommige zinnen zijn ambigu: er zijn meerdere geldige manieren om ze te ontleden. Denk aan "Ik zag de man met de verrekijker": wie heeft de verrekijker? Een grammatica vindt voor zo'n zin meerdere bomen. Later tel je het aantal interpretaties van een zin, en kom je dit zelf tegen.


Stelling 6​

Als je een nieuwe regel toevoegt om een extra zin te accepteren, blijven alle eerder geaccepteerde zinnen geldig.

Waar of niet waar?

Waar. Een regel toevoegen maakt de grammatica alleen maar ruimer; elke boom die er was, is er nog. Daarom kun je in deze track zin voor zin uitbreiden.

Waarom test je dan elke stap toch álle zinnen? Omdat je onderweg ook regels verandert of vervangt, en dát kan een oude zin wél kapotmaken. Zolang je alleen toevoegt, is alles wat werkte veilig.


Door naar de eerste zin →.