Saran buruk ketika bekerja dengan ANTLR

Perhatian Anda diundang ke serangkaian tips berbahaya yang akan membantu Anda membuat parser yang paling produktif. Jangan lupa untuk melakukan semuanya sesuai dengan instruksi, jika tidak, akan terjadi kesalahan!

1. ATN - bukan bug, tetapi fitur


Terrence Par melakukan fitur hebat untuk mengoptimalkan prediksi cabang dalam tata bahasa Anda. Khusus karena kepedulian terhadap kinerja parser Anda, bidang ini statis dan akan mengumpulkan informasi selamanya! Tentu saja, Anda tidak akan melihat banyak perbedaan pada file-file kecil, hal utama adalah tidak mengurai file 2-3 megabyte dalam tes Anda, jangan ada memori yang cukup untuk orang lain!

2. Cari siapa saja yang tidak terbiasa melihat kembali ledakan!


Jika tata bahasa Anda memeriksa semua token dari aliran pada setiap aturan, maka Anda dapat menjamin akurasi pemrosesan! Jika tidak ada tumpukan yang cukup, maka itu cukup untuk meningkatkan ukurannya sepuluh kali lipat, yang utama adalah membuat lebih banyak aturan!

3. SLL untuk pengecut


Mengapa optimasi jika ANTLR4 dapat melakukannya untuk Anda? Tata bahasa dalam mode SEMUA menghemat waktu Anda yang berharga untuk membaca artikel semacam itu. Ingatlah untuk menambahkan token yang sama ke setiap alternatif, terutama jika itu terlihat indah.

4. AST - semua informasi yang Anda miliki


Jangan lupa mendengarkan Terrence dan menambahkan pengunjung, dukungan pendengar ke parser Anda. Menanamkan kode dalam tata bahasa tidak hanya kesulitan yang tidak perlu, tetapi juga masalah potensial dengan refactoring! Melewati setiap simpul di pohon, Anda tidak hanya dapat mencoba keberuntungan Anda, tetapi juga memeriksa saraf pelanggan!

5. Lebih banyak aturan, dewa aturan!


Tapi tahukah Anda bahwa dengan bantuan ANTLR4 Anda dapat membangun menara Babel? Di bagian kode dengan sarang besar tidak dapat ditemukan? Suatu fungsi di dalam suatu fungsi dengan sejumlah besar ekspresi? Hanya saja, jangan menunjukkan kepada pelanggan pekerjaan pada file js yang diperkecil, lagi pula, tidak ada yang memahaminya, bahkan browser.

6. Lexer hanya diperlukan untuk membuat token.


Dalam keadaan apa pun mencoba melakukan sesuatu dengan token di lexer, mengemas blok {} di token tidak akan memungkinkan Anda menikmati melihat mesin pelanggan yang membutuhkan lebih banyak memori!

Memori harus mengalir! Semoga memleak bersamamu!

Source: https://habr.com/ru/post/undefined/


All Articles