Top Banner
1 Vai valoda L={a n b n c n | n≥1} ir aprakstāma ar bezkonteksta gramatiku? Neliels atskats nesenajā pagātnē … Protams, ! Vai tas nozīmē, ka joprojām nemākam noskaidrot vārda piederību valodai? Protams, ! Kas tad ir mainījies?
32

Neliels atskats nesenajā pagātnē …

Jan 21, 2016

Download

Documents

Reina

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 Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Neliels atskats nesenajā pagātnē …

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ē …

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ē …

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ē …

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ē …

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ē …

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ē …

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ē …

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ē …

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ē …

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ē …

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ē …

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ē …

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ē …

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ē …

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ē …

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ē …

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ē …

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ē …

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ē …

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ē …

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ē …

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ē …

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ē …

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ē …

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ē …

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ē …

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ē …

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ē …

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ē …

30

Atribūtu dzīves ilgums

1

2

5

73

4 8

6

9

Page 31: Neliels atskats nesenajā pagātnē …

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ē …

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.