วิธีการเขียน Lisp Interpreter
คุณจะได้รับความรู้เชิงลึกเมื่อคุณเรียนรู้วิธีการทำงานของภาษาโปรแกรม การสร้าง Lisp interpreter ด้วย Python เป็นวิธีคลาสสิกที่จะช่วยให้เห็นภาพนี้
Peter Norvig ได้เขียนคู่มือที่มีชื่อเสียงในหัวข้อนี้เมื่อปี 2010 หลักการของการออกแบบ interpreter นั้นไม่เปลี่ยนแปลง คุณจะได้เรียนรู้วิธีที่โค้ดเปลี่ยนไปเป็นการทำงานจริง
Interpreter มีขั้นตอนหลัก 3 ขั้นตอน:
- Lexical Analysis: คุณจะแยกโค้ดดิบออกเป็น tokens ซึ่งเป็นชิ้นส่วนเล็กๆ เช่น คำและสัญลักษณ์
- Syntactic Analysis: คุณจะเปลี่ยน tokens ให้กลายเป็น tree ซึ่ง tree นี้จะแสดงโครงสร้างของโค้ด
- Evaluation: คุณจะไล่ตาม tree เพื่อดำเนินการตามคำสั่งและรับผลลัพธ์
Lisp ทำให้เรื่องนี้เป็นเรื่องง่าย โดยใช้ S-expressions ซึ่งหมายความว่าทุกอย่างคือ list ที่อยู่ภายในวงเล็บ โดยปกติแล้วรายการแรกจะเป็นฟังก์ชัน และรายการที่เหลือจะเป็น arguments
ในการเริ่มต้น คุณจะเปลี่ยนโค้ดอย่าง (+ 10 (* 2 5)) ให้กลายเป็น tokens
tokens ของคุณจะมีลักษณะดังนี้: '(', '+', '10', '(', '*', '2', '5', ')', ')'
การศึกษากลไกหลักเหล่านี้จะเปลี่ยนวิธีที่คุณใช้เครื่องมือต่างๆ ในทุกๆ วัน