什么是编译器,解释器? 一个程序在运行之前,需要翻译成一种能被计算机执行的形式,完成这项翻译工作的软件系统称为编译器。 源程序被分割成多个模块,需要一个预处理的程序聚合源程序,包括把宏定义转为源语言语句。 经过预处理的源程序传给编译程序,生成汇编语言程序。 汇编语言程序由汇编器处理,生成可重定位的机 ...
分类:
其他好文 时间:
2020-04-22 12:55:04
阅读次数:
77
自顶向下的语法分析 一、自顶向下语法分析 1.定义 2.不足 不能处理左递归 不能处理复杂的回溯技术 3.例 4.算法构造 FIRST FOLLOW LL ( 1 ) 文法 二、预测分析 1.递归下降的预测分析 递归下降预测分析器 2.非递归下降的预测语法分析 例 ...
分类:
其他好文 时间:
2020-04-21 23:43:39
阅读次数:
70
1.2 编译器的结构 分析(analysis) 综合(synthesis) 一个编译器的各个步骤 1.2.1 词法分析 编译器的第一个步骤称为词法分析(lexical analysis)或扫描( scanning)。词法分析器读人组成源程序的字符流,并且将它们组织成为有意义的词素(lexeme)的序 ...
分类:
其他好文 时间:
2020-04-21 10:09:33
阅读次数:
108
2020年前端面试复习必读文章【超百篇文章/赠复习导图】 前言 之前写过一篇 一年半经验如何准备阿里巴巴前端面试,给大家分享了一个面试复习导图,有很多朋友说希望能够针对每个 case 提供一个参考答案。 写答案就算了,一是「精力有限」,二是我觉得大家还是需要自己「理解总结会比较好」。 给大家整理了一 ...
分类:
其他好文 时间:
2020-04-11 13:21:25
阅读次数:
67
本文参考 出自LeetCode上的题库 —— 字符串转整数,本篇文章也主要是参考LeetCode上的官方题解 官方题解采用了编译原理中有限自动机的概念,没想到编译原理中的知识可以应用到算法中,所以在这篇文章里记录下scala版本的解法,但是不对具体题解作介绍,想看具体解释还请移步力扣官网 https ...
分类:
编程语言 时间:
2020-04-07 22:44:50
阅读次数:
96
从NFA到DFA的转换 一、子集构造法 1.定义 2.在NFA状态集上的操作 3.代码 状态转换表的构建 ε closure(T)的计算 4.输入输出及相关要求 二、示例 1.演算步骤 1.首确定起始状态,依据ε的闭包确定,并填入状态表 2.依据字母表的字母和ε的闭包确定其他状态,并填入状态表 3. ...
分类:
其他好文 时间:
2020-03-31 10:51:14
阅读次数:
91
nand2tetris 难度:★★★★☆ 推荐:★★★★★ nand2tetris 项目有一本书叫《计算机系统要素》,也有英语的视频教程。如果英语不好的可以看书,内容是一样的。 这本书主要讲解了计算机原理(1 6章)、编译原理(7 11章)、操作系统相关知识(12章)。不要看内容这么多,其实这本书的 ...
分类:
其他好文 时间:
2020-03-29 01:27:52
阅读次数:
116
基于MYT算法从正则表达式构造NFA 基本思想 : 性质 : 对于加括号的正则式(s),使用N(s)本身作为它的NFA 一、构造识别ε和字母表中一个符号的NFA 1.特点 仅一个接受状态,它没有向外的转换 2.示例 二、构造识别主算符为选择正则式的NFA 1.特点 仅一个接受状态,它没有向外的转换 ...
分类:
其他好文 时间:
2020-03-24 11:05:40
阅读次数:
235
基本概念 编译:将 高级语言 翻译成 汇编语言或机器语言 的过程 预处理器:聚合不同文件中的源程序;将宏转换为原始语句; 加载器:修改可重定位地址;绝对地址 = 起始位置 + 相对地址; 连接器:连接多个可重定位的机器代码文件;解决外部内存地址问题; 编译系统结构 词法分析器 扫描源程序,识别各个单 ...
分类:
其他好文 时间:
2020-03-14 19:59:58
阅读次数:
48
生成中间代码: 两种中间表示形式: 树形结构:语法分析树、抽象语法树 抽象语法树的构造: 可以为任意的构造创建抽象语法树,每个构造用一个结点表示,其子结点代表此构造中具有语义含义的组成部分 在语法分析过程中,将创建抽象语法树的结点来表示有意义的程序构造,随着分析的进行,信息以与结点相关的属性的形式被 ...
分类:
其他好文 时间:
2020-03-11 12:28:11
阅读次数:
78