詞法分析(lexical analysis或scanning)和詞法分析程式(lexical analyzer或scanner)
詞法分析階段是編譯過程的第乙個階段。這個階段的任務是從左到右乙個字元乙個字元地讀入源程式,即對構成源程式的字元流進行掃瞄然後根據構詞規則識別單詞(也稱單詞符號或符號)。詞法分析程式實現這個任務。詞法分析程式可以使用lex等工具自動生成。
語法分析(syntax analysis或parsing)和語法分析程式(parser)
語法分析是編譯過程的乙個邏輯階段。語法分析的任務是在詞法分析的基礎上將單詞序列組合成各類語法短語,如「程式」,「語句」,「表示式」等等.語法分析程式判斷源程式在結構上是否正確.源程式的結構由上下文無關文法描述.
語義分析(syntax analysis)
語義分析是編譯過程的乙個邏輯階段. 語義分析的任務是對結構上正確的源程式進行上下文有關性質的審查, 進行型別審查.例如乙個c程式片斷:
int arr[2],b;
b = arr * 10;
源程式的結構是正確的.
語義分析將審查型別並報告錯誤:不能在表示式中使用乙個陣列變數,賦值語句的右端和左端的型別不匹配.
lex
乙個詞法分析程式的自動生成工具。它輸入描述構詞規則的一系列正規式,然後構建有窮自動機和這個有窮自動機的乙個驅動程式,進而生成乙個詞法分析程式.
yacc
乙個語法分析程式的自動生成工具。它接受語言的文法,構造乙個lalr(1)分析程式.因為它採用語法制導翻譯的思想,還可以接受用c語言描述的語義動作,從而構造乙個編譯程式. yacc 是 yet another compiler compiler的縮寫.
源語言(source language)和源程式(source program)
被編譯程式翻譯的程式稱為源程式,書寫該程式的語言稱為源語言.
目標語言(object language or target language)和目標程式(object program or target program)
編譯程式翻譯源程式而得到的結果程式稱為目標程式, 書寫該程式的語言稱為目標語言.
中間語言(中間表示)(intermediate language(representation))
在進行了語法分析和語義分析階段的工作之後,有的編譯程式將源程式變成一種內部表示形式,這種內部表示形式叫做中間語言或中間表示或中間**。所謂「中間**」是一種結構簡單、含義明確的記號系統,這種記號系統複雜性介於源程式語言和機器語言之間,容易將它翻譯成目標**。另外,還可以在中間**一級進行與機器無關的優化。
文法(grammars)
文法是用於描述語言的語法結構的形式規則。文法g定義為四元組(,,,)。其中為非終結符號(或語法實體,或變數)集;為終結符號集;為產生式(也稱規則)的集合;產生式(規則)是形如或 a ::=b 的(a , b)有序對,其中(∪)且至少含有乙個非終結符,而(∪)。,和是非空有窮集。稱作識別符號或開始符號,它是乙個非終結符,至少要在一條規則中作為左部出現。
乙個文法的例子: g=(=,= ,=,=a)
文法分類(a hierarchy of grammars)
著名語言學家noam chomsky定義了四類文法和四種形式語言類,文法的四種型別分別是0型、1型、2型和3型。幾類文法的差別在於對產生式施加不同的限制,分別是:
0型文法(短語結構文法)(phrase structure grammars):
設g=(,,,),如果它的每個產生式是這樣一種結構: (∪) 且至少含有乙個非終結符,而(∪),則g是乙個0型文法。
1型文法(上下文有關文法)(context-sensitive grammars):
設g=(,,,)為一文法,若中的每乙個產生式均滿足|,僅僅 除外,則文法g是1型或上下文有關的。
2型文法(上下文無關文法)(context-free grammars):
設g=(,,,),若p中的每乙個產生式滿足:是一非終結符,(∪) 則此文法稱為2型的或上下文無關的。
3型文法(正規文法)(regular grammars):
設g=(,,,),若中的每乙個產生式的形式都是a→ab或a→a,其中a和b都是非終結,a是終結符,則g是3型文法或正規文法。
0型文法產生的語言稱為0型語言。
1型文法產生的語言稱為1型語言,也稱作上下文有關語言。
2型文法產生的語言稱為2型語言,也稱作上下文無關語言。
3型文法產生的語言稱為3型語言,也稱作正規語言。
太極英語筆記 前傳語法 詞法和句法
目錄 詞性很重要 十大詞性 如何判斷詞性?字尾 構詞法 初步判斷詞性。句子成分 句法 精確的確定詞性。詞法和句法統稱為語法 詞法 詞性 句法 成分 不重視詞性背單詞相當於白背,會把正確的單詞放到錯誤的位置上。a of b結構 翻譯為 b的a 例如 bank of china 中國銀行 中國的銀行 詞...
編譯原理屬性文法和語法制導翻譯
屬性文法 是在上下文無關文法的基礎上為每個文法符號 終結符或非終結符 配備若干個相關的 值 稱為屬性 屬性分類 綜合屬性和繼承屬性 綜合屬性 用於 自上而下 傳遞資訊 在語法樹中,乙個結點的綜合屬性的值,由其子結點的屬性值決定 s 屬性文法 僅僅使用綜合屬性的屬性文法 繼承屬性 用於 自上而下 傳遞...
理解文法和語文
1.理解符號串與集合運算。l d 下列表示的含義 lud 含義 表示集合l和集合d的並集,帶入已知資料即為 ld 含義 表示集合l和集合d的乘積,其結果的ld是滿足x屬於l,y屬於d的所有符號串xy所組成的集合。帶入已知資料即為 l4 含義 表示從集合l中挑四個元素所組成的所有字串的集合。帶入已知資...