Ich lese ein Compiler-Buch und irgendwie verwirrt, wenn es sagt "eine S-Attribut-Grammatik ist auch eine L-Attribut-Grammatik". Konnte es nicht verstehen. Kann jemand klarstellen (ein Beispiel sollte großartig sein). Vielen Dank.Was bedeutet S-attributierte und L-attributierte Grammatik?
Antwort
L-Grammatiken zurückzuführen sind eine besondere Art von Attribut-Grammatiken. Sie ermöglichen die Auswertung der Attribute in einem Links-nach-Rechts-Durchlauf des abstrakten Syntaxbaums. Als Ergebnis kann die Attributbewertung in L-attributierten Grammatiken bequem in das Top-Down-Parsing integriert werden. Viele Programmiersprachen sind L-attributiert. Spezielle Arten von Compilern, die Narrow Compiler, basieren auf irgendeiner Form von L-attributierter Grammatik. Diese sind vergleichbar mit S-attributierten Grammatiken. Wird für die Codesynthese verwendet.
S zuzuschreibenden Grammatiken sind eine Klasse von Attributgrammatiken gekennzeichnet durch keine vererbten Attributen. Vererbte Attribute, die während der semantischen Analyse des Analyseprozesses von den Elternknoten an die untergeordneten Knoten des abstrakten Syntaxbaums weitergegeben werden müssen, sind ein Problem für das Bottom-up-Parsing, da beim Bottom-up-Parsing die Elternknoten der abstrakten Syntax verwendet werden Baum werden nach der Erstellung aller ihrer Kinder erstellt. Die Attributauswertung in S-attributierten Grammatiken kann bequem sowohl beim Top-Down-Parsing als auch beim Bottom-Up-Parsing integriert werden. Yacc basiert auf dem S-attributierten Ansatz.
Jede S-attributierte Grammatik ist auch eine L-attributierte Grammatik.
In L-attributierten Grammatiken kann die Attributauswertung in der Links-Rechts-Traversierung durchgeführt werden. Da in S-attributierten Grammatiken Attribute nicht vererbt werden, hindert Sie das nicht daran, genau das zu tun. Daher kann man sagen, dass eine S-attributierte Grammatik mit dieser Eigenschaft einer L-Grammatik übereinstimmt.
Einfach S zuzuschreibende Grammatik ist die Grammatik, die streng Art von Grammatik Synthetisierter hat bedeutet, dass nur Wert Attribut während des Parse-Baum
wo als L-Zugeschrieben Grammatik, die sowohl als auch Inherited Grammatik synthetisiert mit einigen die Regeln wie bei einer Übertragung der Vererbung von immer links nach rechts. Ich denke, es wird dir helfen.
- 1. Was bedeutet ~ in einer Grammatik (in Perl 6)?
- 2. Was bedeutet und was MYSQLI_NUM?
- 3. Was bedeutet x [:] = y?
- 4. Was bedeutet 0x0F? Und was bedeutet dieser Code?
- 5. Was bedeutet :: in der Klassensignatur?
- 6. MGrammar Grammatik und Variablendeklaration
- 7. Was ist der Unterschied zwischen: und :: und ::: in Javascript Grammatik
- 8. Was bedeutet (x: _) und [x: _]?
- 9. Was bedeutet "Typ" und "Typ"?
- 10. Was ist POI und was bedeutet es?
- 11. kontextfreien Grammatik und Reversal
- 12. Was bedeutet „~“ bedeutet vor Aufzählungen
- 13. Was bedeutet {}?
- 14. Was bedeutet!() Bedeutet im Datenkonstruktor?
- 15. Was bedeutet %%?
- 16. Was bedeutet "==="?
- 17. Was bedeutet [&] bedeutet in C++
- 18. Was bedeutet ∃?
- 19. Was bedeutet /([^.]*).(.*)/?
- 20. Was bedeuten Verzeichnisnamen?. und '..' bedeuten und was bedeutet faDirectory?
- 21. Was bedeutet Ausnahme und null_session bedeutet in protect_from_forgery
- 22. Flex und Yacc Grammatik Ausgabe
- 23. Was bedeutet "[*]" (Sternmodifikator) in C?
- 24. Grammatik in Ruby "&& ="
- 25. Was bedeutet diese Fehlercode mean (Code beigefügt)
- 26. Konvertieren eine Grammatik in LL (1) Grammatik: einige Probleme
- 27. LL (1) Grammatik und Parsing
- 28. Oracle und SAS-Verbindung Grammatik
- 29. Was bedeutet Middleware für Twitter und Scala?
- 30. was bedeutet android getIntrinsicHeight und getIntrinsicWidth?