c语言lr分析器的设计与实现_手动设计并实现一门编程语言系列:序

bbfd77e867a3ee66b1375a3343b48f8c.png

前言:

自己设计并实现一门语言这个想法从去年开始就有了,但碍于去年下半年在搞操作系统,所以就一直耽搁了,然后今年寒假感觉有时间就开搞了。

俗话说万事开头难,虽说去年就学完了编译原理,但记得不多了;而且理论是一回事,真要实践起来就是另一回事了,感觉写起来完全就是没有头绪,所以就买了本郑钢写的《自制编程语言 基于c语言》,因为去年写操作系统的时候,就看了他的书,感觉写的挺详实的,所以这次就也用了他的书,打算和上次一样,准备按照书里面的一步一步来,但效果,说实话一言难尽,感觉这本书没有他操作系统那本写的好,或者说章节安排的不太合理,经常会出现在这一章节写的东西,要到后面好几小节乃至大的章节后才会用到,然后用的时候基本忘得差不多了,但其实归根到底,还是因为实现的思路不是自己想出来的,所以写得总有一种隔阂感,也就是不自然,因此我在书看到一半左右的时候,毅然决然准备自己开干,准备设计并实现自己的编程语言。


项目简介:QS(QinScript)语言

因为是自己设计的第一个编程语言,所以在名字上考虑了好久,最后取名QinScript,至于为什么起这个名字,原因在项目的http://READ.ME中有写,但做了一点简单的编码处理。

项目地址:

https://github.com/Yaser-wyx/QinScriptgithub.com​github.com

由于本人水平以及时间有限,所以这门语言也比较简单,大体来说这是一门面向过程的脚本语言,但又有些对象的影子,所以就直接说是脚本语言吧(反正说脚本语言总没错的)。

现在项目,前两阶段已经完成,即TS版已经全部完成,接下来今年的工作主要是把第一季的系列文章写完,可能同时会写一部分的C++版,剩下的明年再说。

感兴趣的可以自己把项目clone下来玩玩,如果遇到BUG还请在issues里面提出来,毕竟测试并不完善。

至于语言的具体介绍,这里就不再赘述了,http://READ.ME里面已经写的足够详细了,这个系列也不是为了介绍语言而准备的,而是为了介绍语言的具体实现细节。

QS这个脚本语言的实现准备分为两大部分,第一部分包含:词法分析器、语法分析器以及解释器;第二部分为虚拟机。今年只准备完成第一部分的实现,第二部分因为考研的缘故,没有时间写了。

系列文章安排

该系列文章准备分为两季,第一季包含对词法分析、语法分析以及解释器的实现,第二季主要是对虚拟机的实现,大体的章节目录安排如下:

第一季

  • 词法分析器实现:从Code到Token
  • 语法分析器(零):QS的语法设计
  • 语法分析器(上):使用LR(1)对语法文件解析
  • 语法分析器(下):构建AST
  • 解释器实现:对AST的遍历执行

第二季

  • 虚拟机(零):字节码的设计
  • 虚拟机(上):字节码执行器
  • 虚拟机(中):JIT的实现
  • 虚拟机(下):GC的实现

PS

PS1:第二季今年不写,今年只写第一季内容。

PS2:由于要准备考研,所以时间不会太充裕,更新速度也不会快,还请耐心等待,等不及的可以看源码,源码中注释很全面,核心代码基本每行都有注释。

PS3:本人水平有限,文章中肯定会有错误,还请包容和指正。

PS4:上面的章节目录只是大概的安排,可能会视具体情况有所改动,如有改动我会第一时间更新。


新的打算:

仔细想了一下,因为现在实现的TS版毕竟是实验版本,有些地方的实现我觉得并不好(还有些特性觉得并不好),所以不打算为这一版代码进行详细的介绍了,后期也不进行维护了;准备等考研后,用C++实现一个新的版本,因此今年是不会写了。

说实话还没开始就要暂停了,还有点过意不去,在此说一声抱歉。。。。

另外明年应该会上线我的个人blog(这个Blog去年就设计好了,写了一半就又有别的事情了,然后就一直拖到现在,也不知我的拖延症啥时候能治好。。。),到时候应该会在blog上更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值