簡體   English   中英

消除語法歧義

[英]Removing ambiguity from grammar

語法不明確:

E->紫外線| EBE | V | [E]

V-> a | b

U-> <| >

B->嗎? | | @

一些信息:

優先順序: ? <! <@,一元運算符(<,>)最高

二進制運算符?,!,@是右關聯的。

我的嘗試:

E->紫外線| EBT | V | [E]

T-> E

V-> a | b

U-> <| >

B->嗎? | B1

B1->! | B2

B2-> @

我不確定在轉換過程中是否遺漏了一些極端情況。 如果你們能指出一些錯誤並提供一些提示,我們將不勝感激。

E -> UV | EBE | V | [E] V -> a | b U -> < | > B -> ? | ! | @

優先順序: ? <! <@,一元運算符(<,>)最高。

二進制運算符?,!,@是右關聯的。

我對您的優先順序感到困惑,因為這意味着! 的優先級高於>

因此,假設此優先順序為:

a,b,<,>,?,!,@

我要指出的是,明確的語法主要是使用中間字符,通常要比使用歧義的語法更多,以確保達到到達特定終端符號的標准步驟,即每個字符串將具有相同的解析樹。 最高優先級意味着它是最接近最終非終端到終端符號轉換的轉換。

我的答案是:

E -> V?E | V!E | V@E | [E] //Right associativity = right recursive V-> <V | >V | E | T | a | b T-> a | b | E

但是,在不知道您的目標字符串和接受/不接受的情況下很難知道。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM