Atribūtu gramatikas

Preview:

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

1

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.

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.

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)

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

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

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

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

9

id

id,

real

int

1

L

LL

T

T

TLD

).,.(

).,.(

.:.

real:.

integer:.

.:.

1

inLentryidaddtype

inLentryidaddtype

inLinL

typeT

typeT

typeTinL

Mantotie atribūti

10

D

T.type=real L.in=real

,real

id1

real id1,id2,id3

L.in=real

L.in=real

id2

id3

,

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

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

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

:

:

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

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

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)

17

E

E1 E2

+

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

val

val val

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

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.

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.

Analīzes koks

pozicija := sakums + atrums * 17

Piešķiršana

Identifikators

pozicija

vesels skaitlis

Identifikators

Identifikators

Izteiksme

IzteiksmeIzteiksme

IzteiksmeIzteiksme

sakums

atrums 17

:=

+

*

Sintakses koks

id1 := id2 + id3 * 17

id1

17

:=

+

*id2

id3

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.

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);

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:

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šā.

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

28

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

+

+

+

++

a

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

30

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

+

+

+

a

+