WikiDer > Abstrakte Syntax

Abstracte syntaxis

Abstrakte Syntax ist eine Darstellung von Daten (oft eine Nachricht über a Kommunikationskanal wird gesendet oder a Computer Programm Welche zusammengestellt wird) was maschinenunabhängig ist Datenstrukturen und Kodierungen sowie der eigentlichen Darstellung der Daten (bei der Zusammenstellung der konkrete Syntax erwähnt und in der Kommunikation die Übertragungssyntax).

In einem Compiler ein Computerprogramm wird mit abstrakten Begriffen wie z Kennung und Variable. Diese Darstellung ist unabhängig von der Syntax der Quellcode (die konkrete Syntax) des zu kompilierenden Programms, auch wenn sie oft ähnlich sind. EIN Syntaxbaum ist ähnlich wie a abstrakter Syntaxbaum aber es kann auch Dinge tun wie Klammern die syntaktisch wichtig sind. Solche Dinge bleiben im abstrakten Syntaxbaum implizit.

Beispiel

Im funktionale Programmiersprachen die abstrakte Syntax lässt sich oft direkt aus den formale Grammatik. Angenommen, wir haben eine formale Grammatik mit folgendem: Produktionsregeln:

In der Programmiersprache Haskell lässt sich das darstellen mit:

Daten S = FallA S | FallB S S | FallC

Das Schnur "abacc" (die konkrete Syntax) kann mit der folgenden abstrakten Syntax dargestellt werden:

FallA (FallB (FallA FallC) FallC)

Diese Darstellung kann auch als Baumstruktur bei welchem FallA die Wurzel ist mit FallB als Kind (und dito für die anderen Komponenten). Das wird der abstrakter Syntaxbaum erwähnt.

Die Umwandlung zwischen der abstrakten Syntax und der konkreten Syntax ist recht einfach:

toConcrete :: S -> StringtoConcrete(CaseA x)="a" toConcrete xtoConcrete(CaseB x y)="b" toConcrete x toConcrete ytoConcrete CaseC="c"

Um die konkrete Syntax in eine abstrakte Syntax umzuwandeln, a Parser benutzt.