Anda membutuhkan yang berikut:
- Alasan untuk membuat bahasa baru
- Sebuah Filsafat
- Definisi Semantik
- Deskripsi leksikal token Anda
- Definisi Analisis Sintaks
Bagaimana bahasa Anda akan berbeda? Apa misinya? Apakah ini fungsional? Apakah itu berorientasi objek? Apakah ini bahasa meta? Apa saja fitur uniknya? Apa yang akan ia berikan kepada dunia yang tidak ada (atau ada dengan cara yang jelek)? Bagaimana Anda ingin mengubah sesuatu? Apakah ini dikompilasi atau ditafsirkan? DSL atau bahasa tujuan umum? Ini adalah filosofi Anda dan menentukan banyak tentang desain bahasa Anda.
Selanjutnya, bekerja pada mencoret sintaks kasar dan semantik di atas kertas. Ini akan menjadi definisi semantik Anda ... menulis kode palsu adalah cara yang bagus untuk mengembangkan pemikiran Anda. Baca "Bahasa Pemrograman C" untuk contoh yang sangat baik tentang bagaimana hal ini dilakukan. Main dengannya.
Anda kemudian perlu mendefinisikan token dan sintaks Anda dalam beberapa cara. Program kemudian mengolahnya menjadi automata yang mampu membaca dalam string dan memproses sintaksis. Yacc dan Bison menggunakan Ekspresi Reguler dan sintaks gaya BNF masing-masing untuk analisis leksikal dan sintaksis. Ada juga Yacc dan Bison seperti alat untuk bahasa lain.
Anda juga akan memerlukan landasan dalam teori / kompiler bahasa untuk mengetahui apa yang TIDAK harus dilakukan. Contohnya termasuk tata bahasa yang ambigu, generasi AST dan masalah manipulasi dan umumnya bagaimana membuat hidup sederhana untuk diri sendiri. Mengetahui teori itu sangat penting. Saya akan mempertimbangkan untuk memulai yang berikut ini:
Compiler: Prinsip, Teknik dan Peralatan (Buku Naga)
Implementasi Kompiler Modern di C atau Implementasi Kompiler Modern di Jawa