类C语言解释器/编译器
本帖最后由 Wudy 于 2012-3-18 18:18 编辑Malical只是一个开始......而不是一个结束
diameter 发表于 2011-7-11 21:00
各种计算器内置的basic-like语言又慢又烂让我难以忍受,
于是我转向了malical。
然而malical也存在一些难以弥补的缺陷,
于是我开始苦学编译原理,梦想着C语言解释器/编译器。
现在WINDOS平台的类C语言解释器已经接近完成(标准C开发),它可以直接解释如下代码(虽然还只支持一种int类型和一维数组...)/* example.c
*this is a example, it's no error.
*this also test C-Style Commention
/*--------------------------------------------------------*/
/* A program to perform Euclid's
Algorithm to compute gcd. */
int gcd( int u, int v )
{
if (v == 0)
return u;
else
return gcd(v, u-u/v*v);
/* u-u/v*v== u mod v */
}
// main function, this is also test C++ Style Commention
void main(void)
{
int x;
int y;
read(x);
read(y);
write(gcd(x, y));
}这种语言的名字还没想好。。有好名字的跟帖..
它的语法跟C一样,但以后可能会改变一些语法以适应手持式设备。。有好提议的跟帖..
它的定位是一种小巧,轻便,便于在手持式设备上编写、解释/编译的语言。
最终它应该是生成目标代码,在虚拟机中运行,不过现在还是解释型的。
第一个版本将在9860平台发布(可能已经是虚拟机了)。欢迎有兴趣的人和我联系合作开发。 我有兴趣。我是论坛里ourcalc开源计算器的开发者,希望可以和你合作。我的联系方式:[email protected] 我是来虚心学习的,楼主行行好?[email protected] 很不错,强烈支持
至少指针什么的要有吧,还有位运算 还有,标准的c应该有个return 0
虽然win下可能没事 指针应该会实现的,但是可能比较晚。
至于struct,typedef之类,超出我的能力范围。 本帖最后由 hcz 于 2012-3-24 16:44 编辑
建议简化语法(尤其是禁用降低代码可读性的符号和结构)
可以考虑类型动态化(类似Variant)甚至原生高精度计算
或者另一个方向就是真正做一个c的实现,甚至让它可以执行自己
另外,曾经有一个想法,做 类Basic 到 BrainF*** 的编译器。。不过目前构思出来的寻址方法效率实在太低,至于浮点运算、集合之类的实在没思路。 还有……stdio希望不会太废,至少fprintf,fscanf给个 流系统就不用想了..把SDK里面能用的函数加上就行了 另外就是报错尽量弄的人性化一点..用过gcc的都知道它给的提示基本不是给人看的.. 错误信息要弄得好非常难,而且计算器屏幕不大。现在是一出错马上停止运行,显示错误信息和错误所在行(非行号)。 字节码,虚拟机都完成大部分了!
解释器在小内存条件下不好,malical连递归算10的阶乘都栈溢出。 很不错,推荐一本不错的关于编译开发的书给楼主,《编程语言实现模式》,作者是开源源解析器ANTLR的作者Terence Parr,书中提出31种通用的语言设计模式,比一般的讲编译原理的书要容易读懂,每种模式都有代码示例,即使没有计算机专业背景也能看懂,可以做个参考。
http://ec4.images-amazon.com/images/I/51e8yOO7j9L._SL500_AA300_.jpg
页:
[1]