Frage

Ich frage mich, wo ist die Grenze zwischen Grammatikspezifikation und semantische Analyse. Was ist besser: eine detaillierte Beschreibung Grammatik zu verwenden oder die Details für die semantische Phase verlassen? Zum Beispiel: ich vorstellen, eine OO-Sprache wie C # mit Enum-Typ, das kann „ableiten“ von einem primitiven Typ

enum X : int { a = 1 }

Jetzt sollte die Richtigkeit (in diesem Fall: primitiv oder nicht-primitive Art)? Basen Art von Enum ein Thema Grammatikprüfung oder semantischer Analyse sein

War es hilfreich?

Lösung

Dies ist eine äußerst breite Frage. Es gibt so viele andere Überlegungen, so dass es sehr schwierig sein würde, einfach zu sagen, dass eine Taktik besser ist als eine andere in allen Situationen. Es hängt von Ihrem Zweck und der Definition des Restes der Sprache. Wenn andere Teile der Sprache von Natur aus syntaktisch mehrdeutig sind (und müssen mit semantischen Informationen werden vereindeutigt), dann ist es offensichtlich, dass es notwendig ist, Aufgaben als Schritt der semantischen Analyse durchzuführen.

Das heißt, ich bin ein Fan von alle Fehler so früh wie möglich zu kontrollieren. Wenn Ihre Sprache und Ziel Sie ermöglicht eine völlig eindeutige semantische Repräsentation Ihrer Eingabe zu analysieren, ohne eine semantische Analyse zu erfordern ungültige Programme abzulehnen, dann glaube ich, das wird der beste Ansatz bei weitem sein.

Grundsätzlich sind Sie balancieren auf jeden Fall Ihre Fähigkeit, mit der Komplexität Ihrer Grammatik und Parser und Doppelarbeit zwischen der Grammatikbeschreibung und der semantischen Analysephase fehlerhafte Programme so früh wie möglich zu verwerfen. Ich glaube nicht, dass es immer möglich ist, zu sagen, dass, als ein andere Dinge in einer Art und Weise ist besser.

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