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