編譯原理(3)總結

2022-07-04 17:18:10 字數 1506 閱讀 1366

定義:

上下文無關文法g是乙個四元組,\(g=(v_t,v_n,s,p)\),其中

\(v_t\):終結符(terminal)非空集合

\(v_n\):非終結(nonterminal)非空集合,且\(v_t \cap v_n=\oslash\)

s:文法的開始符號,\(s\subset v_n\)

p:產生式有限集合,每個產生式形式為

\[p\to \alpha,p \in v_n,\alpha \to (v_t \cup v_n)^*

\]且文法開始符號s必須在某個產生式的左部出現一次。

巴科斯正規化(bnf)

「→」用「::=」表示,小寫字母為終結符,大寫字母為非終結符。

約定:\[p \to \alpha_1,p \to \alpha_2,...,p \to \alpha_n

\]可縮寫為

\[p \to \alpha_1 \mid \alpha_2 \mid ... \mid \alpha_n

\]其中,「|」讀成「或」,稱\(\alpha_i\)為p的乙個候選式,表示乙個文法時,通常只給出乙個開始符號和產生式

直接推導

定義:稱\(\alpha a \beta\)直接推出\(\alpha \gamma \beta\),即

\[\alpha a \beta \implies \alpha \gamma \beta

\]僅當\(a \to \gamma\)是乙個產生式,且\(\alpha,\beta \in(v_t \cup v_n)^*\)。

如果\(\alpha_1 \implies \alpha_2 \implies ... \implies \alpha_n\),則稱這個序列是從\(\alpha_1\)到\(\alpha_n\)的乙個推導。若存在乙個從\(\alpha_1\)到\(\alpha_n\)的推導,則稱\(\alpha_1\)可以推導出\(\alpha_n\)。

\(\alpha_1 \overset \alpha_n\),從\(\alpha_1\)出發,經過\(0}\)步或者若干步推出\(\alpha_n\)。

\(\alpha_1 \overset \alpha_n\),從\(\alpha_1\)出發,經過\(1}\)步或者若干步推出\(\alpha_n\)。

\(\alpha \overset \beta \iff \alpha = \beta 或 \alpha \overset\beta\)

句型定義

假定g是乙個文法,s是它的開始符號,如果

\[s\overset\alpha

\]則稱\(\alpha\)是乙個\(\color\)。

句子定義:僅含終結符的句型是乙個\(\alpha\)是乙個\(\color\)。

語言定義:文法g所產生的句子的全體是乙個\(\color\),記為:\(\colorl(g)\)。

\[l(g)=\\alpha,\alpha \in v_t^* \}

\]概述為把語言定義為句子的全體,也就是說,你如果掌握了乙個語言所有的句子,就等於你掌握了這一門語言!

編譯原理課程總結 第3章

詞法分析器 詞法分析器的功能和輸出形式 關鍵字,識別符號,常數,運算子,界符 單詞符號的識別 超前搜尋 在單詞識別的過程中,通過向前多讀幾個符號的形式,準確的進行單詞的識別。一旦確定識別到的單詞之後,需要進行掃瞄指標的回退,保證單詞識別工作的順利進行 直接分析法 根據讀來的第乙個字元的種類分別轉到各...

編譯原理 總結

一 編譯程式 1 編譯器是一種翻譯程式,它用於將源語言 即用某種程式語言寫成的 程式翻譯為目標語言 即用二進位制數表示的偽機器 寫成的 程式。後者在windows作業系統平台下,其檔案的副檔名通常為.obj。該檔案通常還要經過進一步的連線,生成可執行檔案 機器 寫成的程式,擴充套件名為.exe 通常...

編譯原理總結

從左至右掃瞄字串行,識別出單詞 關鍵字 標示符 常數 特殊符號 按照語言語法的規則,將詞法分析所得的單詞分解為各個語法成分。分析單詞串是否構成短語和句子 源程式進行上下文有關性質的檢查,看源程式有無語義錯誤。例如 變數是否定義 型別是否正確 含義明確 便於處理的記號系統。這種記號系統於源程式和機器語...