编译原理
一个正在学习的javaer
这个作者很懒,什么都没留下…
展开
-
编译原理 chaptaer08语法分析
一.语法分析的目的通过前面的词法分析把源代码拆分成一个一个的token,然后通过上下文无关文法生成语法树。二.生成语法树有两种方法:自顶向下和自底向上三.克服自顶向下的左递归问题:1.通过下面的公式解决各种A-》Aa|b之类的文法2.左递归有两种:直接左递归和间接左递归 2.1直接左递归(也就是通过上面1的通过公式直接解决)例题:2.2间接左递归1.如何消除:通过代入法,然后再使用上面的一般公式上面的例题二:通过把A带入B中解决四.解决回溯问题:1.为什么会产生回溯:原创 2020-05-27 14:28:33 · 772 阅读 · 0 评论 -
语法分析
1.语法分析的目的2.语法分析的两种方法(自顶向上和自底向下)3.自顶向下的特点4.解决自顶向下的左递归问题解决:合理利用此公式进行列如:T->T*F|T原创 2020-06-08 21:40:28 · 881 阅读 · 0 评论 -
编译原理 chaptaer07正则文法、正则式
一.正则表达式1.正则式转正则集合2.如何证明某个表达式是正则表达式能用下方有限次推导出即可例子:3正则文法推导正则式通过正则文法推导出一个能代表所有字符串的表达式例子1例子24.正则式转正则文法:核心记住下面的3和4 并且前后不要搞混了如果用了右线性文法,就要一直使用右先型文法,即下方要么使用3,要么使用4,不能一会使用3一会使用4.例题1:例题2:二.状态机转正则表达式下方的规则:增加一个初态和终态然后和并所有的集合,到最后只剩下初态和终态原创 2020-05-13 13:58:13 · 1062 阅读 · 0 评论 -
编译原理 chapter06 词法分析 正则文法以及有穷状态向量机
一。什么是有穷状态向量机2.有穷状态向量机的定义具体的含义:画法例题:二。正则文法:右线性文法与状态图的转换:文法转状态图:先画出所有的非终结符,然后再人为添加一个结束集合,然后再添加起始以及终结符的画法,根据状态转移函数画出对应的线;状态图转文法:从起始开始 画出对应的右线性文法就可以了。例题:左线性文法类似不过就是把右线性分发的箭头相反,然后开始符号与...原创 2020-04-16 13:37:45 · 361 阅读 · 0 评论 -
编译原理 chapter05 词法分析
一.目的二.种类三。组成四.例题五。问题:通过双缓冲区解决原创 2020-04-08 13:01:18 · 134 阅读 · 0 评论 -
编译原理 chapter 分析方法(自顶向下 与 自底向上)
一.自顶向下方法二.自底向上方法短语:在一个树中所有的子树的叶子结点直接短语所有的子树中,高度为1的叶子结点句柄 在所有的直接短语中最左边那个例题:步骤:...原创 2020-04-01 18:09:10 · 1644 阅读 · 0 评论 -
编译原理 chapter04 语法树
语法都可以用树来推导二。最左推导 就是都是从左边第一个非终结符开始推导三.最右推导 都是从右边第一个非终结符开始推导原创 2020-03-26 14:59:55 · 242 阅读 · 0 评论 -
编译原理chatpter04 文法的形式和文法的类型
一文法的形式一般有很多种,只要能正确的描述出终结符非终结符约定、以及开始符号就行第一种②第二种:二、句型和句子只要是在整个推到过程的所有符号都是句型;句子是只含有终结符。三、四种文法0型文法(短语结构文法) 左边只要有一个非终结符 就为0型文法 若全为终结符没法推导了列子:2.上下文有关法,左边的前后推导之后不能变列子3.上下文无关法 (最重要) 左边只能是一...原创 2020-03-26 14:56:48 · 286 阅读 · 0 评论 -
编译原理 chapter03 语言
1.高级程序设计语言一定要有限条规则2.终结符一门语言的单词(不可以再分) 非终结符 一门语言的语法结构(可以再分)3.符号表 第一个是空串4.5.5.6.7.8....原创 2020-03-22 19:02:27 · 110 阅读 · 0 评论 -
编译原理 chapter02 编译程序的组织
1.编译程序过程的八大模块2.编译程序的遍(有一遍和多遍)3.多遍的好处与坏处;4.一遍的过程核心在于语法分析,在语法分析需要token的时候,词法分析就去源代码取出需要的部分,然后语法分析器在把部分语法树进行语义分析以及代码生成。5.编译过程的伙伴工具(符号表、出错处理、预处理、连接器)①.符号表:在进行词法分析生成token后,生成语法树,会把各种变量放进符号表,然后用于生成...原创 2020-03-11 13:06:36 · 451 阅读 · 0 评论 -
编译原理 chapter01 编译程序
一.编译程序:简而意之就是把一门语言转化为另一门语言(如java语言转化为机器语言);二.机器语言:就是由0和1组成的一长串数据,能被机器识别且不需要经过编译,可以直接执行;汇编语言:就是通过一些助记符来标识这些机器指令,如add标识相加功能;都需要通过编译程序编译成机器语言)高级程序设计语言:为了更符合人们的生活习惯;(都需要通过编译程序编译成机器语言)三.程序设计语言的原理:分为两个部...原创 2020-03-04 13:37:15 · 222 阅读 · 0 评论