"บริบท" ใน "ไวยากรณ์ที่ไม่มีบริบท" หมายถึงอะไร


30

มีคำจำกัดความออนไลน์มากมายเกี่ยวกับไวยากรณ์ที่ปราศจากบริบท แต่ไม่มีอะไรที่ฉันพอใจคือปัญหาหลักของฉัน:

บริบทใดที่ปราศจาก

ในการตรวจสอบฉัน Googled "บริบทที่ไวต่อไวยากรณ์" แต่ฉันยังคงล้มเหลวในการค้นหาว่า "บริบท" เกี่ยวกับอะไร

ใครช่วยกรุณาอธิบายสิ่งที่contextคำที่อ้างถึงในชื่อเหล่านี้?


5
ฉันพบว่าคำอธิบายของวิกิพีเดียค่อนข้างดี - "ไวยากรณ์ที่เป็นทางการได้รับการพิจารณาว่าเป็น" บริบทฟรี "เมื่อสามารถใช้กฎการผลิตได้โดยไม่คำนึงถึงบริบทของ nonterminal ไม่ว่าสัญลักษณ์ใดล้อมรอบมัน ถูกแทนที่ด้วยด้านขวามือ " - สามารถใช้ถ้อยคำใหม่และทำให้กลายเป็น "ภาษาอังกฤษธรรมดา" ได้ง่ายขึ้น แต่แก่นแท้ของมันค่อนข้างชัดเจนสำหรับฉัน
jkff

1
@jkff เป็นเรื่องที่ดีมากที่คุณจะพบคำอธิบายที่ดี แต่ฉันก็ยังล้มเหลวที่จะเข้าใจว่า "บริบท" หมายถึงอะไรที่นี่จริงๆ ฉันต้องการดูตัวอย่างที่มีบริบทและไม่มีบริบท สำหรับฉันดูเหมือนว่าทุกไวยากรณ์ที่ฉันเคยเห็นมีบริบท
CodyBugstein

ไม่ชัดเจนจากคำจำกัดความหรือไม่
Raphael

2
กระแทกแดกดันบริบทสำคัญขาดหายไปจากคำจำกัดความดังนั้นฉันเพิ่งเพิ่มประโยคเพื่ออธิบาย
reinierpost

2
ตัวอย่าง: ใน C ++ 11 overrideสามารถเป็นชื่อตัวแปรหรือคำหลักได้ขึ้นอยู่กับตำแหน่งที่ใช้ (เช่นบริบทของคำ) หากใช้หลังจากการประกาศเมธอดมันเป็นคีย์เวิร์ด ไม่เช่นนั้น นี่คือตัวอย่างของไวยากรณ์ไวตามบริบท
โทมัส Eding

คำตอบ:


37

คุณพูดถูกต้องมีบริบทเสมอ ฉันไม่คิดว่าคุณสามารถเข้าใจความหมายของ "บริบท" ใน "บริบท" โดยไม่เข้าใจการผลิต

การผลิตเป็นกฎการทดแทน มันบอกว่าในการสร้างสตริงภายในภาษาคุณสามารถแทนที่สิ่งที่อยู่ทางซ้ายสำหรับสิ่งที่อยู่ทางขวา:

A -> xy

ซึ่งหมายความว่าลำดับนามธรรม A สามารถถูกแทนที่ด้วยอักขระ "x" ตามด้วยอักขระ "y" คุณสามารถมีการผลิตที่ซับซ้อนมากขึ้น:

zA -> xy

ซึ่งหมายความว่าอักขระ "z" ตามด้วยลำดับนามธรรม A สามารถถูกแทนที่ด้วยอักขระ "x" และ "y"

การผลิตแบบไม่มีบริบทหมายถึงมีเพียงสิ่งเดียวที่อยู่ด้านซ้ายมือ ตัวอย่างแรกไม่มีบริบทเนื่องจากสามารถแทนที่ด้วย "x" และ "y" ไม่ว่าจะเกิดอะไรขึ้นก่อนหรือหลัง อย่างไรก็ตามในตัวอย่างที่สองอักขระ "z" จะต้องปรากฏก่อนหน้า A และจากนั้นชุดค่าผสมสามารถถูกแทนที่ด้วย "x" และ "y" ดังนั้นจึงมีบางบริบทที่เกี่ยวข้อง

ไวยากรณ์ที่ไม่มีบริบทเป็นเพียงไวยากรณ์ที่มีการผลิตแบบไม่มีบริบทเท่านั้น

ตัวอย่างที่สองเป็นตัวอย่างของการผลิตที่ไม่ จำกัด มีหมวดหมู่อื่นที่อยู่ระหว่างไม่มีบริบทและไม่ จำกัด ที่เรียกว่า "คำนึงถึงบริบท" ตัวอย่างของการผลิตแบบคำนึงถึงบริบทคือ:

zA -> zxy

ความแตกต่างคือสิ่งที่เกิดขึ้นก่อน A (และหลัง) ทางด้านซ้ายมือจะต้องได้รับการเก็บรักษาไว้ทางด้านขวา สิ่งนี้มีประสิทธิภาพหมายถึงว่ามีการแทนที่ A เท่านั้น แต่สามารถทดแทนได้ในบริบทที่เหมาะสมเท่านั้น


2
ขอบคุณที่ช่วยได้มาก! ฉันไม่เคยเห็นตัวอย่างไวยากรณ์จริง ๆ เลยที่มีตัวแปรมากกว่าหนึ่งตัวทางด้านซ้ายตามที่คุณแสดง ฉันคิดว่านั่นเป็นสาเหตุที่ฉันไม่เห็นว่า "บริบท" คืออะไร ขอบคุณ
CodyBugstein

4
บางทีตัวอย่างบริบทที่ง่ายกว่าคือzA -> zxy: A ยังคงถูกแทนที่ด้วย xy แต่หลังจาก z เท่านั้น
MSalters

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

@MSalters: คุณมีจุดดี ฉันแก้ไขคำตอบของฉัน ฉันมีความยากลำบากในการหาวิธีเพิ่มรายละเอียดเหล่านั้นลงในคำอธิบายของฉันโดยที่มันฟังดูไม่ซับซ้อนดังนั้นสิ่งที่ฉันทำลงไปก็แค่เพิ่มรายละเอียดให้มากขึ้นในตอนท้าย
Vaughn Cato

9

Aβ
αAδ

เบต้าคืออะไร มันเป็นเทอร์มินัลหรือตัวแปรหรือไม่? และคุณสามารถอธิบาย "รูปแบบประโยค" ได้หรือไม่ นั่นหมายความว่ามันไม่สามารถหามาได้อีกหรือ
CodyBugstein

เบต้าสามารถเป็นอะไรก็ได้ที่ A-> เบต้าเป็นกฎ รูปแบบประโยคหมายถึงการให้สัญลักษณ์เริ่มต้นของคุณโดยใช้กฎของไวยากรณ์ที่เราเปลี่ยนมันเป็นผล ผลลัพธ์นี้เรียกว่าแบบฟอร์มส่งข้อความ หลังจากใช้ทุกกฎทุกข้อเราจะได้รับแบบฟอร์มประโยคใหม่
iLoveCamelCase

3
@Imray คุณต้องไปดูคำจำกัดความที่เป็นทางการสำหรับไวยากรณ์และไวยากรณ์ที่ไม่มีบริบท ไม่มีทางลัดเพื่อทำความเข้าใจกับวัตถุที่เป็นทางการ
Raphael

1
@Imray รูปแบบประโยคเป็นสตริงของสัญลักษณ์เทอร์มินัลและไม่ใช่เทอร์มินัลที่มาจากสัจพจน์ (หรือเรียกว่าสัญลักษณ์เริ่มต้น ) โดยการประยุกต์ใช้กฎไวยากรณ์(เรียกอีกอย่างว่าโปรดักชั่น ) รูปแบบประโยคสามารถรับได้ในอีกรูปแบบหนึ่งโดยใช้กฎกับหนึ่งในสัญลักษณ์ที่ไม่ใช่เทอร์มินัล เมื่อไม่มีเทอร์มินัลที่ไม่เหลือรูปแบบประโยคคือประโยคเช่นสตริงหรือคำในภาษาที่กำหนดหรือสร้างโดยไวยากรณ์ คำศัพท์มาจากภาษาศาสตร์ซึ่งครั้งหนึ่งเคยเป็นผู้มีส่วนร่วมหลักในทฤษฎีภาษาทางการ
babou

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