Upload
briar
View
44
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
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
+