ฉันเพิ่งอ่านหน้า Wikipedia สำหรับWebAssemblyและมันบอกว่า: " WebAssembly คือ ... ออกแบบให้แยกได้เร็วกว่า JavaScript " ซึ่งทำให้ฉันคิดว่าอะไรจะทำให้ภาษาหรือรูปแบบข้อมูลเร็วขึ้นในการแยกวิเคราะห์กว่าอื่น ๆ และขั้นตอนวิธีการแยกวิเคราะห์คืออะไร ใช้?
ฉันเพิ่งอ่านหน้า Wikipedia สำหรับWebAssemblyและมันบอกว่า: " WebAssembly คือ ... ออกแบบให้แยกได้เร็วกว่า JavaScript " ซึ่งทำให้ฉันคิดว่าอะไรจะทำให้ภาษาหรือรูปแบบข้อมูลเร็วขึ้นในการแยกวิเคราะห์กว่าอื่น ๆ และขั้นตอนวิธีการแยกวิเคราะห์คืออะไร ใช้?
คำตอบ:
หัวข้อนี้ซับซ้อนมาก คุณสามารถ google สำหรับอัลกอริทึม parser และคุณจะได้รับรายละเอียดของวัสดุมากมาย
โดยทั่วไป:
ตัวอย่างเช่น
เมื่อ JS parser เห็นfunction
คำหลักในรหัสนี้: function xyz(a, b) {}
คำหลักของฟังก์ชั่นนั้นคลุมเครือ ก่อนอื่นมันต้องประมวลผลโทเค็นถัดไปxyz
และดูว่ามันเป็นตัวระบุก่อนที่จะสามารถตัดสินใจได้ว่ามันคือการประกาศฟังก์ชั่น
แต่ถ้าโทเค็นถัดไปเป็นเราจะจัดการกับฟังก์ชั่นตัวอักษร:(
function(a, b) {}
ที่ต้องมีการแยกวิเคราะห์ที่จะทำงานแตกต่างกันมากดังนั้นรหัสเพิ่มเติมในการแยกวิเคราะห์จึงดำเนินการช้าลง
หากมีคำหลักที่แตกต่างกันสำหรับวัตถุประสงค์ทั้งสองนี้จะไม่มีความกำกวม:
function_decl xyz(a, b, c) {}
และ function_lit(a, b, c) {}
อย่างไรก็ตามไม่มีใครต้องการที่จะเขียนในภาษาดังกล่าว แต่ WebAssembly ไม่ควรเขียนด้วยมือ ที่ช่วยให้ภาษานั้นถูกปรับให้เข้ากับเครื่องจักรแทนที่จะเป็นมนุษย์