- 积分
- 40165
- 好友
- 记录
- 主题
- 帖子
- 听众
- 收听
|
前段时间有个项目,因为其中需要使用脚本做模板数据的计算,因此让我对脚本引擎产生了兴趣,于是上网到处寻找资料,于是找到了《龙书》、CodeDom。于是又找了半天,找不到开源的脚本引擎源码,脑袋一热,干脆自己写一个,于是就有了这个用纯c#(非CodeDom)编写的脚本引擎。编写过程中收获良多,目前还不是很完善,效率也不高,仅供学习用,后面会上传源代码。 下面说明一下:语法参考Javascript,基本的javascript语法都已实现,但是有些内建对象没实现,例如 Date,数据类型支持 数值,字符串(考虑到在代码中执行代码,所以字符串的定义用 '字符串' 而非 "字符串"),对象,布尔值,数组。语法方面基本参考Javascript就行了。在编写这个东西的时候顺带学习了下CodeDom(感叹枉费我弄C#也4年多了,现在才知道这东西,看来水还是太深了),在考虑语法分析的时候就参考了CodeDom的对象结构,如下:
命名空间定义:
ScriptEngin.Code :词法分析器
ScriptEngin.CodeDom:编译后的解释模型,就是上图的结构(都说了是参考CodeDom)
ScriptEngin.Exceptions:自定义的异常类
ScriptEngin.Parser:语法分析器
ScriptEngin.RunTime:运行时解释执行器
ScriptEngin.RunTimeType:处理c#对象和脚本对象的映射(还未完善)
下面贴一段调用代码:
目前未做大量测试,可能会存在些许Bug,如果大家发现了请告诉我,谢谢。
源码下载:[post=1]
[2012-09-26]脚本引擎Beta(V1.0).zip
(343.39 KB, 下载次数: 117)
[/post]
|
|