cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 5263|回复: 12

[聊天] 类C语言解释器/编译器

[复制链接]
发表于 2012-3-18 17:56:46 | 显示全部楼层 |阅读模式
本帖最后由 Wudy 于 2012-3-18 18:18 编辑
Malical只是一个开始......而不是一个结束
diameter 发表于 2011-7-11 21:00



各种计算器内置的basic-like语言又慢又烂让我难以忍受,
于是我转向了malical。
然而malical也存在一些难以弥补的缺陷,
于是我开始苦学编译原理,梦想着C语言解释器/编译器。

现在WINDOS平台的类C语言解释器已经接近完成(标准C开发),它可以直接解释如下代码(虽然还只支持一种int类型和一维数组...)
  1. /* example.c
  2. *  this is a example, it's no error.
  3. *  this also test C-Style Commention
  4. /*--------------------------------------------------------*/

  5. /* A program to perform Euclid's
  6.    Algorithm to compute gcd. */
  7. int gcd( int u, int v )
  8. {
  9.     if (v == 0)
  10.         return u;
  11.     else
  12.         return gcd(v, u-u/v*v);
  13.         /* u-u/v*v  == u mod v */
  14. }

  15. // main function, this is also test C++ Style Commention
  16. void main(void)
  17. {
  18.     int x;
  19.     int y;
  20.     read(x);
  21.     read(y);
  22.     write(gcd(x, y));
  23. }
复制代码
这种语言的名字还没想好。。有好名字的跟帖..
它的语法跟C一样,但以后可能会改变一些语法以适应手持式设备。。有好提议的跟帖..
它的定位是一种小巧,轻便,便于在手持式设备上编写、解释/编译的语言。


最终它应该是生成目标代码,在虚拟机中运行,不过现在还是解释型的。
第一个版本将在9860平台发布(可能已经是虚拟机了)。欢迎有兴趣的人和我联系合作开发。
发表于 2012-3-19 05:02:24 | 显示全部楼层
我有兴趣。我是论坛里ourcalc开源计算器的开发者,希望可以和你合作。我的联系方式:[email protected]
发表于 2012-3-19 20:43:12 | 显示全部楼层
我是来虚心学习的,楼主行行好?[email protected]
发表于 2012-3-19 21:46:33 | 显示全部楼层
很不错,强烈支持
至少指针什么的要有吧,还有位运算
发表于 2012-3-19 21:47:21 | 显示全部楼层
还有,标准的c应该有个return 0
虽然win下可能没事
 楼主| 发表于 2012-3-19 22:14:39 | 显示全部楼层
指针应该会实现的,但是可能比较晚。
至于struct,typedef之类,超出我的能力范围。
发表于 2012-3-20 21:52:23 | 显示全部楼层
本帖最后由 hcz 于 2012-3-24 16:44 编辑

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

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



另外,曾经有一个想法,做 类Basic 到 BrainF*** 的编译器。。不过目前构思出来的寻址方法效率实在太低,至于浮点运算、集合之类的实在没思路。
发表于 2012-3-24 15:30:21 | 显示全部楼层
还有……stdio希望不会太废,至少fprintf,fscanf给个
发表于 2012-3-24 18:30:07 | 显示全部楼层
流系统就不用想了..把SDK里面能用的函数加上就行了
发表于 2012-3-24 18:32:00 | 显示全部楼层
另外就是报错尽量弄的人性化一点..用过gcc的都知道它给的提示基本不是给人看的..
 楼主| 发表于 2012-3-24 22:35:03 | 显示全部楼层
错误信息要弄得好非常难,而且计算器屏幕不大。现在是一出错马上停止运行,显示错误信息和错误所在行(非行号)。
 楼主| 发表于 2012-3-24 22:43:48 | 显示全部楼层
字节码,虚拟机都完成大部分了!
解释器在小内存条件下不好,malical连递归算10的阶乘都栈溢出。
发表于 2012-5-2 15:58:11 | 显示全部楼层
很不错,推荐一本不错的关于编译开发的书给楼主,《编程语言实现模式》,作者是开源源解析器ANTLR的作者Terence Parr,书中提出31种通用的语言设计模式,比一般的讲编译原理的书要容易读懂,每种模式都有代码示例,即使没有计算机专业背景也能看懂,可以做个参考。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cnCalc计算器论坛

GMT+8, 2024-3-29 06:53 , Processed in 0.060438 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表