Cara Membedakan Lex dan Yacc

Perbedaan yang menonjol antara Lex dan Yacc adalah Lex adalah penganalisis leksikal yang mengubah program sumber menjadi token yang berarti sementara Yacc adalah pengurai yang menghasilkan pohon parse dari token yang dihasilkan oleh Lex.

Secara umum, kompiler adalah program perangkat lunak yang mengubah kode sumber menjadi kode mesin. Ini melewati beberapa fase untuk melakukan konversi ini. Pertama, ada fase analisis leksikal . Ini melibatkan membaca program sumber satu karakter pada satu waktu dan mengubahnya menjadi leksem (token) yang bermakna. Selanjutnya, output dari fase tersebut menuju ke syntax analysis . Dibutuhkan token dari analisis leksikal dan menghasilkan pohon parse sebagai output. Secara keseluruhan, penganalisis leksikal melakukan analisis leksikal sementara penganalisis sintaksis melakukan analisis sintaksis. Lex adalah penganalisis leksikal sedangkan Yacc adalah pengurai. Keduanya bekerja sama. Sebagai contoh, Lex mengambil input string untuk membuat token, dan Yacc menggunakan input yang diberi token tersebut.

Topik bahasan kami tentang:

  1. Apa itu Lex? -Definisi, Fungsionalitas 2. Apa itu Yacc – Definisi, Fungsi 3. Perbedaan Antara Lex dan Yacc -Perbandingan perbedaan utama

Istilah Utama

Lex, Penganalisis Lexical, Pohon Parse, Analisis Sintaks, Yacc

Yang perlu anda ketahui tentang Lex?

Lex adalah program komputer yang menghasilkan penganalisis leksikal. Mike Lex dan Eric Schmidt adalah pengembang asli Lex. Ini adalah generator penganalisis leksikal standar pada berbagai sistem UNIX. Lex ditentukan sebagai bagian dari standar POSIX. Umumnya, Lex digunakan dengan generator parse Yacc. Selanjutnya, Lex membaca aliran input yang menentukan penganalisis leksikal. Kemudian, ia mengeluarkan kode sumber yang mengimplementasikan lexer dalam bahasa C.

File Lex terdiri dari tiga bagian berikut:

Definisi: Mendefinisikan makro dan mengimpor file header yang ditulis dalam C.

Aturan : Ini berisi pola ekspresi reguler dengan pernyataan C. Ketika lexer mengidentifikasi bahwa teks dalam input cocok dengan pola yang diberikan, ia akan mengeksekusi kode C terkait.

Kode C : Bagian ini terdiri dari pernyataan dan fungsi C.

Selanjutnya, versi open-source Lex sekarang didistribusikan sebagai bagian dari OpenSolaris dan Plan 9 dari Bell Labs. Versi open-source paling populer dari Lex disebut flex, yang merupakan singkatan dari Fast Lexical Analyzer.

Yang perlu anda ketahui tentang Yacc

Yacc adalah singkatan dari Yet Another Compiler-Compiler . Stephan C. Johnson mengembangkannya, dan digunakan dalam sistem UNIX. Ini adalah utilitas standar pada BSD dan AT&T UNIX. Selain itu, distribusi Linux berbasis GNU termasuk Bison, pengganti Yacc yang kompatibel ke depan.

Selain itu, input ke Yacc adalah tata bahasa kode C yang dilampirkan ke aturannya. Outputnya adalah parser pengurangan shift di C. Setelah mengenali aturan, ia mengeksekusi kode C yang terkait dengan setiap aturan. Selanjutnya, tindakan khas termasuk menghasilkan pohon parse.

Perbedaan Antara Lex dan Yacc

Definisi

Lex adalah program komputer yang beroperasi sebagai penganalisis leksikal sedangkan Yacc adalah pengurai yang digunakan dalam Sistem Operasi Unix.

Pengembang

Mike Lex dan Eric Schmidt mengembangkan Lex sedangkan Stephan C. Johnson mengembangkan Yacc.

Kegunaan

Sementara Lex membaca program sumber satu karakter pada satu waktu dan mengubahnya menjadi token yang berarti, Yacc mengambil token sebagai input dan menghasilkan pohon parse sebagai output.

Kata terakhir

Singkatnya, penganalisis dan pengurai leksikal mendukung dua fase pertama dari proses kompilasi. Dengan kata lain, Lex adalah penganalisis leksikal, dan Yacc adalah pengurai. Jadi, Perbedaan yang menonjol antara Lex dan Yacc adalah Lex adalah penganalisis leksikal yang mengubah program sumber menjadi token yang berarti, sedangkan Yacc adalah pengurai yang menghasilkan pohon parse dari token yang dihasilkan oleh Lex.

Sumber bacaan:
  1. “Lex (Perangkat Lunak).” Wikipedia, Wikimedia Foundation, 29 Juni 2019, Tersedia di sini . 2. “Yacc.” Wikipedia, Wikimedia Foundation, 23 Juni 2019, Tersedia di sini .
Sumber gambar:

1..”85017″ melalui (CC0 )

Related Posts