免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 18353 | 回复: 15

自己写了个小解释器 [复制链接]

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015元宵节徽章
日期:2015-03-06 15:52:30
发表于 2015-01-05 13:33 |显示全部楼层

语法很简单,类似C,表达式中运算的优先级由于是边写边设计,和C不太一样。
目前支持:

1. 整数算术运算:
加 减 乘 除 取模 指数

2. 关系运算符
<  <=  >  >=  ==  !=

3. 逻辑运算符
&&  ||  !

4. 赋值 =

5. 只支持单字符的变量a-z A-Z

6. 循环分支结构 while , if-then-else

7. 很简单的打印操作 echo

目前还没有支持函数,只有输出操作没有输入操作,没有字符串操作,也不支持复杂的数据结构,也没有注释。

虽然简单,但是编写过程感觉理解了不少东西,下面是这个解释器能运行的一个程序,打印1000以内的质数。


  1. n = 3;

  2. while ( n < 1000 ) {

  3.     f = 0;
  4.     m = 2;

  5.     while ( m < n ) {

  6.          if (n%m == 0) f = 1;

  7.          m = m+1;

  8.     }

  9.     if ( f == 0 ) echo n;

  10.     n = n+1;

  11. }
复制代码
n = n+1;

}

评分

参与人数 1可用积分 +30 收起 理由
gaokeke123 + 30

查看全部评分

论坛徽章:
2
摩羯座
日期:2013-10-10 14:29:04天蝎座
日期:2014-01-03 09:14:49
发表于 2015-01-12 10:42 |显示全部楼层
是打算把源代码放出来么?

论坛徽章:
2
巳蛇
日期:2014-10-26 22:38:12天蝎座
日期:2016-01-08 09:25:17
发表于 2015-01-15 15:48 |显示全部楼层
强烈建议楼主放源码来学习学习

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015元宵节徽章
日期:2015-03-06 15:52:30
发表于 2015-02-08 09:20 |显示全部楼层
回复 3# leiing



不好意思啊,好久没上ChinaUnix了。本来是想再花时间进一步添些功能的,再和大家分享。
后来一直也没时间。代码写的比较烂,我本来没学过编译原理,
自己看了一点相关资料,没完全搞明白就开始写。献丑了啊。

sim.7z (3.15 KB, 下载次数: 107)

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015元宵节徽章
日期:2015-03-06 15:52:30
发表于 2015-02-08 09:32 |显示全部楼层
回复 4# neodreamerus


这个压缩包里a.c b.c等等不是C程序
sim.c是解释器源码,直接make编译

./sim a.c 运行a.c

upload.7z (3.66 KB, 下载次数: 67)

论坛徽章:
0
发表于 2015-04-26 12:53 |显示全部楼层
我是火星籍的。前来地球参观

论坛徽章:
0
发表于 2015-07-11 20:58 |显示全部楼层
呵呵,以前也曾经写过一个“解析器”,实现了
四则运算符: (),+,-,*,/,\,%,^,!            (^是乘方, !是阶乘)
  位运算符(逻辑运算符): ~,&,||,|,<<,>>
  逻辑判断符: >,>=,=,<=,<,<>
  函数, 自定义函数, iif(),函数可以是0~10个参数,支持函数同名参数个数不同的“重载”
  支持数据类型:整数,浮点数,日期类型
支持 类似php语法的,变量定义(变量也局部变量和全局变量),if, for, switch,

最初也只是 想把 四则运算符 计算器做完善。后来慢慢增加了乘方,阶乘,位运算,逻辑判断,函数,自定义函数等以及最后的仿php语言的小型脚本解析。
因工作原因,这个脚本解释器没继续搞下去,当初也没接触 编译原理。纯粹凭感觉解析脚本。

论坛徽章:
0
发表于 2015-08-11 22:19 |显示全部楼层
进来看看了。

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-08-25 06:20:00
发表于 2015-08-24 15:58 |显示全部楼层
感觉很高大上的样子。

论坛徽章:
0
发表于 2015-08-29 14:13 |显示全部楼层
很好。。支持。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP