www.wikidata.de-de.nina.az
Eine Attributgrammatik ist eine kontextfreie Grammatik die um Attribute sowie Regeln und Bedingungen erweitert ist Angewandt wird das Konzept im Compilerbau um beispielsweise die Einhaltung von Regeln zu uberprufen die mit kontextfreien Grammatiken nicht formuliert werden konnen Solche Regeln sind z B die dass jede Variable deklariert sein muss und ihrem Datentyp entsprechend verwendet wird Das Konzept der Attributgrammatiken wurde ursprunglich von Donald E Knuth eingefuhrt 1 2 Ein Compiler uberpruft die Einhaltung dieser Regeln wahrend der semantischen Analyse Dabei hat er nur die Informationen zur Verfugung die im Syntaxbaum des Programms enthalten sind Zusatzliche Informationen die die semantische Analyse erleichtern kann man als Attribute in den Syntaxbaum integrieren Zum Beispiel kann der Typ eines Ausdrucks als Attribut an den entsprechenden Knoten im Syntaxbaum annotiert werden Durch Attributregeln und bedingungen konnen zusatzlich Abhangigkeiten von anderen Attributen auch anderer Knoten im Syntaxbaum angegeben werden Die Programmierung der betreffenden Teile des Compilers vereinfacht sich wenn die Produktionen der Grammatik selbst mit entsprechenden Attributen versehen werden Inhaltsverzeichnis 1 Notation 2 Definitionen 3 Zirkularitat 4 Grammatiktypen 4 1 S Attributgrammatiken 4 2 L Attributgrammatiken 4 3 LR Attributgrammatiken 4 4 ECLR Attributgrammatiken 5 EinzelnachweiseNotation BearbeitenX i a f X j b R p displaystyle X i a f ldots X j b ldots in R p nbsp ist ein Attribut a displaystyle a nbsp das zu einem Nichtterminal X i displaystyle X i nbsp der Produktion p X 0 X 1 X n displaystyle p X 0 rightarrow X 1 ldots X n nbsp gehort mit 0 i j n displaystyle 0 leq i j leq n nbsp Definitionen BearbeitenA G G A R B displaystyle AG G A R B nbsp ist eine Attributgrammatik die durch folgende Komponenten definiert ist G N T P S displaystyle G N T P S nbsp ist eine kontextfreie Grammatik A X T N A X displaystyle A bigcup X in T cup N A X nbsp ist eine endliche Menge von Attributen die jeweils eindeutig einem Symbol X displaystyle X nbsp zugeordnet sind Die einzelnen Attributmengen A X displaystyle A X nbsp sind disjunkt es gilt also A X A Y X Y displaystyle A X cap A Y neq varnothing Rightarrow X Y nbsp R p P R p displaystyle R bigcup p in P R p nbsp ist eine endliche Menge von Attributionsregeln B p P B p displaystyle B bigcup p in P B p nbsp ist eine endliche Menge von Bedingungen Die Bedingung B p displaystyle B p nbsp einer Produktion p X 0 X 1 X n displaystyle p X 0 rightarrow X 1 ldots X n nbsp kann in der Form X 0 b displaystyle X 0 b nbsp auch als Attribut der linken Seite aufgefasst werden daher sind mit den Attributen auch alle Bedingungen erfasst A F p X i a p X 0 X 1 X n 0 i n X i a f R p displaystyle AF p X i a vert p X 0 rightarrow X 1 ldots X n 0 leq i leq n X i a f ldots in R p nbsp ist die Menge der Attribute die in den Regeln R p displaystyle R p nbsp einer Produktion p P displaystyle p in P nbsp definiert sind Die Attribute A X displaystyle A X nbsp eines Symbols lassen sich in zwei disjunkte Klassen unterteilen da es fur alle Attribute a A X displaystyle a in A X nbsp nur eine Berechnungsregel der Form X a f displaystyle X a leftarrow f ldots nbsp in R displaystyle R nbsp gibt A S X X a p X X 1 X n P X a A F p displaystyle AS X X a vert exists p X rightarrow X 1 ldots X n in P land X a in AF p nbsp ist die Menge der synthetisierten abgeleiteten Attribute Dies sind die Attribute die in den Regeln r R p displaystyle r in R p nbsp einer Produktion p P displaystyle p in P nbsp definiert sind bei der X displaystyle X nbsp auf der linken Seite steht A I X X a q Y u X v P X a A F q displaystyle AI X X a vert exists q Y rightarrow uXv in P land X a in AF q nbsp ist die Menge der ererbten inherited Attribute Dies sind die Attribute die in den Regeln r R p displaystyle r in R p nbsp einer Produktion p P displaystyle p in P nbsp definiert sind bei der X displaystyle X nbsp auf der rechten Seite steht Zirkularitat BearbeitenAttributgrammatiken sind zirkular wenn der Abhangigkeitsgraph der Attributvariablen der durch die funktionale Abhangigkeit induziert wird eine Schleife enthalt Diese Zirkularitat lasst sich in exponentieller Zeit testen Ein vereinfachter Test der weniger Grammatiken zulasst berechnet das Problem in polynomieller Zeit Grammatiktypen BearbeitenS Attributgrammatiken Bearbeiten S Attributgrammatiken kurz SAG sind Attributgrammatiken die nur auf synthetischen Attributen arbeiten So konnen sie direkt bei den Reduce Schritten des Parse Vorgang eines LR k Parsers berechnet werden Implementiert in yacc L Attributgrammatiken Bearbeiten L Attributgrammatiken LAG konnen in einem Top down Durchgang von links nach rechts durch den abstrakten Syntaxbaum ausgewertet werden Sie konnen fur jede LL Grammatik ausgewertet werden und somit fur Pascal ahnliche Programmiersprachen verwendet werden Bei diesen durfen nur abgeleitete und nachstehende Baumteile auf aktuelle Attribute zugreifen Beispiel A B C a 1 a 0 b 0 b 1 c 2 c 1 c 2 c 0 displaystyle A rightarrow BC a 1 a 0 b 0 b 1 c 2 c 1 c 2 c 0 nbsp erlaubt A B C a 1 a 2 displaystyle A rightarrow BC a 1 a 2 nbsp verboten Das erleichtert die vorwartsgerichtete Deklaration von Variablen und Funktionen LR Attributgrammatiken Bearbeiten Eine Teilklasse der L Attributgrammatiken und zwar gerade diejenigen die sich in einem Durchgang von links nach rechts wahrend des LR Parsens auswerten lassen Implementierung zyacc in yacc von Hand uber globale Variablen realisierbar Der Vorteil der grosseren Machtigkeit des LR Parsens gegenuber dem LL Parsen manifestiert sich somit spiegelbildlich im Nachteil der geringeren Machtigkeit der LR Attributgrammatiken gegenuber den L Attributgrammatiken ECLR Attributgrammatiken Bearbeiten Eine Variante der LR Attributgrammatiken sie benutzt eine Aquivalenzrelation um die Attributauswertung zu optimieren Implementierung rie Einzelnachweise Bearbeiten Donald E Knuth Semantics of context free languages In Mathematical systems theory Band 2 Nr 2 ISSN 0025 5661 S 127 145 doi 10 1007 BF01692511 springer com abgerufen am 8 Januar 2017 Donald E Knuth Semantics of context free languages Correction In Mathematical systems theory Band 5 Nr 2 ISSN 0025 5661 S 95 96 doi 10 1007 BF01702865 springer com abgerufen am 8 Januar 2017 Abgerufen von https de wikipedia org w index php title Attributgrammatik amp oldid 208961623