การค้นหาภาษาที่สร้างโดยไวยากรณ์ที่ไม่มีบริบท


11

นี่คือคำถามจากหนังสือ Dragon (ฉันขอโทษสำหรับความผิดพลาดในการแปลฉันไม่ได้มีเวอร์ชันภาษาอังกฤษอยู่ในมือ):

ไวยากรณ์นี้สร้างด้วยภาษาใด

SaSS|SaS|ε

ฉันไม่รู้ว่าฉันควรทำอะไรที่นี่ คำจำกัดความในหนังสือเกี่ยวกับภาษาบอกว่าสิ่งนี้ (และมันก็สวยมากในบท):

ภาษาคือชุดของคำทั้งหมดที่สามารถสร้างได้โดยทรีการแยกวิเคราะห์ใด ๆ

ดังนั้นหากฉันต้องการแยกทรี "ใด ๆ " ออกจากไวยากรณ์นี้ฉันสามารถสร้างมันซ้ำ ๆ โดยใช้กฏสองข้อแรก ฉันค้นหาเล็กน้อยและได้รับความประทับใจว่าต้องใช้กฎทุกครั้ง แต่ฉันไม่แน่ใจ มันจะมีประโยชน์มากถ้ามีคนสามารถให้คำแนะนำในการแก้ปัญหาต่าง ๆ เหล่านี้ได้


1
คำแนะนำ: ใช้การแสดงออกปกติ
Bartosz Przybylski

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

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


SaSSaaSSaaSaaSaaaa

คำตอบ:


6

a

มันจะมีประโยชน์มากถ้ามีคนสามารถให้คำแนะนำในการแก้ปัญหาต่าง ๆ เหล่านี้ได้

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


5

คำแนะนำ: สร้างคำบางคำที่สร้างขึ้นโดยไวยากรณ์นี้ คุณเห็นรูปแบบหรือไม่ คุณสามารถอธิบายคุณสมบัติบางอย่างของคำทั้งหมดที่สร้างโดยไวยากรณ์โดยดูจากกฎได้หรือไม่ เมื่อคุณเดา (ถูกต้อง) เกี่ยวกับภาษาที่สร้างโดยไวยากรณ์แล้วมันจะไม่ยากเกินไปที่จะพิสูจน์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.