随笔分类 -  实现一门新的语言

Parser的设计--上(6)
摘要:. 阅读全文
posted @ 2016-08-23 16:22 内脏坏了 阅读(292) 评论(0) 推荐(0)
Lexer的设计--下(5)
摘要:一个礼拜之后我终于从成都回来了, 从今天开始更新会恢复... 一点小的改进 写 的时候距离我上一次写已经一个礼拜了, 所以我回顾了一下之前的代码, 发现还是有瑕疵. 比如考虑到一个较短的程序, 短到小于BUFFERSIZE(256), 这时其实我的程序是有错的, 因为此时 中的内容有一部分是未定义的 阅读全文
posted @ 2016-08-21 23:10 内脏坏了 阅读(555) 评论(0) 推荐(0)
Lexer的设计--中(4)
摘要:设计一个小型的内存池以及链表 上一节撸到万事俱备只欠真正的 , 但是 的作用是将源代码转化为 流, 用什么保存 ? 这就涉及到我们要接触的第一个数据结构—链表, 虽然标准库中很多容器都可以承担链表的任务, 但是我说过 出于锻炼原因, 我会尽量不使用stl中的容器 , 所以我决定自己撸一个链表出来, 阅读全文
posted @ 2016-08-13 13:32 内脏坏了 阅读(590) 评论(1) 推荐(2)
Lexer的设计--上(3)
摘要:lexer的构造函数 有了上一节 做铺垫, 可以开始设计 , 首先应该想到的是, 源代码是以 文件流的格式 传到编译器中的, 所以作为编译器的前段的第一个阶段, 必须负责处理输入的文件流. 然后这里有一点要注意的是, 我设计了一个 专门用来缓存读取的 , 这么做的原因有如下几个 : 1. 考虑到读取 阅读全文
posted @ 2016-08-11 22:50 内脏坏了 阅读(1544) 评论(0) 推荐(0)
Token的设计(2)
摘要:词法分析 Token的几个种类 前端的第一步就是词法分析, 这个过程通俗来讲就是将源代码转化为一串 . 所以首先应该想到的是, 到底该有哪几种类型的 ? 关于这个问题我已经想过了, 该语言将会有如下几种 . 你可以看到, 该语言其实只有三种基本类型, 我个人不打算支持 因为我感觉 底层实现就是整形, 阅读全文
posted @ 2016-08-11 10:48 内脏坏了 阅读(1459) 评论(0) 推荐(2)
实现一门新的语言--背景(1)
摘要:背景 两个月前自学了编译原理, 在草草学习了前端之后实现了一门不能算语言的语言, 一直想对它进行维护, 但是无奈源代码是用java写的, 就我目前的状态而言对java完全提不起兴趣, 这段时间学习C++, 在实现完正则表达式之后几乎找不到high点, 于是决定用C++重新实现一门语言. 为了增加难度 阅读全文
posted @ 2016-08-10 22:14 内脏坏了 阅读(677) 评论(1) 推荐(1)