編譯原理複習

2022-07-04 08:48:10 字數 2127 閱讀 2404

從功能上看,乙個編譯程式就是乙個語言翻譯程式。語言翻譯程式把一種語言(稱為源語言)書寫的程式翻譯成另一種語言(稱作目標語言)的等價程式。

源語言編寫的程式稱為源程式

目標語言書寫的程式稱為目標程式

有時把編譯的過程分為前端和後端,前端的工作主要依賴於源語言而與目標機無關,前端通常包括詞法分析、語法分析、語義分析和中間**生成這些階段,某些優化工作也可在前端做,還包括與前端每個階段相關的出錯處理工作和符號表管理工作。

後端指的是那些依賴於目標機而一般不依賴於源語言,只與中間**有關的那些階段的工作,即目標**生成,以及相關出錯處理和符號表的操作。

乙個編譯過程可由一遍、兩遍或多遍完成。所謂「遍」,也稱為「趟」,是對源程式或其等價的中間語言程式從頭到尾掃瞄並完成規定任務的過程。

設α->β是文法g=(vn,vt,p,s)的規則(或說是p中的乙個產生式),γ和δ是v*中的任意符號,若有符號串v、w滿足 v = γαδ, w = γβδ 則說v(應用規則α->β)直接產生w,或說w是v的直接推導。

文法g所產生的語言定義為集合

文法描述的語言是該文法一切句子的集合。

描述上下文無關文法的句型推導的直觀工具,即語法樹,也稱推導樹。

如果在推導的任何一步 α⇒β,其中α、β是句型,都是對α中的最左(最右)非終結符進行替換,則稱這種推導為最左(最右)推導。 最右推導通常被稱為規範推導。

如果乙個文法存在某個句子對應兩顆不同的語法樹,則說這個文法是二義的。

如果產生上下文無關語言的每乙個文法都是二義的,則說此語言是先天二義的。

文法產生的語言是相同的,則他們是等價的。

我的理解:

乙個句型的語法樹中任一子樹葉結點所組成的符號串都是該句型的短語。

如果子樹中不再包含其他的子樹,即a只能推導出b,而b不能再推出其他的式子,則b為此句型的直接短語。

直接短語中的最左直接短語為該句型的控制代碼。

所謂有害規則,是指形為u->u的產生式,它對描述語言顯然是沒有必要的,說它有害是說它會引起文法的二義性。

經過編譯得到的目標程式是機器語言程式/組合語言程式

詞法分析程式所輸出的單詞符號可採用以下二元式表示:(單詞種別,單詞自身的值)

狀態集合i的ε-閉包,表示為 ε-closure(i) ,定義為乙個狀態集,是狀態集i中的任何狀態s經任意條 ε 弧而能到達的狀態的集合。

自頂向下分析方法也稱面向目標的分析方法,也就是從文法的開始符號出發企圖推導出與輸入的單詞符號串完全相匹配的句子。若輸入串是給定文法的句子,則必能推出,反之必然出錯。

確定的自頂向下分析方法,是從文法的開始符號開始,考慮如何根據當前的輸入符號(單詞符號)唯一地確定選用哪個產生式替換相應非終結符以往下推導,或如何構造一顆相應的語法樹。

first集 follow集 提取左公共因子 消除左遞迴 ll(1)**分析

實現自底向上分析最常用的技術是 移進-歸約分析 ,它的基本思想是對輸入符號串自左向右進行掃瞄,並將輸入符號逐個移入乙個後進後出棧中,邊移進邊分析,一旦棧頂符號串形成某個句型的控制代碼或其他可規約串時就進行規約,規約的結果是將控制代碼或其他可規約串從棧頂部分彈出,而將相應的非終結符壓入棧中。重複這一過程直到歸約到棧中只剩文法的開始符號時則為分析成功,也就確認了輸入串是文法的句子。

簡單優先分析法 歸約控制代碼

算符優先分析法 歸約最左素短語

關鍵字域的組織用關鍵字池

編譯程式對陣列說明的主要工作是把陣列有關資訊匯集在乙個叫做「內情向量」的**中以便以後計算引用這些資訊

ps:這裡只總結了部分知識、大題部分也沒有敘述

整理這些重點知識的同時還學會了markdown裡怎麼打上下標...

編譯原理 複習

1 什麼叫編譯程式 高階語言 翻譯為 目標語言 組合語言或機器語言 2 編譯程式的6個階段 1 詞法分析 簡單理解就是掃瞄,很傻瓜式地由頭到尾掃瞄源程式,識別出 單詞 輸出結果是二元組,即 單詞總別,值 2 語法分析 根據語法規則將單詞符號串行分解成各類語法單位,如 表示式 語句 程式 3 語義分析...

編譯原理複習

介紹編譯原理,了解乙個新的領域,得去了解它的整體框架 語法分析 語義分析 語法制導翻譯 中間 生成 生成彙編 生成優化 執行彙編 3位址或4位址 的彙編執行 1.根據語言寫出文法產生式 2.構造與某一正規式等價自小dfa dfa deterministic finite automation 確定有...

編譯原理複習

文法與語言 基本概念 字母表 字母表是元素的非空有窮集合 字母表中的元素稱為符號 字元或字 字母表也稱符號 字元 集 字母表上的符號串 由字母表中的符號所構成的任何有窮序列被稱之為該字母表上的符號串 字母表上的元素也是該字母表上的符號串 無任何符號的符號串稱為空符號串,記作 符號串的長度 符號串的長...