文法編譯就是高階語言翻譯成低階語言的過程,翻譯完全部**後執行。
解釋也是翻譯的過程,但和編譯不同,解釋時逐句翻譯,一邊解釋一邊執行。
程式語言是乙個記號系統。可以看作是一定字符集(字母表)上的字串,包括語法和語義兩部分。
文法是描述語言的語法結構的形式規則。
young men like pop music. 包含這個句子的語言的文法為:
<句子
>
→<主語
>
<謂語
>
《句子》\rightarrow《主語》《謂語》
《句子>
→《主語
>
《謂語>
<主語
>
→<形容
詞>
<名詞
>
《主語》\rightarrow《形容詞》《名詞》
《主語>
→《形容
詞》《名詞
>
<謂語
>
→<動詞
>
<賓語
>
《謂語》\rightarrow《動詞》《賓語》
《謂語>
→《動詞
>
《賓語>
<賓語
>
→<形容
詞>
<名詞
>
《賓語》\rightarrow《形容詞》《名詞》
《賓語>
→《形容
詞》《名詞
>
<形容
詞>→y
oung
∣pop
《形容詞》\rightarrow young | pop
《形容詞》→y
oung
∣pop
<名詞
>→m
en∣m
usic
《名詞》\rightarrow men|music
《名詞>→m
en∣m
usic
<動詞
>→l
ik
e《動詞》\rightarrow like
《動詞>→l
ike
最左推導:
<句子
>
→<主語
>
<謂語
>
《句子》\rightarrow《主語》《謂語》
《句子>
→《主語
>
《謂語>
<句子
>
→<形容
詞>
<名詞
>
<謂語
>
《句子》\rightarrow 《形容詞》《名詞》《謂語》
《句子>
→《形容
詞》《名詞
>
《謂語>
<句子
>→y
oung
<名詞
>
<謂語
>
《句子》\rightarrow young《名詞》《謂語》
《句子>→y
oung
《名詞>
《謂語>
<句子
>→y
oung
ma
n<謂語
>
《句子》\rightarrow young \ man 《謂語》
《句子>→y
oung
man《謂語
>
<句子
>→y
oung
ma
n<動詞
>
<賓語
>
《句子》\rightarrow young \ man《動詞》《賓語》
《句子>→y
oung
man《動詞
>
《賓語>
<句子
>→y
oung
manl
ik
e<賓語
>
《句子》\rightarrow young \ man \ like 《賓語》
《句子>→y
oung
manl
ike《賓語
>
<句子
>→y
oung
manl
ik
e<形容
詞>
<名詞
>
《句子》\rightarrow young man like 《形容詞》《名詞》
《句子>→y
oung
manl
ike《形容
詞》《名詞
>
<句子
>→y
oung
manl
ikep
op
<名詞
>
《句子》\rightarrow young \ man \ like \ pop \ 《名詞》
《句子>→y
oung
manl
ikep
op《名詞
>
<句子
>→y
oung
manl
ikep
opmu
si
c《句子》\rightarrow young \ man \ like \ pop \ music
《句子>→y
oung
manl
ikep
opmu
sic從形式上說文法是乙個四元式(vn , vt , p , s)
1型文法(長度增加文法或上下文有關文法)
2型文法(上下文無關文法)
3型文法(正規文法rg)
由i型文法生成的語言稱為i型語言,記為:l(g
)=
l(g)=\
l(g)=。
構造無ε
\varepsilon
ε產生式的上下文無關文法的變換演算法:
控制代碼:句型中的最左簡單短語(最左規約:找句型中的最左簡單短語包含的字串用此短語的子樹根進行替換)。
文法的二義性:
句子二義性:如果文法的乙個句子存在對應的兩棵或兩棵以上的語法樹,則該句子是二義的。
文法二義性:包含二義性句子的文法是二義文法。
編譯原理(2) 文法推導
這一篇講一講形式文法的推導,學習是乙個持之以恆的過程,尤其是像我這種初學者了。注 這一篇的例子來自於統計自然語言處理這本書 形式文法的推導比較好理解,即按文法g中的規則p推導 的符號串,且b c是p中的乙個產生式,那麼,abc adc。1 的傳遞閉包,即 n 上的符號串xi到xi 1至少經過一步推導...
編譯原理筆記4 文法與語言
1.字母表與符號串 2.連線 乘積 運算 串集間的乘積 串集的方冪 串集的自身乘積 例如 a b 則ab 1 a 0 2 字母表a的 n次方冪是字母表 a上所有長度為 n的串集。3.字母表的閉包與正閉包 1 字母表a 的閉包 a 2 字母表a 的正閉包 a 除了空串的所有次方冪和 4.文法 文法是描...
編譯原理實驗 LL(1)文法
目標任務 實現 ll 1 分析中控制程式 表驅動程式 完成以下描述算術表示式的 ll 1 文法的 ll 1 分析程式。g e e te e ate t ft t mft f e i a m 說明 終結符號 i 為使用者定義的簡單變數,即識別符號的定義。compiler3.cpp 定義控制台應用程式的...