免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5198 | 回复: 9
打印 上一主题 下一主题

[讨论]如何自己实现一个类C脚本语言编译器 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-02-08 14:49 |只看该作者 |倒序浏览
最近由于工作需要,在研究使用lex和yacc,最终需要完成一个类C的脚本编译器(或者叫做解释执行器)。初步设想可以完成以下功能:
if (a==0)
{
    SENDMSG();   /*预先封装好的函数*/
}
else
{
    WAITMSG();   /*预先封装好的函数*/
}
利用lex和yacc实现语法分析应该没有问题,但是不知道在执行时,对于if和else应该如何处理呢?

不知道是否有类似的开源项目可以参考啊??

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
2 [报告]
发表于 2009-02-08 15:42 |只看该作者
伪码
....
IFELSE:IF (   判断句   ) 语句 | IF (   判断句   ) 语句 ELSE 语句

论坛徽章:
0
3 [报告]
发表于 2009-02-08 16:03 |只看该作者
不要问我很久以前从哪本书上抄的,那书的作者在MS写VC的paser。
补充一下,我只是给个简单的例子,这个例子足够容易理解,也足够容易扩充。

[ 本帖最后由 prolj 于 2009-2-8 23:35 编辑 ]

lc.zip

18.14 KB, 下载次数: 133

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
4 [报告]
发表于 2009-02-08 22:14 |只看该作者
我以上的不行,IF-LESE应该可以嵌套.
ELSE悬挂问题比较郁闷.
伪码大致应该如下:
st:A|B;
A:st2|if ( X ) B else B;
B:if ( X ) st | if ( X ) A else B;
...

论坛徽章:
0
5 [报告]
发表于 2009-02-09 15:45 |只看该作者
我实现过一个完整的解释器,不过词法分析和语法分析是手工写的,自己生成的语法树.
词法分析和语法分析这二部分倒不难,主要是个体力活.

论坛徽章:
0
6 [报告]
发表于 2009-02-09 16:09 |只看该作者
对于C语言看LCC源码比较合适,规模小,个把月就能掌握,或者看GCC早期版本的源码也可以!我曾经上传过一个,忘记在哪了!

论坛徽章:
223
2022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:32操作系统版块每日发帖之星
日期:2016-05-10 19:22:58操作系统版块每日发帖之星
日期:2016-02-18 06:20:00操作系统版块每日发帖之星
日期:2016-03-01 06:20:00操作系统版块每日发帖之星
日期:2016-03-02 06:20:0015-16赛季CBA联赛之上海
日期:2019-09-20 12:29:3219周年集字徽章-周
日期:2019-10-01 20:47:4815-16赛季CBA联赛之八一
日期:2020-10-23 18:30:5320周年集字徽章-20	
日期:2020-10-28 14:14:2615-16赛季CBA联赛之广夏
日期:2023-02-25 16:26:26CU十四周年纪念徽章
日期:2023-04-13 12:23:10操作系统版块每日发帖之星
日期:2016-05-10 19:22:58
7 [报告]
发表于 2009-02-18 16:13 |只看该作者
我很疯狂,你们在说什么?我也想参加

论坛徽章:
0
8 [报告]
发表于 2009-03-11 16:58 |只看该作者

论坛徽章:
0
9 [报告]
发表于 2009-03-12 12:42 |只看该作者
这样的例子其实很多了.
当然自己做一个还是很有益处的!

论坛徽章:
0
10 [报告]
发表于 2009-03-12 13:08 |只看该作者
其实我觉得如果你不打算“发明”一种新语言,玩儿这些东西一点意义都没有。
如果做东西需要的话,现有的语言有很多开源的前端 or Parser 可以去用,你保证你写的一定比开源的好么?如果是公司项目的话,还可以去买,据说 Intel MS 都是买的一个小公司的前端。
当然,还有一种情况,那就是,你非常牛 X ,撼动了自动机理论,需要用你的新理论去实现一个 Parser 来小试牛刀,我先拜一拜,PMP 一下下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP