1 / 32

Neliels atskats nesenajā pagātnē …

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.

reina
Télécharger la présentation

Neliels atskats nesenajā pagātnē …

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. Neliels atskats nesenajā pagātnē … Vai valoda L={anbncn | 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?

  2. Kaut ko zinām par atribūtiem L’=L(a+b+c+)={anbmck | n,m,k≥1} S  ABC A  a A  Aa B  b B  Bb C  c C  Cc

  3. S.der := (A.skaits=B.skaits)&(B.skaits=C.skaits) S  ABC A  a A  A1a B  b B  B1b C  c C  C1c A.skaits := 1 A.skaits := A1.skaits+1 B.skaits := 1 B.skaits := B1.skaits+1 C.skaits := 1 C.skaits := C1.skaits+1

  4. Formālās apraksta metodes • 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.

  5. Sintakses vadītas definīcijas • 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,...,cnir produkcijas simboliem piederoši atribūti. • Vienmēr b ir atkarīgs no c1,c2,...,cn. Atribūtu gramatika ir sintakses vadīta definīcija, kur semantisko likumufunkcijām nav blakusefektu.

  6. Translācijas shēma • semantiskās darbības tiek iekļautas produkciju labajā pusē, kas nosaka atribūtu aprēķināšanas kārtību

  7. ETR Raddop T {print(addop.lexeme)}R1| Tnum {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 ?

  8. E R 3 T 1 - T R 5 2 9 5 + T R 4 2  95-2+ 9-5+2

  9. Atribūtu gramatiku tipi • 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

  10. S-atribūtu gramatikas • 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

  11. Bināra skaitļa vērtības aprēķināšana • N  B$ • B  B11 • B  B10 • B  1 • B  0 Kādas darbības pie katras produkcijas jāveic?

  12. Bināra skaitļa vērtības aprēķināšana • N  B$ N.val = B.val • B  B11 B.val = B1.val * 2 + 1 • B  B10 B.val = B1.val * 2 • B  1 B.val = 1 • B  0 B.val = 0 Vai kāds vēl atceras, kā uzbūvēt analizatoru?

  13. N  B $ N.val = B.val • B  B11 B.val = B1.val * 2 + 1 • B  B10 B.val = B1.val * 2 • B  1 B.val = 1 • B  0 B.val = 0

  14. N  B $ N.val = B.val • B  B11 B.val = B1.val * 2 + 1 • B  B10 B.val = B1.val * 2 • B  1 B.val = 1 • B  0 B.val = 0 Stekā kopā ar simbolu glabās arī vērtību (Simbols val)

  15. Kā aprēķināt nepieciešamās vērtības skatoties tikai uz steku un zinot, kāda darbība tiek pielietota?

  16. S-atribūtu gramatikas • 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ā

  17. Bināra skaitļa vērtības aprēķināšana • N  B$ • B  B11 • B  B10 • B  1 • B  0 print(val(top)) val(newtop):=val(top-1)*2+val(top) val(newtop):=val(top-1)*2+val(top)

  18. Cits piemērs print(val(top)) val(newtop):=val(top-2)+val(top) val(newtop):=val(top-2)*val(top) val(newtop):=val(top-1)

  19. Gramatikai • SL.L | L | L. | .L • LLB | B • B0 | 1 • izveidot 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

  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 .

  21. L-atribūtu gramatikas • 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

  22. L-atribūtu gramatikas • 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

  23. L-atribūtu gramatikas • Kā šādas gramatikas iekļaut augšupejošā analīzē? • Problēma: AB {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: • ABA’C {A’.i=A.s; C.i=A’.s} • A’ {A’.s=f(A’.i)} • Analizētājam diez ko nepatīk produkcijas

  24. L-atribūtu gramatikas • 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

  25. L-atribūtu gramatikas paredzošajā analīzē Jātiek vaļā no kreisās rekursijas: AA1Y {A.a = g(A1.a, Y.y)} AX {A.a=f(X.x)} AX {R.i = f(X.x)} R {A.a = R.s} RY {R1.i = g(R.i,Y.y)} R1 {R.s=R1.s} R {R.s = R.i}

  26. L-atribūtu gramatikas augšupejošā analīzē • 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

  27. L-atribūtu gramatikas augšupejošā analīzē • 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

  28. L-atribūtu gramatikas augšupejošā analīzē SaAC C.i=A.s SbABC C.i=A.s Cc C.s=g(C.i) Stekā starp A un C var atrasties arī B (bet var arī nebūt). Līdz ar to pie Cc savēršanas C.i (A.s) var atrasties gan val[top-1], gan val[top-2].

  29. L-atribūtu gramatikas augšupejošā analīzē SaAC C.i=A.s SbABMC M.i=A.s C.i=M.s Cc C.s=g(C.i) M M.s=M.i Tagad pie Cc savēršanas C.i (A.s vai M.s) vienmēr atradīsies val[top-1].

  30. Atribūtu dzīves ilgums 1 3 7 9 5 6 2 8 4

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

  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.

More Related