编译原理
文章平均质量分 70
编译原理笔记分享
唐风绸繆
这个作者很懒,什么都没留下…
展开
-
编译原理课程笔记 第八章:语法制导和中间代码生成
= 定义为 与等号优先级相同 a:=b 意为a被定义为b 也就是说前面的是第二运算对象 后面的是第一运算对象。优先级:加减乘除>等号推出>大于小于>交并补。但与三元式不同,树的分支没有先后顺序。三元式的基础上加了一个运算结果。b与c乘运算,结果记为t1。t3定义为运算,结果记为a。原创 2024-04-09 15:15:52 · 239 阅读 · 0 评论 -
编译原理课程笔记 第七章:LR分析:一种自下而上的分析方法
也就是说,J是由I中那些X左边有圆点的项目,把圆点右移一个位置所得的项目的集合。拓广文法:为使“接受状态”唯一且易于识别,构造文法G的拓广文法G': 引进一个新初态S',增加产生式S'->S。SLR(1)使用的follow集方法不能完全解决冲突,也不能解决存在公共元素的情况(即并集不为空的情况)文法G的每一个产生式的右部添加一个圆点称为G的一个LR(0)项目,简称项目。LR文法:对于一个文法,如果能够构造出一张分析表,使得它的每个入口均是唯一的,则称该文法为LR文法。LR(0)要求的条件很苛刻。原创 2024-04-09 15:15:06 · 448 阅读 · 0 评论 -
编译原理课程笔记 第六章:自底向上的语法分析(移进—归约分析)
因为算符优先分析法只定义了算符之间的优先关系,而没有非终结符之间的关系,因此无法对单个非终结符进行归约。优先函数并不等价于优先表,优先表能发现的错误优先函数不能发现,优先函数的能力弱于优先表。只定义算符之间(终结符之间)的优先关系,归约过程中只要找到句柄就归约,不考虑非终结符。规范归约:自左向右的归约--最左归约 (规范推导是最右推导)简单优先分析法:求出所有终结符和非终结符之间的优先关系,是一种规范归约。若任意两个终结符间至多存在一种算符优先关系,则称G为算符优先文法OPG。原创 2024-04-03 21:34:37 · 595 阅读 · 1 评论 -
编译原理课程笔记 第五章:自顶向下的语法分析
一个上下文无关文法是LL(1)文法的充要条件是:对每个非终结符A的两个不同的产生式Aà α,Aà β,满足:SELECT(Aà α) ∩ SELECT(A à β)= Φ(其中α和β不能同时推导出)。再看T,第一条看似T后面是E’,应该将first(E’)加入follow(T),但其实第二条中可以看出E’是可以推出。然后从E开始,产生式右边出现E的只有第五条,first())=),所以follow(E)={),#}。FOLLOW集:FOLLOW(A):是所有句型中紧接A之后的终结符号或#。原创 2024-04-03 21:34:02 · 171 阅读 · 1 评论 -
编译原理课程笔记 第四章:词法分析
工作原理:对于Σ*中的任何一个字符串t,若存在一条从初态结点到某一终态结点的通路,且这条通路上所有弧的标记符连接成的字符串等于t,则称t可为DFA M所识别(读出或接受)。两个状态s,t若一致,则满足:1. 一致性(同是终态或非终态) 2. 蔓延性(三种形式:s t通过a到x;s t通过a到x y,x y等价;s t通过a到终态x y(即使x y是互不相干的终态,s t也等价))上图其实有个问题,NFA中4是终态,新的状态子集里所有包含4的都是新终态,在给这些状态命名时应该加上* 如*C、*D。原创 2024-04-03 21:33:25 · 289 阅读 · 0 评论 -
【课程笔记】编译原理课程笔记
决定将课程笔记整理并记录到博客上,供自己备忘用,也希望能帮到有相关课程压力的友友们~笔记并不会系统的讲解编译原理相关知识,而是将重要的内容分点罗列,适用于有一定基础的读者后续还会更新其他课程的笔记,如深度学习、机器视觉等。原创 2024-04-02 22:23:31 · 405 阅读 · 0 评论