Saya sedang membangun ekstensi ke bahasa yang ada sebagai praprosesor. Saya tidak dapat mengetahui apakah ada cara untuk mendapatkan pegjs untuk membuat ulang kode sumber. Pada dasarnya saya ingin mengurai sumbernya, saya ingin memodifikasi AST lalu membuat ulang sumbernya. Lagi pula ini mungkin?
@mattkanwisher maaf, saya tidak begitu mengerti apa yang Anda maksud dengan "regenerasi" sumbernya.
Bisakah Anda menjelaskan sedikit? Jika maksud Anda menghasilkan kode berdasarkan AST - Anda harus menulis logika itu sendiri, baik secara langsung dalam tata bahasa atau sebagai bagian terpisah.
Ya menghasilkan kode berdasarkan AST, jadi saya harus membuat kompiler kembali ke sumber aslinya jika saya ingin melakukan praproses menggunakan ini?
Hmm, jika Anda menginginkan sumber _original_ - Anda masih memilikinya tanpa perlu membuatnya, bukan?
Tetapi jika Anda menginginkan versi modifikasinya - Anda harus menulis sendiri logika pembuatan kode.
( @Mingun @futagoza tolong koreksi saya jika saya salah)
@YemSalat benar, PEG.js hanyalah generator parser.
Seperti yang Anda lihat, PEG.js hanya terlibat pada langkah pertama, jadi jika Anda ingin membuat ulang sumbernya, Anda harus membuat kompiler sendiri, atau jika kompiler atau generator (rantai alat) sudah ada untuk bahasa tersebut, saya sarankan Anda dapat mengembalikan AST yang kompatibel dengan toolchain atau menambahkan transformasi yang mengubah AST menjadi lebih kompatibel dengan toolchain.
Penutup, karena ini sebenarnya bukan masalah dengan PEG.js tetapi Anda dipersilakan untuk melanjutkan diskusi.
Jadi saya menemukan jawabannya. Untuk siapa pun yang mendarat di pos bug ini di masa mendatang. Cukup baca kode sumber untuk "Kompiler super kecil". Setelah itu saya dapat menggunakan pegjs untuk membangun preprocessor saya dalam beberapa jam
Komentar yang paling membantu
@YemSalat benar, PEG.js hanyalah generator parser.
Seperti yang Anda lihat, PEG.js hanya terlibat pada langkah pertama, jadi jika Anda ingin membuat ulang sumbernya, Anda harus membuat kompiler sendiri, atau jika kompiler atau generator (rantai alat) sudah ada untuk bahasa tersebut, saya sarankan Anda dapat mengembalikan AST yang kompatibel dengan toolchain atau menambahkan transformasi yang mengubah AST menjadi lebih kompatibel dengan toolchain.
Penutup, karena ini sebenarnya bukan masalah dengan PEG.js tetapi Anda dipersilakan untuk melanjutkan diskusi.