C语言解释器的实现--序(零)
来源:互联网 发布:mac finder搜索快捷键 编辑:程序博客网 时间:2024/06/10 09:04
在写CuteC文本编辑器的同时,为了使之有脚本执行能力。特意实现了一个简易的C语言解释器,所谓的解释器,就是它是解析执行脚本文件的,并不产生可执行的目标代码。它具备了C语言的几乎全部的语法。随着时间的推移,我打算把它作为一个独立的项目来开发了。在这个过程中,自己也学到了不少的知识,所以也打算跟大家分享。写这些东西,虽然是重复发明轮子的事,但也不至于是在浪费生命。程序员嘛,我总觉得应该是要理解我们每天所编译出来的程序是怎么被执行,应该明白我们敲打的每行代码的实际意义。
我打算写一个系列的文章来说明这个解释器的实现过程,其中对于编译原理的理论知识不做太多的讲解,一是不容易提高大家的积极性,二是自己水平有限。所以我觉得大部分从例子出发,讲解一个个目标的实现过程,大家慢慢体会,估计收获会比较大。
通过这一系列的文章,大家应该可以学到以下的知识。
1.更深入的理解C的内部细节,对以后的开发总是有好处的。例如,你能很清楚C语言的类型定义,通过基本的类型为何能够定义出无穷的各种类型。
2.了解表达式的解析,中间代码的产生。这点非常有意思,了解了这点,可以用同样的方法做很多事情,包括设计个计算器,解析复杂的配置文件,在软件中解析命令等等。
3.对编译器有一个感性的认识,虽然离写出编译器还比较遥远,但对于语法解析,预编译,理解的就比较深入了。现在很多软件都有预编译的模块在里面,比如Pro*C, GSoap等等。
4.我们产生的中间代码其实已经非常接近汇编代码,这对理解C的执行过程总是有好处的。
总之,晒晒自己的成果,怎么说也是我亲亲苦苦写出来的,希望大家能找到点可以借鉴的东西吧~代码我还在努力的编写,过一段时间再放出来一个初级的版本。如果工作忙,那估计就要再等一段时间了。
以前我发过上一个版本的解释器,可以在这篇文章中下载,不过我现在已经重写了解释器,所以要看结果可以先下载下来看看:)。
from: http://www.cnblogs.com/linxr/archive/2011/12/16/2290474.html
xrc C语言解释器
http://download.csdn.net/detail/linxren/4204728
解释器 Tiny Compiler
解释器 Tiny Compiler
http://www.oschina.NET/code/snippet_149334_5035
解释器 Tiny Compiler
http://blog.csdn.net/imxiangzi/article/details/50808193
http://www.cnblogs.com/linxr/archive/2011/12/16/2290474.html
- C语言解释器的实现--序(零)
- C语言解释器的实现--序(零)
- BrainFuck 解释器(C语言实现)
- java实现C语言解释器:无参数传递的函数调用的解释和执行
- java实现C语言解释器:while 和 do while 循环的解释和执行
- [数据结构]魔王语言解释 c语言实现
- java开发C语言解释器:实现指针直接读写
- C语言解释器-4 C程序的结构
- cat程序实现原理解释 C语言
- C语言解释器LUA
- xrc C语言解释器
- SylixOS C语言解释器
- 实现一个数字电路的脚本解释器(零)——约定
- 只有550行的TCL解释器--C语言源程序
- 做一个简单的解释器----小话c语言
- C语言解释器-7 一切的基础 Context类
- Picoc C语言解释器的STM32平台移植
- 谁能帮我写个用C语言实现计算机网络零比特流插入
- 大牛分享:那些让你“事半功倍”的移动开发技术
- 获取MAC地址大全
- 常见熟知端口号的记忆技巧
- Qt 自学QGraphicsItem要点 积累
- 机房动环监控系统
- C语言解释器的实现--序(零)
- 将datalist中的选中的数据插入数据库
- 第七周 OJ练习-5
- AngularJS $http
- 一个例子让你了解Java反射机制
- 常用的JS插件介绍:1、qrcode——js二维码生成工具
- '小兔子'的感情人生
- leetcode 374. Guess Number Higher or Lower
- iOS 多线程编程<十三、NSOperation图片下载,SDWebImage底层实现原理>