Wudy 发表于 2012-3-18 17:56:46

类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平台发布(可能已经是虚拟机了)。欢迎有兴趣的人和我联系合作开发。

ZephRay 发表于 2012-3-19 05:02:24

我有兴趣。我是论坛里ourcalc开源计算器的开发者,希望可以和你合作。我的联系方式:[email protected]

nigary 发表于 2012-3-19 20:43:12

我是来虚心学习的,楼主行行好?[email protected]

wtof1996 发表于 2012-3-19 21:46:33

很不错,强烈支持
至少指针什么的要有吧,还有位运算

wtof1996 发表于 2012-3-19 21:47:21

还有,标准的c应该有个return 0
虽然win下可能没事

Wudy 发表于 2012-3-19 22:14:39

指针应该会实现的,但是可能比较晚。
至于struct,typedef之类,超出我的能力范围。

hcz 发表于 2012-3-20 21:52:23

本帖最后由 hcz 于 2012-3-24 16:44 编辑

建议简化语法(尤其是禁用降低代码可读性的符号和结构)
可以考虑类型动态化(类似Variant)甚至原生高精度计算

或者另一个方向就是真正做一个c的实现,甚至让它可以执行自己



另外,曾经有一个想法,做 类Basic 到 BrainF*** 的编译器。。不过目前构思出来的寻址方法效率实在太低,至于浮点运算、集合之类的实在没思路。

wtof1996 发表于 2012-3-24 15:30:21

还有……stdio希望不会太废,至少fprintf,fscanf给个

diameter 发表于 2012-3-24 18:30:07

流系统就不用想了..把SDK里面能用的函数加上就行了

diameter 发表于 2012-3-24 18:32:00

另外就是报错尽量弄的人性化一点..用过gcc的都知道它给的提示基本不是给人看的..

Wudy 发表于 2012-3-24 22:35:03

错误信息要弄得好非常难,而且计算器屏幕不大。现在是一出错马上停止运行,显示错误信息和错误所在行(非行号)。

Wudy 发表于 2012-3-24 22:43:48

字节码,虚拟机都完成大部分了!
解释器在小内存条件下不好,malical连递归算10的阶乘都栈溢出。

FreeBlues 发表于 2012-5-2 15:58:11

很不错,推荐一本不错的关于编译开发的书给楼主,《编程语言实现模式》,作者是开源源解析器ANTLR的作者Terence Parr,书中提出31种通用的语言设计模式,比一般的讲编译原理的书要容易读懂,每种模式都有代码示例,即使没有计算机专业背景也能看懂,可以做个参考。

http://ec4.images-amazon.com/images/I/51e8yOO7j9L._SL500_AA300_.jpg
页: [1]
查看完整版本: 类C语言解释器/编译器