随笔分类 -  编译原理与形式语言

编译原理知识总结整理
摘要:语法制导翻译和中间代码生成 语法分析之后进行语义分析。 语义分析包含两项工作: 说明语义没有问题 生成中间代码 (因此有时候我们把语义分析和中间代码生成等价) 中间代码的表示形式有很多,逆波兰记号、树形表示、三元式、四元式。 这些都是介于单词流 和 目标指令之间的中间产品。 困难:语义分析(中间代码 阅读全文
posted @ 2020-07-22 20:47 _Sandman 阅读(832) 评论(0) 推荐(0)
摘要:程序语言基本上可以分为三大类: 声明语句: 简单变量声明 数组、结构体变量声明 赋值语句: 能产生实际机器代码的核心语句 控制语句 : If 语句 while 语句 函数调用 一段程序用 JAVA字节码 表示 机器抽象表示 一个虚拟机器可以用以下三部分建模: 处理器 内存 指令系统 处理器可以用自己 阅读全文
posted @ 2020-07-16 18:11 _Sandman 阅读(205) 评论(0) 推荐(0)
摘要:语法分析之自上而下 一、上下文无关文法与程序结构 这种文法的 格式(模式) \(A->\alpha\) $\alpha$是变量与常量组成的字符串。 化成乔姆斯基范式(CNF)和格林巴赫范式(GNF)是为了写程序做准备 通常我们程序句子可以划分如下: 说明、定义语句 普通语句 表达式语句以及赋值语句 阅读全文
posted @ 2020-07-16 15:35 _Sandman 阅读(554) 评论(0) 推荐(0)
摘要:语法分析之自上而下 一、上下文无关文法与程序结构 这种文法的 格式(模式) \(A->\alpha\) $\alpha$是变量与常量组成的字符串。 化成乔姆斯基范式(CNF)和格林巴赫范式(GNF)是为了写程序做准备 通常我们程序句子可以划分如下: 说明、定义语句 普通语句 表达式语句以及赋值语句 阅读全文
posted @ 2020-07-07 17:35 _Sandman 阅读(389) 评论(0) 推荐(0)
摘要:上下文无关文法与PDA的等价性 PDA我们之前讲了有两种形式:一种叫做以终结状态 为结束标记的PDA; 还有一种叫做以空栈 为结束标记的PDA。并且前面也已经讲过这两种PDA是等价的。 这个化简之后,b在栈的最下面。 CFG转化成PDA |PDA转化成CFG 首先要知道 CFG是4元组,而PDA是7 阅读全文
posted @ 2020-07-04 20:17 _Sandman 阅读(3792) 评论(0) 推荐(0)
摘要:2型文法的处理装置——下推自动机(PDA) 正则文法处理不了括号对,但是上下文无关文法可以表示出来。上下文无关文法是强于正则文法的。下推自动机的能力是强于有限自动机的 下推自动机相对于有限自动机 它就是多了一个 栈 。其他都一样(输入串,状态) 状态机(PDA)在对输入串做读入操作的同时,栈顶能够同 阅读全文
posted @ 2020-06-28 18:11 _Sandman 阅读(1452) 评论(0) 推荐(1)
摘要:左递归消除算法 阅读全文
posted @ 2020-06-27 17:14 _Sandman 阅读(3384) 评论(0) 推荐(0)
摘要:上下文无关文法(context free grammar) 语法分析的数学基础。 正则语言不能描述所有的语言,因此引入上下文无关文法(注意它也不能描述所有的语言,只是相对正则语言,描述范围增大) 它的功能比RE和DFA要强许多,可以描述句子的结构!!! 对于嵌套结构,比如程序中的括号非常有用,上下文 阅读全文
posted @ 2020-06-23 21:19 _Sandman 阅读(2074) 评论(0) 推荐(1)
摘要:词法分析 3型文法与我们前面讲的正则表达式、自动机家族(DFA、NFA、e-NFA)都是等价的。是描述正则语言的不同角度 3型文法(正规文法)从格式上有其特点: \(A->\alpha B\) 或者 \(A -> \alpha\) 其中$\alpha$是终结符构成的字符串。 2型文法(上下文无关文法 阅读全文
posted @ 2020-06-22 16:09 _Sandman 阅读(565) 评论(0) 推荐(0)
摘要:DFA的最小化 前面我们讲过NFA通过确定化能够得到DFA,现在我们看能不能让已经得到的DFA的状态数能不能再继续变小(minimise).其实也就是对优化再优化。 我们从NFA得到DFA的过程中有使用子集构造法。但是子集构造法的的状态数还是过多,达$2^n$ 个。现在我们的目的就是进一步减少状态数 阅读全文
posted @ 2020-06-18 18:08 _Sandman 阅读(1987) 评论(0) 推荐(0)
摘要:非正则语言 NFA、\(\varepsilon-NFA\) 面向人构造系统 DFA面向机器构造系统 自动机理论非常完美!! 自动机的表述有纯数学形式的五元组形式(用来科学定义以及证明)、状态转移图(用来直观理解,也是一种数学工具)、状态转移表(编程用,用来定义数据结构比较好,面向计算机存储) 乔姆斯 阅读全文
posted @ 2020-06-17 21:57 _Sandman 阅读(1209) 评论(0) 推荐(0)
摘要:正则表达式和正则语言 DFA、NFA、\(\varepsilon\)-NFA隐含的处理的语言就是,正则语言。 有的人知道自动机,有的人不知道自动机。这些不知道自动机的科学家从算术运算或者数学的角度定义了语言。用的是表达式法。 还有一些人定义语言用的是文法 不同的流派 就是说定义语言有许多流派,有自动 阅读全文
posted @ 2020-06-17 16:21 _Sandman 阅读(1598) 评论(0) 推荐(0)
摘要:DFA 、NFA、 \(\varepsilon-NFA\) 的等价性 这三种自动机定义的语言是同一种语言,都是正规语言 DFA定义的语言可以被NFA接受;NFA定义的语言可以被DFA接受 每一个NFA都能转化为等价的DFA 每个DFA都是NFA的特例 如何将一个NFA转化为DFA 观察:NFA中每一 阅读全文
posted @ 2020-06-16 18:07 _Sandman 阅读(1761) 评论(0) 推荐(0)
摘要:正则语言 如果某个语言能被DFA识别,那么它就是正则的 例题1: 构造一个字母表为{0,1}的DFA,使其接受所有最多含有三个1的串。 例题2: 构造一个DFA,使其能够定义如下语言: ​ L={010,1} \(\Sigma=\{0,1\}\) 处理不了的话,可以引入一个特殊状态——死状态Qdie 阅读全文
posted @ 2020-06-15 16:57 _Sandman 阅读(1525) 评论(0) 推荐(0)
摘要:形式语言与自动机 期末考试复习,太难了,感觉写出来会好点 有穷自动机(有限自动机Finite Autometa) 自动机通常用 状态转移图 来表示。 从一个状态输入一个刺激得到另一个状态的过程。 软件工程里面的实时系统、复杂系统也用状态转移图来表示,因此状态转移图非常有用。 通过状态转移图,可以明确 阅读全文
posted @ 2020-06-14 17:29 _Sandman 阅读(568) 评论(0) 推荐(0)