ANTLR學習心得 抄書 3

2021-08-29 03:30:12 字數 1862 閱讀 6184

關於給定文法g,如何產生語言l(g),將進一步給出其形式化定義。為此,首先給出一些基本術語的定義。

·  定義2.11(直接推導「→」)

有v=αa β=αγ β=w (α,β,γ∈(v

n∪vt) *),當且僅當p中存在一條規則a→y,稱v直接推導出w(或w直接歸約到v),記作:v→w。

·  定義2.12(直接推導序列)

如果存在v=a

0→a1,a

1→a2,...,a

n-1→a

n=w或a

1→a2→a

3→...→a

n-1→a

n,則v經過n步(n>0)可以推導出w,記作:v→

+w。當v→

+w或v=w,記作:v→

*w。·  定義2.13(最左(右)推導)

在推導過程中,總是對句型中的最左(右)邊的非終結符進行替換,成為最左(右)推導。

·  定義2.14(句型)

設有文法g[s],若s=

*α (α∈(v

n∪vt) *),則稱α為g[s]的句型。

·  定義2.15(句子)

設有文法g[s],若s=

*α (α∈v

t*),則稱α為g[s]的句子。

·  定義2.16(規範推導/規範句型/規範歸約)

最右推導也稱為規範推導。僅用規範推導得到的句型稱為規範句型,規範推導的逆序為規範歸約。

·  定義2.17(文法的遞迴)

若文法g存在形如αaβ→αaβ'的推導,則稱g是遞迴文法。

例2.5  設有文法g

1:e→e+e|e*e|(e)|i

有e→e……則文法g

1是直接遞迴文法。

例2.6  設有文法g

2: t→qc|c

q→rb|b

r→ta|a

有t→qc→rbc→tabc,即t→tabc,則文法g

2是間接遞迴文法。

·  定義2.18(語言)

文法g所產生的語言l(g):

l(g)=

需要指出的是,文法和語言的相互關係並非是惟一對應的,形式語言理論可以證明

(1)  給定文法g,能從結構上惟一地確定相應的語言。

(2)  給定一種語言,能確定其文法,但這種文法不是惟—則,即

l(g1)=l(g

2)=...=l(g

n) 為此,引出文法等價的概念。

·  定義2.19(文法等價)

若l(g

1)=l(g

2),則稱文法g

1和g2是等價的。

文法等價的概念說明,兩個文法儘管它們的規則不盡相同,只要所產生的語言相同,則認為這兩個文法是等價的。

例2.7  設有文法g 1g

1=,,s,}

由於存在

s→s0→s00→s000→...→s0

n-1→0

n則該文法表示的語言為  l(g

1)=設有文法g

1',g

1'=,,s,}

由於存在  s→0s→00s→000s→...→0

n-1s→0

n則該文法表示的語言為  l(g

1')=l(g

1')=l(g

1) 很顯然,g

1≠g1',但卻存在l(g

1')=l(g

1),所以文法g

1和g1'等價。

利用文法等價的概念,當討論編譯程式實現的有關問題的,某種分析技術對文法會有不同程度的限定。當文法不能滿足某種分析技術的應用條件時,需要對文法進行等價變換,使之適應相應的分析技術。一般文法等價變換是針對

*使文法適用於某種分析技術

*消除文法的二義性

*使文法類與語言類一致

*使文法滿足特殊需要

ANTLR學習心得 抄書 4

一本厚厚的305頁的書,我實在是不可能都抄在這裡的。只能揀最緊要的抄出來。而這個緊要的判斷,也是以我在讀書的過程中的理解為準,最困難的部分,自己總是想不清楚的部分,我就認為是最緊要的了。今天打算抄的是ll與lr的概念。在我看到的很多關於編譯原理的書中,都會反覆出現ll 1 lr 1 這樣的東西,這究...

BOA學習心得(3)

cgi程式是可以直接通過boa伺服器執行的,如192.168.1.100 test.cgi。原c 中通過 printf 將css樣式檔案引入cgi程式,但並沒有在編譯時將css中的內容像預編譯一樣寫進來,後期在開發板上還是應當將css檔案拷入同級目錄等,從而使得cgi程式引用。include int...

c 學習心得 3

事件與委託 段建立類的物件並在該物件上呼叫方法,此情況下,呼叫程式是主動,而物件是被動的 但是也有相反的情況,如物件執行過程中發生某些事情通知呼叫程式,此類事情稱之為事件 event z其他 段編寫一種方法接收和處理發布的事件,此過程稱之為委託 delegate 需要注意的是事件型別與委託識別符號要...