簡體   English   中英

誰能向我解釋這種與上下文無關的語法?

[英]Can anyone explain this context-free grammar to me?

我需要為作業做些了解。 告訴我這一點,您不會給我答案,您只是在幫助我理解所提出的問題。

我閱讀了課堂筆記,這些筆記並沒有什么幫助,還可以在Internet上搜索不受上下文限制的語法信息。 我找不到任何看起來像我得到的東西,而且我很困惑。

如果有人可以告訴我這個CFG的描述,或者給我很好的資源來解釋這個主題,我將非常感謝。

CFG是這樣的:

S是開始符號

<S> → <A> | ε
<A> → 0<B> | 1<A>
<B> → 0<C> | 1<B>
<C> → 0<D> | 1<C>
<D> → 1<D> | 0<B> | ε

CFG定義了字符串模式。

這里的字符串可以是1,0,e。(字母)的模式。CFG的規則說明了如何將表達式擴展為字母字符串。

<S> → <A> | ε
<A> → 0<B> | 1<A>
<B> → 0<C> | 1<B>
<C> → 0<D> | 1<C>
<D> → 1<D> | 0<B> | ε

在這里A可以擴展為0B1A LHS只能擴展。

給定一個字符串,您可以驗證它是否由CFG描述。

讓我們取1000,看看它是否由此CFG描述。

我們將從S展開,該S可以擴展為A或e。

expr = S

e是一個特殊符號,表示其字符串終止。 我們將使用A因為它給了我們希望,而不是終止於e

expr = A      (S ->A)

A可以擴展為0B或1A。 對於我們的弦,我們將使用1A。

expr = 1A     (A ->1A)

現在1A有了A。在規則表中查找可以擴展為0B或1A。 在給定的字符串之后,我們將取0B。 所以現在我們的結果是10B。

expr = 10B    (A -> 0B)

查找B擴展為0C或1B。 我們將采用0C,因為它與我們給定的模式匹配。 因此,我們的弦變為100C。

expr = 100C   (B -> 0C)

同樣,您可以繼續擴展表達式並以e結尾。

expr = 1000D  (C -> 0D)
expr = 1000e  (D -> e)

CFG:上下文無關文法(CFG)是形式語言理論中用來描述某種形式的形式文法的術語。在上下文無關文法中,所有規則都是一對一,一對多或一對一。由上下文無關文法生成的語言稱為上下文無關語言(CFL)。 不同的無上下文語法可以生成相同的無上下文語言。 區分語言的屬性和特定語法的屬性很重要。 語言相等性問題(兩個給定的上下文無關文法是否會產生相同的語言?)是不確定的。

以上幾行是CFG的一部分

簡而言之,從給出的任何CFG中,我們嘗試找出可以在該CFG中描述的字符串集。 這些字符串集構成該特定CFG的語言。

下面是圖形形式的問題解決方案:

CFG解決方案

在解決方案中,矩形框中的字符串是終止步驟。

因此,給定的CFG可以具有以下字符串:

{100,0100,1001,1010,01001,10011,10101,010011,0100111,......}

因此,此CFG可以具有以下任何類型的字符串:

  1. 至少一個1
  2. 至少兩個0,並且
  3. length> = 3,通過觀察我們得到的最小長度字符串可以是100:

     S --> A --> 1B --> 10C --> 100D --> 100e --> 100 

通過觀察每個步驟中的字符串,您可以輕松地獲得此CFG可以具有任何三種類型的字符串的特性。

因此,此CFG描述了一種具有以上3個屬性的上下文無關語言。

暫無
暫無

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

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