คนที่สามารถสอนให้ฉันทำไม parser โคตร recursive กับ backtracking ที่พยายามที่โปรดักชั่นและ (ตามลำดับ) ไม่รู้จักภาษาเกิดขึ้นจากไวยากรณ์AA
มันจะปรากฏคำเฉพาะแยกจากภาษา\}
ฉันสร้างตัวแยกวิเคราะห์ดังกล่าวโดยใช้ตัวแยกวิเคราะห์ ABNF นี้กับกฎการผลิตS = "a" S "a" / "aa"
และตัวแยกวิเคราะห์ไม่รู้จักคำaaaaaa
เช่น
ฉันคาดหวังว่ามันจะใช้การผลิตจนกระทั่งการต่อเชื่อมของโหนดเทอร์มินัลของการแยกจากซ้ายเริ่มต้นด้วย 7 ของจากนั้นขึ้นไปที่การแยกเลือกการผลิตแทนจนกระทั่งต้นไม้ดูเหมือน นี้:a
S
/ | \
a S a
/ | \
a S a
/ \
a a
aaaaaa
นั้น
aaaaaa
ควรแยกวิเคราะห์และไม่ แต่aaaa
จะแยกวิเคราะห์ เห็นได้ชัดว่าคุณถูกต้องเกี่ยวกับพลังของ 2 สิ่งนี้จะต้องถูกบั๊ก มันจะแยกวิเคราะห์เท่านั้นที่มีaa
S = "aa" / "a" [S] "a"
คุณสามารถติดตามสิ่งที่โปรแกรมแยกวิเคราะห์ทำอะไรได้บ้าง