Loading web-font TeX/Math/Italic
Ask Your Question
1

Atributovy preklad - jazyk zoznamov

asked Dec 31 '14

Lukas Nagy gravatar image

updated Jan 1 '15

Riesim priklady na atributovy preklad a pri jednom som velmi nepochopil vysvetlenie riesenia prikladu.

Je dan jazyk seznamu, ve kterych se vyskytuji identifikatory oddelene lomitky. Seznam je ukoncen strednikem. Uvedeme regularni atributovou prekladovou gramatiku, ktera popisuje zpusob vypoctu poctu prvku seznamu.

Gramatika mala v skriptach tvar G=(\{ S,Z\},\{id,;,/\},P,S)

a pravidla boli

| Syntax | Semantika |

|----------------------|------------------------|

| S\rightarrow idZ | S.pocet:=Z.pocet+1 |

| Z\rightarrow ; | Z.pocet:=0 |

| Z\rightarrow /S | Z.pocet:=S.pocet |

V rieseni prikladu sa hovori o nutnosti pouzit syntetizovany atribut avsak nerozumiem preco sa do neda spravit i dedicnymi atributmi. Moje riesenie pouziva dedicne atributy syntax je rovnaka, akurat mierne pozmenena semantika:

| Syntax | Semantika |

|----------------------|----------------------|

| S\rightarrow idZ | Z.pocet:=S.pocet |

| Z\rightarrow ; | ;.pocet:=Z.pocet |

| Z\rightarrow /S | S.pocet:=Z.pocet +1 |

Pociatocna hodnota atributu S.pocet:=1 Robim niekde chybu alebo sa k tomu da pristupovat i takto a zostala by to teda regularna atributova prekladova gramatika?

Comments

Výsledkem má být atribut pocet středníku, je to tak? Nebránil bych se použít výstupní symbol. Jinak by to fungovalo, pokud nevadí, že výsledkem bude vždycky 1 ;-)

Ondřej Guth (Jan 1 '15)

Moje chyba, zabudol som pridat +1 a mal som prehodene neterminali v poslednom semantickom pravidle. Teraz by to mohlo pocitac pocet identifikatoru?

Lukas Nagy (Jan 1 '15)
add a comment

1 Answer

Sort by » oldest newest most voted
1

answered Jan 2 '15

Viktor Chlumský gravatar image

updated Jan 2 '15

Pokud vím, tak vstupní symboly (terminály) mohou mít pouze syntetizované atributy, ne dědičné, tzn. lze použít jejich hodnotu k výpočtu něčeho jiného, ale nelze ji určovat. Šlo by ale místo toho přidat výstupní symbol, třeba x, do kterého se výsledek uloží:

Z \rightarrow ;x | x.pocet := Z.pocet

APG bude sice regulární, ale počet prvků seznamu bude v atributu výstupního symbolu a ne počátečního neterminálu, takže to dělá trochu něco jiného.

link
add a comment

Your answer

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

Add answer

[hide preview]

Question tools

Follow
1 follower

Stats

Asked: Dec 31 '14

Seen: 130 times

Last updated: Jan 02 '15