编译原理与编译构造
文章平均质量分 63
NJU_SE_WaterWan
这个作者很懒,什么都没留下…
展开
-
编译原理与编译构造 课堂笔记1 导论
前面是一些有关龙书的介绍,应该说是非常精彩的,由龙书的封面,讲解了龙书从第一版到第二版的过程中,人们对于编译原理的认识的变化,人们认识更深了,也因此减少了对编译原理的恐惧。我们的教材主要是使用龙书,而不是虎书、鲸书。 // 顺嘴吐槽一句,暑假看了一段时间的成龙历险记,所以听到龙书的第一反应是小玉的“龙叔”。为什么要学习编译原理这门课:1、 Seeing the de原创 2017-09-04 19:54:28 · 716 阅读 · 0 评论 -
编译原理与编译构造 Intermadiate Code Generation
本文来自伟大的七米八同学。先打一发广告,我这个博客一开始就是用于记录算法的学习过程的,后来干脆想着把课堂笔记也整理整理放上来。想想这学期快结束了,下学期开始又要开始学习算法啦。我是准备从0开始学习的,借助于高中生信息学竞赛的平台。欢迎各位各类同学加进来,笑着问我为什么刷那么慢,或者跟我一起从0开始。欢迎对照对边导航栏,对准“算法向”的“洛谷”查看进度,刷完这个之后会继续刷USACO。群号是⑥⑥①⑨②原创 2017-11-13 21:17:21 · 3449 阅读 · 0 评论 -
编译原理与编译构造 目录
本文整理了所有自己记录的课堂笔记,按顺序整理,并会根据内容及时更新课堂笔记1 导论课堂笔记2由语言构造文法1由语言构造文法2文法的优化1原创 2017-09-20 19:59:41 · 1777 阅读 · 0 评论 -
编译原理复习1
编译程序工作的五个阶段词法分析语法分析中间代码生成优化目标代码生成编译前端与后端编译前端与源语言有关,如词法分析,语法分析,语义分析与中间代码生成,与机器无关的优化编译后端与目标机有关,与目标机有关的优化有关,目标代码产生带来的好处:程序逻辑结构清晰优化更充分,有利于移植自编译这里补充一下自编译。例如想要编译某种语言L,我们就可以将L分成若干个子集,便有L = L0 + L1原创 2017-11-19 20:22:27 · 3218 阅读 · 0 评论 -
编译原理复习2
先打一发广告,我这个博客一开始就是用于记录算法的学习过程的,后来干脆想着把课堂笔记也整理整理放上来。想想这学期快结束了,下学期开始又要开始学习算法啦。我是准备从0开始学习的,借助于高中生信息学竞赛的平台。欢迎各位各类同学加进来,笑着问我为什么刷那么慢,或者跟我一起从0开始。欢迎对照对边导航栏,对准“算法向”的“洛谷”查看进度,刷完这个之后会继续刷USACO。群号是⑥⑥①⑨②2025,这是我设置的一道原创 2017-11-20 17:43:01 · 2235 阅读 · 0 评论 -
编译原理复习3
先打一发广告,我这个博客一开始就是用于记录算法的学习过程的,后来干脆想着把课堂笔记也整理整理放上来。想想这学期快结束了,下学期开始又要开始学习算法啦。我是准备从0开始学习的,借助于高中生信息学竞赛的平台。欢迎各位各类同学加进来,笑着问我为什么刷那么慢,或者跟我一起从0开始。欢迎对照对边导航栏,对准“算法向”的“洛谷”查看进度,刷完这个之后会继续刷USACO。群号是⑥⑥①⑨②2025,这是我设置的一道原创 2017-11-21 23:47:50 · 2078 阅读 · 0 评论 -
编译原理复习4
先打一发广告,我这个博客一开始就是用于记录算法的学习过程的,后来干脆想着把课堂笔记也整理整理放上来。想想这学期快结束了,下学期开始又要开始学习算法啦。我是准备从0开始学习的,借助于高中生信息学竞赛的平台。欢迎各位各类同学加进来,笑着问我为什么刷那么慢,或者跟我一起从0开始。欢迎对照对边导航栏,对准“算法向”的“洛谷”查看进度,刷完这个之后会继续刷USACO。群号是⑥⑥①⑨②2025,这是我设置的一道原创 2017-11-22 23:31:49 · 1595 阅读 · 0 评论 -
编译原理复习5
先打一发广告,我这个博客一开始就是用于记录算法的学习过程的,后来干脆想着把课堂笔记也整理整理放上来。想想这学期快结束了,下学期开始又要开始学习算法啦。我是准备从0开始学习的,借助于高中生信息学竞赛的平台。欢迎各位各类同学加进来,笑着问我为什么刷那么慢,或者跟我一起从0开始。欢迎对照对边导航栏,对准“算法向”的“洛谷”查看进度,刷完这个之后会继续刷USACO。群号是⑥⑥①⑨②2025,这是我设置的一道原创 2017-11-25 09:10:28 · 1068 阅读 · 0 评论 -
编译原理复习6
先打一发广告,我这个博客一开始就是用于记录算法的学习过程的,后来干脆想着把课堂笔记也整理整理放上来。想想这学期快结束了,下学期开始又要开始学习算法啦。我是准备从0开始学习的,借助于高中生信息学竞赛的平台。欢迎各位各类同学加进来,笑着问我为什么刷那么慢,或者跟我一起从0开始。欢迎对照对边导航栏,对准“算法向”的“洛谷”查看进度,刷完这个之后会继续刷USACO。群号是⑥⑥①⑨②2025,这是我设置的一道原创 2017-11-25 09:49:39 · 1182 阅读 · 0 评论 -
编译原理复习7
语义分析和中间代码产生中间语言源语言程序⇒Compiler Front End\mathop{\Rightarrow}\limits^{Compiler \space Front \space End} 中间语言程序⇒Compiler Back End\mathop{\Rightarrow}\limits^{Compiler \space Back \space End} 目标语言程序常用的中间语言原创 2017-11-26 22:32:28 · 3077 阅读 · 0 评论 -
编译原理与编译构造 课堂笔记9
DFA ⇒\Rightarrow 转换表例: IiI_i aa bb 0 1 2 1 1 3 2 3 3 1 则由表的前两行得 I0→aI1,I0→bI2I_0 \mathop{\to}\limits^a I_1, I_0 \mathop{\to}\limits^bI_2 大概代码如下state = 0;while(1) {原创 2017-10-16 20:06:42 · 5388 阅读 · 0 评论 -
编译原理与编译构造 由NFA变为DFA
以后就直接发图片了,省得出现奇怪的问题。。原创 2017-10-11 23:58:20 · 9360 阅读 · 0 评论 -
编译原理与编译构造 文法的优化2
2. 删除ϵ\epsilon 产生式ϵ\epsilon 产生式的定义:{A|A⇒+ϵ,ϵ∈VN}\{A|A \mathop{{\Rightarrow}} \limits^+ \epsilon ,\epsilon \in V_N\} ,即经过1步或多步推导出ϵ\epsilon 的非终结符,具有ϵ\epsilon 产生式例:S→ABC,A→aA|ϵ,B→bB|ϵ,C→cC|ϵS \to ABC, A \原创 2017-09-26 11:40:28 · 1038 阅读 · 0 评论 -
编译原理与编译构造 由语言构造文法1
本文以课堂内容为主方法1:逐步求精法自上而下L1={aibjck|i,j,k≥1}L1 = \{a^ib^jc^k|i, j, k ≥ 1\}记ai=Aa^i = Abj=Bb^j= Bck=Cc^k = Cai=a∗ai−1=a∗ama^i = a*a^{i-1}=a*a^mA→aAA\to aAA→aA\to a∴A→aA|a\therefore A\to aA|aB→bB|bB\to bB|b原创 2017-09-12 20:14:04 · 6337 阅读 · 0 评论 -
编译原理与编译构造 二义文法
二义文法例:对于文法:E→E+E|E∗E|(E)|iE \to E + E | E * E|(E) |ii+i∗i i+i*i 具有二义性①++ 优先级高②×\times 优先级高定义: 如果一个句子有多个不同的对应的分析树,那么这个句子是有二义性的句子。 如果文法产生的句子具有二义性,那么该文法是二义文法。构造分析树的方法:推导规约消除二义性:消除二义性会造成文法的变化,但原创 2017-09-26 23:41:25 · 3507 阅读 · 0 评论 -
编译原理与编译构造 课堂笔记2
本文以课堂笔记为主,可能略有删减、补充。理念:自上而下,逐步求精——文法有限状态自动机(描述状态的模型)——由图灵机发展而来计算机之父理论:图灵实际:冯诺依曼编译做的事情有两件:分析——判断程序是否正确,具体做法是将程序化为字符流 字符流 词法:字符–>单词 判断单词是否合法 句法:单词–>句子 判断句子是否合法 程序正确 合法——原创 2017-09-12 17:15:04 · 12220 阅读 · 3 评论 -
编译原理与编译构造 由语言构造文法2
方法3 等价法基本思想:产生的两边应该具有相同的特性例1:L={w|w∈(a,b)∗,and there are same a′s and b′s in w}L=\{w|w \in (a, b)^* , and \space there \space are \space same \space a's \space and \space b's \space in \space w\}解:S→a原创 2017-09-18 23:04:52 · 16439 阅读 · 5 评论 -
编译原理与编译构造 预测分析程序的构造
预测分析程序的构造判断是否为合法表达式预测当前句型中,出现A,若A有多个产生式,需预测选择哪个产生式,从而可不要回溯,形如A→α|BA \to \alpha|B 使用的是以下的结构其中左边那个叫做parsing stackparsing \space stack ,右下角那个叫PPT(predict parsing table)PPT(predict \space parsing \space ta原创 2017-10-27 22:31:14 · 1663 阅读 · 0 评论 -
编译原理与编译构造 二义文法的处理、语义
本文依旧来自记笔记相当勤快的七米八同学。向他表示真诚的感谢!二义文法的处理添加附加条件在前面的内容中,我们已经知道,想要解决二义文法的问题,必须添加附加条件。例: E→E+E|E∗E|(E)|iE \to E + E | E * E | (E)|i 注意一下下图中的I0I_0 ,第一行式子是E′→EE' \to E ,那个撇不一定能看得清具体推导过程如图:此时可以推得构造表,但是此时是会有冲突的。我原创 2017-11-07 00:50:43 · 5483 阅读 · 0 评论 -
编译原理与编译构造 LR文法
本份课堂笔记来源于我院最最高大的七米八同学,不知道他用不用CSDN写博客,但是不管如何向他表示感谢。LR文法——通用语法分析法,基于规约、FA对于文法B→αAβ,A→γB \to \alpha A \beta, A \to \gamma ,我们有自动机,确切地说,是分层的有限自动机(NFA),如下图。 对于每个状态(就是每个圈)的命名,我们不会和以前一样一路A−ZA-Z命名下来,而是会有特定的命名原创 2017-10-31 09:36:08 · 11765 阅读 · 0 评论 -
编译原理与编译构造 文法的优化1
1. 删除无用的产生式P→P" role="presentation" style="position: relative;">P→PP→PP \to P ,例如:A→B,B→C,C→A" role="presentation" style="position: relative;">A→B,B→C,C→AA→B,B→C,C→AA \t原创 2017-09-18 23:19:51 · 1206 阅读 · 0 评论