Upload
others
View
9
Download
0
Embed Size (px)
Citation preview
Grammatikate elustamine JFLAPiga
Vesal Vojdani (TÜ Arvutiteaduse Instituut)
Otse Elust: Java Spechttps://docs.oracle.com/javase/specs/jls/se9/html/
jls-14.html#jls-14.9
https://docs.oracle.com/javase/specs/jls/se9/html/jls-14.html#jls-14.9https://docs.oracle.com/javase/specs/jls/se9/html/jls-14.html#jls-14.9
Kodutöö (2. nädalat)
1. Avaldise grammatika moodustamine AST klassidega tutvumine
2. Käsitsi parseri implementeerimine Vasakrekursiooni elimineerimine
Paljud lisatööd! (Need on just eksamiks
valmistamiseks olulised!)
JFLAP
• JFLAP võib meid aidata grammatikatest aru saada!
• Sellega tuleb lihtsalt ise mängida.
• Siin teen ainult väike demo…
Regex → Grammatika?
• Väidetavalt peaks siis saama iga regulaaravaldis ümber kirjutada grammatikaks?
• Võite proovida näiteks ε | a(b|ba*)*ba* grammatikana kirja panna?
• Üldiselt võib defineerida rekursiivne definitsioon nagu meie kodutöödes, aga saab lihtsamalt…
Automaat!(Me ju teame, et iga regulaaravaldis → Automaat)
Võite ise katsetada!Idee: igale olekule vastab mitte-terminaal sümbol
LõppolekS → ε
LõppolekB → ε
ÜleminekudS → aA
ÜleminekudA → bA
ÜleminekudA → bB
ÜleminekudB → aB
EpsilonigaB → A
Valmis!(nüüd tagasi…)
There and back again!Teeme väikese muudatuse, et oleks kõik kaetud.
Teisendame automaadiksGrammatika on endiselt parem-lineaarne.
Igale mitte-terminalile olekLisame uue oleku lõpp-oleku jaoks.
Sama põhimõtteS → aA
Sama põhimõtteA → bB
Sama põhimõtteA → bA
Sama põhimõtteB → aB
Sama põhimõtteA → B
Ainult terminaligaS → ε
Ainult terminaligaB → b
Regulaarne keel
• Iga regulaaravaldis saab teisendada parem-lineaarseks grammatikaks.
• Iga (parem-)lineaarne grammatika saab teisendada regulaaravaldiseks.
• Ka mitte-lineaarne grammatika võib defineerida regulaarse keele…
Grammatika versus keel• S → aS
S → Sb S → c
• Keel: a*cb*.
• Selle keele jaoks ikkagi leidub parem-lineaarne grammatika.
• Me olime lihtsalt ise rumalad!
• S → aSb S → c
• Keel: ancbn (n > 0).
• Selle keele jaoks ei leidu parem-lineaarne grammatika.
• Saab tõestada, et keelele vastav automaat ei leidu.