簡體   English   中英

如何使用表達式a >> b ^ c來顯示位運算符的語法不明確

[英]How to show that a grammar with Bitwise operator is ambiguous using the expression a>>b^c

我正在嘗試解決這個問題,但我真的不知道如何開始。 我將不勝感激。

下表中顯示了語言的按位運算符以及語法。 運算符和語法規則按從高到低的順序排列。 字符a,b和c表示該語言中的終端。

語法表:

語法表

  1. 使用表達式證明語法是模棱兩可的: a >> b ^ c
  2. 重寫語法,使其無歧義。

《龍書》說:“一個語法為一個句子產生多個解析樹的語法被認為是模棱兩可的 。” 因此,為了表明語法是模棱兩可的,您需要為該語法生成​​的單個句子顯示至少兩個解析樹。 在這種情況下,已經使用了該句子,因此對於Q1,您只需要為a >> b ^ c找到兩個不同的解析樹。 Shiping的評論為您提供了一個重要線索。

對於第2季度,他們要求您“重寫語法”,我懷疑這個不言而喻的要求是生成的語法生成與原始語法完全相同的語言。 (因此,Shiping提出的在該語言中引入括號的建議將不被接受。)這樣做的一般方法是為優先級圖表中的每個優先級引入一個非終結符,然后修改語法規則以在這種情況下使用新的非終結符語法只能生成尊重優先級圖表的解析樹的方式。

例如,查看為Q1找到的兩棵樹。 您應注意其中之一符合優先級圖表,而另一項不符合優先級圖表。 您需要一個新的語法,該語法允許優先順序一致的樹,但不允許另一個。

作為另一個線索,請考慮以下兩種語法之間的區別:

E -> E + E
E -> E * E
E -> a | b

E -> E + T
T -> T * F
F -> a | b

盡管它們生成相同的語言,但第一個是模棱兩可的,而第二個則不是。

暫無
暫無

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

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