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

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

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

3
ไวยากรณ์นี้ LL เป็นอย่างไร (1)
นี่เป็นคำถามจาก Dragon Book นี่คือไวยากรณ์: S→ A a A b | ขขขS→AaAข|BขBaS \to AaAb \mid BbBa A → εA→εA \to \varepsilon B → εB→εB \to \varepsilon คำถามถามว่าจะแสดงได้อย่างไรว่าเป็น LL (1) แต่ไม่ใช่ SLR (1) เพื่อพิสูจน์ว่าเป็น LL (1) ฉันพยายามสร้างตารางการแยกวิเคราะห์ แต่ฉันได้รับการผลิตหลายรายการในเซลล์ซึ่งขัดแย้งกัน โปรดบอกว่า LL (1) นี้เป็นอย่างไรและจะพิสูจน์ได้อย่างไร

2
การค้นหาภาษาที่สร้างโดยไวยากรณ์ที่ไม่มีบริบท
นี่คือคำถามจากหนังสือ Dragon (ฉันขอโทษสำหรับความผิดพลาดในการแปลฉันไม่ได้มีเวอร์ชันภาษาอังกฤษอยู่ในมือ): ไวยากรณ์นี้สร้างด้วยภาษาใด S→ a SขS∣ b SS∣ ϵS→aSขS|ขSaS|εS \rightarrow a S b S \mid b S a S \mid \epsilon ฉันไม่รู้ว่าฉันควรทำอะไรที่นี่ คำจำกัดความในหนังสือเกี่ยวกับภาษาบอกว่าสิ่งนี้ (และมันก็สวยมากในบท): ภาษาคือชุดของคำทั้งหมดที่สามารถสร้างได้โดยทรีการแยกวิเคราะห์ใด ๆ ดังนั้นหากฉันต้องการแยกทรี "ใด ๆ " ออกจากไวยากรณ์นี้ฉันสามารถสร้างมันซ้ำ ๆ โดยใช้กฏสองข้อแรก ฉันค้นหาเล็กน้อยและได้รับความประทับใจว่าต้องใช้กฎทุกครั้ง แต่ฉันไม่แน่ใจ มันจะมีประโยชน์มากถ้ามีคนสามารถให้คำแนะนำในการแก้ปัญหาต่าง ๆ เหล่านี้ได้

1
การแยกประเภทการปรับแต่ง
ที่ทำงานฉันได้รับมอบหมายให้อนุมานข้อมูลบางประเภทเกี่ยวกับภาษาแบบไดนามิก ฉันเขียนลำดับของข้อความไปยังletนิพจน์ที่ซ้อนกันเช่น: return x; Z => x var x; Z => let x = undefined in Z x = y; Z => let x = y in Z if x then T else F; Z => if x then { T; Z } else { F; Z } เนื่องจากฉันเริ่มต้นจากข้อมูลประเภททั่วไปและพยายามอนุมานประเภทที่เฉพาะเจาะจงมากขึ้นตัวเลือกที่เป็นธรรมชาติคือประเภทการปรับแต่ง ตัวอย่างเช่นตัวดำเนินการตามเงื่อนไขส่งคืนการรวมของประเภทของสาขาที่เป็นจริงและเท็จ …
11 programming-languages  logic  type-theory  type-inference  machine-learning  data-mining  clustering  order-theory  reference-request  information-theory  entropy  algorithms  algorithm-analysis  space-complexity  lower-bounds  formal-languages  computability  formal-grammars  context-free  parsing  complexity-theory  time-complexity  terminology  turing-machines  nondeterminism  programming-languages  semantics  operational-semantics  complexity-theory  time-complexity  complexity-theory  reference-request  turing-machines  machine-models  simulation  graphs  probability-theory  data-structures  terminology  distributed-systems  hash-tables  history  terminology  programming-languages  meta-programming  terminology  formal-grammars  compilers  algorithms  search-algorithms  formal-languages  regular-languages  complexity-theory  satisfiability  sat-solvers  factoring  algorithms  randomized-algorithms  streaming-algorithm  in-place  algorithms  numerical-analysis  regular-languages  automata  finite-automata  regular-expressions  algorithms  data-structures  efficiency  coding-theory  algorithms  graph-theory  reference-request  education  books  formal-languages  context-free  proof-techniques  algorithms  graph-theory  greedy-algorithms  matroids  complexity-theory  graph-theory  np-complete  intuition  complexity-theory  np-complete  traveling-salesman  algorithms  graphs  probabilistic-algorithms  weighted-graphs  data-structures  time-complexity  priority-queues  computability  turing-machines  automata  pushdown-automata  algorithms  graphs  binary-trees  algorithms  algorithm-analysis  spanning-trees  terminology  asymptotics  landau-notation  algorithms  graph-theory  network-flow  terminology  computability  undecidability  rice-theorem  algorithms  data-structures  computational-geometry 

2
ฉันจะพิสูจน์ได้ว่าภาษานี้ไม่มีบริบทได้อย่างไร
ฉันมีภาษาต่อไปนี้ {0i1j2k∣0≤i≤j≤k}{0i1j2k∣0≤i≤j≤k}\qquad \{0^i 1^j 2^k \mid 0 \leq i \leq j \leq k\} ฉันกำลังพยายามที่จะกำหนดระดับภาษาของ Chomsky ที่เหมาะสม ฉันสามารถดูว่ามันสามารถใช้ไวยากรณ์ไวต่อบริบทได้อย่างไรดังนั้นฉันจึงรู้ว่ามันไวตามบริบทอย่างน้อยที่สุด ดูเหมือนว่าเป็นไปไม่ได้ที่จะสร้างด้วยไวยากรณ์ที่ไม่มีบริบท แต่ฉันมีปัญหาในการพิสูจน์ว่า ดูเหมือนว่าจะผ่านบทแทรก - สูบน้ำเพราะถ้าทั้งหมดถูกวางไว้ในส่วนที่สามของคำใด ๆ (ส่วนที่มีทั้งหมดวินาที) มันสามารถปั๊มและหลายครั้งตามที่คุณต้องการและมันจะอยู่ในภาษานั้น หากฉันผิดคุณสามารถบอกฉันได้ว่าทำไมถ้าฉันพูดถูกฉันยังคงคิดว่าภาษานี้ไม่ใช่บริบทดังนั้นฉันจะพิสูจน์ได้อย่างไร2 v xuvwxyuvwxyuvwxy222vvvxxx

3
ตัวแยกวิเคราะห์แบบสืบเชื้อสายซ้ำพร้อมการย้อนรอยสำหรับไวยากรณ์
คนที่สามารถสอนให้ฉันทำไม parser โคตร recursive กับ backtracking ที่พยายามที่โปรดักชั่นและ (ตามลำดับ) ไม่รู้จักภาษาเกิดขึ้นจากไวยากรณ์AAS→ a SaS→aSaS \rightarrow aSaS→S→aaS \rightarrow aaS→ a Sa | S→aSa | aaS \rightarrow aSa\ |\ aa มันจะปรากฏคำเฉพาะแยกจากภาษา\}{ a2n | n≥1} {a2n | n≥1}\{a^{2^n}\ |\ n \ge 1 \} ฉันสร้างตัวแยกวิเคราะห์ดังกล่าวโดยใช้ตัวแยกวิเคราะห์ ABNF นี้กับกฎการผลิตS = "a" S "a" / "aa"และตัวแยกวิเคราะห์ไม่รู้จักคำaaaaaaเช่น ฉันคาดหวังว่ามันจะใช้การผลิตจนกระทั่งการต่อเชื่อมของโหนดเทอร์มินัลของการแยกจากซ้ายเริ่มต้นด้วย 7 ของจากนั้นขึ้นไปที่การแยกเลือกการผลิตแทนจนกระทั่งต้นไม้ดูเหมือน นี้:S→ …

3
ภาษาที่เลือกได้และไวยากรณ์ที่ไม่ จำกัด ?
เครื่องจักรทัวริงและไวยากรณ์ไม่ จำกัด เป็นสองพิธีการต่าง ๆ ที่กำหนดภาษา RE ภาษา RE บางภาษานั้นสามารถตัดสินใจได้ แต่ไม่ใช่ทั้งหมด เราสามารถกำหนดภาษาที่ decidable ด้วยเครื่องทัวริงโดยบอกว่าภาษานั้นสามารถ decidable ถ้ามี TM สำหรับภาษาที่หยุดและยอมรับสตริงทั้งหมดในภาษาและหยุดและปฏิเสธสตริงทั้งหมดที่ไม่ได้อยู่ในภาษา คำถามของฉันคือ: มีคำจำกัดความที่คล้ายคลึงกันของภาษาที่สามารถถอดรหัสได้ตามไวยากรณ์ที่ไม่ จำกัด แทนที่จะใช้ทัวริงหรือไม่?

1
Shift- แก้ไขการแยกวิเคราะห์ - คำถาม
ฉันเพิ่งเจอกระดาษอธิบายเทคนิคการแยกวิเคราะห์ที่กล่าวถึงในชื่อ น่าเสียดายที่คำศัพท์ที่ใช้ในกระดาษดังกล่าวค่อนข้างเกินความเข้าใจของฉันดังนั้นฉันจึงพยายามที่จะเข้าใจอัลกอริทึมการก่อสร้างมากขึ้นอย่างสังหรณ์ใจ ฉันเชื่อว่าฉันประสบความสำเร็จ ( การนำเสนอนี้เป็นที่มาของช่วงเวลา ah-ha) แต่การตรวจสอบความถูกต้องจากคนที่คุ้นเคยกับเทคนิคหรือคำศัพท์ที่อยู่ในนั้นจะได้รับการชื่นชมอย่างมาก ฉันจะอธิบายวิธีการแก้ปัญหาของฉัน (ถ้ามันถูกต้องฉันเชื่อว่ามันจะช่วยคนอื่นที่พยายามทำความเข้าใจกับเทคนิค) และถามคำถามเพิ่มเติมในภายหลัง เพื่อให้แน่ใจว่าไม่มีความเข้าใจผิดฉันจะใช้สัญลักษณ์มาตรฐานต่อไปนี้: , , ,และในกระดาษเพื่อแสดงถึงกฎ จำนวนฉันอย่างไรก็ตามฉันอาจใช้ชื่อที่แตกต่างกันสำหรับแนวคิดมากกว่ากระดาษต้นฉบับ, B , C , . . ∈ N . . X , Y , Z ∈ N ∪ T α , β , γ , . . ∈ { N ∪ T } * ฉัน …

1
รับสตริงและ CFG อักขระใดบ้างที่สามารถติดตามสตริง (ในรูปแบบประโยคของ CFG)
ให้เป็นชุดของขั้วและชุดของสัญลักษณ์ที่ไม่ใช่ขั้วของบางบริบทฟรีไวยากรณ์GΣΣ\SigmaNยังไม่มีข้อความNGGG บอกว่าฉันมีสายเช่นโดยที่และเป็นรูปแบบที่ sentential ของGa∈(Σ∪N)+a∈(Σ∪N)+a \in (\Sigma \cup N)^+xay∈S(G)xay∈S(G)x a y \in \mathcal{S}(G)x,y∈(Σ∪N)∗x,y∈(Σ∪N)∗x,y\in (\Sigma \cup N)^*S(G)S(G)\mathcal{S}(G)GGG ได้รับ , ฉันต้องการที่จะตรวจสอบชุดC = { B | W ขZ ∈ S ( G ) , ข∈ Σ ∪ N }GGGC={b∣wabz∈S(G),b∈Σ∪N}C={b∣wabz∈S(G),b∈Σ∪N}C = \{ b \mid wabz \in \mathcal{S}(G), b \in \Sigma \cup N \} เพื่อชี้แจงในกรณีนี้คือสตริงของเทอร์มินัลและที่ไม่ใช่เทอร์มินัลและbมีความยาวหนึ่งw,x,y,z,a,bw,x,y,z,a,bw, x, …

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

2
มีปัญหาที่แตกต่างกันของ "ห้อยต่องแต่งอย่างอื่น" นอกเหนือจาก "จับคู่ที่ใกล้ที่สุด" หรือไม่?
นำเสนอไวยากรณ์ต่อไปนี้บริบทฟรี "ห้อยอื่น" ประเภทความกำกวม (คิดว่าย่อมาและย่อมาและยืนสำหรับบางชนิดอื่น ๆ ของการเรียนการสอนหรือบล็อก): ตัวอย่างเช่นสามารถแยกวิเคราะห์เป็นหรือเป็น (นี่เป็นคำที่ไม่ชัดเจน / สั้นที่สุดสำหรับไวยากรณ์นี้)aaaif expr thenขbbelseคccS→ a SขS|S|คS→aSbS|aS|c \begin{aligned} S &\rightarrow aSbS \;|\; aS \;|\; c\\ \end{aligned} คขคaacbcaacbc( a ( a c b c ) )(a(acbc))(a(acbc))( a ( a c ) b c )(a(ac)bc)(a(ac)bc) วิธี "มาตรฐาน" เพื่อแก้ไขความกำกวม "ห้อย" อื่น ๆ นี้บังคับให้คำสั่ง "else" ( ) …

1
CFG มีประสิทธิภาพเพียงใดที่อนุญาตให้มีกฎจำนวนไม่ จำกัด
ฉันสงสัยว่าเมื่อเร็ว ๆ นี้จะเกิดอะไรขึ้นถ้าเราอนุญาตให้ไวยากรณ์แบบไม่มีบริบทมีกฎจำนวนไม่สิ้นสุด เห็นได้ชัดว่าถ้าเราอนุญาตกฎเกณฑ์ที่ไม่มีขอบเขตเช่นนั้นทุกภาษามีตัวอักษรสามารถอธิบายได้โดย CFGพร้อม\} แต่จะเกิดอะไรขึ้นถ้าเรา จำกัดให้อยู่ในชุดของกฎที่สามารถสร้างขึ้นได้โดยใช้ไวยากรณ์ฟรีLLLΣΣ\SigmaG = ( { S} , Σ , R , S)G=({S},Σ,R,S)G = (\{S\},\Sigma,R,S)R = { S→ w ∣ w ∈ L }R={S→w∣w∈L}R = \{S \rightarrow w \mid w \in L \}RRR สำหรับวัตถุประสงค์นั้นกำหนดชุดของ nonterminalsและ terminalให้เราดูกฎที่ไม่ใช่องค์ประกอบของแต่เป็นเงื่อนไขเหนือตัวอักษร\} ตอนนี้คำถามของฉันคือถ้าเรากำหนดCFG กฎที่ไม่สิ้นสุดให้เป็น tupleโดยที่ยังไม่มีข้อความNNΣΣ\Sigmaยังไม่มีข้อความ× ( N∪ Σ)* * * *N×(N∪Σ)∗N \times …

3
ไวยากรณ์ที่ไวต่อบริบทสำหรับภาษาของคำที่ต่อกับตัวเอง
ฉันกำลังมองหาไวยากรณ์ไวตามบริบทที่อธิบายภาษาต่อไปนี้: L = { w w ∣ w ∈ { a , b}* * * *, | w | ≥ 1 }L={ww∣w∈{a,b}∗,|w|≥1}L = \{ ww \mid w ∈ \{a,b\}^{\ast}, |w| ≥ 1\} . ฉันมีปัญหากับความจริงที่ว่าไม่มีกฎเช่น X→ εX→εX \to \varepsilonได้รับอนุญาตและดังนั้นฉันไม่สามารถวาง nonterminal ใด ๆ ที่ระบุ "กลาง" ของคำ มีเคล็ดลับสำหรับปัญหาหรือไม่?

1
แปลง CFG เป็น PDA
มีชุดของกฎหรือวิธีการใด ๆ ในการแปลงไวยากรณ์อิสระให้เป็นออโตมาต้าหรือไม่ ฉันพบสไลด์ออนไลน์แล้วแต่ไม่สามารถเข้าใจได้ ในสไลด์ที่ 10 เขาพูดถึงกฎบางอย่างที่ทุกคนสามารถอธิบายได้หรือไม่

1
การแปลงไวยากรณ์นิพจน์ทางคณิตศาสตร์
ในบทความการแยกวิเคราะห์นิพจน์โดย Recursive Descent โดย Theodore Norvell (1999)ผู้เขียนเริ่มต้นด้วยไวยากรณ์ต่อไปนี้สำหรับนิพจน์ทางคณิตศาสตร์: E --> E "+" E | E "-" E | "-" E | E "*" E | E "/" E | E "^" E | "(" E ")" | v ซึ่งค่อนข้างแย่เพราะมันคลุมเครือและซ้ำซาก ดังนั้นเขาจึงเริ่มต้นจากการลบการเรียกซ้ำซากด้านซ้ายออกจากผลลัพธ์นั้นเป็นดังนี้: E --> P {B P} P --> v | "(" E …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.