@会网络的老鼠

涂飞平的博客空间

脚本解析器

9 年前 0

经过两个月的业余时间的不断敲敲打打,慢慢修改,一个类似JavaScript的脚本解析器终于初见端倪了。这个脚本解析器可以解析函数、支持if...else,while,do...while,for等结构,支持简单的对象定义,外部函数导入和对象的导入。支持脚本创建ActiveX对象并调用它,支持数组操作和各种字符串操作,数值操作等。打算2009年元月份公开所有的源代码(等再完善点吧)。
本来想写一个脚本的简单教程(大致与JavaScript一致,但要求的一些结构还是有点区别的)。
下面是一段可以直接执行的脚本示例:

program Ajax; 

var httprequest;

function MyBytesToString(V){
var VInf, BSTR;
VInf = CreateObject("Adodb.Stream");
VInf.Type = 1;
VInf.Mode = 3;
VInf.Open();
VInf.Write(V);
VInf.Position = 0;
VInf.Type = 2;
VInf.Charset = "GB2312";
BSTR = VInf.ReadText;
VInf.Close();
return BSTR;
}

function EventCallBack(){
debug("httprequest.readyState = " & httprequest.readyState);
if (httprequest.readyState==4){
if (httprequest.status==200){
StringToFile("D:demo.html", MyBytesToString(httprequest.responseBody));
}
else{
debug("httprequest.responseText = " & httprequest.responseText);
}
debug("httprequest.status = " & httprequest.statusText);
}
}

function main(){
httprequest = CreateObject("Microsoft.XMLHTTP.1.0");
httprequest.open("GET", "http://www.sina.com.cn/", true);
httprequest.setRequestHeader("Content-Type", "text/xml");
httprequest.onReadyStateChange = EventCallBack;
httprequest.send();
}

运行的结果正常。
sg.jpg
这个东西虽然没有SpiderMonkey那么强大完善,但已经有了一般虚拟机所有需要的结构了。
需要下载的可以到http://tufeiping.googlepages.com/ScriptIDE.exe中下载到IDE的可执行程序。

编写评论