总算基本完成脚本平台 for C#2.0


刚刚才用上C#2.0,原来是这么好用啊,迫不及待的想用熟它;

最近想到平台的体系,认为自己的脚本解释器是必不可少的,于是自己抄刀;花了将近一个星期,总算建设了一个有点象样的框架了。

基本设计:
1、基于C#2.0开发
2、通过反射动态调用LIB的方法
3、完全手写的SCRIPT解释器,不用.NET的编译器做脚本解释器(完全按行模式执行)
4、提供一个基础的控制台程序(SHELL),支持批处理模式反射调用方法
5、提供DEBUG模式的SCRIPT IDE,用于简单调试(目前解释器还有点小BUG,DEBUG功能目前还未完善)

以下是SHELL的外观图:
总算基本完成脚本平台 for C#2.0

完全模拟DOS的命令行,所有指令为反射调用的LIB方法;通过全局的配置读入:
Environment.xml配置用于存放LIB的相关信息

 1总算基本完成脚本平台 for C#2.0<?xml version="1.0" encoding="utf-8"?>
 2总算基本完成脚本平台 for C#2.0<ModuleInfoConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.csit.com.cn">
 3总算基本完成脚本平台 for C#2.0  <ModuleInfo>
 4总算基本完成脚本平台 for C#2.0    <ModuleName>C:\Documents and Settings\Administrator\桌面\MyShell\MyShell\Lib\CSIT.StdLib.dll</ModuleName>
 5总算基本完成脚本平台 for C#2.0    <NameSpace>CSIT.StdLib</NameSpace>
 6总算基本完成脚本平台 for C#2.0    <MainClassName>StdLibClass</MainClassName>
 7总算基本完成脚本平台 for C#2.0    <Key>STD</Key>
 8总算基本完成脚本平台 for C#2.0  </ModuleInfo>
 9总算基本完成脚本平台 for C#2.0  <ModuleInfo>
10总算基本完成脚本平台 for C#2.0    <ModuleName>C:\Documents and Settings\Administrator\桌面\MyShell\MyShell\Lib\CSIT.WinForms.dll</ModuleName>
11总算基本完成脚本平台 for C#2.0    <NameSpace>CSIT.WinForms</NameSpace>
12总算基本完成脚本平台 for C#2.0    <MainClassName>Msg</MainClassName>
13总算基本完成脚本平台 for C#2.0    <Key>MSG</Key>
14总算基本完成脚本平台 for C#2.0  </ModuleInfo>
15总算基本完成脚本平台 for C#2.0</ModuleInfoConfig>

Command.xml用于存放所有指令的描述信息
总算基本完成脚本平台 for C#2.0<?xml version="1.0" encoding="utf-8"?>
总算基本完成脚本平台 for C#2.0
<ModuleCommandConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.csit.com.cn">
总算基本完成脚本平台 for C#2.0  
<CommandConfig>
总算基本完成脚本平台 for C#2.0    
<CommandName>Cls</CommandName>
总算基本完成脚本平台 for C#2.0    
<Description>清除屏幕</Description>
总算基本完成脚本平台 for C#2.0    
<CallMethodName>Cls</CallMethodName>
总算基本完成脚本平台 for C#2.0    
<ReturnType>void</ReturnType>
总算基本完成脚本平台 for C#2.0    
<ParamsList />
总算基本完成脚本平台 for C#2.0    
<Key>STD</Key>
总算基本完成脚本平台 for C#2.0  
</CommandConfig>
总算基本完成脚本平台 for C#2.0  
<CommandConfig>
总算基本完成脚本平台 for C#2.0    
<CommandName>Print</CommandName>
总算基本完成脚本平台 for C#2.0    
<Description>输出字符串</Description>
总算基本完成脚本平台 for C#2.0    
<CallMethodName>Print</CallMethodName>
总算基本完成脚本平台 for C#2.0    
<ReturnType>void</ReturnType>
总算基本完成脚本平台 for C#2.0    
<ParamsList>string</ParamsList>
总算基本完成脚本平台 for C#2.0    
<Key>STD</Key>
总算基本完成脚本平台 for C#2.0  
</CommandConfig>
总算基本完成脚本平台 for C#2.0  
<CommandConfig>
总算基本完成脚本平台 for C#2.0    
<CommandName>ShellExecute</CommandName>
总算基本完成脚本平台 for C#2.0    
<Description>执行程序</Description>
总算基本完成脚本平台 for C#2.0    
<CallMethodName>ShellExecute</CallMethodName>
总算基本完成脚本平台 for C#2.0    
<ReturnType>void</ReturnType>
总算基本完成脚本平台 for C#2.0    
<ParamsList>string</ParamsList>
总算基本完成脚本平台 for C#2.0    
<Key>STD</Key>
总算基本完成脚本平台 for C#2.0  
</CommandConfig>
总算基本完成脚本平台 for C#2.0  
<CommandConfig>
总算基本完成脚本平台 for C#2.0    
<CommandName>=</CommandName>
总算基本完成脚本平台 for C#2.0    
<Description>表达式计算</Description>
总算基本完成脚本平台 for C#2.0    
<CallMethodName>Eval</CallMethodName>
总算基本完成脚本平台 for C#2.0    
<ReturnType>void</ReturnType>
总算基本完成脚本平台 for C#2.0    
<ParamsList>string</ParamsList>
总算基本完成脚本平台 for C#2.0    
<Key>STD</Key>
总算基本完成脚本平台 for C#2.0  
</CommandConfig>
总算基本完成脚本平台 for C#2.0  
<CommandConfig>
总算基本完成脚本平台 for C#2.0    
<CommandName>Dir</CommandName>
总算基本完成脚本平台 for C#2.0    
<Description>目录</Description>
总算基本完成脚本平台 for C#2.0    
<CallMethodName>Dir</CallMethodName>
总算基本完成脚本平台 for C#2.0    
<ReturnType>void</ReturnType>
总算基本完成脚本平台 for C#2.0    
<ParamsList>string</ParamsList>
总算基本完成脚本平台 for C#2.0    
<Key>STD</Key>
总算基本完成脚本平台 for C#2.0  
</CommandConfig>
总算基本完成脚本平台 for C#2.0  
<CommandConfig>
总算基本完成脚本平台 for C#2.0    
<CommandName>CD</CommandName>
总算基本完成脚本平台 for C#2.0    
<Description>更改目录</Description>
总算基本完成脚本平台 for C#2.0    
<CallMethodName>CD</CallMethodName>
总算基本完成脚本平台 for C#2.0    
<ReturnType>void</ReturnType>
总算基本完成脚本平台 for C#2.0    
<ParamsList>string</ParamsList>
总算基本完成脚本平台 for C#2.0    
<Key>STD</Key>
总算基本完成脚本平台 for C#2.0  
</CommandConfig>
总算基本完成脚本平台 for C#2.0  
<CommandConfig>
总算基本完成脚本平台 for C#2.0    
<CommandName>MsgBox</CommandName>
总算基本完成脚本平台 for C#2.0    
<Description>消息对话框</Description>
总算基本完成脚本平台 for C#2.0    
<CallMethodName>MsgBox</CallMethodName>
总算基本完成脚本平台 for C#2.0    
<ReturnType>void</ReturnType>
总算基本完成脚本平台 for C#2.0    
<ParamsList>string</ParamsList>
总算基本完成脚本平台 for C#2.0    
<Key>MSG</Key>
总算基本完成脚本平台 for C#2.0  
</CommandConfig>
总算基本完成脚本平台 for C#2.0
</ModuleCommandConfig>

以上两个配置文件全部通过序列化方式生成,期间还设计到一个指令生成器;(该部分由同事完成)将DLL文件装入后自动建立这些配置信息,命令部分只获取PUBLIC方法。

批处理的调用:
BATCH FROM FILE=C:\Test.cmd
总算基本完成脚本平台 for C#2.0cls
总算基本完成脚本平台 for C#2.0print 开始测试批处理!
总算基本完成脚本平台 for C#2.0msgbox 这个是文本对话框
总算基本完成脚本平台 for C#2.0ShellExecute notepad
总算基本完成脚本平台 for C#2.0print 已经启动了写字板了吗?
总算基本完成脚本平台 for C#2.0print 开始测试表达式!
总算基本完成脚本平台 for C#2.0print 
1+2+3+4=?
总算基本完成脚本平台 for C#2.0
= 1+2+3+4
总算基本完成脚本平台 for C#2.0print 
1*99=?
总算基本完成脚本平台 for C#2.0
= 1*99
总算基本完成脚本平台 for C#2.0print 列表目录的指令为 dir
总算基本完成脚本平台 for C#2.0print 切换目录的指令为 cd
总算基本完成脚本平台 for C#2.0
总算基本完成脚本平台 for C#2.0print 结束执行

脚本的调用:
script=c:\Math Board.ssf
总算基本完成脚本平台 for C#2.0begin
总算基本完成脚本平台 for C#2.0    NewLine 
= Chr(13) & Chr(10
总算基本完成脚本平台 for C#2.0    N 
= 9
总算基本完成脚本平台 for C#2.0    for (i
,0,10,1)
总算基本完成脚本平台 for C#2.0        S 
= S & N & " x " & i & " = " & (N * i) & NewLine
总算基本完成脚本平台 for C#2.0    next
总算基本完成脚本平台 for C#2.0    call ShowMsg(S
,"Math Board Of " & N)
总算基本完成脚本平台 for C#2.0end

脚本调试器的调用
script debug
总算基本完成脚本平台 for C#2.0

脚本的语法定义:
总算基本完成脚本平台 for C#2.0begin
总算基本完成脚本平台 for C#2.0   statement;
总算基本完成脚本平台 for C#2.0   statement;
总算基本完成脚本平台 for C#2.0end
总算基本完成脚本平台 for C#2.0statement
=  条件语句
总算基本完成脚本平台 for C#2.0
if (cond)
总算基本完成脚本平台 for C#2.0  statement
总算基本完成脚本平台 for C#2.0
else
总算基本完成脚本平台 for C#2.0  statement
总算基本完成脚本平台 for C#2.0endif 
总算基本完成脚本平台 for C#2.0
总算基本完成脚本平台 for C#2.0或者
总算基本完成脚本平台 for C#2.0
总算基本完成脚本平台 for C#2.0
if (cond)
总算基本完成脚本平台 for C#2.0 statement
总算基本完成脚本平台 for C#2.0endif 
总算基本完成脚本平台 for C#2.0
总算基本完成脚本平台 for C#2.0statment
=  For语句
总算基本完成脚本平台 for C#2.0
总算基本完成脚本平台 for C#2.0
for (val,开始值,结束值,增量值)
总算基本完成脚本平台 for C#2.0
总算基本完成脚本平台 for C#2.0    statement;
总算基本完成脚本平台 for C#2.0    statement;
总算基本完成脚本平台 for C#2.0next
总算基本完成脚本平台 for C#2.0
总算基本完成脚本平台 for C#2.0statement
= While语句
总算基本完成脚本平台 for C#2.0
总算基本完成脚本平台 for C#2.0
while (条件)
总算基本完成脚本平台 for C#2.0  statment;
总算基本完成脚本平台 for C#2.0  statment;
总算基本完成脚本平台 for C#2.0next
总算基本完成脚本平台 for C#2.0
总算基本完成脚本平台 for C#2.0statement
=call语句
总算基本完成脚本平台 for C#2.0
总算基本完成脚本平台 for C#2.0calll func par,par,par
总算基本完成脚本平台 for C#2.0
总算基本完成脚本平台 for C#2.0



本文转自suifei博客园博客,原文链接:http://www.cnblogs.com/Chinasf/archive/2006/01/24/322361.html,如需转载请自行联系原作者
上一篇:PostgreSQL 10.1 手册_部分 III. 服务器管理_第 31 章 逻辑复制_31.7. 安全


下一篇:mysql同步复制M-M(master master)模式