30
1 Atribūtu gramatikas

Atribūtu gramatikas

  • Upload
    briar

  • View
    43

  • Download
    0

Embed Size (px)

DESCRIPTION

Atribūtu gramatikas. Kompilatoram var būt nepieciešama papildus informācija, kas nav atkarīga no sintakses: tipu pārveidošana piešķiršanās parametru atbilstības noteikšana masīva robežu noteikšana u.c. - PowerPoint PPT Presentation

Citation preview

Page 1: Atribūtu gramatikas

1

Atribūtu gramatikas

Page 2: Atribūtu gramatikas

2

Kompilatoram var būt nepieciešama papildus informācija, kas nav atkarīga no sintakses:

• tipu pārveidošana piešķiršanās• parametru atbilstības noteikšana• masīva robežu noteikšana• u.c.

Page 3: Atribūtu gramatikas

3

Šādu “semantisku” informāciju var būt nepieciešams izskaitļot no citām vērtībām un tā var būt atkarīga no nelokālas informācijas.

Page 4: Atribūtu gramatikas

4

Risinājums: anotēt analīzes koku

• pievienot atribūtus katrai virsotnei (fiziski, protams, var atrasties citur). Ja analīzes koka virsotni uzskata par rakstu ar laukiem, tad atribūts ir lauka vārds

• definēt atribūtu vērtību aprēķināšanas likumus (vienādojumus)

Page 5: Atribūtu gramatikas

5

Atribūtu gramatika ir bezkonteksta gramatika, kuras

• katram simbolam ir piesaistīta atribūtu kopa

• katrai produkcijai ir piesaistīti šo atribūtu aprēķināšanas likumi

Definīcija

Page 6: Atribūtu gramatikas

6

Vērtības tiek aprēķinātas no konstantēm un citu atribūtu vērtībām

• sintezētie

• vērtība tiek aprēķināta no bērnu atribūtiem

• augšupejoša aprēķināšanas kārtība

• mantotie (inherited)

• vērtība tiek aprēķināta no vecāka un brāļiem

• gramatiku vienmēr var pārrakstīt tā, lai no šī tipa atribūtiem izvairītos

Atribūtu veidi

Page 7: Atribūtu gramatikas

7

Piemērs

ciparsF

EF

FT

FTT

TE

TEE

ES

)(

*

n

1

1

valcipars.lex: F.val

E.val : F.val

F.val: T.val

F.val*.valT: T.val

T.val: E.val

T.val.valE:E.val

l)print(E.va

1

1

Page 8: Atribūtu gramatikas

8

S

E.val=19

E.val=15 T.val=4

T.val=15 F.val=4

T.val=3 F.val=5

F.val=3 cipars.lexval=5

cipars.lexval=3

cipars.lexval=4

n

+

*

3*5+4n

Page 9: Atribūtu gramatikas

9

id

id,

real

int

1

L

LL

T

T

TLD

).,.(

).,.(

.:.

real:.

integer:.

.:.

1

inLentryidaddtype

inLentryidaddtype

inLinL

typeT

typeT

typeTinL

Mantotie atribūti

Page 10: Atribūtu gramatikas

10

D

T.type=real L.in=real

,real

id1

real id1,id2,id3

L.in=real

L.in=real

id2

id3

,

Page 11: Atribūtu gramatikas

11

• termināļus var asociēt ar vērtībām, ko saņem no skenera. Šīs ievada vērtības tiek asociētas ar sintezētajiem atribūtiem

• starta simbolam nevar būt mantotie atribūti

• gramatikas simbola sintezētā atribūta vērtība var būt atkarīga no šī paša simbola mantotā atribūta vērtības

• semantikas likumi tiek definēti katrai produkcijai atsevišķi

• semantikas likumi, kas piesaistīti produkcijai A<alfa> jāspecificē visas:

• A sintezēto atribūtu vērtības

• <alfa> mantoto atribūtu vērtības

Dažas piezīmes

Page 12: Atribūtu gramatikas

12

Piemērs

O|B

7|6|5|4|3|2|1|0

|

Sist

Cipars

CiparsCiparsCipvirkneCipvirkne

CipvirkneSistSkaitlis

Skaitļa pieraksts binārā vai oktālā skaitīšanas sistēmā ( B010, O37)

Jāaprēķina skaitļa vērtība

Page 13: Atribūtu gramatikas

13

Piemērs

CiparsCipvirkne

CiparsCipvirkneCipvirkne

CipvirkneSistSkaitlis

valval

typetype

CipvirkneSkaitlis

SistCipvirkne

:

:

val

typevalval

typetype

typetype

Cipars

CipvirkneCipvirkneCipvirkne

CipvirkneCipars

CipvirkneCipvirkne

*:

:

:

1

1

1

valval

typetype

CiparsCipvirkne

CipvirkneCipars

:

:

Page 14: Atribūtu gramatikas

14

Piemērs(turp.)

O

B

...

2

1

0

Sist

Sist

Cipars

Cipars

Cipars 0:valCipars

1:valCipars

NULLCiparselseCiparsthen

Ciparsif

valval

type

: 2:

8

2:typeSist

8:typeSist

Page 15: Atribūtu gramatikas

15

• Ja atribūts b kādā analīzes koka zarā ir atkarīgs no atribūta c vērtības, tad b vērtības aprēķināšana var notikt tikai pēc c vērtības aprēķināšanas

• Atribūtu vērtību aprēķināšanas secību var attēlot ar atkarības grafa palīdzību

Atkarības grafi

Page 16: Atribūtu gramatikas

16

• Katru semantisko likumu pārveido formā b:=f(c1,c2,...,ck), ja nepieciešams, ievedot fiktīvu sintezēto atribūtu b

• Katram atribūtam atbilst virsotne

• Šķautne iet no virsotnes c uz virsotni b tad un tikai tad, ja b ir atkarīgs no c.

Atkarības grafi (dependency graph)

Page 17: Atribūtu gramatikas

17

E

E1 E2

+

EE1+E2 E.val:=E1.val+E2.val

val

val val

Page 18: Atribūtu gramatikas

18

D

T.type=real L.in=real

,real

id1

L.in=real

L.in=real

id2

id3

,

4type

in 5

in 7

in 9

1 entry

2 entry

3 entry

10

8

6

real id1,id2,id3

Page 19: Atribūtu gramatikas

19

Topoloģiskā kārtošana

Orientēta acikliska grafa (dag)

topoloģiskā kārtošana ir tā virsotņu

m1,m2,...,mk sakārtošana tādā secībā,

lai jebkurai šķautnei šajā grafā no mi uz

mj , virsotne mi atrastos pirms virsotnes

mj.

Page 20: Atribūtu gramatikas

20

Semantisko likumu apstrādes metodes

Analīzes koka metodes.Atribūtu aprēķināšanas kārtību atrod no atkarības grafa. Nedarbojas, ja grafā atrodas cikls.

Likumbāzētas metodes.Kompilatora veidošanas laikā tiek analizēti ar produkcijām saistītie likumi. Katrai produkcijai atribūtu

rēķināšanas secība tiek pilnīgi precīzi noteikta. “Nevērīgās” metodes.

Apstrādes kārtību nosaka neizmantojot semantiskos likumus. Ja translācija notiek analīzes laikā, tad apstrādi nosaka analīzes metodes.

Page 21: Atribūtu gramatikas

Analīzes koks

pozicija := sakums + atrums * 17

Piešķiršana

Identifikators

pozicija

vesels skaitlis

Identifikators

Identifikators

Izteiksme

IzteiksmeIzteiksme

IzteiksmeIzteiksme

sakums

atrums 17

:=

+

*

Page 22: Atribūtu gramatikas

Sintakses koks

id1 := id2 + id3 * 17

id1

17

:=

+

*id2

id3

Page 23: Atribūtu gramatikas

23

Sintakses koka būve

mknode(op,left,right) izveido virsotni ar iezīmi op un diviem laukiem ar norādēm.

mkleaf(id,entry) izveido identifikatora virsotni ar iezīmi id un norādi uz ierakstu simbolu tabulā.

mkleaf(num,val) izveido virsotni ar iezīmi num un lauku, kas satur skaitļa vērtību.

Katra no funkcijām kā rezultātu atdod norādi uz tikko izveidoto virsotni.

Page 24: Atribūtu gramatikas

Sintakses koka būve

id1 := id2 + id3 * 17 :=

+

*

id 3 num 17

id 1

id 2p1:=mkleaf(id,entryid3);p2:=mkleaf(num,17);p3:=mknode(‘*’,p1,p2);p4:=mkleaf(id,entryid2);p5:=mknode(‘+’,p4,p3);p6:=mkleaf(id,entryid1);p7:=mknode(‘:=’,p6,p5);

Page 25: Atribūtu gramatikas

25

Produkcija Semantikas likums

EE1+T E.nptr:=mknode(‘+’,E1.nptr,T.nptr)

EE1-T E.nptr:=mknode(‘-’,E1.nptr,T.nptr)

ET E.nptr:=T.nptr

T(E) T.nptr:=E.nptr

Tid T.nptr:=mkleaf(id,id.entry)

Tnum T.nptr:=mkleaf(num,num.entry)

Ja nav reizināšanas:

Page 26: Atribūtu gramatikas

26

Izteiksmju orientētie acikliskie grafi

a+a*(b-c)+(b-c)*d

+

+ *

*-

d

cb

a

Var uzlabot (nebūvēt pilnu koku), ja vispirms apskatās vai tāda virsotne jau nav priekšā.

Page 27: Atribūtu gramatikas

27

Izveidojiet izteiksmes a+a+(a+a+a+(a+a+a+a))aciklisko grafu (pieņemot, ka + ir kreisi asociatīva operācija)!

1.piemērs

Page 28: Atribūtu gramatikas

28

a+a+(a+a+a+(a+a+a+a))

+

+

+

++

a

Page 29: Atribūtu gramatikas

29

Izveidojiet izteiksmes a+(a+a)+(a+(a+a)+a+(a+a))aciklisko grafu (pieņemot, ka + ir kreisi asociatīva operācija)!

2.piemērs

Page 30: Atribūtu gramatikas

30

a+(a+a)+(a+(a+a)+a+(a+a))+

+

+

+

a

+