Pertanyaan Tutorial untuk menulis parser dengan Javascript [tertutup]


Saya telah melihat beberapa bahasa (yaitu CoffeeScript dan LessCSS) yang dibangun di Javascript.

Apakah ada tutorial di mana saja untuk menulis bahasa / parser dengan Javascript?


32
2018-05-03 19:29


asal


Jawaban:


Jison dimodelkan pada generator parser GNU Bison. Diperlukan tata bahasa dalam format Bison-like atau JSON dan menghasilkan parser Javascript untuk bahasa tersebut. Jika Anda ingin membuat juru bahasa yang didasarkan pada bahasa lain yang terkenal, mungkin ada tata bahasa Bison di sekitar tempat Anda dapat men-tweak untuk Jison. Saya telah menemukan ini sangat mudah untuk memulai dari awal DSL.


14
2018-03-08 21:48



Mengapa Anda berpikir konsep dasar untuk menerapkan bahasa "pada JavaScript" pada dasarnya bergantung pada JavaScript? Sebagian besar hanya bahasa pemrograman dan pendekatan kompiler standar yang dapat diterapkan; satu "hanya" mengkompilasi ke JavaScript daripada instruksi mesin.

Berikut adalah tutorial tentang menulis kompiler menggunakan metode metacompiling sangat mudah. Ini terjadi untuk menargetkan JavaScript sebagai tempat awal, tetapi tidak berkomitmen untuk JavaScript. Tutorial ini didasarkan pada makalah oleh Val Schorre tentang "MetaII", semacam metacompiler .... tanggal 1964 (Ya, Anda membaca yang benar). Saya belajar bagaimana membangun compiler pertama saya dari tulisan ini (tetapi tidak dengan JavaScript :), dan itu masih merupakan teknik yang berharga:

Meta II Compiler Tutorial penargetan JavaScript

Jika Anda menginginkan sesuatu yang lebih cepat, pertimbangkan menulis parser keturunan rekursif dengan tangan.. Setelah Anda menulis beberapa di antaranya, Anda benar-benar akan menghargai apa sedikit kecerdasan MetaII.


13
2018-05-03 21:19



Saya akan mulai dengan melihat lebih banyak bahasa yang dikompilasi ke javascript dan lihat apa yang mereka lakukan. Berikut daftarnya: https://github.com/jashkenas/coffee-script/wiki/List-of-languages-that-compile-to-JS

Lihat daftar generator parser di bagian bawah halaman yang membuat semuanya lebih mudah, seperti jison dan peg.js.

Ada batasan atau rintangan tertentu saat menulis bahasa alternatif yang dikompilasi ke javascript, karena javascript tidak dirancang untuk menjadi 'bytecode' atau runtime untuk bahasa lain. Tidak ada tipe statis atau sistem kelas, misalnya, seperti di java dan C #. Jika Anda hanya melakukan sedikit perubahan untuk memperbaiki beberapa masalah javascript seperti kopi dan lain-lain yang tercantum di bagian atas halaman di tautan itu, hal-hal seperti itu bukanlah masalah, tetapi kemudian masalah yang lebih besar adalah mengapa tidak hanya berkontribusi coffeescript atau bahasa yang sejenis.


1
2018-05-20 23:31