วันอาทิตย์ที่ 19 ตุลาคม พ.ศ. 2557

MiniCompiler v1.0

       จากไวยากรณ์ข้างต้นของการประกาศตัวแปร (T) และการเรียกฟังก์ชัน (F) ต่างก็ใช้ ID เป็นตัวเริ่มต้นการผลิต ทำให้ไม่สามารถแยกแยะในทางโปรแกรมได้ว่า หลังจากกระทำกับ ID แล้วควรพบกับเครื่องหมาย '(' หรือ ',' ดังกรอบสีแดงของรูปด้านล่างนี้
       เป็นเหตุให้ต้องเขียนไวยากรณ์นี้ใหม่ (rewrite) โดยจะต้องคงความสามารถเดิมไว้ ด้วยการแยก ID ออกมา จากนั้นสร้างไวยากรณ์ย่อยในชื่อ S20 ทำหน้าที่เป็นตัวเลือกว่าควรจะกระทำกับเครื่องหมาย '(' หรือ ',' ดังนี้
       สังเกตต่อไปว่าที่ S20 เรียก T จึงต้องเขียน T ให้ใหม่ด้วย
       เรายังพบอีกว่า S20 ในช่วงการผลิต statement ของ T และ S1 มีลักษณะไม่ต่างจาก T และ F ดังที่กล่าวมา กล่าวคือเรียก ID ด้วยกันทั้งคู่ แต่ไม่รู้ว่าควรพิจารณา ',' หรือ '(' ดังนี้
       เช่นนั้นจึงต้องปรับเปลี่ยนไวยากรณ์การผลิตนี้ใหม่อีกครั้งเป็น
       สำหรับไวยากรณ์นิพจน์การคำนวณ ขออนุญาตเปลี่ยนกลับเป็นอย่างเดิม เพื่อให้ความหมายยังคงเดิม ดังนี้ครับ
       ท้ายที่สุดจึงได้ว่า
       โปรแกรมภาษา C# ต่อไปนี้เขียนด้วยไวยากรณ์ดังข้างต้น สามารถผลิต Target code ของนิพจน์การบวก ลบ คูณและหารครับ

Download MiniCompiler v1.0

หมายเหตุ*** ผมใช้ MS Visual Studio Express 2013 for Windows Desktop เขียนนะครับ