Pertanyaan Parsing, di mana saya bisa belajar tentang itu


Saya telah diberi pekerjaan 'menerjemahkan' satu bahasa ke bahasa lain. Sumbernya terlalu fleksibel (rumit) untuk pendekatan garis demi garis sederhana dengan regex. Di mana saya bisa belajar lebih banyak tentang analisis leksikal dan parser?


16
2017-08-29 06:57


asal


Jawaban:


Jika Anda ingin "emosional" tentang subjek, ambil salinan "The Dragon Book." Ini biasanya teks dalam kursus desain compiler. Ini pasti akan memenuhi kebutuhan Anda "belajar lebih banyak tentang analisis leksikal dan parser" serta sekelompok lainnya menyenangkan barang!

IMH (umble) O, simpan diri Anda lengan dan / atau kaki dan membeli edisi yang lebih lama - itu akan mengisi keinginan informasi Anda.


11
2017-08-29 07:15



Mencoba ANLTR:

ANTLR, Alat Lain untuk Bahasa   Pengakuan, adalah alat bahasa itu   menyediakan kerangka kerja untuk membangun   recognizers, interpreter, kompiler,   dan penerjemah dari gramatikal   deskripsi berisi tindakan dalam   berbagai bahasa target.

Ada Book untuk itu juga.

alt text


8
2017-08-29 07:01



Buku Niklaus Wirth "Compiler Construction" (tersedia sebagai PDF gratis) http://www.google.com/search?q=wirth+compiler+construction


5
2017-08-29 07:59



Saya baru saja bekerja dengan LAPIS yang merupakan implementasi dari lex dan yacc dengan Python. Cukup mudah untuk memulainya dan ada beberapa contoh sederhana dalam dokumentasi.

Parsing dapat dengan cepat menjadi topik yang sangat teknis dan Anda akan menemukan bahwa Anda mungkin tidak perlu mengetahui semua detail dari algoritma parsing jika Anda menggunakan pembangun parser seperti PLY.


2
2017-08-29 06:59



Banyak orang merekomendasikan buku. Bagi banyak orang ini jauh lebih berguna dalam lingkungan yang terstruktur dengan penugasan dan tanggal jatuh tempo dan sebagainya. Bahkan jika tidak, memiliki materi yang disajikan dengan cara berbeda dapat sangat membantu.

(a) Sudahkah Anda mempertimbangkan pergi ke sekolah dengan kurikulum CS yang layak?
(B) Ada banyak kuliah online, seperti Open Courseware MIT. Mereka Bagian EE / CS memiliki banyak kursus yang menyentuh pada parsing, meskipun saya tidak bisa melihat pada parsing per se. Ini biasanya diperkenalkan sebagai salah satu kursus teori pertama sebagai klasifikasi bahasa dan automata adalah jantung dari banyak teori CS.


2
2017-10-24 19:01



Jika Anda lebih memilih alat berbasis Java, Java Compiler Compiler, JavaCC, adalah parser / pemindai yang bagus. Ini file konfigurasi didorong, dan akan menghasilkan kode java yang dapat Anda sertakan dalam program Anda. Saya belum menggunakannya beberapa tahun, jadi saya tidak yakin bagaimana versi saat ini. Anda dapat mengetahui lebih lanjut di sini: https://javacc.dev.java.net/


1
2017-08-29 07:04



Lexing / Parsing + typecheck + pembuatan kode adalah latihan CS yang bagus Saya akan merekomendasikannya kepada siapa pun yang menginginkan dasar yang kuat, jadi saya semua untuk Buku Naga


1
2017-08-29 07:31



Saya menemukan situs ini bermanfaat:

Lex dan YACC primer / HOWTO

Pertama kali saya menggunakan lex / yacc adalah untuk proyek yang relatif sederhana. Tutorial ini adalah yang benar-benar saya butuhkan. Ketika saya mendekati proyek yang lebih kompleks nantinya, keakraban yang saya miliki dari tutorial ini dan proyek sederhana memungkinkan saya untuk membangun sesuatu yang lebih menarik.


1
2017-09-30 13:54



Setelah mengambil (cukup) beberapa kelas kompilator, saya telah menggunakan keduanya The Dragon Book dan C & T.. Saya pikir C & T melakukan pekerjaan yang jauh lebih baik untuk membuat konstruksi compiler yang dapat dicerna. Tidak mengambil apa pun dari The Dragon Book, tapi saya pikir C & T adalah buku yang jauh lebih praktis.

Juga, jika Anda suka menulis di Jawa, saya sarankan untuk menggunakan JFlex dan BYACC / J untuk kebutuhan lexing dan parsing Anda.


1
2017-10-24 18:42



Namun buku lain yang perlu dipertimbangkan adalah Bahasa Pemrograman Pragmatik. Saya lebih suka di atas buku Naga, tapi YMMV.

Jika Anda menggunakan Perl, alat lain yang perlu dipertimbangkan adalah Parse :: RecDescent.

Jika Anda hanya perlu melakukan terjemahan ini sekali dan tidak tahu apa-apa tentang teknologi kompilator, saya akan menyarankan agar Anda mendapatkan sejauh mungkin dengan terjemahan yang cukup sederhana dan kemudian memperbaikinya dengan tangan. Ya, ini banyak pekerjaan. Tapi itu kurang kerja daripada belajar subjek yang kompleks dan coding solusi yang tepat untuk satu pekerjaan. Meskipun begitu, Anda tetap harus mempelajari subjeknya, tetapi jangan sampai Anda tidak tahu bahwa itu adalah penghalang jalan untuk menyelesaikan proyek Anda saat ini.


1
2017-09-18 21:40