Descrivere formalmente un nuovo linguaggio di programmazione specifico per il dominio


8

Sto per implementare un linguaggio specifico di dominio per la rappresentazione delle convenzioni di apprendimento sociale. Parte dell'implementazione è una descrizione formale di un linguaggio: il suo "calcolo", i simboli e le espressioni logiche.

Il mio approccio sarebbe quello di descrivere il linguaggio descrivendone la grammatica ma ci sono anche concetti come relazioni, dialoghi, aspettative che richiedono un approccio più teorico e la descrizione della logica.

Vorrei chiedere un esempio e una raccomandazione di letteratura (documenti, libri) che mi aiuterebbe con questa descrizione. Mi sento relativamente competente nell'affrontare questo compito, quindi non sto chiedendo una mano totale, ma l'aiuto di un teorico in questo settore sarebbe molto apprezzato.


I suoni sono davvero molto interessanti. Descrivere la grammatica è semplice. Fornire semantica per concetti specifici di dominio è molto un'area di ricerca aperta. Potresti iniziare cercando su Google: "lingue specifiche per il dominio semantico".
Dave Clarke,

Cosa sai già sulla scrittura della semantica del linguaggio formale?
Dave Clarke,

Risposte:


10

Ci sono due parti della semantica che dovrai descrivere:

  • semantica statica : struttura di programmi ben formati

  • semantica dinamica : significato dell'esecuzione delle programmazioni

La semantica statica di solito assume la forma di sistemi di tipo. Consiglio di leggere i libri di Benjamin C Pierce e Robert Harper . In alternativa, potresti scrivere le regole di programmi ben formati come una raccolta di dichiarazioni (formali o informali) che descrivono le condizioni di validità del tuo programma. L'approccio formale adottato dai sistemi di tipo fornisce un quadro ben noto per tali specifiche.

Esistono molti formalismi per esprimere la semantica dinamica da considerare come base:

  • semantica denotazionale --- dà significato in termini di domini semantici
  • semantica operativa --- dà significato in termini di cambiamenti a stati di una macchina astratta
  • semantica assiomatica --- dà significato in termini di asserzioni sullo stato della macchina
  • semantica algebrica --- la semantica è definita in termini di leggi algebriche.

Dovrebbero esserci molti libri là fuori su questi argomenti. Una buona introduzione è la semantica con applicazioni di Nielson e Nielson . Una versione scaricabile è disponibile dal sito degli autori . C'è anche una nuova edizione, ma non l'ho vista.

All'interno di ciascuno di questi, ci sono scelte da fare. Ad esempio, se si decide di utilizzare la semantica operativa, ci sono semantica a grandi passi, semantica a piccoli passi, semantica basata su sistemi di transizione etichettati, semantica basata su logica di riscrittura.

Il tipo di approccio che dovresti adottare dipenderà dal tipo di linguaggio che il tuo DSL è, dal tipo di esperienza che hai con la progettazione della semantica e dalle tue preferenze personali.

Senza dettagli concreti, non posso aiutare oltre.


@Edmon Sarei interessato a saperne di più.
Dave Clarke,

Condividerò sicuramente mentre progredisco. Potrei farlo sul mio blog e anche coinvolgere te e il resto della comunità qui mentre incontro aree di cui ho bisogno di aiuto. Grazie per la magnifica risposta.
Edmon,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.