scrip_inter

所属分类:编译器/解释器
开发工具:C++
文件大小:138KB
下载次数:85
上传日期:2008-07-02 20:32:38
上 传 者weiyuanke
说明:  一个脚本语言的解释器,内附源码和详细说明
(A script language interpreter, enclosing the source and a detailed description)

文件列表:
scrip inter\exectest.scpexe (399, 2008-01-26)
scrip inter\fprt.scp (285, 2008-05-06)
scrip inter\guess.scpexe (402, 2008-03-15)
scrip inter\hanoi.scp (323, 2007-10-04)
scrip inter\member.scp (854, 2008-01-29)
scrip inter\obj.scp (585, 2008-03-15)
scrip inter\object.scp (498, 2008-03-15)
scrip inter\queen.scp (1351, 2007-12-16)
scrip inter\scpexe.reg (1198, 2008-01-26)
scrip inter\Script.cpp (3999, 2008-05-06)
scrip inter\Script.exe (380928, 2008-05-06)
scrip inter\script.h (18195, 2008-03-15)
scrip inter (0, 2008-06-20)

Script.exe 请将Script.exe放入任何目录中,然后编辑scpexe.reg文件,将F:\\Compiler\\Script\\Script.exe改为实际路径. 导入后所有.scpexe文件由script.exe自动执行. 如果希望.scpexe文件无需敲入后缀即可执行,需要手动到注册表中更改: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment PATHEXT中按照原有格式添加.scpexe,注销后重新登陆即可. 全局函数: get() // 返回一个记号,或者双引号括起来的字符串 getline() // 返回一行 print(...) // 打印所有参数 println(...) // 打印所有参数,最后还输出一个回车 exec(...) // 将所有参数作为控制台的字符串命令来执行,从左到右, //直到某一个命令失败(返回结果不为0),并返回最后那个命令的返回值。 成员函数 object.type() // 返回字符串 //"object", "string", "integer", "bool", "array", "nat"[not a type, e.g. null.type() = "nat"] object.string() // 将obj转换为字符串,相当于java的toString object.integer() // 将obj转换为整数 object.bool() // 将obj转换为bool string.length() string.indexOf(subs, [off]) string.subString(start, count) array.length() // 返回数组的元素个数 注:所有值都是object,包括常量,string是字符串对象,array是数组。 =========================================================================== 更新信息: 加入函数flush用以清空输入缓冲,用法和getline相同。 加入函数srand和rand,用来获取伪随机数,作用和C语言标准库同名函数相同。 用法: srand(); //以当前time值作为seed srand(seed); // 以自定义的数字作为seed rand(); //返回一个随机整数 rand(max); // 返回rand() % max rand(start, end); // 返回start和end之间的一个随机数,start和end大小关系没有限定。 加入object特性,可以自定义对象。 加入匿名函数特性,可以使用匿名函数。 详细用法见文件object.scp中的示例。 修复 != 比较运算符与null相关运算出错的bug。 修复特定条件下堆栈出错的bug。 特别注意:如果使用object构造循环结构会造成循环引用,导致内存泄漏。该问题正在处理中。当前的object特性仅仅可用而已。 ============================================================================ 2008/4/22 更新信息 修正了 负号"-"引起的空指针导致程序退出时崩溃问题。例子代码中的split函数使用了-1,会导致程序退出时崩溃。 由于原先定义“-”为双目运算符。后来允许其为单目前置运算符,并且没有再重新写新的代码,还是让单目“-”翻译为双目表达式。由于双目表达式使用left和right两个指针表示左右操作数,而更改“-”作用时只是在分析中让left=0,退出时没有判断left是否为空就直接进行清除操作,导致程序崩溃。 现已更新,检查left是否为0。 ============================================================================ 2008/5/6 更新信息 添加文件访问功能。使用File对象可实现对文本文件的读写。File对象有如下成员: File() 构造函数 File(file) 构造并打开文件 File.open(file) 打开文件,成功返回true,失败返回false File.close() 关闭文件 File.seek(pos) 定位读写指针到pos指定的位置 File.tell() 返回目前的位置,整数 File.length() 返回文件长度 File.eof() 返回是否到文件结尾 File.read() 读一个字符串,以空格、制表符、回车为分割符号,并返回该字符串。 File.readline() 读文件一行并返回。 File.write(str) 将字符串写入文件。 例子代码: f = new File(arg.string()); println("file length : ", f.length()); while(!f.eof()) println(f.readline()); f.close();

近期下载者

相关文件


收藏者