编译原理与实现 河北科技大学 信息科学与工程学院计算机系 杨奎河 2008-09.

Slides:



Advertisements
Similar presentations
六大類食物 五穀根莖類 六大類食物 油脂類 蛋魚肉豆類 奶類 蔬菜類 水果類. 五穀根莖類 : 提供熱量 : 部份蛋白質,維生素,礦物質,及膳食纖維 包含麵 ( 及麵包饅頭 ) ,飯類,蕃薯等食物 也就是一般所稱的 " 主食 " ( 蘿蔔不是這一類,是屬於蔬菜類喔! ) 飲食建議吃三到六碗 並推薦攝取全穀類食品.
Advertisements

正確睡午睡精神更好 正確睡午睡 精神更好 可降血壓 增加思考能力 懶懶的冬天加 上星期一又是假日後上班,如果能夠在 中午補個眠,稍微休息一下,對於精神 的提振及下午工作效率都有幫助。但冬 天睡午覺要注意保暖以及水分的補充, 避免受涼或是血液循環不好,造成手或 腿麻痛,注意這些小地方可以讓睡午睡 更健康!
揮別電腦族疲勞症候群 主講人 : 陳潮宗 中醫師. 常有症狀一 起因&症狀: 起因&症狀: 坐姿不正最易引起腰酸背痛、 過度看螢幕則眼睛疲勞酸痛。 治療重點: 治療重點:補固腰腎、明目保睛。
引言 高血壓自我健康管理包含飲食、 運動、 及健康生活型態三大方向。 飲食 是改善高血壓的重要部分, 並提 供飲食方式來改善高血壓。
人事室專題計畫業務報告 人事室 謝明峯 轉 一、專任助理注意事項 計畫案如有聘任專任助理者, 請依據「南 華大學專案助理報到程序單」內容, 將資 料繳交至人事室 ( 請於聘任到職日前繳交, 以免影響到本身權利 ) 。 離職儲金或勞工退休金 依勞工退休金條例相關規定,
山伯與英台在健康書院修業完 成後,一行人逗陣開開心心的 回自己的家鄉 …… 於是開啟了另一段 ~ 新梁祝的故事 ~ 在下 梁山伯 小女子 祝英台 我是 阿成 我是 阿香.
糖尿病的饮食控制 厦门长庚医院张翼翔. 糖尿病 糖尿病的发病率逐年增高 糖尿病的发病率逐年增高 糖尿病对健康和生命的危害 糖尿病对健康和生命的危害 心、脑、肾、神经等 心、脑、肾、神经等 糖尿病的表现和诊断 糖尿病的表现和诊断 糖尿病的治疗 — 终身治疗 糖尿病的治疗 — 终身治疗.
第八章 膳食與營養 第一節 均衡營養與膳食 年 7 月公布新版「每日飲食指南」, 依食物營養特性,分為六大類: 全榖根莖類 蔬菜類水果類 低脂乳品類 油脂與堅果種子類 豆魚肉蛋類 食全十美.
中醫臨床常見養生藥膳 臺 北 市 立 聯 合 醫 院中醫院區 院長 鄭振鴻. 壹、前言 在臺灣地處亞熱帶的氣候,冬季溫暖,夏 季炎熱,雨量多的特性。吃補的概念源自 中國大陸,但生活習性與食物亦有其地域 性,因此針對臺灣常用藥膳的食物與藥物 的性能作用,解析其效用、功能,了解食 物與人的關係,利用食物特性,藥物的效.
青春期 女生可以早在八、九歲, 或晚到十三、四歲才進入 青春期。 男生早的在十、十一歲, 晚到十四、五歲,甚至更 遲才進入青春期。
第八課 路 *課前預習 一 二 三 *題解 *作者介紹 *課文內容 一 、 、 、 *修辭回顧
請愛惜自己 衛生署日前公佈了去年國人的十大 死因統計,惡性腫瘤(癌症)又第 二十度蟬聯冠軍,而且是每四名死 亡人口中,就有一人「因癌而」,
E時代盛宴 健康123年菜發表會 新春新氣象,處於資訊蓬勃E時代的您,是否已構思好如何為自己及家人準備一桌健康、豐盛的年菜?隨著國人健康意識的提升,對年菜訴求也有別於傳統年菜四大特點-高油、高鹽、高糖、低纖,加上其繁瑣的製備過程,對講求速度及效率的E時代族群而言,已不符現今年菜簡單製備、健康需求性。在這距離農曆春節只剩短短二個星期,豐原醫院營養室關心您的健康、滿足您的胃蕾,推出「E時代盛宴-健康123-年菜發表會」,以「一高、二少、三低」的健康原則,利用家中減少烹調油量的鍋具,如:烤箱、電鍋、不沾鍋等,製
生活常規.
雅樂舞基本動作與身體探索 陳玉秀老師主授 【本著作除另有註明外,採取創用CC「姓名標示-非商業性-相同方式分享」台灣3.0版授權釋出】
治癒肺癌 的妙方.
嘴破怎麼辦? 嘴角或嘴唇內常常破一小傷口的人, 吃東西時真是痛苦萬分; 有的人試著補充維他命C及B群,
专利申请 简介 专利申请的种类 专利申请的途径、费用 申请文件 材料学院 刘科高 博士/教授          
C语言程序设计 李伟光.
會計資訊系統 專章A.
第三章 調整與編表.
肺臟的藥膳介紹 台中慈濟醫院 中醫部 陳建仲.
教學經驗分享 吳毅成 國立交通大學資訊工程系 2012年4月.
位置的表示方法.
合理水價之探討 台灣省自來水公司前財務處經理 王禮忠 台灣省自來水公司財務處組長 賴祐.
口腔衛生保健 主講者:興中國小 護理師:莊靜華.
男性生殖系統.
水 生命之源 威海文登中心医院 王倩倩.
認識大腸直腸癌 大腸直腸外科 李元魁醫師.
兔 子.
請愛惜自己 衛生署日前公佈了去年國人的十大 死因統計,惡性腫瘤(癌症)又第 二十度蟬聯冠軍,而且是每四名死 亡人口中,就有一人「因癌而」,
用“自言自语法”提高学生 英语口头表达能力 李奉栖.
節能減碳—兒童廢物利用 遊戲闖關活動 設計者—賴姿良 陳俐諭 陳松吉.
牙齒保健常識 胖福2050/12.
第1课 欧洲的君主专制 香山中学 聂渭清.
指導老師:楊淑娥 組別:第一組 成員:劉怡萱4a0i0066 吳珮瑜4a0i0070 林秋如4a0i0075 陳婉婷4a0i0076
JAVA程序设计.
農委會及其他計畫 執行應注意事項 第四組 涂怡禎 日期:104年10月5、6日.
膀胱過動症 & 間質性膀胱炎 台中榮總/埔里分院 蔡青倍.
嘴破怎麼辦? 嘴角或嘴唇內常常破一小傷口的人, 吃東西時真是痛苦萬分; 有的人試著補充維他命C及B群, 有的人塗抹進口藥膏,
小組成員:洪偉凱 簡子昀 李佳旻 陳泓憲.
延伸課程(專題研習)科美好生活之成長的我
微笑的天空 2008.12.1(星期一)農曆戌子年十一月四日的傍晚天上的金星、木星在上弦月左右相互輝映,形成「微笑的天空 」天文奇景。 「金星、木星伴月」,在空軍官校停機坪的上空微笑著面對著校園裡所有仰望天空的筧橋學子,真是令人難忘!因此,決定將網路詩集的初刊定名為「微笑的天空 」。
別忘了,每天都要…… 實踐8大自然養生法 保持3次排便 至少喝3杯蔬果汁 曬太陽30分鐘
泰式料理食譜 137實餐 謝宏德.
奶 麻.
【本著作除另有註明外,採取創用CC「姓名標示-非商業性-相同方式分享」台灣2.5版授權釋出】
第一章 引论 1.1操作系统的概念 计算机系统: 计算机硬件 计算机软件 计算机硬件:运算器、控制器、存储器、输入设备和 输出设备
编译原理课程设计.
编译原理实践 5.给定语法的语法分析程序构造.
電腦解題─流程圖簡介 臺北市立大同高中 蔡志敏老師.
本著作除另有註明外,採取創用CC「姓名標示-非商業性-相同方式分享」台灣2.5版授權釋出
編譯程式設計 期末專題說明 V1.1 May 2004.
软件工程 第四章 软件设计 软件过程设计技术与工具.
程序基础 2019/4/25.
第3 语言翻译问题 [学习目标]:学习和掌握语言的语法的基本概念和基本要素,理解翻译的步骤;学习和掌握BNF文法。
計算機概論 跨越講義 第4章 基本視窗程式應用 4-1 程式語言簡介 4-2 結構化VS物件導向程式設計
現代專案管理教材 第一章 專案與專案管理 博碩文化出版發行.
中五級電腦科 PASCAL檔案處理.
编译原理课程设计 2017年4月.
問題解決與流程圖 高慧君 台北市立南港高中 2006年12月22日.
數學遊戲二 大象轉彎.
方格紙上畫正方形.
三 顺序结构程序设计 厦大附中信息技术.
计算机问题求解 – 论题 基本的数据结构 2018年05月09日.
程式設計與程式語言 告訴電腦做些什麼 第十六章.
PASCAL语言 吉林大学计算机科学与技术学院.
PASCAL语言 吉林大学计算机科学与技术学院.
第四章 買賣業會計.
解题报告 七(5)班 严崟杰 03:20.
Presentation transcript:

编译原理与实现 河北科技大学 信息科学与工程学院计算机系 杨奎河 2008-09

编译原理的作用: 高级语言的源程序 编译 计算机的机器语言

教学目的: ① 掌握编译原理的基本知识。 ② 掌握一些典型问题的解决办法。 ③ 对程序有进一步的认识。 学习方法: ① 了解整体结构。 ② 掌握解决具体问题的具体办法。 ③ 掌握基本概念。

第一章 引论

§1.1 什么是编译程序 一、程序语言的分类 1、程序语言分为两类:高级语言 低级语言 2、低级语言可分为两类:机器语言 汇编语言

二、基本概念 把用汇编语言或高级语言写成的程序转换成机器语言的程序,被称为翻译程序。 汇编语言的翻译程序称为汇编程序 把高级语言的翻译程序称为编译程序。 编译程序的输入对象称为源程序,输出对象称为目标程序。

三、编译过程 1、执行一个高级程序一般分为两步: ① 通过编译程序把源程序翻译成机器语言程序。 ② 执行目标程序

编译过程:

编译方式: 编译程序 计算结果 源 程 序 目标程序 初始数据 运行系统子程序

源程序 计算结果 解释程序 初始数据 2、也可以采用边翻译边执行的解释执行方式,这种处理程序称为解释程序。解释程序的结果是源程序的执行结果。 解释方式: 解释程序 计算结果 源程序 初始数据

传统的语言(例如C、C++ ),源代码在经过编译连接后直接生成了二进制代码。而C#、java这些语言把源代码编译为了中间语言,C#把源代码编译为微软中间语言MSIL,Java把源代码编译为字节码。 采用这种方法的优势:可移植性。发布的程序理论上可以在任何硬件平台上运行。即C#通过安装在机子上的CLR(Common Language Runtime-公共语言运行时),Java通过安装在机子上的JVM(Java Virtual Machine-Java虚拟机)来执行中间代码和字节码。

C是直接编译成机器码,java是编译程序将java源程序编译成JVM可执行代码--java字节码,再由虚拟机解释执行。 简单的理解是,为了实现这种移植性,在机子上又加了一层平台(CLR、JVM),让中间代码在这个平台上进行运行,而JVM、CLR在不同的操作系统上以不同的方式实现。 C是直接编译成机器码,java是编译程序将java源程序编译成JVM可执行代码--java字节码,再由虚拟机解释执行。

§1.2 编译程序的组成 一、编译程序要完成的工作: 词法分析 语法分析 中间代码生成 中间代码优化 目标代码生成及和硬件有关的工作

表 格 管 理 错 误 处 理 词法分析 中间代码生成 语法分析 中间代码优化 目标代码生成 源程序 目标程序

例子:用Pascal将英语句子译成数字,用1~26替A~Z,空格用#,句号不变。例如:this is an example Program encode(input,output) Const blank=‘ ’,termin=‘.’,well=‘#’; Var letter:char;code:integer;

Begin Read(letter); While letter<>Termin do If letter=blank Then Write(well:2) Else Begin code:=Ord(letter)-Ord('A')+1;

Write(code:3) End Read(letter) Write(termin) 运行结果: 20 8 9 19 # 9 19 # 1 14 # 5 24 1 13 16 12 .

1、分析单词:保留字、标识符、常数、运算符、分界符 2、语法分析:分析语法结构和程序层次 二、编译的步骤 1、分析单词:保留字、标识符、常数、运算符、分界符 2、语法分析:分析语法结构和程序层次 程序 开始部分 说明部分 执行语句

(input, output) 开始部分 程序开始 程序名 参数 Program Encode 说明部分 常量 变量

Well=‘#‘ 常量定义 语句1 语句2 语句3 Blank=‘ ‘ Termin=‘.‘ ,

语句部分 Begin 语句组 End 语句1 ; 语句2 …… Read 参数 ( Letter ) 其他情况类似!

3、语义处理和产生目标程序 ① 程序处理 ② 说明语句处理 ③ 可执行语句处理

三、编译阶段的组合 词法分析 语法分析 中间代码生成 前端 中间代码优化 目标代码生成及和硬件有关的工作 后端

1、前后端结合 某编译程序前端 A机型后端 B机型后端 + 不同机型上的编译程序

A编译程序前端 B编译程序前端 生成同一 中间语言 共同的 后端 + + 几种编译程序

2、结论: ① 分前后端可提高效率,减少重复劳动 ② 利于优化,便于组合

§1.3 编译程序的分遍 1、编译程序按其扫描遍数分为: 一遍扫描 多遍扫描 2、若通过对源程序的扫描直接生成目标代码,则称编译程序是单遍的。 3、多遍扫描的好处是:便于分工、便于优化,但前后扫描之间难免有些重复性工作。

多遍扫描的步骤: 源程序 →词法分析程序 →中间文件1 →语法分析程序 →中间文件2 →语义分析 →中间文件3 →优化 →中间文件4 →目标程序

目前大部分编译程序都是多遍扫描的。 一遍扫描:以语法分析为主。 参考文献: 吕映芝.编译原理.清华大学出版社,北京:1998.

§1.4 编译程序的开发 1、开发编译程序的步骤: ① 对语言的语法与语义有准确无误的理解。 ② 确定编译程序的要求。 ③ 根据编译程序的规模确定编译程序的具体分遍及每遍的具体任务。 ④分别调试各次的扫描程序,连调

2、编译程序的自动化 利用自展技术完成。 首先利用汇编语言的编写最简单的编译程序,例如加法的编译程序。 将乘法转换为加法,利用得到的加法编译程序得到乘法的编译程序,以此类推。 PL0……PLn均是PASCAL的子集。