FIRST & FOLLOW Parsing Table

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
ค33212 คณิตศาสตร์คอมพิวเตอร์ 6
Advertisements

อสมการ 1.1 อสมการเชิงเส้นตัวแปรเดียว
แนวคิดในการเขียนโปรแกรม
ลิมิตและความต่อเนื่อง
Lists Data Structure LAUKHWAN NGAMPRASIT LAUKHWAN NGAMPRASIT.
(Some Extension of Limit Concept)
ไวยากรณ์ของภาษาการทำโปรแกรม (2) (Syntax of programming languages)
เรื่อง การคูณจำนวนที่มีหนึ่งหลัก กับจำนวนที่มีหนึ่งหลัก
สมการเชิงเส้นตัวแปรเดียว
ขั้นตอนง่ายๆ ในการ เข้าใช้บริการ GPF Web Service สำหรับสมาชิก กบข.
Ordering and Liveness Analysis ลำดับและการวิเคราะห์บอกความ เป็นอยู่หรือความตาย.
 Chainate, W..  หากเกิด error() ขึ้น แสดงว่า ข้อมูลเข้าไม่เป็นประโยค  คอมไพเลอร์ที่ดี... o ไม่ควรหยุดเมื่อพบความผิดพลาดครั้งแรก o ควรรายงานความผิดพลาด.
ตัววิเคราะห์การกระจาย LR(1)
CS Assembly Language Programming
อสมการ.
บทที่ 2 หลักการแก้ปัญหา
จำนวนจริง F M B N ขอบคุณ เสถียร วิเชียรสาร.
การใช้ Icon Start และ Stop
แผนผัง FlowChart Flow Chart คือ ขั้นตอนที่นำผลที่ได้จากการกำหนดและการ วิเคราะห์ปัญหามาเขียนเป็นแผนภาพหรือสัญลักษณ์ ประโยชน์ของผังงาน -ช่วยลำดับขั้นตอนการทำงานของโปรแกรม.
คณิตศาสตร์และสถิติธุรกิจ
ระบบอัตโนมัติและการพิมพ์
การสร้างตาราง Click mouse ที่ปุ่ม จะปรากฏช่องสี่เหลี่ยมแสดง
การวิเคราะห์ขั้นตอนวิธีการแก้ปัญหา
Arrays.
เทคนิคทางคณิตศาสตร์ในการวิเคราะห์เชิงปริมาณ
การควบคุมข่ายงาน (PERT/CPM)
กลุ่มสาระการเรียนรู้คณิตศาสตร์ โรงเรียนอัสสัมชัญอุบลราชธานี
การหาปริพันธ์ (Integration)
คำศัพท์ที่น่าสนใจใน A5
โรงเรียนบรรหารแจ่มใสวิทยา ๖
ระบบจำนวนเต็ม โดย นางสาวบุณฑริกา สูนานนท์
บทที่ 8 การวิเคราะห์ข้อมูลเชิงคุณภาพ
เศษส่วน.
ไวยากรณ์ของภาษาการทำโปรแกรม (1) (Syntax of programming languages)
Review : เซตของ states ( สถานะ ) : เซตของ Input alphabets/symbols ( อักษร / สัญลักษณ์ รับเข้า ) : Initial state ( สถานะเริ่มต้น ) : เซตของ Final states.
Process Analysis 2 การวิเคราะห์กระบวนการ
ด.ญ. เปรมศิณี แร่มี เลขที่ 14
ครูฉัตร์มงคล สนพลาย. เมตริกซ์ (Matrices) เมตริกซ์ คือ การจัดเรียง จำนวนให้อยู่ในรูป สี่เหลี่ยมผืนผ้า ซึ่งประกอบด้วย แถว (Row) และ หลัก (Column)
กฏเกณฑ์นับเบื้องต้นเกี่ยวกับการนับ วิทยาลัยการอาชีพวังไกลกังวล
ค33212 คณิตศาสตร์คอมพิวเตอร์ 6
ความสัมพันธ์และความสัมพันธ์ทวิภาค
นิยาม, ทฤษฎี สับเซตและพาวเวอร์เซต
การดำเนินการบนเมทริกซ์
ค33212 คณิตศาสตร์คอมพิวเตอร์ 6
ตัวผกผันการคูณของเมทริกซ์
ค33211 คณิตศาสตร์สำหรับ คอมพิวเตอร์ 5
ค33212 คณิตศาสตร์คอมพิวเตอร์ 6
ค33212 คณิตศาสตร์คอมพิวเตอร์ 6
การใช้งาน access เบื้องต้น
วิธีสายงานวิกฤต Critical Path Method แบบ Activity on Arrow.
บทเรียนสาระการเรียนรู้คณิตศาสตร์ โดยใช้โปรแกรม Microsoft Multipoint
บทที่ 2 หลักการแก้ปัญหา
การใช้ Word เพื่อการคำนวณ
ตัวแปรกับชนิดของข้อมูล
คำสั่งควบคุมขั้นตอน Flow control statements
ตัวแปรชุด Arrays.
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
ตัวประกอบ (Factor) 2 หาร 8 ลงตัว 3 หาร 8 ไม่ลงตัว 4 หาร 8 ลงตัว
บทที่ 7 การวิเคราะห์งานและการโปรแกรม แบบมีโครงสร้าง
การเขียนแบบใช้งานเบื้องต้น(Working Drawing)
หัวข้อการเรียน ENL 3701 Week 5
การเขียนโปรแกรมคอมพิวเตอร์ 1
หลักการเขียนโปรแกรม ( )
เมทริกซ์ (Matrix) Pisit Nakjai.
สื่อการสอนด้วยโปรมแกรม “Microsoft Multipoint”
บทที่ 6 Context Free Grammar และการแจกแจงประโยค.
Introduction to SQL (MySQL) – Special Problem (Database)
การแบ่งแยกและเอาชนะ Divide & Conquer
ค31212 คณิตศาสตร์สำหรับ คอมพิวเตอร์ 2
การเตรียมข้อมูล (Data preparation)
ใบสำเนางานนำเสนอ:

FIRST & FOLLOW Parsing Table Chainate, W.

E  TA A  +TA | ɛ T  FB B  *FB | ɛ F  ( E ) | id หา FIRST (1) หาค่า ɛ ว่าเป็นสมาชิกใน FIRST ของสัญลักษณ์ไม่สิ้นสุดตัวใดได้บ้าง ɛ  FIRST(A) ɛ  FIRST(B) E  TA A  +TA | ɛ T  FB B  *FB | ɛ F  ( E ) | id

E  TA A  +TA | ɛ T  FB B  *FB | ɛ F  ( E ) | id หา FIRST (2) E  TA A  +TA | ɛ T  FB B  *FB | ɛ F  ( E ) | id + * ( ) id E A T B F

E  TA A  +TA | ɛ T  FB B  *FB | ɛ F  ( E ) | id หา FIRST E  TA A  +TA | ɛ T  FB B  *FB | ɛ F  ( E ) | id + * ( ) id E A T B F

E  TA A  +TA | ɛ T  FB B  *FB | ɛ F  ( E ) | id หา FOLLOW E  TA A  +TA | ɛ T  FB B  *FB | ɛ F  ( E ) | id FOLLOW E A T B F

Parsing table E  TA A  +TA | ɛ T  FB B  *FB | ɛ F  ( E ) | id เป็นตาราง 2 มิติ ขนาด m คูณ n m is non-terminal symbols n is terminal symbols + 1 ($) สำหรับแต่ละกฏ X   ให้ใส่กฏนี้ในช่อง [X, a] เมื่อ a  ɛ  FIRST() และ ถ้า ɛ  FIRST() ใส่กฏนี้ในตารางตรงช่อง [X, b] เมื่อ b  FOLLOW(X) Parsing table E  TA A  +TA | ɛ T  FB B  *FB | ɛ F  ( E ) | id

ไวยากรณ์ไม่พึ่งบริบท (context free grammar) ที่นำมาสร้างตารางวิเคราะห์การกระจาย (parsing table) ของตัววิเคราะห์กระจายทำนายไม่เรียกซ้ำ (nonrecursive predictive parser) แล้วในช่องมีมากกว่า 1 กฏ แสดงว่าตารางนั้นเกิดความขัดแย้ง และไวยากรณ์ดังกล่าวจะไม่เป็นไวยากรณ์ LL(1) รวมถึงไวยากรณ์กำกวมด้วย ลองทำ FIRST & FOLLOW และ parsing table จากไวยากรณ์นี้ดูซิ... S  iEtAB B  eA | ɛ E  b A  S | a ความขัดแย้ง !!

ไวยากรณ์ LL(1) CFG จะเป็นไวยากรณ์ LL(1) ก็ต่อเมื่อ X  1 |  2 | … |  n แล้วจะได้ว่า FIRST( i)  FIRST( j) =  สำหรับ ij  i *  แล้ว FIRST( j)  FOLLOW(X) =  สำหรับ j  I ไวยากรณ์ต่อไปนี้เป็นไวยากรณ์ LL(1) หรือไม่ S  iEtSA | a A  eS |  E  b ไวยากรณ์ LL(1)

การเกิดซ้ำซ้าย (Left recursion) Non-terminal symbols ใดๆ มีการเกิดซ้ำซ้าย ถ้า X + X ซึ่งเราสามารถตรวจสอบได้โดยใช้เมทริกซ์ที่ใช้หา FIRST CFG ที่มี NT อย่างน้อยหนึ่งตัวมีการเกิดซ้ำซ้าย จะไม่เป็นไวยากรณ์ LL(1) ในกรณีที่มีกฏ X  X เราจะกล่าวได้ว่ามีการเกิดซ้ำซ้ายทันที และสามารถขจัดการเกิดซ้ำซ้ายด้วยการเขียนกฏที่อยู่ในรูป X  X1|X2|…|Xm|1|2|…|n ให้กลายเป็น X  1Y|2Y|…|nY Y  1Y|2Y|…|mY เมื่อ Y เป็น NT ตัวใหม่ การเกิดซ้ำซ้าย (Left recursion)

การเกิดซ้ำซ้าย (Left recursion) จงเปลี่ยนไวยากรณ์ต่อไปนี้ ให้ไม่มีการเกิดซ้ำซ้าย E  E+T | E-T | T T  T*F | T/F | F F  -F | +F | P P  (E) | id การเกิดซ้ำซ้าย (Left recursion)

ตัวประกอบซ้าย (left factoring) CFG: X1 |  2 เมื่อ  จะไม่เป็นไวยากรณ์ LL(1) เพราะ FIRST( 1)  FIRST( 2)  เราเรียก  ว่า ตัวประกอบซ้าย (left-factoring) เราสามารถเขียนกฏซึ่งอยู่ในรูป X1| 2 |…| n เมื่อ  เป็น prefix ที่ยาวที่สุดและ  ดังนี้ XY Y1| 2 |…| n เมื่อ Y เป็น NT ตัวใหม่ ตัวประกอบซ้าย (left factoring)