Title: Tarkvara grammatika-p
1Tarkvara grammatika-põhine visuaalne
modelleerimine ja konverteerimine
- Jüri KihoATI seminar25.03.2004
http//www.cs.ut.ee/kiho/ftp/ettekanne.ppt
2- Konverteerimise mõiste
- Kuidas automatiseerida konverterite loomist?
- Lahenduse idee
- Näiteid süsteemis Amadeus-fRED
3Viited
Heero Heero, Kristo. Java parserite generaator
JavaCC ja skeem- modelleerimine.
Magistritöö. TÜ, 2002 Reitsakas Reitsakas,
Aleksander. Analüüsivahend JJTree/JavaCC ja selle
rakendamine toimetiarenduses.
Magistritöö. TÜ, 2002 SKMXML Kiho, Jüri.
Sketchy Modeling for XML. Proceeding of the 7th
Symposium on Programming Languages and
Software Tools SPLST'2001, University of
Szeged, Hungary June 15-16, 2001, 183-197 SKM
Kiho, Jüri. SKM. Sketchy Modeling of Computer
Texts, Research Report University of
Tartu, Estonia, 2000, 64 pp JavaCC
https//javacc.dev.java.net/ (last visited March
2004) JJTree https//javacc.dev.java.net/doc/J
JTree.html (last visited March 2004) XFlat
http//www.unidex.com/xflat.htm (last visited
March 2004) DLG Hennoste, Tiit and Koit, Mare
and Strandson, Krista and Rääbis, Andriela
and Valdisoo, Maret and Vutt, Evely. Directives
in Estonian Information Dialogues. Text,
Speech and Dialogue. 6th International Conference
TSD (ed. V Matousek, P Mautner).
Springer, 2003, 406-411 X-FetchWrapper
http//www.x-fetch.com/wrapper.html (last visit
March 2004)
4Tarkvara konverteerimine on lihtsamat sorti
transleerimine.
n 2 n m 3 m ? n
gt m n m x m n
x
n n / 2 m m 3 if(n gt m) x
n - m else x m - n
5Lähte- ja sihtkeele primitiivid on (enam-vähem)
ühed ja samad.
n 2 n m 3 m ? n
gt m n m x m n
x
n n / 2 m m 3 if(n gt m) x
n - m else x m - n
6 n 2 n m 3 m ? n
gt m n m x m n
x
n n / 2 m m 3 if(n gt m) x
n - m else x m - n
ltprogrammgt ltomistus siht ngt
ltavaldisgt ltjagamine jagatav
n jagaja
2 /gt lt/avaldisgt lt/omistusgt
ltomistus siht mgt ltavaldisgt
Konkreetse konversiooni aluseks olev reeglistik
moodustab konversiooni- mudeli.
7Põhimõtteline võimalus iga konversioonitüübi
(lähtekeel, sihtkeel, mudel) jaoks kirjutada oma
konverter.
Konverter1
Konverter2
Konverter3
Konverter4
. . .
Pisike lihtsustus sihtkeel on fikseeritud, nt
XML, skeemkeel SKM. Ikka jääb konverterite
loomise automatiseerimise vajadus.
Üks tee piirduda väga lihtsate lähtekeeltega
(CSV comma separated values) XFlat
Teine tee võtta kasutusele uus keel, DEL data
extraction language X-FetchWrapper GUI
kirjeldamaks, kuidas lähte- keelest hangitakse
primitiivid.
Kolmas tee konverterigeneraator, (LK, SK, M)
gt Konverter Heero
Reitsakas
Neljas tee
8Probleemi seade
- Konversioonitüüp (lähtekeel, sihtkeel, mudel).
- Iga vajaliku konversioonitüübi jaoks tuleb luua
oma konverter. - Konversioonitüüpe on palju.
- Kitsendatud ülesanne sihtkeel SK on fikseeritud
(siin skeem- keel, erijuhul nt skeem-XML
SKMXML). - Konversioonitüüpe ikka palju (lähtekeel, SK,
mudel). - Probleem kuidas automatiseerida konverterite
loomist.
9Konverter1
LK1
(LK1, M1)
SK
Konverter2
LK2
(LK2, M2)
. . .
. . .
Lahendus
LK1
Parser1
Konverter K0
SK
analüüsipuu
Parser2
LK2
mudel
. . .
. . .
M1
M2
. . .
Parserite loomine on automatiseeritud
JavaCC/JJTree JavaCC JJTree
Mudelivahetus lihtne (LK1, M1i), i ...
10Amadeus-fRED Analüüsipuud ehitava parseri loomine
- Koostada LK grammatika
- Koostada LK grammatika JavaCC/JJTree vormis, fail
LK.jjt - Genereerida analüüsipuid ehitav parser
- jjtree LK.jjt tulemus LK.jj
- javacc LK.jj tulemus LKParser.java
- javac LKParser.java tulemus LKParser.class
Grammatika silumine Amadeus-fRED toel. Selleks
tuleb lisada LK uueks baaskeeleks.
11Amadeus-fRED LK uueks baakseeleks
BaseLanguageLK parse() sketchify()
4. Koostada uus klass vastava malli
järgi. Esialgu ainult meetod parse().
Viimane rakendab meetodit LKParser.parse().
5. Registreerida uus baaskeele nimi ülemklassis
BaseLanguage.
Saab ehitada ja vaadelda keele LK konkreetsete
tekstide analüüsipuid, siluda grammatikat.
12class A int meetod(int n, int m) n
n/2 m m3 int x
if(n gt m) x n - m else x m -
n return x
Lähtekeel JavaCC, JavaCC
Java
Analüüsipuu demo
6. Realiseerida ka meetod sketchify() vastava
malli järgi.
Saab konverteerida.
13 Lähtekeel Dialog- DLG
((63, a29, infotelefon)) ((ühtlustas Andriela
Rääbis 18.11.2003)) ((kutsung)) RIE KUTSUNG
V Estmarinfo, RIJ KUTSUNGI
VASTUVÕTMINE RY TUTVUSTUS
Leenukuuleb RY TUTVUSTUS tere RIE
TERVITUS H tere. RIJ VASTUTERVITUS
öelge palun kas te rongiaegasid ka oskate
öelda. KYE SULETUD KAS (0.5) V ei,
rongide sõiduplaani meil ei ole, KYJ EI
aga saan anda teile rongijaama infonumbri.
DIE PAKKUMINE H jaa DIJ NÕUSTUMINE ja
see oleks DIE SOOV (.) V see on kolm
seitse kolm, (.) kaks kaks null. DIJ INFO
ANDMINE H aitäh? RIE TÄNAN V palun
RIJ PALUN
14 Lähtekeel Dialog- DLG
((63, a29, infotelefon)) ((ühtlustas Andriela
Rääbis 18.11.2003)) ((kutsung)) RIE KUTSUNG
V Estmarinfo, RIJ KUTSUNGI
VASTUVÕTMINE RY TUTVUSTUS
Leenukuuleb RY TUTVUSTUS tere RIE
TERVITUS H tere. RIJ VASTUTERVITUS
öelge palun kas te rongiaegasid ka oskate
öelda. KYE SULETUD KAS (0.5) V ei,
rongide sõiduplaani meil ei ole, KYJ EI
aga saan anda teile rongijaama infonumbri.
DIE PAKKUMINE H jaa DIJ NÕUSTUMINE ja
see oleks DIE SOOV lausung
märgend märgendiTäpsustus (.) V see on kolm
seitse kolm, (.) kaks kaks null. DIJ INFO
ANDMINE H aitäh? RIE TÄNAN V palun
RIJ PALUN
15 Lähtekeel Dialog
- "((63, a29, infotelefon))"- - -
"((ühtlustas Andriela Rääbis 18.11.2003))"-
- "((kutsung)) " RIE KUTSUNG V"
Estmarinfo, " RIJ KUTSUNGI VASTUVÕTMINE
RY TUTVUSTUS " Leenukuuleb " RY
TUTVUSTUS " tere " RIE TERVITUS H" tere.
" RIJ VASTUTERVITUS " öelge palun kas te
rongiaegasid ka oskate öelda. " KYE SULETUD
KAS - " (0.5) "- - V" ei, rongide
sõiduplaani meil ei ole, " KYJ EI "aga saan
anda teile rongijaama infonumbri. DIE
PAKKUMINE H" jaa " DIJ NÕUSTUMINE " ja
see oleks " DIE SOOV lausung
märgend märgendiTäpsustus - " (.) "- - V"
see on kolm seitse kolm, (.) kaks kaks null.
DIJ INFO ANDMINE H" aitäh? " RIE TÄNAN
V" palun " RIJ PALUN
16 Keele Dialog grammatika
s dialoog dialoog (kõnevoor) kõnevoor
kõneleja "" (lausungJaMärgendid)
kõneleja() IDENTIFIKAATOR
lausungJaMärgendid lausung
(märgend) lausung() "\" (("\"")) "\""
// jutumärkideta sõne jutumärkides märgend
"" märgendiTüüp "" märgendiTäpsustus ""
märgendiTüüp IDENTIFIKAATOR
märgendiTäpsustus (IDENTIFIKAATOR)
Dialog.jjt ( gt Dialog.jj gt DialogParser.java) Base
LanguageDialog.java BaseLanguage.java
Dialog demo
17 Kokkuvõtteks
- Koostada keele Dialog grammatika
- Koostada keele Dialog grammatika JavaCC/JJTree
vormis - Genereerida analüüsipuid ehitav parser
- BaseLanguageDialog.java ( meetod parse())
- BaseLanguage.java
Parsimisvõimalus, grammatika silumine
6. BaseLanguageDialog.java ? meetod sketchify()
Koostada mudel
Keele Dialog tekstide konverteerimine
Lõviosa ajast grammatika ca 2 tööpäeva.
Konverteerimisvõimalus saadakse grammatika
tegemise kiirusega.
7. Pöördkonverter (tekstualiseerija) hinnang
ca 2 tundi 8. Uus vaade hinnang ca 2 tööpäeva