200 likes | 418 Views
Grammatica’s en Ontleden. Uitdaging: . Bedenk een éénregelige definitie van taal , ontleden en grammatica. Waar gaat het eigenlijk over?. Grammatica’s Ontleden Taal. Taal. Een taal is… de verzameling van alle zinnen die “goed” zijn. Omdat je ouders/ leraren dat zeiden .
E N D
Uitdaging: Bedenk een éénregelige definitievan taal, ontleden en grammatica Waar gaat het eigenlijk over? • Grammatica’s • Ontleden • Taal
Taal • Een taal is…de verzameling vanalle zinnen die “goed” zijn Omdat je ouders/leraren dat zeiden Omdat de Académie Françaisedat vindt Omdat de compilerhet pikt Omdat we dat zohebben afgesproken
Ontleden …Accolades……puntkomma’s……Expressies… …Onderwerp……werkwoord……Lijdend voorwerp… Correct Java! • Ontleden is…het herkennen van de structuur van een zin • …en daarmee aantonen dathij tot een taal behoort Correct Nederlands!
Grammatica • Regels die voorschrijvenhoe het ontleden moet gebeuren
Wat is dat? Wat is dat? Zin Rij symbolen! • Hoe mag een kandidaat-zin er uit zien? “class Hello extends Applet {public void paint (Graphics gr)…” “Dit lijkt me een goed voorbeeld.” “ATTCGACCGTTA” “0011010010101” “Isditeenzin?”
Sequence (Rij) [X] Definitie van Sequence over X met X een willekeurig type: • [ ] is een sequence over X • Als x een element van X is,en xs een sequence over X is,dan is x:xs ook een sequence over X (in de Haskell-notatie)
Inductievedefinitie Sequence (Rij) X* Definitie van Sequence over X met X een willekeurige verzameling: • e is een sequence over X • Als a een element van X is,en w een sequence over X is,dan is a w ook een sequence over X • Niets anders is een sequence over X (in de wiskunde-notatie)
Taal • Een Alfabet is…een eindige verzameling symbolen • Een Taal is…een deelverzameling van T*bij een bepaald alfabet T • Een Zin is…een element van een taal • Een Zinvan een taal is…een element van die taal
Hoe definieer je een taal? • Alle elementen opsommen • Inductieve definitie geven • Een voorwaarde geven waaraanzinnen moeten voldoen { dit , is , alles } { a , b , c } * predicaat even getallen { n {0..9}* | n%2=0 } palindromen { s {a,b,c}* | s = sR }
Ontleden • Bij een “opsom”-definitie van de taal:gewoon zoeken • Bij een “inductieve” definitie van de taal:inductieve opbouw uitpluizen • Bij een “predicatieve” definitie van de taal:predicaat controleren
Genereren • Bij een “opsom”-definitie van de taal:‘t zijn ze al… • Bij een “inductieve” definitie van de taal:inductieve opbouw volgen • Bij een “predicatieve” definitie van de taal:onmogelijk! (tenzij je alles probeert)
Liever inductief dan predicatief Zijn dezedefinities equivalent? • Palindromen predicatief • Palindromen inductief { s {a,b,c}* | s = sR } sound complete • e is een palindroom • a, b, en c zijn palindromen • Als P en palindroom is dan zijn aPa , bPb encPc het ook • Niets anders is een palindroom
Inductieve definitiebevat herschrijfregels Genereren van zinnen: • Begin met een P • Pas naar believende herschrijfregels toe • Werk al het rood weg • Pe • Pa • Pb • Pc • PaPa • PbPb • PcPc
Grammatica Een grammatica bestaat uit: • Het alfabet • Hulpsymbolen • Productieregels • Een startsymbool
Grammatica Een grammatica bestaat uit (T, N, R, S) • Het alfabet T • Hulpsymbolen N • Productieregels R • Een startsymbool S
Grammatica Een grammatica bestaat uit (T, N, R, S) • Het alfabet T eindig • Hulpsymbolen N eindigTN=Ø • Productieregels R eindig • Een startsymbool S één S N Met als elementen: A w waarbij A N w (NT)*
Contextgevoelige grammatica • (Rechts) reguliere grammatica A w A w waarbij A (NT)* w (NT)* waarbij A N w T* N T* Vorm van de herschrijfregels A w waarbij A N w (NT)* • Contextvrije grammatica
Lang Kort Afkorting-notatie • Pe |a | b |c | aPa |bPb |cPc • Pe • Pa • Pb • Pc • PaPa • PbPb • PcPc
“Echt” Voorbeeld • Contextvrije grammatica voor Java • StatVar=Expr| if (Expr) Stat else Stat| while (Expr) Stat • ExprConst | Var | Expr Op Expr • Op +|-