a tvasinā šanas kārtība
DESCRIPTION
A tvasinā šanas kārtība. A tvasinājums , sākot no kreisās puses :. A tvasinājums , sākot no labās puses :. A tvasinājums , sākot no kreisās puses:. A tvasinājums , sākot no labās puses:. A tvasinājum a koki. A tvasinājum a koks. A tvasinājum a koks. dod. - PowerPoint PPT PresentationTRANSCRIPT
1
Atvasināšanas kārtība
ABS .1
A
aaAA.3.2
BBbB
.5
.4
aabaaBbaaBaaABABS54321
Atvasinājums, sākot no kreisās puses :
aabaaAbAbABbABS32541
Atvasinājums, sākot no labās puses :
2
|ABbBbAaABS
Atvasinājums, sākot no kreisās puses:
abbbbabbbbBabbBbbBabAbBabBbBaABS
Atvasinājums, sākot no labās puses:
abbbbabbBbbabAbabBbaAaABS
3
Atvasinājuma koki
4
ABS
ABS |aaAA |BbB
S
BA
5
ABS |aaAA |BbB
aaABABS
a a A
S
BA
6
ABS |aaAA |BbB
aaABbaaABABS S
BA
a a A B b
7
ABS |aaAA |BbB
aaBbaaABbaaABABS S
BA
a a A B b
8
ABS |aaAA |BbB
aabaaBbaaABbaaABABS S
BA
a a A B b
Atvasinājuma koks
9
aabaaBbaaABbaaABABS
dod
aabbaa
S
BA
a a A B b
Atvasinājuma koks
ABS |aaAA |BbB
10
Daļēja atvasinājuma koki
ABS
S
BA
Daļējs atvasinājuma koks
ABS |aaAA |BbB
11
aaABABS
S
BA
a a A
Daļējs atvasinājuma koks
12
aaABABS
S
BA
a a A
Daļējs atvasinājuma koks
sentenciālaforma
dodaaAB
13
aabaaBbaaBaaABABS
aabaaAbAbABbABS S
BA
a a A B b
Tāds pats atvasinājuma koks
Dažreiz atvasināšanas kārtība nav būtiskaSākot no kreisās puses:
Sākot no labās puses:
14
Neviennozīmība
15
aEEEEEE |)(|| aaa
E
EE
EE
a
a a
aaaEaaEEaEaEEE*
atvasinājums,sākot no kreisās puses
16
aEEEEEE |)(|| aaa
E
EE
a a
EE a
aaaEaaEEaEEEEEE
Atvasinājums, sākot no kreisās puses
17
aEEEEEE |)(|| aaa
E
EE
a a
EE a
E
EE
EE
a
a a
divi atvasinājuma koki
18
Gramatika aEEEEEE |)(|| ir neviennozīmīga:
E
EE
a a
EE a
E
EE
EE
a
a a
virknei aaa ir divi atvasinājuma koki
19
virknei ir divi atvasinājumi, sākot atvasināt no kreisās puses.
aaa
aaaEaaEEaEEEEEE
aaaEaaEEaEaEEE*
Gramatika aEEEEEE |)(|| ir neviennozīmīga:
20
Definīcija:Bezkonteksta gramatika G ir neviennozīmīga, ja kādai virknei ir divi vai vairāk dažādi atvasinājuma koki.
)(GLw
21
Citiem vārdiem:Bezkonteksta gramatika G ir neviennozīmīga, ja kādai virknei ir divi vai vairākatvasinājumi, sākot atvasināšanu no kreisās puses (vai sākot nolabās puses).
)(GLw
22
Kāpēc jāuztraucas par neviennozīmību?
E
EE
a a
EE a
E
EE
EE
a
a a
aaa
Ņemam 2a
23
E
EE
EE
E
EE
EE
222
2
2 2 2 2
2
24
E
EE
EE
E
EE
EE
6222
2
2 2 2 2
2
8222
4
2 2
2
6
2 2
24
8
25
E
EE
EE
6222
2
2 2
4
2 2
2
6
Pareizais rezultāts:PārbaudīsimWindowskalkulatoru(standard / scientific režīmos) !
26
• Mēs vēlamies izslēgt neviennozīmību.
• Neviennozīmība ir slikta programmēšanas valodās.
27
Vai var “izlabot” neviennozīmīgu gramatiku?aEEEEEE |)(||
Atbilstošā viennozīmīga gramatika:
aFEFFTFTT
TETEE
)(
28
aFEFFTFTT
TETEE
)(
aaaFaaFFaFTaTaTFTTTEE
E
E T
T F
F
a
T
F
a
a
aaa
29
E
E T
T F
F
a
T
F
a
a
aaa
Viennozīmīgs atvasinājuma koks
30
Gramatika G :
aFEFFTFTT
TETEE
)(
ir viennozīmīga:katrai virknei irviens vienīgs atvasinājuma koks
)(GLw
31
“Iedzimtā” neviennozīmība
Dažām bezkonteksta valodāmir tikai neviennozīmīgas gramatikas
Piemērs: }{}{ mmnmnn cbacbaL
||11
aAbAAcSS
||22
bBcBBaSS
21 | SSS
32
virknei nnn cba
ir divi atvasinājuma koki
S
1S
S
2S
1S c 2Sa
33
Sintakses analizētājs
Leksikasanalizētājs
Kompilators
programma mašīnkods
ievads izvads
34
Sintakses analizētājs “zin”programmēšanas valodas gramatiku.
35
Sintakses analizētājsprogramma STMT_LISTSTMT_LIST STMT; STMT_LIST | STMT;STMT EXPR | if_STMT | WHILE_STMT | { STMT_LIST }
EXPR EXPR + EXPR | EXPR - EXPR | IDif_STMT if (EXPR) then STMT | if (EXPR) then STMT else STMTWHILE_STMT while (EXPR) do STMT
36
Sintakses analizētājs atrod katra konkrēta ievada atvasinājumu
10 + 2 * 5
sintakses analizētājs
E E + E | E * E | INT
E E + E E + E * E 10 + E*E 10 + 2 * E 10 + 2 * 5
ievads atvasinājums
37
10
E
2 5
E E + E E + E * E 10 + E*E 10 + 2 * E 10 + 2 * 5
atvasinājumsatvasinājuma koks
E E
E E
+
*
38
Sintakses analīze
39
gramatika
sintakses analizētājs
ievadavirkne atvasinājums
40
Piemērs:
sintakses analizētājs
atvasinājums
SbSaSaSbSSSSievads
?aabb
41
Atrodatvasinājumu
Izsmeļošā meklēšana
||| bSaaSbSSS
1.fāze:
SbSaSaSbSSSS aabb
visi iespējamie atvasinājumi garumā 1
42
SbSaSaSbSSSS aabb
43
2.fāze
aSbSSSS
aabb
SSSSbSaSSSSaSbSSSSSSSSSS
1.fāze
abaSbSabSabaSbSaaSbbaSbSaSSbaSbS
||| bSaaSbSSS
44
2.fāze
SSSSaSbSSSSSSSSSS
aaSbbaSbSaSSbaSbS
3.fāzeaabbaaSbbaSbS
||| bSaaSbSSS
aabb
45
Izsmeļošās analīzes beigu rezultāts
sintakses analizētājs
atvasinājums
SbSaSaSbSSSS
ievadsaabb
aabbaaSbbaSbS
(lejupejoša analīze)
46
Cits piemērs ar to pašu gramatiku:
sintakses analizētājsatvasinājumsievads
?aaba
SbSaSaSbSSSS
47
Laiks 1.fāzei: k
k iespējamie atvasinājumi
Gramatikai ar k likumiem
48
Laiks 2.fāzei : k2
k2 iespējamie atvasinājumi
49
Kopējais virknei w nepieciešamais laiks:
||2 wkkk
Gauži slikti!!!
1.fāze 2.fāze
50
Specializētām gramatikām eksistē ātrāki algoritmi
S-gramatika: axA
simbols netermināļuvirkne
),( aA parādās vienreizPāris
51
S-gramatikas piemērs:
cSbSSSaSS
abccabcSabSSaSS
Katrai virknei ir viens vienīgs atvasinājums
52
Izsmeļošās analīzes gaitā katrā fāzē irviena vienīga iespēja
S-gramatikām:
Kopējais virknes w analīzei nepieciešamais laiks : |w|
Fāzei nepieciešamais laiks: 1
53
Vispārīgi bezkonteksta gramatikām:
Eksistē analīzes algoritms, kas virkni w
analizē laikā |w|3
54
Bezkonteksta gramatiku vienkāršošana
55
bBabbABabBcAaaAAaA
56
Aizvietošanas likums
bBabbABabBcAaaAAaA
abbcAababbAcAaaAAaA
Aizvieto B
Ekvivalentagramatika
57
Vispārīgi:
nyyyB
xBzA
||| 21
Aizvieto B
zxyzxyzxyA n||| 21 ekvivalentagramatika
58
Nederīgas produkcijas
aAAAS
SaSbS
aAaaaaAaAAS
Daži atvasinājumi nekad nebeidzas...
nederīga produkcija
59
bABA
aAAAS
Cita gramatika:
Nav sasniedzama no S
nederīga produkcija
60
Vispārīgi:
ja wxAyS
Tad neterminālis A ir derīgs
Pretējā gadījumā neterminālis Air nederīgs
)(GLw
61
Produkcija ir derīga, ja visitajā ietilpstošie netermināļi ir derīgi.
xA
62
Nederīgo produkciju izmešana
Gramatikas piemērs :
aCbCaaBaA
CAaSS
||
63
Vispirms atrodam visus netermināļus, kas producē termināļu virknes
aCbCaaBaA
CAaSS
|| },{ BA
},,{ SBA
1.posms :
2.posms:
64
Saglabā tikai tos netermināļus , kas producē terminālos simbolus
aCbCaaBaA
CAaSS
||
},,{ SBA
aaBaA
AaSS
|
65
Otrkārt, atrod visus netermināļus, kassasniedzami no S
aaBaA
AaSS
|
S A B
Atkarības grafs
nav sasniedzams
66
Saglabā tikai tos netermināļus, kassasniedzami no S
aaBaA
AaSS
|
aAAaSS
|
Beigu gramatika
67
Anulējami mainīgie
:produkcija A
Anulējams mainīgais: A
68
Anulējamu mainīgo izmešana
Gramatikas piemērs :
MaMbMaMbS
Anulējams mainīgais
69
M
MaMbMaMbS
Aizvieto
abMaMbMabSaMbS
Beigu gramatika
70
Vienības produkcijas
BAVienības produkcija:
71
Vienības produkciju izmešana
Novērojums:
AA
jāizmet uzreiz
72
Gramatikas piemērs:
bbBABBAaAaAS
73
bbBABBAaAaAS
AizvietoBA
bbBBAB
aAaBaAS
|
|
74
Izmet
bbBBAB
aAaBaAS
|
|
bbBABaA
aBaAS
|
BB
75
AizvietoAB
bbBaA
aAaBaAS
||
bbBABaA
aBaAS
|
76
Atkārtotu produkciju izmešana
bbBaA
aBaAS
|
bbBaA
aAaBaAS
||
Beigu gramatika
77
Visas izmešanas
1.solis: Anulējamu mainīgo izmešana
2.solis: Vienības produkciju izmešana
3.solis: Nederīgu mainīgo izmešana
78
PiemērsVienkāršot doto gramatiku:
|
|||
BADBCaCbBBBaAAA
CABS
79
Rezultāts:
bBBbBbBaAAaAaAABABS
|||||||
80
Bezkonteksta gramatiku normālformas
81
Homska normālformaVisas produkcijas ir formā
BCA
neterminālisneterminālis
aAvai
terminālis
82
Piemēri:
bASAAaSASS
Nav Homskanormālforma
aaASAAAASSASS
Homska normālforma
83
Pārveidošana uz Homska normālformu
Piemērs:
AcBaabAABaS
Nav Homskanormālforma
84
AcBaabAABaS
Definē jaunus netermināļus :
cTbTaTATB
TTTAABTS
c
b
a
c
baa
a
cba TTT ,,
85
Definē jaunu netermināli V1:
cTbTaTATB
TTTAABTS
c
b
a
c
baa
a
cTbTaTATB
TTTABTVAVS
c
b
a
c
baa
a
1
1
86
Definē jaunu netermināli V2:
cTbTaTATBTTVVTABTVAVS
c
b
a
c
ba
a
a
2
2
1
1
cTbTaTATB
TTTABTVAVS
c
b
a
c
baa
a
1
1
87
Beigu gramatika Homska normālformā:
cTbTaTATBTTVVTABTVAVS
c
b
a
c
ba
a
a
2
2
1
1
AcBaabAABaS
Sākuma gramatika
88
No katras bezkonteksta gramatikas, kas nav Homska normālformā, var iegūt ekvivalentu gramatiku Homska normālformā.
Vispārīgi:
89
Procedūra
vispirms izmet:
anulējamos netermināļus
vienības produkcijas
90
Katram simbolam : a
Produkcijās aizvieto ar a aT
Pievieno produkciju aTa
Jauns neterminālis: aT
91
Aizvieto katru produkciju nCCCA 21
ar
nnn CCV
VCVVCA
12
221
11
jauni netermināļi: 221 ,,, nVVV
92
Novērojumi
• Homska normālformas ir labasanalizēšanas un teorēmu pierādīšanasprocesos
• Ir ļoti viegli atrast Homska normālformu katrai bezkonteksta gramatikai
93
Uzdevums• Pārveidot Homska normālformā gramatiku:
ZWZZYYY
XYXXXXXS
|1|0|1|0||)(
94
Greibahas normālforma
Visas produkcijas ir formā:
kVVVaA 21
simbols netermināļi
0k
95
Piemēri:
bBbbBaAA
cABS
||
Greibahasnormālforma
aaSabSbS
Nav Greibahasnormālforma
96
aaSabSbS
Pāreja uz Greibahas normālformu:
bTaTaTSSTaTS
b
a
a
bb
Greibahasnormālforma
97
Teorēma:
Katrai bezkonteksta gramatikaeksistē ekvivalenta gramatikaGreibahas normālformā.
98
Novērojumi
• Greibahas normālformas ir ļoti labas analīzei
• Atrast Greibahas normālformupatvaļīgai bezkonteksta gramatikainav gluži triviāli