1 / 30

Atribūtu gramatikas

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.

briar
Download Presentation

Atribūtu gramatikas

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. Definīcija • 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

  6. Atribūtu veidi • 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

  7. Piemērs

  8. S 3*5+4n n E.val=19 T.val=4 E.val=15 + F.val=4 T.val=15 cipars.lexval=4 T.val=3 F.val=5 * F.val=3 cipars.lexval=5 cipars.lexval=3

  9. Mantotie atribūti

  10. real id1,id2,id3 D L.in=real T.type=real , L.in=real real id3 , L.in=real id2 id1

  11. Dažas piezīmes • 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

  12. Piemērs 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

  14. Piemērs(turp.)

  15. Atkarības grafi • 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

  16. Atkarības grafi (dependency graph) • 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.

  17. EE1+E2 E.val:=E1.val+E2.val E val + E1 val E2 val

  18. D real id1,id2,id3 L.in=real 6 in 5 T.type=real 4type , real id3 3 entry L.in=real in 7 8 , L.in=real in 9 id2 10 2 entry id1 1 entry

  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.

  21. Analīzes koks pozicija := sakums + atrums * 17 Piešķiršana := Izteiksme Identifikators + Izteiksme Izteiksme pozicija Identifikators * Izteiksme Izteiksme sakums Identifikators vesels skaitlis atrums 17

  22. Sintakses koks id1 := id2 + id3 * 17 := + id1 * id2 id3 17

  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.

  24. Sintakses koka būve id1 := id2 + id3 * 17 p1:=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. Ja nav reizināšanas:

  26. Izteiksmju orientētie acikliskie grafi Var uzlabot (nebūvēt pilnu koku), ja vispirms apskatās vai tāda virsotne jau nav priekšā. a+a*(b-c)+(b-c)*d + + * d * - a b c

  27. 1.piemērs • Izveidojiet izteiksmes a+a+(a+a+a+(a+a+a+a)) • aciklisko grafu (pieņemot, ka + ir kreisi asociatīva operācija)!

  28. a+a+(a+a+a+(a+a+a+a)) + + + + + a

  29. 2.piemērs • Izveidojiet izteiksmes a+(a+a)+(a+(a+a)+a+(a+a)) • aciklisko grafu (pieņemot, ka + ir kreisi asociatīva operācija)!

  30. + a+(a+a)+(a+(a+a)+a+(a+a)) + + + + a

More Related