Frage

Ich muss den Compiler (lexikalische, Syntax- und semantische Analysatoren) implementieren. Ich habe den lexikalischen LEXICAL bereits von Flex ++, Syntax von Hand (rekursiver Abstieg) umgesetzt, Und wissen, dass ich an semantisch arbeite (Hinzufügen von semantischen Regeln für den vorhandenen Parser). Meine Frage ist - wie kann ich Attribute implementieren? Zum Beispiel zur Produktion:

generasacodicetagpre.

Ich muss semantische Regel hinzufügen:

generasacodicetagpre.

Hier muss ich also etwas Struktur für den Typ erstellen, usw. für alle Grammatiksymbole. Wie implementiere ich diese Strukturen?Muss ich für jedes Grammatiksymbol strukturieren, und es muss global für den Umfang der Datei sein?

p.s.Vielleicht ist es nicht die beste Compiler-Implementierung, es ist nur die Anforderung für den Auftrag.

War es hilfreich?

Lösung

Es ist am einfachsten, wenn Sie einen Typ (typischerweise eine Struktur) für jedes Terminal und Nichtterminal in Ihrer Sprache definieren.Dann hat jede Verwendung eines (nicht) -ENnluments Zugriff auf den Typ, und jede Zuordnung eines Attributs geht an den entsprechenden Schlitz in der Struktur, der dem (nicht) -EN-Anschluss zugeordnet ist.

Ich schlage vor, dass Sie Ihre Implementierungsstrukturen nach den Grammatik-Token nennen.Der Typ der Attributstruktur für T wäre also "t_attributes {...}"

für Ihr Beispiel "Typ" wäre ein Schlitz in der T_Attributes.Wahrscheinlich, was Sie in der Zusammenfassung schreiben wollten, war:

generasacodicetagpre.

Angegeben Sie dabei von Hand, Sie werden die Attributzuweisung übergeben, um auszuführen, wenn ein Baumspaziergang den Typknoten trifft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top