Ada dua bagian semantik yang perlu Anda uraikan:
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.