ไวยากรณ์คอนเท็กซ์ฟรี และภาษาคอนเท็กซ์ฟรี บทที่ 5 ไวยากรณ์คอนเท็กซ์ฟรี และภาษาคอนเท็กซ์ฟรี
ภาษาคอนเท็กซ์ฟรี (Context-free Language) เป็นภาษาหนึ่งที่มีความสามารถมากกว่าภาษาเรกูลาร์ เป็นเซตที่ใหญ่กว่าและครอบคลุมเซตของภาษาเรกูลาร์ ภาษาคอนเท็กซ์ฟรีมีเครื่องมือรองรับภาษาที่เรียกว่าพุชดาวน์ออโตมาตา ภาษาคอนเท็กซ์ฟรี ภาษาเรกูลาร์
ความสัมพันธ์ระหว่างภาษาคอนเท็กซ์ฟรี ไวยากรณ์คอนเท็กซ์ฟรี และพุชดาวน์ออโตมาตา ภาษาคอนเท็กซ์ฟรี ไวยากรณ์คอนเท็กซ์ฟรี พุชดาวน์ออโตมาตา(PDA) สแต็ก(Stack) PDA
ไวยากรณ์คอนเท็กซ์ฟรี (Context-free Grammar) นิยาม โดยที่ V คือ เซตของตัวแปร (Variable) T คือ เซตของสัญลักษณ์เทอร์มินอล (Terminal Symbol) นอกจากนี้ S คือ สัญลักษณ์เริ่มต้น (Start Symbol) P คือ เซตของโปรดักชัน (Production) ซึ่งมีรูปแบบดังนี้ โดยที่ A คือ ตัวแปร และ คือ สตริงของ
ตัวอย่างไวยากรณ์คอนเท็กซ์ฟรี หรือ
ภาษาคอนเท็กซ์ฟรี (Context-free Language) นิยาม ภาษา L จะถูกเรียกว่าเป็นภาษาคอนเท็กซ์ฟรีก็ต่อเมื่อไวยากรณ์คอนเท็กซ์ฟรี G ซึ่งสามารถทำให้ L(G)=L ตัวอย่าง จงพิสูจน์ว่าภาษา เป็นภาษาคอนเท็ซ์ฟรี พิสูจน์ : จะสร้างไวยากรณ์ G เพื่อทำให้ L(G)=L สรุป ไวยากรณ์ดังกล่าวเป็นไวยากรณ์คอนเท็กซ์ฟรี
ต้นไม้แสดงการได้มา (Derivation Tree) การแสดงการได้มาของสตริงโดยเริ่มต้นจากสัญลักษณ์เริ่มต้นของไวยากรณ์ มีความซับซ้อนและเข้าใจยากต่อการทำความเข้าใจ เช่น การสร้างสตริง abbbbbb ออกมาจากไวยากรณ์ G
แสดงการได้มาของสตริง abbbbbb จากไวยากรณ์ G S a A B b B b A A b B b b B b
วจีวิภาคของไวยากรณ์ วจีวิภาค(Parsing) คือ การแสดงขั้นตอนการได้มาของสตริงที่ถูกต้องออกมาจากไวยากรณ์ กระบวนการได้มาของสตริงนั้นสามารถทำได้ 2 วิธี คือ การได้มาทางซ้าย (Left Derivation) การได้มาทางขวา (Right Derivation)
ตัวอย่าง กำหนดให้ไวยากรณ์ G=({S},{a,b},S,P) แสดงการได้มาซึ่งสตริง aaabb การได้มาทางซ้าย (Left Derivation) การได้มาทางขวา (Right Derivation)
แบบฝึกหัด
จงสร้างภาษาคอนเท็กซ์ฟรีซึ่งถูกสร้างจากไวยากรณ์คอนเท็กซ์ฟรีดังต่อไปนี้ให้อยู่ในรูปของ ต้นไม้แสดงการได้มา การได้มาทางซ้าย (Left Derivation) การได้มาทางขวา (Right Derivation)