![](https://img-blog.csdnimg.cn/direct/88d278ed56a34120ad52e4245928c192.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
编译原理
编译原理相关笔记
书忆江南
https://github.com/hackeryang
展开
-
编译型语言后端原理笔记
一、编译器的后端技术1. 编译器的前端技术,重点是让编译器能够读懂程序,无结构的代码文本经过前端的处理以后,就变成了Token、AST和语义属性、符号表等结构化的信息,基于这些信息,可以实现简单的脚本解释器。但很多情况下,需要继续把程序编译成机器能读懂的代码,并高效运行。这时就面临了三个问题:(1)必须了解计算机运行一个程序的原理(也就是运行期机制),只有这样才知道如何生成这样的程序。(2)要能利用前端生成的AST和属性信息,将其正确翻译成目标代码。(3)需要对程序做尽可能多的优化,比如让程原创 2020-10-17 21:06:32 · 3118 阅读 · 2 评论 -
脚本语言编译前端算法笔记
一、NFA和DFA:正则表达式处理1. 在词法分析阶段,可以手工构造有限自动机(FSA,或 FSM)实现词法解析,过程比较简单。现在不需要再手工构造词法分析器,而是直接用正则表达式解析词法:(1)首先,把正则表达式翻译成非确定的有限自动机(Nondeterministic Finite Automaton,NFA)。(2)其次,基于NFA处理字符串,看看它有什么特点。(3)然后,把非确定的有限自动机转换成确定的有限自动机(Deterministic Finite Automaton,DFA)原创 2020-08-12 22:46:49 · 1926 阅读 · 0 评论 -
脚本语言编译前端原理笔记
一、编译器的前端技术1. 编译原理中的“前端(Front End)”指的是编译器对程序代码的分析和理解过程。它通常只跟语言的语法有关,跟目标机器无关。而与之对应的“后端(Back End)”则是生成目标代码的过程,跟目标机器有关。编译过程如下所示:可以看到,编译器的“前端”技术分为词法分析、语法分析和语义分析三个部分。通常,编译器的第一项工作叫做词法分析(Lexical Analysis)。就像阅读文章一样,文章是由一个个单词组成的,程序处理也一样,只不过这里不叫单词而是叫做“词法记号”即Tok原创 2020-07-17 23:29:27 · 2250 阅读 · 1 评论