ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
1
ตัววิเคราะห์การกระจาย LR(1)
Warattapop Chainate
2
LR(1) Parsing LR(1) parsing มีองค์ประกอบและขั้นตอนวิธีเหมือนกับ SLR(1) parsing ต่างกันเพียงวิธีการสร้าง action และ goto tables เท่านั้น แต่... ก่อนจะไปสร้างตาราง เราต้องรู้จัก item LR(1) closure set goto set และ กลุ่มคาโนนิคอล LR(1)
3
Item LR(1) และ Closure ไอเท็ม LR(1) ประกอบด้วยสองส่วน ส่วนแรกเหมือนกับไอเท็ม LR(0) และส่วนที่สองเป็น terminal sym หรือ $ โดยจะเขียนอยู่ในรูป [ส่วนแรก, ส่วนที่สอง] เช่น [X, a] Closure(I) สำหรับ LR(1) เพิ่มสมาชิกทุกตัวใน I เข้าไปเป็นสมาชิกของ closure(I) พิจารณาไอเท็ม LR(1) ที่เป็นสมาชิกใน closure(I) ถ้ามี อยู่หน้า non-terminal sym สมมติว่าคือ [XB, a] และ B มีกฎ B ให้เพิ่มไอเท็ม LR(1) คือ [B, b] เมื่อ b FIRST(a) เข้าไปเป็นสมาชิกของ closure(I) ** หากมี $ ให้มอง $ เป็น terminal sym ตัวหนึ่ง FIRST($)={$} ทำข้อ b ซ้ำๆ จนกว่าจะไม่มีไอเท็ม LR(1) ใหม่เพิ่มเข้าไปใน closure(I) จงหา closure({[S’S, $]})
4
goto for LR(1) goto(I, X) เมื่อ I เป็นเซตของไอเท็ม LR(1) และ X เป็น non-terminal หรือ terminal sym จะมีวิธีการหาสมาชิกดังนี้ นำไอเท็ม LR(1) ใน I ที่มี ติดอยู่ข้างหน้า X มารวมกันเป็นเซต เลื่อน ไปไว้หลัง X แล้วหา closure ของเซตดังกล่าว จาก กำหนดให้ I3={[SbA, $], [Sbda, $], [Ad, $], [A, $]} จงหาเซตของ goto (0) S’ S (1-4) S Aa | bA | bda | (5-6) A d |
5
กลุ่มคาโนนิคอล LR(1) สำหรับไวยากรณ์ G=(N, T, S, P) และ Ag (N{S’}, T, S’, P{S’S}) กำหนดให้ C เป็นเซตของ ไอเท็ม LR(1) ของ Ag G’ ซึ่งเรียกว่า “กลุ่มคาโนนิคอล LR(0) ของ Ag G’” C := {closure({[S’S, $]})}; ทำซ้ำๆ จนกว่าจะไม่มีสมาชิกใหม่เพิ่มเข้าไปใน C ดังนี้ สำหรับ (สมาชิก I แต่ละตัวใน C) สำหรับ (สัญลักษณ์สิ้นสุด และสัญลักษณ์ไม่สิ้นสุด X แต่ละตัว) ถ้า (goto(I, X) และ goto(I, X)C) แล้ว เพิ่ม goto(I, X) เข้าไปในสมาชิกตัวใหม่ใน C;
6
I0={[S’S, $], [SAa, $], [SbA, $], [Sbda, $], [S, $], [Ad, a], [A, a]}
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.