Professional Documents
Culture Documents
TTSist
Translaatorite tegemise süsteem (TTS) – eeskätt loengukursuse "Automaadid, keeled ja
translaatorid" (MTAT.05.085) omandamise hõlbustamiseks loodud programm, mis
võimaldab töötada kontekstivabade grammatikatega (KVG): teha Konstruktori tabeleid
ja analüüsida antud grammatikale vastava keele sõnu. TTS on realiseeritud
Windows95/NT/2000 keskkonnas, programmeerimiskeeled on C ja C++.
xxx.grm
Analüsaator
[xxx.sem] (Parser)
Konstruktor yyy.prm
yyy.pt
(Constructor) yyy.t
[yyy.it]
[yyy.kt]
xxx.prm
xxx.v
xxx.ht
xxx.pm
xxx.t Interpretaator Kompilaator
xxx.tt (Interpreter) (Compiler)
xxx.sm
[xxx.lc]
[xxx.rc]
[xxx.dc] Lahendamistul yyy.asm
emused yyy.exe
Tähistus
G grammatika
KVG kontekstivaba grammatika
EG eelnevusgrammatika
V tähestik ( a, A, b,1,0,... )
VN mitteterminaalne e. mõistete tähestik ( A, B,... )
VT terminaalne e. lekseemide tähestik (leksika) ( a,b,1,0, # ,... )
P produktsioon ( A → x )
S aksioom
→ produtseerib (produces)
⇒ on vahetult tuletatav
⇒ on tuletatav
⇒ ?
k
⇒ ?
k
<⋅ eelneb
= ajastub
⋅> järgneb
2
Automaadid, keeled ja translaatorid (MTAT.05.085) Rein Raudjärv
1. Kontekstivaba grammatika
Def. Generatiivseks grammatikaks nimetatakse järjestatud nelikut G = (VN , VT , P, S ) ,
kus
VN on mitteterminaalne tähestik (non-terminal vocabulary),
Süntaks – reeglite kogu, mis määrab, kuidas antud keeles kirjutada semantiliselt õigeid
lauseid?. Semantilised õiged laused määrab produktsioonide hulk.
Interpretaator on programm, mis jooksutab (executes) teisi programme.
Kompilaator on programm, mis tõlgib teksti ühest arvutikeelest teise.
TTSis koostatakse kõige pealt algkeelsest tekstist nn. analüüsipuu (Analüsaatori
ülesanne). TTS Interpretaator läbib analüüsipuu ja „täidab selle käske”. TTS Kompilaator
tõlgib analüüsipuu Assembleri keelde.
Transleerimise? käigus muutub grammatika süntaks ja leksika, aga säilib semantika.
Süntaks-orienteeritud transleerimine?.
Grammatika metakeel
Kõige lihtsam on programmides kasutada produktsioonide keelt?.
Algol 60 grammatika pandi kirja BNF meetodil. BNF (Backus Normal Form või Backus-
Naur Form) – nagu produktsioonide keel, aga esitus teine: <Mõiste> := <Definitsioon>.
Tundmatu keele kirjeldamiseks on hõlpsasti loetav Pascali grammatika. Näide:
3
Automaadid, keeled ja translaatorid (MTAT.05.085) Rein Raudjärv
4
Automaadid, keeled ja translaatorid (MTAT.05.085) Rein Raudjärv
2. Derivatsioon, keel
Def. Olgu antud sõnad x, y ∈ V * . Me ütleme, et sõnast x on vahetult tuletatav sõna y
(tähistame x ⇒ y ), kui x = uAv , y = uzv ja A → z ∈ P A ∈ VN u, z , v ∈ V .
*
5
Automaadid, keeled ja translaatorid (MTAT.05.085) Rein Raudjärv
vormiks.
Pole olemas algoritmi, mis teeks kindlaks, kas grammatika on ühene või mitte.
Kõik grammatikad, mille produktsioonide hulk sisaldab tsüklit kujul A⇒
A või
produktsiooni kujul A → A või mille keeles leidub tühisõna, on mitmesed.
Def. Keelt nimetatakse üheseks (mitmeseks), kui talle vastav grammatika on ühene
(vastavalt mitmene).
Def. Keelt nimetatakse oluliselt mitmeseks, kui tal ei leidu ühest varianti.
6
Automaadid, keeled ja translaatorid (MTAT.05.085) Rein Raudjärv
Näiteid:
1. Kanooniline derivatsioon (g5.grm baasil):
T #S# #UV# #UcV# #Ucc# #abcc#
Tabel 2. G5.GRM
`T'->#`S'#
`S'->`U'`V'
`U'->a b
`V'->c`V'
`V'->c
2. Ühene grammatika:
G1 :
SaS
Sa
Derivatsioonid:
SaSaa
SaSaaSaaa
Ilmselt on G1 ühene.
3. Mitmene grammatika:
G2 :
SS
SaS
Sa
Derivatsioonid:
SaSaa
SSaSaa
Kõik derivatsioonid on kanoonilised, ent analüüsipuud on erinevad: G2 on mitmene (aga
mitte oluliselt mitmene).
7
Automaadid, keeled ja translaatorid (MTAT.05.085) Rein Raudjärv
8
Automaadid, keeled ja translaatorid (MTAT.05.085) Rein Raudjärv
L( A) = { X : X ∈ V & [ ∃φ : A → Xu ∨ ∃φ : A → Bu & X ∈ L( B ) ]} u ∈ V *
R( A) = { X : X ∈ V & [ ∃φ : A → uX ∨ ∃φ : A → uB & X ∈ R( B ) ]} u ∈ V *
Defineeritakse järgmised eelnevusrelatsioonid:
X = Y = { ( X , Y ) : ∃φ : A → uXYv} (loe: X ajastub Y -ga)
X < ⋅Y = { ( X , Y ) : ∃φ : A → uXBv & Y ∈ L( B )} (loe: X eelneb Y -ile)
( X , Y ) : [ ∃φ : A → uBYv & X ∈ R ( B ) ]
X⋅ > Y = (loe: X järgneb Y -ile)
∨ [ ∃φ : A → uBCv & X ∈ R( B ) & Y ∈ L( C ) ]
Siin X , Y ∈ V A, B, C ∈ VN u , v ∈ V .
*
9
Automaadid, keeled ja translaatorid (MTAT.05.085) Rein Raudjärv
Eelnevuskonfliktid
Def. Situatsiooni, kus X ja Y ( X , Y ∈ V ) vahel kehtib üle ühe eelnevusrelatsiooni,
nimetatakse eelnevuskonfliktiks.
Eelnevuskonflikte on kaht tüüpi: P1 ja P2 .
P1 -konfliktiks nimetatakse situatsiooni, kus X = ⋅ > Y , X < ⋅ ⋅ > Y või X < ⋅ = ⋅ > Y .
P2 -konfliktiks nimetatakse situatsiooni, kus X < ⋅ = Y .
Eelnevusteisendused
Konfliktide likvideerimiseks on olemas iteratiivne algoritm:
Tabel 4. Eelnevuskonfliktide likvideerimise algoritm
10
Automaadid, keeled ja translaatorid (MTAT.05.085) Rein Raudjärv
11
Automaadid, keeled ja translaatorid (MTAT.05.085) Rein Raudjärv
Mine S2.
Vaata ka sõna A1.G1 analüüsi.
12
Automaadid, keeled ja translaatorid (MTAT.05.085) Rein Raudjärv
13
Automaadid, keeled ja translaatorid (MTAT.05.085) Rein Raudjärv
BRC(1,1) analüsaator
Tabel 6. BRC(1,1) analüsaatori algoritm (Markeeritud on erinevused võrreldes pööratava EG analüsaatoriga)
14
Automaadid, keeled ja translaatorid (MTAT.05.085) Rein Raudjärv
Siin: X ∈ V A ∈ VN T ∈ VT u ∈ V v ∈ VT .
* *
(
Def. Hulka C1,1 ( A) := ( X , T ) : S ⇒ )
uXATv & Tv ∈ VT* nimetatakse mitteterminali A
k
15
Automaadid, keeled ja translaatorid (MTAT.05.085) Rein Raudjärv
16
Automaadid, keeled ja translaatorid (MTAT.05.085) Rein Raudjärv
9. Konteksti juurdetoomine
Kui sõltuv kontekst ei eristu, siis on paratamatu inimese sekkumine: pole teada algoritmi,
millega saaks garanteeritult grammatikat nii teisendada, et ta oleks redutseeritav.
Translaatori tegijale soovitatakse võimaluse korral juurde tuua vasakut konteksti ja kui
see pole võimalik, siis tuleb muuta keelt.
Näide
Vaatame, millest on tingitud grammatika Tabel 3. G4.GRM konteksti eristamatus.
Teeme kaks derivatsiooni:
T ⇒# S # ⇒# aA# ⇒# a 0 A1#
T ⇒# S # ⇒# bB # ⇒# b0 B11#
Püüame juurde tuua erineva vasaku konteksti, asendades kaks produktsiooni:
produktsioon A → A1 produktsiooniga A → CA1 ja
produktsioon B → 0B11 produktsiooniga B → DB11
ja lisades kaks uut produktsiooni:
C →0
D→0
Selliselt parandatud grammatika on Tabel 8. G41.GRM.
Tabel 8. G41.GRM
`T'->#`S'#
`S'->a`A'
`S'->b`B'
`A'->`C'`A'1
`A'->0 1
`B'->`D'`B'1 1
`B'->0 1 1
`C'->0
`D'->0
17
Automaadid, keeled ja translaatorid (MTAT.05.085) Rein Raudjärv
18
Automaadid, keeled ja translaatorid (MTAT.05.085) Rein Raudjärv
19
Automaadid, keeled ja translaatorid (MTAT.05.085) Rein Raudjärv
Analüsaatori lõplik algoritm
Tabel 10. Analüsaatori lõplik algoritm (Markeeritud on erinevused võrreldes BRC(1,1) analüsaatoriga)
20
Automaadid, keeled ja translaatorid (MTAT.05.085) Rein Raudjärv
21
Automaadid, keeled ja translaatorid (MTAT.05.085) Rein Raudjärv
22