0%

前情提要

对我校编译原理没有实验课,没有课程设计,就是纯纯的理论很不爽,在与老师沟通后开始尝试写一个用于教学目的的编译器,在此之前我已经实现了正则表达式的解析和LL文法的分析,对于实现一个编译器很有兴趣。本着跟计算机打交道这么多年,连一个编译器都没摸透过的遗憾心理开始了编译器速通计划。

先花了一个星期确定技术栈上,最终我们敲定了先使用lex+yacc,然后借助llvm的框架快速搭建一个以llvm ir为目标代码的编译器。语言选定为C98的一个子集,去除了一些无关紧要的特性,保留了结构体等比较重要的特性。

然后是漫长的看各种手册实现的过程,在不断的思考-实现-碰壁循环中最终花费大约两个星期实现了一个最简单的编译器,但是相比原计划还是削减了一些重要的特性,比如结构体和函数指针。最终代码量总和在1k行左右,编译中的各个阶段均能独立运行输出调试结果。拿libreoj上的两道题跑了两个简单的测试,能过应该就没问题了。

开源以后再说吧

Read more »

考前一天总算肝出来了(),感觉还是蛮有意思的。

数据库的基本概念

  1. 描述事物的符号记录称为数据

    数据和语义是不可分的。

  2. 数据库长期储存在计算机内、有组织的、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享

Read more »

在日常的使用ArchLinux中,因为Dophin下面那个终端有时候会莫名其妙不跟踪好上面的路径,一次rm -rf .直接把/home/删一大半…包括原本Gridea的文件。巧的是刚好没备份(开学买的4T硬盘干嘛用去了…)。于是原博客就顺理成章的变成了一个不可维护的状态…

于是接下来用Hexo写作了,还请各位多多指教。

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.