neliels atskats nesenajā pagātnē …
DESCRIPTION
Neliels atskats nesenajā pagātnē …. Vai valoda L={a n b n c n | n≥1} ir aprakstāma ar bezkonteksta gramatiku?. Protams, nē !. Vai tas nozīmē, ka joprojām nemākam noskaidrot vārda piederību valodai?. Protams, nē !. Kas tad ir mainījies?. Kaut ko zinām par atribūtiem. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/1.jpg)
1
Vai valoda L={anbncn | n≥1} ir aprakstāma ar bezkonteksta gramatiku?
Neliels atskats nesenajā pagātnē …
Protams, nē!Vai tas nozīmē, ka joprojām nemākam noskaidrot vārda piederību valodai?
Protams, nē! Kas tad ir mainījies?
![Page 2: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/2.jpg)
2
S ABCA aA AaB bB BbC cC Cc
Kaut ko zinām par atribūtiem
L’=L(a+b+c+)={anbmck | n,m,k≥1}
![Page 3: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/3.jpg)
3
S ABC
A aA A1aB bB B1bC cC C1c
A.skaits := 1
B.skaits := 1
C.skaits := 1
A.skaits := A1.skaits+1
B.skaits := B1.skaits+1
C.skaits := C1.skaits+1
S.der := (A.skaits=B.skaits)&(B.skaits=C.skaits)
![Page 4: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/4.jpg)
4
• Sintakses vadītas definīcijas (syntax-
directed definitions) - augsta līmeņa specifikācijas, precīzi nenorādot translācijas kārtību.
•Translācijas shēma (translation scheme) - precīzi norāda translācijas kārtību.
Formālās apraksta metodes
![Page 5: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/5.jpg)
5
Katra produkcija A <alfa> ir saistīta ar likumu kopu formā b=f(c1,c2,...,cn), kur ir spēkā viens no diviem gadījumiem:
• b ir A sintezētais atribūts un c1,c2,...,cn ir produkcijas simboliem piederoši atribūti
• b ir kāda produkcijas labās puses simbola mantotais atribūts un c1,c2,...,cn ir produkcijas simboliem piederoši atribūti.
Vienmēr b ir atkarīgs no c1,c2,...,cn.
Sintakses vadītas definīcijas
Atribūtu gramatika ir sintakses vadīta definīcija, kur semantisko likumufunkcijām nav blakusefektu.
![Page 6: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/6.jpg)
6
• semantiskās darbības tiek iekļautas produkciju labajā pusē, kas nosaka atribūtu aprēķināšanas kārtību
Translācijas shēma
![Page 7: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/7.jpg)
7
ETRRaddop T {print(addop.lexeme)}R1|
Tnum {print(num.val)}
Šeit addop un num – atbilst termināļiem(darbības zīmes (+ vai - ) vai cipari)
Kas tiks izvadīts, ja ievadā būs 9-5+2 ?
![Page 8: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/8.jpg)
8
9-5+2 95-2+
E
T R
9- T R
5
2
+ T R
1
4
52
3
![Page 9: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/9.jpg)
9
• S-atribūtu gramatikas(S-attributed grammars)
• L-atribūtu gramatikas(L-attributed grammars)
Izdevīgas tāpēc, ka nav nepieciešams atklātā veidā būvēt analīzes koku
Atribūtu gramatiku tipi
![Page 10: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/10.jpg)
10
• tikai sintezēti atribūti
• sintakses vadīta definīcija ir pietiekama tās aprakstīšanai
• vērtības var tikt aprēķinātas augšupejoši, izmantojot steku
S-atribūtu gramatikas
![Page 11: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/11.jpg)
11
1. N B$
2. B B11
3. B B10
4. B 1
5. B 0
Bināra skaitļa vērtības aprēķināšana
Kādas darbības pie katras produkcijas jāveic?
![Page 12: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/12.jpg)
12
1. N B$ N.val = B.val
2. B B11 B.val = B1.val * 2 + 1
3. B B10 B.val = B1.val * 2
4. B 1 B.val = 1
5. B 0 B.val = 0
Bināra skaitļa vērtības aprēķināšana
Vai kāds vēl atceras, kā uzbūvēt analizatoru?
![Page 13: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/13.jpg)
13
1. N B $ N.val = B.val2. B B11 B.val = B1.val * 2 + 1
3. B B10 B.val = B1.val * 2
4. B 1 B.val = 15. B 0 B.val = 0
0 1 $ B
1 s5 s6 g2
2 s4 s3 acc
3 r(2) r(2) r(2)
4 r(3) r(3) r(3)
5 r(5) r(5) r(5)
6 r(4) r(4) r(4)
![Page 14: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/14.jpg)
14
1. N B $ N.val = B.val2. B B11 B.val = B1.val * 2 + 1
3. B B10 B.val = B1.val * 2
4. B 1 B.val = 15. B 0 B.val = 0
Steks Ievads
$1 101$ shift 6
$1(1 1)6 01$ reduce 4
$1(B 1)2 01$ shift 4
$1(B 1)2(0 0)4 1$ reduce 3 (B1.val atrodas stekā otrajā vietā no augšas)
$1(B 2)2 1$ shift 3
$1(B 2)2(1 1)3 $ reduce 2 (B1.val atrodas stekā otrajā vietā no augšas)
$1(B 5)2 $ accept
(Simbols val)Stekā kopā ar simbolu glabās arī vērtību
0 1 $ B
1 s5 s6 g2
2 s4 s3 acc
3 r(2) r(2) r(2)
4 r(3) r(3) r(3)
5 r(5) r(5) r(5)
6 r(4) r(4) r(4)
![Page 15: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/15.jpg)
15
Kā aprēķināt nepieciešamās vērtības skatoties tikai uz steku un zinot, kāda darbība tiek pielietota?
![Page 16: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/16.jpg)
16
• katrs bērnu zars ievieto tā sintezēto atribūtu vērtības stekā
• pie reducēšanas vecāks tās izņem un izmanto savu atribūtu vērtību aprēķināšanai, kuras pēc tam atkal tiek ievietotas stekā
S-atribūtu gramatikas
![Page 17: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/17.jpg)
17
1. N B$
2. B B11
3. B B10
4. B 1
5. B 0
Bināra skaitļa vērtības aprēķināšana
print(val(top))
val(newtop):=val(top-1)*2+val(top)
val(newtop):=val(top-1)*2+val(top)
![Page 18: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/18.jpg)
18
print(val(top))
Cits piemērs
ciparsF
EF
FT
FTT
TE
TEE
ES
)(
*
val(newtop):=val(top-2)+val(top)
val(newtop):=val(top-2)*val(top)
val(newtop):=val(top-1)
![Page 19: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/19.jpg)
19
Gramatikai SL.L | L | L. | .L LLB | B B0 | 1izveidot atribūtu gramatiku, ar kuras palīdzību varētu aprēķināt binārā skaitļa vērtību! Piemēram, 101.101 vērtība ir 5.625,
11, 11., 11.000 vērtība ir 3, .01 vērtība ir 0.25
![Page 20: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/20.jpg)
20
Iepriekšējais uzdevums, ja vienīgais B sintezētais atribūts ir c, kas norāda, kāds ir šī cipara “ieguldījums” kopējā vērtībā.
Piemēram, 101.101 pirmā vieninieka ieguldījums ir 4, bet pēdējā – 0.125 .
![Page 21: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/21.jpg)
21
• gan sintezēti, gan mantoti atribūti
• lieto translācijas shēmu aprakstīšanai
• katrs A sintezētais atribūts produkcijā A X1X2...Xn ir atkarīgs tikai no A
mantotajiem atribūtiem un Xi atribūtiem
• katrs mantotais atribūts Xi produkcijā A X1X2...Xn ir atkarīgs tikai no:
• brāļu pa kreisi atribūtiem
• A mantotajiem atribūtiem
L-atribūtu gramatikas
![Page 22: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/22.jpg)
22
Semantiskās darbības tiek iekļautas sekojoši:
• darbība, kas saistīta ar sintezēto atribūtu tiek novietota produkcijas labajā galā (to var aprēķināt tikai tad, kad visu atribūtu vērtības uz kurām ir atsauces, ir aprēķinātas)
• darbība nedrīkst atsaukties uz sintezēto atribūtu pa labi no šīs darbības
• labās puses simbola atribūta mantotajiem atribūtiem jābūt izrēķinātiem darbībās pirms šī simbola
L-atribūtu gramatikas
![Page 23: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/23.jpg)
23
Kā šādas gramatikas iekļaut augšupejošā analīzē?
• Problēma: AB {C.i=f(A.s)} C
kurā brīdī un kā veikt atribūtu aprēķināšanu (C tobrīd vēl nav stekā)
• Risinājums: Iekļaut papildus produkciju, kas izveidota vienīgi šim mērķim:
ABA’C {A’.i=A.s; C.i=A’.s}
A’ {A’.s=f(A’.i)}
Analizētājam diez ko nepatīk produkcijas
L-atribūtu gramatikas
![Page 24: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/24.jpg)
24
Praksē:
• Translēt gramatiku ar L-atribūtu definīcijām paredzošajā analīzē
• problēma: kreisā rekursija
• Translēt gramatiku ar L-atribūtu definīcijām augšupejošā analīzē
• problēma: mantoto atribūtu aprēķināšana
L-atribūtu gramatikas
![Page 25: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/25.jpg)
25
Jātiek vaļā no kreisās rekursijas:
L-atribūtu gramatikas paredzošajā analīzē
AA1Y {A.a = g(A1.a, Y.y)}
AX {A.a=f(X.x)}
AX {R.i = f(X.x)} R {A.a = R.s}
RY {R1.i = g(R.i,Y.y)} R1 {R.s=R1.s}
R {R.s = R.i}
![Page 26: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/26.jpg)
26
Pārvietot atribūtu aprēķināšanas likumu no produkcijas vidus uz beigām:
• ievieš fiktīvu (markera) netermināli M
• ievieto šo netermināli likuma vietā
• pievieno produkciju M un pievieno atribūtu aprēķināšanas likumu pie šīs produkcijas
L-atribūtu gramatikas augšupejošā analīzē
![Page 27: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/27.jpg)
27
Mantotie atribūti analizētāja stekā.
• ja mantotie atribūti tiek aprēķināti ar kopēšanas palīdzību (t.i. Y.i=X.s) tad, ja nepieciešams, jāņem vērtība X.s no steka
• šī pieeja strādā tikai tad, ja skaidri zināms, kur stekā atrodas X.s vērtība
L-atribūtu gramatikas augšupejošā analīzē
![Page 28: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/28.jpg)
28
SaAC C.i=A.s
SbABC C.i=A.s
Cc C.s=g(C.i)
L-atribūtu gramatikas augšupejošā analīzē
Stekā starp A un C var atrasties arī B (bet var arī nebūt). Līdz ar to pie Ccsavēršanas C.i (A.s) var atrasties gan val[top-1], gan val[top-2].
![Page 29: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/29.jpg)
29
SaAC C.i=A.s
SbABMC M.i=A.s C.i=M.s
Cc C.s=g(C.i)
M M.s=M.i
L-atribūtu gramatikas augšupejošā analīzē
Tagad pie Cc savēršanas C.i (A.s vai M.s) vienmēr atradīsies val[top-1].
![Page 30: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/30.jpg)
30
Atribūtu dzīves ilgums
1
2
5
73
4 8
6
9
![Page 31: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/31.jpg)
31
Ierobežojumi
Nelietojot globālus datus, dažas no semantiskajām akcijām nav iespējams veikt.Piemēram:pārbaudīt, vai mainīgais ir definēts pirms
izmantošanas,pārbaudīt mainīgā tipu un adresi,pārbaudīt, vai mainīgais ir lietots, vai nē.
![Page 32: Neliels atskats nesenajā pagātnē …](https://reader036.vdocuments.pub/reader036/viewer/2022062409/5681503b550346895dbe3969/html5/thumbnails/32.jpg)
32
Globālie dati
Ja daudz globālo datu tipu, kods kļūst grūti pārvaldāms.Daži, raksturīgākie izmantošanas veidi ar
skaidru mērķi:simbolu tabula,GOTO iezīmes,atliktās (forward) deklarācijas.