Katakan, misalnya, saya ingin membayar seseorang untuk membuat bahasa pemrograman atau bahasa scripting untuk saya. Apa jenis dokumen yang akan mereka butuhkan, untuk sepenuhnya memahami apa sebenarnya yang saya inginkan.
Maksud saya, apakah ada dokumen standar yang menjelaskan bahasa pemrograman / scripting baru yang dimaksud?
Jawaban:
Apa yang perlu Anda tulis disebut spesifikasi bahasa .
Ini harus berisi deskripsi tata bahasa (lebih disukai dalam Extended Backus-Naur-Form ) dan semantiknya.
Untuk bagian terakhir Anda bisa menulis deskripsi dengan kata-kata Anda sendiri (tapi berhati-hatilah) atau semantik formal .
sumber
Anda membutuhkan yang berikut:
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
sumber
99,9% dari waktu membuat bahasa baru sama sekali tidak perlu. Pengembalian investasi kemungkinan besar akan sangat kecil, dan Anda hanya akan membuang-buang waktu.
Kemungkinan besar Anda dapat menggunakan Javascript sebagai bahasa skrip yang rentan, dan sudah ada parser untuk sebagian besar bahasa. Anda juga dapat menggunakan bahasa skrip lain yang Anda suka jika Anda dapat menemukan parser yang cocok untuk mereka. Menerapkannya ke dalam program Anda akan membutuhkan lebih sedikit pekerjaan dan memiliki pengembalian yang lebih besar. Orang tidak harus belajar bahasa lain, mereka hanya perlu mempelajari API Anda. Ini solusi yang jauh lebih baik.
Membuat bahasa baru hampir selalu buruk.
sumber
Anda dapat menggambarkan tata bahasa Anda di BNF .
Sebagai contoh, ini adalah tata bahasa Python .
sumber
jika Anda menggunakan .NET, berikut adalah sesuatu yang saya temukan beberapa waktu lalu. Aku hanya meliriknya dengan rasa ingin tahu, tapi mungkin itu akan berguna bagimu: ironi .
sumber