Secara formal menggambarkan bahasa pemrograman khusus domain baru

8

Saya akan mengimplementasikan bahasa khusus domain untuk representasi konvensi pembelajaran sosial. Bagian dari implementasi adalah deskripsi formal bahasa - 'kalkulus', simbol dan ekspresi logisnya.

Pendekatan saya adalah mendeskripsikan bahasa dengan menjelaskan tata bahasanya tetapi ada juga konsep-konsep seperti hubungan, dialog, harapan yang membutuhkan lebih banyak pendekatan teoretis dan deskripsi logikanya.

Saya ingin meminta contoh dan rekomendasi literatur (makalah, buku) yang akan membantu saya dengan deskripsi ini. Saya merasa relatif kompeten mendekati tugas ini sehingga saya tidak meminta pegangan tangan total, tetapi bantuan dari ahli teori di bidang ini akan sangat dihargai.

Edmon
sumber
Suaranya sangat menarik. Menggambarkan tata bahasa adalah bagian yang mudah. Menyediakan semantik untuk konsep-konsep spesifik domain sangat banyak bidang penelitian terbuka. Anda bisa mulai dengan googling: "bahasa khusus domain semantik".
Dave Clarke
Apa yang sudah Anda ketahui tentang menulis semantik bahasa formal?
Dave Clarke

Jawaban:

10

Ada dua bagian semantik yang perlu Anda uraikan:

  • semantik statis : struktur program yang dibentuk dengan baik

  • semantik dinamis : makna menjalankan program

Semantik statis biasanya berbentuk sistem tipe. Saya sarankan melihat buku-buku karya Benjamin C Pierce dan Robert Harper . Atau, Anda dapat menulis aturan program yang terbentuk dengan baik sebagai kumpulan pernyataan (formal atau informal) yang menggambarkan kondisi validitas program Anda. Pendekatan formal yang diambil oleh sistem tipe menyediakan kerangka kerja yang terkenal untuk spesifikasi tersebut.

Ada banyak formalisme untuk mengekspresikan semantik dinamis untuk dipertimbangkan sebagai dasar Anda:

  • semantik denotasi --- memberi makna dalam hal domain semantik
  • semantik operasional --- memberi makna dalam hal perubahan ke status mesin abstrak
  • semantik aksiomatik --- memberi makna dalam hal penegasan tentang kondisi mesin
  • semantik aljabar --- semantik didefinisikan dalam istilah hukum aljabar.

Seharusnya ada banyak buku di luar sana tentang topik ini. Pengantar luas yang bagus adalah Nielson dan Nielson Semantics with Applications . Sebuah versi download tersedia dari penulis situs . Ada juga edisi yang lebih baru, tetapi saya belum melihatnya.

Di dalam masing-masing ini, ada pilihan untuk dibuat. Misalnya, jika Anda memutuskan untuk menggunakan semantik operasional, ada semantik langkah besar, semantik langkah kecil, semantik berdasarkan sistem transisi berlabel, semantik berdasarkan logika penulisan ulang.

Apa jenis pendekatan yang harus Anda ambil akan tergantung pada apa bahasa DSL Anda, apa jenis pengalaman yang Anda miliki dengan merancang semantik, dan preferensi pribadi Anda.

Tanpa detail konkret, saya tidak dapat membantu lebih jauh.

Dave Clarke
sumber
@Edmon, saya tertarik untuk mempelajari lebih lanjut.
Dave Clarke
Saya pasti akan berbagi saat saya maju. Saya mungkin melakukannya di blog saya dan juga melibatkan Anda dan seluruh komunitas di sini karena saya menemukan area yang saya perlu bantuan. Terima kasih atas jawabannya.
Edmon