编译器开发
尝试着做一个编译器,记录一些东西
「已注销」
这个作者很懒,什么都没留下…
展开
-
编译器开发(七)第二天代码
见github(往期有),主要是改了一下框架,以后代码全部填在框架里(没用电脑,所以我还没填进去)。原创 2022-09-12 11:34:27 · 61 阅读 · 1 评论 -
编译器开发(六)看看最终理想的语法树
大家应该注意到之前的代码不完整主要还是判断完指令后没有做处理,那是因为语法树还没定义,这期看看我们准备做个怎样的语法树。首先,目标的语法树是个列表,里面包含了很多项,都是列表。每一项的格式为:[<op>,<参数列表>]很简单吧,比如对于if:[if,<条件表达式,str>,<操作,list>]对于del:[del,<名称,str>]那么还有一个问题就是关于列表的了。处理列表,其实就是链表,链表的新增与删除都很简单,mal原创 2022-09-11 15:47:49 · 381 阅读 · 0 评论 -
编译器开发(五)py版代码
是2.py那个文件,就是那个不完整版的c文件的Python版,同样是不完整的。原创 2022-09-10 15:31:33 · 110 阅读 · 0 评论 -
编译器开发(四)第一天代码
https://github.com/MicroNetBinary/-时间紧迫,没写多少。原创 2022-09-08 19:32:51 · 57 阅读 · 0 评论 -
编译器开发(三)语法分析器实现流程
根据前面讲的语法格式,做个语法分析器。首先是看看i开头的语句:if如果该字符为i: 如果下一个为f: 如果跳过空格符后为(: 如果在下面找到)且没出现(: (与)之间是条件 如果跳过空格符为{: 计数=1 字符=false 循环 当计数不为0:原创 2022-09-07 19:42:19 · 101 阅读 · 0 评论 -
编译器开发(二)关于编码问题
C语言的char型变量只占了1字节,而utf8占了2字节,显然C语言无法直接识别utf8(不要反驳我,我知道宽字符可行,但我不用最新标准),不难发现short型其实是二字节的,那么读取文件时只要写进short数组,识别数字大小就好啦,不过问题是关于字符在文件中的编码是啥呢?我们做个实验,先用文本编辑器输入一个字符,在用2进制编辑器打开看看就知道啦:a-61hz-7ahA-41hZ-5ah以上就是用MT管理器在安卓系统实验的结果,跟多内容需要自己尝试,毕竟各系统还是有区别的。那么,原创 2022-09-07 19:28:13 · 170 阅读 · 0 评论 -
编译器开发(一)先看看语法
语法说明原创 2022-09-06 22:09:13 · 127 阅读 · 0 评论