Formale Beschreibung einer neuen domänenspezifischen Programmiersprache

8

Ich bin dabei, eine domänenspezifische Sprache zur Darstellung sozialer Lernkonventionen zu implementieren. Teil der Implementierung ist eine formale Beschreibung einer Sprache - ihrer 'Analysis', Symbole und logischen Ausdrücke.

Mein Ansatz wäre es, die Sprache durch Beschreibung ihrer Grammatik zu beschreiben, aber es gibt auch Konzepte wie Beziehungen, Dialoge, Erwartungen, die einen theoretischeren Ansatz und die Beschreibung der Logik erfordern.

Ich möchte um ein Beispiel und eine Literaturempfehlung (Papiere, Bücher) bitten, die mir bei dieser Beschreibung helfen würden. Ich fühle mich relativ kompetent bei der Bewältigung dieser Aufgabe, daher bitte ich nicht um eine vollständige Handhaltung, aber die Hilfe eines Theoretikers in diesem Bereich wäre sehr dankbar.

Edmon
quelle
Das klingt wirklich sehr, sehr interessant. Die Grammatik zu beschreiben ist das Einfache. Die Bereitstellung von Semantik für domänenspezifische Konzepte ist ein sehr offener Forschungsbereich. Sie könnten mit dem Googeln beginnen: "Semantikdomänenspezifische Sprachen".
Dave Clarke
Was wissen Sie bereits über das Schreiben formaler Sprachsemantik?
Dave Clarke

Antworten:

10

Es gibt zwei Teile der Semantik, die Sie beschreiben müssen:

  • statische Semantik : Struktur wohlgeformter Programme

  • Dynamische Semantik : Bedeutung der Ausführung von Programmierungen

Statische Semantik hat normalerweise die Form von Typsystemen. Ich würde empfehlen, die Bücher von Benjamin C Pierce und Robert Harper zu lesen . Alternativ können Sie die Regeln wohlgeformter Programme als Sammlung von (formellen oder informellen) Aussagen schreiben, die die Gültigkeitsbedingungen Ihres Programms beschreiben. Der formale Ansatz von Typsystemen bietet einen bekannten Rahmen für solche Spezifikationen.

Es gibt viele Formalismen, um die dynamische Semantik auszudrücken, die Sie als Grundlage betrachten sollten:

  • Denotationssemantik --- gibt Bedeutung in Bezug auf semantische Domänen
  • Betriebssemantik --- gibt Bedeutung in Bezug auf Änderungen an abstrakten Maschinenzuständen
  • Axiomatische Semantik --- gibt Bedeutung in Bezug auf Aussagen über den Zustand der Maschine
  • algebraische Semantik --- Die Semantik wird anhand algebraischer Gesetze definiert.

Es sollte viele Bücher zu diesen Themen geben. Eine gute Einführung ist Nielson und Nielsons Semantik mit Anwendungen . Eine herunterladbare Version ist auf der Website der Autoren verfügbar . Es gibt auch eine neuere Ausgabe, aber ich habe sie nicht gesehen.

In jedem von diesen gibt es Entscheidungen zu treffen. Wenn Sie sich beispielsweise für die Verwendung der operativen Semantik entscheiden, gibt es eine Semantik mit großen Schritten, eine Semantik mit kleinen Schritten, eine Semantik basierend auf beschrifteten Übergangssystemen und eine Semantik basierend auf einer Umschreibungslogik.

Welchen Ansatz Sie wählen sollten, hängt davon ab, welche Sprache Ihr DSL ist, welche Erfahrung Sie mit dem Entwerfen von Semantik haben und welche persönlichen Vorlieben Sie haben.

Ohne konkrete Details kann ich nicht weiter helfen.

Dave Clarke
quelle
@Edmon Ich würde gerne mehr erfahren.
Dave Clarke
Ich werde sicherlich teilen, wenn ich Fortschritte mache. Ich könnte es auf meinem Blog tun und Sie und den Rest der Community hier einbeziehen, wenn ich auf Bereiche stoße, in denen ich Hilfe brauche. Danke für die tolle Antwort.
Edmon