Apa perbedaan antara Flex & Lex dan Yacc & Bison. Saya mencari di Internet dengan liar dan saya tidak menemukan jawaban yang pasti.
Dapatkah saya menginstal Lex dan Yacc murni di Ubuntu, atau saya hanya dapat menginstal flex dan bison. Saya bingung.
- Apakah Lex atau Yacc masih dipelihara oleh seseorang?
- Apakah semuanya gratis?
Jika Lex tidak gratis, mengapa saya menginstalnya di distribusi Ubuntu saya?
lex --version lex 2.5.35
Jawaban:
Ada beberapa perbedaan antara Lex dan Flex, tetapi Anda harus menyalahgunakan Lex untuk mengalami masalah dengan Flex. (Saya memiliki program yang menyalahgunakan Lex dan tidak bekerja di bawah Flex, oleh karena itu.) Ini terutama di bidang input lookahead; di Lex, Anda dapat memberikan kode input Anda sendiri dan mengubah aliran karakter; Flex tidak akan membiarkan Anda melakukan itu.
Yacc dan Bison sangat cocok, meskipun Bison memiliki beberapa trik tambahan yang dapat dilakukan.
Anda mungkin tidak dapat menemukan salinan resmi Lex dan Yacc (asli, versi AT&T) untuk diinstal di Ubuntu. Saya tidak selalu mengatakan itu tidak mungkin, tetapi saya tidak menyadarinya. Flex dan Bison sudah tersedia dan setara untuk sebagian besar tujuan. Anda juga dapat menemukan berbagai alternatif dan program yang kurang lebih setara dari dunia BSD.
Lex dan Yacc dikelola oleh lisensi Unix SVRx - perusahaan seperti IBM (AIX), HP (HP-UX) dan Sun (Solaris) telah memodifikasi versi Lex dan Yacc atas perintah mereka. MKS juga menyediakan MKS Lex dan MKS Yacc; namun, Yacc setidaknya memiliki beberapa ekstensi non-standar.
Flex dan Bison gratis. (AT&T) Lex dan Yacc tidak.
sumber
#include
). Buku O'Reilly saya tentang lex & yacc (tidak ada di sini, maaf) mengatakan bahwa itu hanya mungkin dalam lex melalui peretasan yang menjijikkan.Bison adalah implementasi / ekstensi GNU dari Yacc, Flex adalah penerus Lex. Dalam kedua kasus tersebut, tidak masalah (dan disarankan) untuk menggunakan bison / flex.
sumber
Pada kebanyakan (semua?) Sistem Linux, "Lex" sebenarnya adalah tautan simbolis untuk melenturkan. Pada dasarnya, ini hanya nama yang berbeda dengan versi gratisnya.
sumber
YACC tersedia di bawah lisensi open source dari Plan 9 dan Open Solaris. Selain itu, ada juga Berkeley YACC, yang kompatibel dengan YACC asli, tetapi tidak berbagi kode sumber. Berkeley YACC dapat ditemukan di semua sistem operasi open source BSD.
sumber
Bison di bagian dari proyek GNU. Dan yacc digunakan sebagai utilitas di Berkeley Software Distribution (BSD). Meskipun kompatibel dengan yacc, Lex dan Yacc sudah ketinggalan zaman. Flex dan bison banyak digunakan saat ini.
sumber