การออกแบบคอมไพเลอร์ - Finite Automata

ไฟไนต์ออโตมาตาเป็นเครื่องสถานะที่รับสตริงของสัญลักษณ์เป็นอินพุตและเปลี่ยนสถานะตามนั้น Finite automata เป็นเครื่องมือจดจำสำหรับนิพจน์ทั่วไป เมื่อสตริงนิพจน์ทั่วไปถูกป้อนเข้าใน จำกัด ออโตมาตาสตริงจะเปลี่ยนสถานะสำหรับลิเทอรัลแต่ละตัว หากสตริงอินพุตได้รับการประมวลผลสำเร็จและออโตมาตาถึงสถานะสุดท้ายจะได้รับการยอมรับกล่าวคือสตริงที่เพิ่งป้อนถูกกล่าวว่าเป็นโทเค็นที่ถูกต้องของภาษาในมือ

แบบจำลองทางคณิตศาสตร์ของออโตมาตา จำกัด ประกอบด้วย:

  • ชุดสถานะ จำกัด (Q)
  • ชุดสัญลักษณ์อินพุต จำกัด (Σ)
  • หนึ่งสถานะเริ่มต้น (q0)
  • ชุดของสถานะสุดท้าย (qf)
  • ฟังก์ชั่นการเปลี่ยน (δ)

ฟังก์ชันการเปลี่ยน (δ) แมปชุดสถานะ จำกัด (Q) กับชุดสัญลักษณ์อินพุต จำกัด (Σ), Q ×Σ➔ Q

การก่อสร้าง Finite Automata

ให้ L (r) เป็นภาษาปกติที่รู้จักโดย จำกัด Automata (FA)

  • States: สถานะของ FA แสดงด้วยวงกลม ชื่อรัฐเขียนอยู่ในวงกลม

  • Start state: สถานะจากจุดเริ่มต้นของออโตมาตะเรียกว่าสถานะเริ่มต้น สถานะเริ่มต้นมีลูกศรชี้ไปทางนั้น

  • Intermediate states: สถานะกลางทั้งหมดมีลูกศรอย่างน้อยสองลูก คนหนึ่งชี้ไปที่และอีกคนหนึ่งชี้ออกจากพวกเขา

  • Final state: หากแยกวิเคราะห์สตริงอินพุตสำเร็จออโตมาตาคาดว่าจะอยู่ในสถานะนี้ สถานะสุดท้ายแสดงด้วยวงกลมสองวง มันอาจมีลูกศรจำนวนคี่ชี้ไปที่มันและจำนวนลูกศรที่ชี้ออกจากมัน จำนวนลูกศรคี่มีค่ามากกว่าหนึ่งคู่กล่าวคือodd = even+1.

  • Transition: การเปลี่ยนจากสถานะหนึ่งไปเป็นอีกสถานะหนึ่งจะเกิดขึ้นเมื่อพบสัญลักษณ์ที่ต้องการในอินพุต เมื่อมีการเปลี่ยนแปลงออโตมาตะสามารถย้ายไปยังสถานะถัดไปหรืออยู่ในสถานะเดิม การเคลื่อนที่จากสถานะหนึ่งไปยังอีกสถานะหนึ่งจะแสดงเป็นลูกศรกำกับโดยลูกศรจะชี้ไปยังสถานะปลายทาง หากออโตมาตะยังคงอยู่ในสถานะเดิมลูกศรที่ชี้จากสถานะถึงตัวมันเองจะถูกดึงออกมา

Example: เราถือว่า FA ยอมรับค่าไบนารีสามหลักที่ลงท้ายด้วยหลัก 1 FA = {Q (q 0 , q f ), Σ (0,1), q 0 , q f , δ}