- 博客(11)
- 收藏
- 关注
原创 生成中间代码 | 从零实现一门语言
本节开始中间代码的生成,同时处理上几节中遗留的作用域的问题。在代码实现里,我们在语义解析的各个动作中去插入相应的中间代码实现,生成的中间代码以函数为主体存储在变量符号表中。如果后续支持代码优化,使用优化器对中间代码进行处理,再生成具体的汇编代码。
2023-01-09 11:34:50 360
原创 函数的帧栈调用过程 | 从零实现一门语言
本节梳理计算机系统函数调用过程和汇编的一些基本内容,在实现自定义语言的中间代码后,就需要将其翻译成计算机底层能识别的汇编代码了。所以中间代码设计的前提是,了解汇编的相关指令和调用过程。
2022-12-15 19:40:49 120
原创 文法及语义代码实现 | 从零实现一门语言
本节主要内容是通过编码实现上几节中定义的文法,同时也包含部分语义的分析。在文法中我们分析了源程序的基本结构由变量和函数组成,称为符号。符号表用于保存上下文中定义的符号。
2022-12-13 14:38:52 256
原创 构建文法(下)| 从零实现一门语言
当文法判定程序每读入一个操作符,比如为 “+” 时,就按照对应的文法规则匹配,第一次先判定是否为 “=”,不匹配继续往后,直到操作符 "+" 时,我们就知道当前操作符的优先级了。所以,需要指定某个表达式中操作符的优先级,比如:* 和 \ 的优先级高于 + 和 -,在递归表达式时,应该优先计算高优先级的表达式。为了方便后续的计算过程,我们需要将整个递归过程的操作符和操作数记录下来,然后从高优先级的计算,保留到临时变量中,然后再计算下一个优先级较低的,依次重复操作,直到最终递归算出最终结果。
2022-12-09 17:33:34 255
原创 构建文法(上)| 从零实现一门语言
我们设计的编程语言文法符合主流的高级语言如C,但目前只包含基础的变量及函数部分,高阶的面向对象设计暂时不考虑。在开始设计一门编程语言文法之前,需要先了解其他语言的组织结构。通过对现有语言组织结构的分析,学习其优秀的设计思想的同时,结合自定义的独特语法,可以提高我们的设计效率。
2022-12-08 15:14:17 199
原创 从自然语言认识文法 | 从零实现一门语言
本节开始文法的内容,文法在编译器里也是比较复杂的一部分。一般编译原理的文法部分会比较晦涩,但是想要构建一个编译器,却不得不理解并使用它。自然语言的结构 高级编程语言的表达方式更贴近人类理解的范畴,更符合书面表达的形式。书面语言是遵从一定的语法结构的,高级编程语言的表达形式最初也是借鉴自然语言,方便理解。 先从自然语言分析开始,以此推导高级编程语言的文法,这里选取书面语的句子作为参考,编程语言最早也是参考英语的用法。
2022-12-07 11:09:42 116
原创 一个hello world的诞生 | 从零实现一门语言
hello world,许多人写的第一行代码,你是否也好奇它背后的原理,一些字符的组合为何能输出想要的结果,像不像魔法?你也许是会写数十种语言的“hello world”高手,但我想说并不是这一领域的巅峰,因为没有写出自己的"hello world"。
2022-10-31 19:33:16 120
原创 分布式数据库原理解析
一,分布式数据库的简单了解我们目前使用的数据库中间件UDAL,据文档描述,底层使用的是阿里的开源Cobar,网上了解Cobar社区几年前早已经不更新了,现在比较火热的是Mycat中间件。UDAL与Mycat类似,此外根据自身业务需求,增加了全局序列,切片索引,日志,web统一管理界面等。1,核心问题—事务分布式数据库的核心问题的是事务的管理,Cobar是不支持分布式事务的,Mycat也只支持弱分布式
2017-12-09 14:26:36 15053 3
原创 开源数据处理框架Spark - 从入门到放弃
本节开始搭建我们的Spark开发环境了,编写一些简单的函数,打包成jar文件,然后放入到Spark环境中运行。根据上节的情况,接下来的内容力求更通俗易懂,至少看起不那么晦涩。本篇主要是安装步骤,不涉及原理讲解,但是开源项目的安装部署往往也是难点。在此之前,先闲扯一点题外话。这次的标题是入门到放弃,也是很多初学编程,或者想学习开源项目的同学所遇到的问题。刚开始很好奇并且信心满满,可是越往后越发现过程很
2017-12-05 22:20:05 4912 5
原创 数据分析处理开源框架杂谈
Spark?英文是电火花、火星,可以做动词,发出火星··· 停,干哈,英语知识讲座?你好,再见。少侠留步,这不百度说的嘛,我再看看,找到了: “Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架~”·····说人话?!咳
2017-12-02 15:19:41 1020
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人