คำถามติดแท็ก formal-grammars

คำถามเกี่ยวกับไวยากรณ์ที่เป็นทางการคำอธิบายกำเนิดของภาษาที่เป็นทางการ

2
นิพจน์ทั่วไป
ถ้าฉันมีไวยากรณ์ประเภทที่ 3 มันสามารถถูกแสดงในออโตเมติกแบบกดลง (โดยไม่ต้องดำเนินการใด ๆ กับสแต็ก) ดังนั้นฉันจึงสามารถแสดงนิพจน์ทั่วไปโดยใช้ภาษาที่ไม่มีบริบท แต่ฉันจะรู้ได้อย่างไรว่าไวยากรณ์ 3 ประเภทคือ , L L ( 1 ) , S L R ( 1 )และอื่น ๆ โดยไม่ต้องสร้างตารางแยกวิเคราะห์?LR(1)LR(1)LR(1)LL(1)LL(1)LL(1)SLR(1)SLR(1)SLR(1)

1
แยกบริบทด้วยภาษาปกติ
จุดตัดของบริบทภาษาอิสระ L กับภาษา M ทั่วไปกล่าวกันว่าเป็นบริบทฟรีเสมอ ฉันเข้าใจหลักฐานการก่อสร้างข้ามผลิตภัณฑ์ แต่ฉันก็ยังไม่เข้าใจว่าทำไมจึงไม่มีบริบท แต่ไม่ใช่ปกติ ภาษาที่สร้างขึ้นโดยทางแยกดังกล่าวมีสตริงที่ยอมรับได้ทั้งจาก PDA และ DFA เนื่องจาก DFA ได้รับการยอมรับจึงไม่ควรเป็นภาษาปกติ นอกจากนี้หากจุดตัดเป็นปกติก็ยังหมายถึงบริบทฟรีเนื่องจากภาษาปกติทั้งหมดยังไม่มีบริบท ใครสามารถอธิบายให้ฉันฟังได้ว่าทำไมภาษาที่ได้จากการแยกดังกล่าวไม่ปกติ

2
ภาษาที่ไม่ไวต่อบริบทที่สามารถตัดสินใจได้
เป็นที่ถกเถียงกันอยู่ว่าภาษาส่วนใหญ่ที่สร้างขึ้นเพื่ออธิบายปัญหาในชีวิตประจำวันมีความไวต่อบริบท ในทางกลับกันก็เป็นไปได้และไม่ยากที่จะหาบางภาษาที่ไม่ซ้ำหรือแม้กระทั่งไม่นับซ้ำ ระหว่างสองประเภทนี้เป็นภาษาที่ไม่ไวต่อบริบทแบบเรียกซ้ำ Wikipedia ให้ตัวอย่างหนึ่งที่นี่ : ตัวอย่างของภาษาแบบเรียกซ้ำที่ไม่คำนึงถึงบริบทคือภาษาแบบวนซ้ำที่การตัดสินใจเป็นปัญหาที่ยากลำบาก EXPSPACE กล่าวคือชุดของคู่ของนิพจน์ทั่วไปที่เทียบเท่ากับการยกกำลัง ดังนั้นคำถาม: ปัญหาอื่น ๆ ที่มีอยู่ที่สามารถตัดสินใจได้ แต่ยังไม่ไวต่อบริบท? ปัญหาระดับนี้เหมือนกับ EXPSPACE ยากหรือไม่?

2
เป็นส่วนประกอบของ {ww | …} ไม่มีบริบทใช่ไหม
กำหนดภาษาเป็นL = { , ข} * - { W W | W ∈ { , ข} * } กล่าวอีกนัยหนึ่งLมีคำที่ไม่สามารถแสดงออกมาเป็นคำบางคำซ้ำสองครั้ง คือLบริบทฟรีหรือไม่?LLLL = { a , b }* * * *- { w w ∣ w ∈ { a , b }* * * *}L={a,b}∗−{ww∣w∈{a,b}∗}L = \{a, b\}^* - \{ww\mid w \in …

2
IELR (1) -parser คืออะไร
ฉันพยายามสอนตัวเองเกี่ยวกับการใช้วัวกระทิง manpage bison (1) พูดเกี่ยวกับ bison: สร้าง LR deterministic LR หรือตัวแยกวิเคราะห์ LR (GLR) ทั่วไปที่ใช้ LALR (1), IELR (1), หรือ canonical LR (1) ตารางตัวแยกวิเคราะห์ ตัวแยกวิเคราะห์ IELR คืออะไร บทความที่เกี่ยวข้องทั้งหมดที่ฉันค้นพบในเว็บไซต์ทั่วโลกนั้นได้รับการชำระเงินแล้ว

1
เมื่อไหร่
จากบทความของ Wikipediaนั้น L ในหมายถึง "การสแกนจากซ้ายไปขวา" และ "R" หมายถึง "การสืบทอดที่ถูกต้องที่สุด" อย่างไรก็ตามในเอกสารต้นฉบับของ Knuth บนไวยากรณ์เขากำหนด (หน้า 610) เป็นภาษาที่ "สามารถแปลได้จากซ้ายไปขวาด้วยถูกผูกมัด"L R ( k )LR(k)LR(k)L R ( k )LR(k)LR(k)L R ( k)LR(k)LR(k)kkk ฉันคาดเดาว่าคำศัพท์ใหม่นี้ได้รับเลือกให้เติมเต็มแยกวิเคราะห์ "จากซ้ายไปขวาสแกนมาจากซ้ายสุด" ที่กล่าวว่าฉันไม่ทราบเมื่อคำศัพท์เปลี่ยนความหมายL L ( k )LL(k)LL(k) ไม่มีใครรู้ว่าตัวย่อใหม่ของมาจากไหน?L R ( k )LR(k)LR(k)

2
ก่อนและหลังมีการตั้งค่าสำหรับไวยากรณ์ที่ไม่มีบริบทหรือไม่
ให้GGGเป็นไวยากรณ์ที่ไม่มีบริบท สตริงของอาคารและ nonterminals ของGGGบอกว่าจะเป็นรูปแบบ sententialของGGGถ้าคุณสามารถรับมันได้โดยการใช้โปรดักชั่นของGGGศูนย์ครั้งหรือมากกว่าที่จะเป็นสัญลักษณ์ของการเริ่มต้นของSSSSให้SF(G)SF⁡(G)\operatorname{SF}(G)เป็นชุดของรูปแบบ sentential ของGGGG ให้α∈SF(G)α∈SF⁡(G)\alpha \in \operatorname{SF}(G)และปล่อยให้ββ\betaเป็นย่อยของαα\alpha - เราเรียกส่วนของเอสเอฟ( G ) ตอนนี้ให้ββ\betaSF(G)SF⁡(G)\operatorname{SF}(G) Before(β)={γ | ∃δ.γβδ∈SF(G)}Before⁡(β)={γ | ∃δ.γβδ∈SF⁡(G)}\operatorname{Before}(\beta) = \{ \gamma \ |\ \exists \delta . \gamma \beta \delta \in \operatorname{SF}(G) \} และ After(β)={δ | ∃γ.γβδ∈SF(G)}After⁡(β)={δ | ∃γ.γβδ∈SF⁡(G)}\operatorname{After}(\beta) = \{ \delta \ |\ \exists \gamma . \gamma \beta …

3
คุณจะได้อะไรถ้าคุณเพิ่มพารามิเตอร์ลงในไวยากรณ์ฟรีตามบริบท
ฉันคิดถึงไวยากรณ์สำหรับภาษาที่มีความอ่อนไหวและดูเหมือนว่าไวยากรณ์กรัมจะทำเคล็ดลับถ้ารวมกับพารามิเตอร์ ลองพิจารณาตัวอย่างนี้สำหรับไวยากรณ์ Python ที่ง่ายขึ้นในรูปแบบ ANTLR: // on top-level the statements have empty indent program : statement('')+ ; // let's consider only one compound statement and one simple statement for now statement(indent) : ifStatement(indent) | passStatement(indent) ; passStatement(indent) : indent 'pass' NEWLINE ; // statements under if must have current indent …

2
คำว่า“ การผลิต” นั้นมีความหมายเหมือนกันกับคำว่า“ กฎ” ในบริบทของวิทยาศาสตร์คอมพิวเตอร์อย่างไร
ฉันกำลังศึกษาภาษาทางการและระบบฐานการผลิต (ระบบฐานกฎ) และฉันสับสนเล็กน้อยว่าทำไมคำสองคำนี้ "การผลิต" และ "กฎ" หมายถึงสิ่งเดียวกันในบริบทมากมายในวิทยาการคอมพิวเตอร์ ในภาษาอังกฤษพวกเขาดูเหมือนจะไม่ได้หมายถึงสิ่งเดียวกัน ฉันไม่ใช่เจ้าของภาษา แต่ฉันรู้ว่ากฎหมายถึงสิ่งที่เราไม่ควรทำเมื่อพูดถึงผู้คนหรือสิ่งที่ซ้ำหลายครั้งจะให้ผลลัพธ์เดียวกันและเราบอกว่ามันทำงานได้ตามกฎบางอย่าง ( วิธีการทำงานที่กำหนดโดยโปรโตคอล / โพรซีเดอร์ที่เหมือนกันทุกครั้ง) การผลิตหมายถึงบางสิ่งที่แตกต่างออกไปอย่างสิ้นเชิง ... ขั้นตอนของสินค้าหรือซอฟท์แวร์ทางกายภาพที่กำลังทำ / ผลิตอยู่ การกระทำของการทำบางสิ่งบางอย่างทั้งทางกายภาพหรืองานศิลปะการเขียนการวาดภาพบางสิ่งบางอย่างที่ทำกับความสามารถทางร่างกายหรือจิตใจของใครบางคน เราบอกว่าสิ่งที่เฉพาะเจาะจงมีการผลิต อย่างไรก็ตามในวิทยาการคอมพิวเตอร์คำเหล่านี้ที่แสดงสิ่งที่แตกต่างอย่างสิ้นเชิงในภาษาอังกฤษหมายถึงสิ่งเดียวกันใน CS ข้อกำหนดนี้มีความคล้ายคลึงกันใน CS อย่างไร มีพจนานุกรมนิรุกติศาสตร์สำหรับวิทยาการคอมพิวเตอร์อยู่บ้างไหม พจนานุกรมที่บอกเราว่าคำศัพท์ทางวิทยาศาสตร์คอมพิวเตอร์เป็นอย่างไร BTW: ข้อเท็จจริงที่น่าสนใจ: ทั้งการผลิตและกฎไม่มีแท็กในไซต์ Stack Exchange นี้

5
การไม่ใช้ความไม่แตกต่างจากระดับคืออะไร?
ฉันพยายามที่จะเข้าใจสิ่งที่มีความหมายโดย "deterministic" ในการแสดงออกเช่น "ไวยากรณ์บริบทที่ปราศจากการกำหนด" (มี "สิ่ง" ที่กำหนดขึ้นได้ในฟิลด์นี้) ฉันขอขอบคุณตัวอย่างมากกว่าคำอธิบายที่ซับซ้อนที่สุด! ถ้าเป็นไปได้. ความสับสนหลักของฉันมาจากการที่ไม่สามารถบอกได้ว่าคุณสมบัติของไวยากรณ์นี้แตกต่างจากความกำกวม (ไม่ใช่ -) อย่างไร ที่ใกล้เคียงที่สุดที่ฉันจะต้องค้นหาสิ่งที่มันหมายถึงเป็นคำพูดจากกระดาษโดย D. Knuth ในการแปลภาษาจากซ้ายไปขวา : Ginsburg และ Greibach (1965) ได้กำหนดแนวความคิดของภาษาที่กำหนดขึ้นมา เราแสดงในหมวดที่ 5 ว่าภาษาเหล่านี้เป็นภาษาที่มีไวยากรณ์ LR (k) อยู่จริง ซึ่งกลายเป็นวงกลมทันทีที่คุณไปถึงที่Section Vนั่นเพราะมันบอกว่าสิ่งที่ตัวแยกวิเคราะห์ LR (k) สามารถแยกวิเคราะห์เป็นภาษาที่กำหนดขึ้น ... ด้านล่างเป็นตัวอย่างที่ฉันสามารถค้นหาเพื่อช่วยให้ฉันเข้าใจความหมาย "คลุมเครือ" โปรดดู: onewartwoearewe ซึ่งสามารถแยกวิเคราะห์เป็นone war two ear eweหรือo new art woe are we- ถ้าไวยากรณ์อนุญาตให้ …

2
การลบการเรียกซ้ำซ้ายในไวยากรณ์ขณะที่ยังคงความสัมพันธ์ด้านซ้ายของโอเปอเรเตอร์
ฉันมีปัญหากับแบบฝึกหัดนี้: ให้ G เป็นไวยากรณ์ที่ไม่ชัดเจนต่อไปนี้สำหรับ calcul-แคลคูลัส: E → v | λv.E | EE | (E) โดยที่ E คือสัญลักษณ์ที่ไม่ใช่ขั้วเดี่ยวλv.Eแสดงถึงนามธรรม abtraction wrt ตัวแปร v ใน E และ EE แทนแอ็พพลิเคชัน กำหนดไวยากรณ์LL (1) G ′เช่น L (G′) = L (G) และความคลุมเครือของ G ได้รับการแก้ไขโดยกำหนดอนุสัญญาตามปกติดังต่อไปนี้: สิ่งที่เป็นนามธรรมคือการเชื่อมโยงที่ถูกต้อง แอปพลิเคชันนั้นเชื่อมโยงกันอยู่ แอปพลิเคชันมีลำดับความสำคัญสูงกว่านามธรรม แสดง LL (1) การแยกโต๊ะ G λv1. λv2. v1v2v1และต้นไม้แยกที่ได้รับเมื่อแยกสตริง ฉันตัดความกำกวมของการตั้งค่าความสำคัญและการเชื่อมโยงเพื่อให้ได้ไวยากรณ์นี้: …

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

3
ความสำคัญของรูปแบบปกติเช่น Chomsky รูปแบบปกติสำหรับ CFG
ฉันเข้าใจว่าสามารถใช้ไวยากรณ์แบบไม่มีบริบทเพื่อแสดงภาษาที่ไม่มีบริบทได้ซึ่งอาจมีความคลุมเครือ เรายังมีรูปแบบปกติเช่นChomskyและGreibachรูปแบบปกติ ฉันไม่เข้าใจความต้องการของสิ่งนั้น ทำไมพวกเขาถึงมีความสำคัญในทฤษฎีภาษา? หนังสือทุกเล่มที่ฉันพูดถึงเกี่ยวกับรูปแบบปกติเหล่านี้ แต่ไม่ได้บอกอะไรเกี่ยวกับความสำคัญของพวกเขา

4
ใครสามารถยกตัวอย่างง่ายๆ แต่ไม่ใช่ของเล่นของไวยากรณ์ตามบริบท
ฉันพยายามที่จะเข้าใจไวยากรณ์ที่ไวต่อบริบท ฉันเข้าใจว่าทำไมภาษาเช่น { w w ∣ w ∈ A* * * *}{ww∣w∈A∗}\{ww \mid w \in A^*\} {anbncn∣n∈N}{anbncn∣n∈N}\{a^n b^n c^n \mid n\in\mathbb{N}\} ไม่ใช่บริบทฟรี แต่สิ่งที่ฉันอยากรู้ว่าภาษาที่คล้ายกับแคลคูลัสแลมบ์ดาที่ไม่ได้พิมพ์ออกมานั้นเป็นบริบทที่อ่อนไหวหรือไม่ ฉันต้องการดูตัวอย่างของแบบง่าย ๆ แต่ไม่ใช่ของเล่น (ฉันพิจารณาตัวอย่างของเล่นด้านบน) ตัวอย่างของไวยากรณ์ไวตามบริบทที่สามารถสำหรับกฎการผลิตบางอย่างเช่นบอกว่าสัญลักษณ์บางอย่างหรือไม่ อยู่ในขอบเขตปัจจุบัน (เช่นเมื่อสร้างเนื้อหาของฟังก์ชัน) ไวยากรณ์ไวตามบริบทมีพลังมากพอที่จะทำให้ตัวแปรที่ไม่ถูกกำหนด / ไม่ได้ประกาศ / ไม่ถูกผูกไว้เป็นข้อผิดพลาดทางไวยากรณ์ (แทนที่จะเป็นความหมาย) หรือไม่

2
ทุกภาษามีความอ่อนไหวต่อบริบทหรือไม่
ฉันกำลังอ่านข้อกำหนดของ Wikipedia เกี่ยวกับภาษาที่คำนึงถึงบริบทและฉันพบสิ่งนี้: แต่ละหมวดหมู่ของภาษาเป็นกลุ่มย่อยที่เหมาะสมของหมวดหมู่ข้างบน ออโตเมติกใด ๆ และไวยากรณ์ใด ๆ ในแต่ละหมวดหมู่นั้นมีออโตมาตาหรือไวยากรณ์ที่เทียบเท่าในหมวดหมู่ข้างบน ฉันเห็นว่าหุ่นยนต์เชิงเส้นตรงมีค่าต่ำกว่า decider ในการเรียงลำดับของบทความ หากเป็นกรณีนี้หมายความว่าการคำนวณ LBA ทุกครั้งจะหยุดในบางจุด (เนื่องจาก LBA ทุกรายการจะเป็น decider) แต่ฉันรู้สึกว่าอาจมีการคำนวณบางอย่างที่สามารถทำงานบน LBA ในเวลาเดียวกันไม่เคยหยุด ตัวอย่างเช่นเราสามารถเขียนการคำนวณบน LBA ซึ่งจะ อ่านสัญลักษณ์แรกบนเทปแล้วเลื่อนไปทางขวา อ่านสัญลักษณ์ถัดไปและเลื่อนไปทางซ้าย การคำนวณแบบไร้ประโยชน์นี้ (ซึ่งเห็นได้ชัดว่าเป็นการคำนวณแบบ LB) จะทำงานแบบสั่นซ้ายและขวาอย่างไม่มีกำหนดและไม่หยุดและด้วยเหตุนี้จึงไม่สามารถเป็นตัวตัดสินใจ ฉันคิดผิดอยู่ที่ไหน

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