一种实现VBScript语言跨平台应用的方法技术

技术编号:2825411 阅读:217 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种实现VBScript语言跨平台应用的方法,它是通过把VBScript脚本语言直接转换成可跨平台应用的java语言,来实现VBScript语言跨平台应用的目的。具体方法是:第一步,解析VBScript脚本语言生成语法树;第二步,根据生成的语法树生成与VBScript脚本语言相对应的java语言。本发明专利技术突破了以往任何方法的思维模式,从根本上提出了将VBScript脚本语言直接转换成程序语言的方法,把脚本语言与脚本语言计算引擎彻底分离,不再“脚本级执行”是本发明专利技术的最大优点。

【技术实现步骤摘要】

本专利技术涉及一种使VBScript语言可以跨平台应用的方法。
技术介绍
脚本语言是一种非编译语言,它可以直接被浏览器解释执行,常用的脚本语言有Microsoft推出的VBScript语言和Netscaper的JavaScript语言,它们是众多脚本语言中较为优秀的一种。VBScript脚本语言是程序开发语言Visual Basic家族的新成员,它具有强大的灵活性和格式化功能,它将灵活的Script应用到了更广泛的领域。但它有一个根本的瓶颈问题,就是只能局限在Windows平台上运行,只适用于IE浏览器,在Microsoft的32位Windows API、16位Windows API和Macintosh提供的VBScript二进制实现程序上运行,很难象任何标准程序语言一样,跨平台直接应用。现阶段,软件领域还没有任何开源或免费的软件产品支持它在非windows平台运行(比如Unix)。这给VBScript脚本语言的重用性和可移植性造成了严重的影响。由Sun公司推出的完全基于java技术的ASP4.0软件能够支持VBScript5.5在Linux,Solaris,AIX或微软的Windows平台等系统上直接移植应用,它对于VBScript脚本语言的支持是靠支持能够跨平台的计算引擎来实现的,并在计算引擎中,内置了“COM-to-Java”的绑定规则,实现了脚本语言对部分内置com对象的支持,但其主要针对的是Web应用类业务,使用前提是必须购买java的Web服务器6.0或以上版本,并且,对于如何支持VBScript脚本语言的具体细节,Sun网站并没有对外公布任何信息。截至今日,业界对于VBScript的应用,很少脱离过Web浏览器,从未独立于脚本引擎,这就大大阻碍了VBScript脚本语言的应用场景和可用性。
技术实现思路
为了满足对VBScript脚本语言多场景、多平台应用的需求,解决VBScript语言除了依赖计算引擎外很难直接跨平台应用的缺点,本专利技术的目的是提供一种把脚本语言与脚本语言计算引擎彻底脱离,实现VBScript脚本语言跨平台应-->用的方法。为实现上述目的,本专利技术采用以下技术方案:一种实现VBScript语言跨平台应用的方法,其特征在于:将VBScript脚本语言直接转换成可跨平台应用的java语言,具体方法是:第一步:解析VBScript脚本语言生成语法树;A、对VBScript脚本语言进行词法扫描,把VBScript中的保留关键字、非保留关键字、数据类型、内置函数、运算符等VBScript脚本语言本身的“静态规则”存储到内存中;清空内存中的“动态规则”,并根据当前脚本实际内容,通过专门的一趟词法分析过程,把自定义函数名及对应参数个数这些动态规则过滤出来,存储到内存中,以动态决定每一段特定的VBScript脚本到java代码的生成过程;B、进行词法分析,遵照上一步在内存中存储的“静态规则”和“动态规则”,从VBScript脚本语言中分离出一个个字符串,并分别配上简单数据类型的记号;C、对词法分析的结果进行语法分析,将词法分析输出的记号集合采用自顶向下的方式,解析出一个个可执行的语句节点,语句节点从同一父类继承,某些结点可递归或嵌套其它结点,最终形成语法树,并进行语法树堆栈检查;第二步:根据生成的语法树生成与VBScript脚本语言相对应的java语言;A、对语法树进行上下文相关性、类型匹配检查及类型转换;B、从语法树根结点开始,顺序把每一个结点递归输出对应的java代码。附图说明图1为本专利技术实现VBScript语言跨平台应用的方法流程图。具体实施方式本专利技术是通过把VBScript脚本语言转换成可跨平台应用的java语言,来实现VBScript语言跨平台应用的目的,其效果是让VBScript脚本语言脱离任何脚本执行环境,能够象java语言一样,以使VBScript脚本语言成为能够在各种平台上灵活应用的“程序语言”。如图1所示,本专利技术实现VBScript语言跨平台应用的方法包括以下步骤:第一步:解析VBScript脚本语言生成语法树;第二步:根据生成的语法树生成与VBScript脚本语言相对应的java语言。-->解析VBScript脚本语言生成语法树的方法是:第一步:对VBScript脚本语言进行词法扫描,把VBScript中的保留关键字、非保留关键字、数据类型、内置函数、运算符等VBScript脚本语言本身的“静态规则”存储到内存中;清空内存中的“动态规则”(上一次VBScript脚本语言转换到java代码时存储到内存中的,若为第一次执行,为空),并根据当前脚本实际内容,通过专门的一趟词法分析过程,把自定义函数名及对应参数个数这些动态规则过滤出来,重新存储到内存中,以动态决定每一段特定的VBScript脚本到java代码的生成过程。其目的是:把词法分析的“静态规则”(对于任何特定的一段VBScript脚本语言不变)和“动态规则”(根据特定的VBScript脚本语言而定)存储到内存中。第二步:进行词法分析,遵照上一步在内存中存储的“静态规则”和“动态规则”,从VBScript脚本语言中分离出一个个字符串,并分别配上简单数据类型的记号(token)。其目的是:把一行行VBScript字符串解析为一个个记号集合。第三步:对词法分析的结果进行语法分析,将词法分析输出的记号集合采用自顶向下的方式,解析出一个个可执行的语句节点,语句节点从同一父类继承,某些结点(如IF语句)可递归或嵌套其它结点,最终形成语法树,并进行语法树堆栈检查。在语法分析过程中,在内存中应记录变量在上下文中的联系、数据类型发生变化的变量、未初始化的变量及作为自定义函数参数的变量,这些内存数据结构将在java代码输出过程中,作为实现VBScript弱数据类型到java强数据类型匹配和转换的依据。对于自定义函数结点(含递归和函数嵌套调用),其实现方案是一次单独的VBScript脚本到java代码的生成过程。本专利技术根据生成的语法树生成java语言,将VBScript脚本语言转换成可跨平台应用的java语言的方法包括以下步骤:第一步:对语法树进行上下文相关性、类型匹配检查及类型转换。上下文相关性及类型匹配检查,实际上在解析VBScript脚本语言生成语法树步骤中的语法分析过程中已经进行,在根据生成的语法树生成java语言之前再次进行类型匹配检查和类型转换是从语法分析过程中存储在内存中的数据记录开始反复进行的。-->上下文相关性,类型匹配检查及类型转换的原则包含:原则1:变量第一次使用时检查其类型,以后该变量在作用域内使用时,若类型发生变化,则该变量由简单数据类型转换为变体类型,以后出现的该变量类型全部转换为变体类型;对以前出现该变量的任意一处重新进行检查,进行变量的简单数据类型到变体类型的转换,转换后,赋值语句左值出现的新的变体类型变量做同样处理,直到没有需要转换的变体类型变量为止。原则2:自定义函数返回值类型全部为变体类型;当某个变量作为参数传入时,简单数据类型的参数变量转换为变体类型,以后出现的该变量,其类型全部转换为变体类型;对以前出现该变量的任意一处重新进行检查,进行变量的简单数据类型到变体类型的转换,转换后,赋值语句左本文档来自技高网
...

【技术保护点】
一种实现VBScript语言跨平台应用的方法,其特征在于:将VBScript脚本语言直接转换成可跨平台应用的java语言,具体方法是:第一步:解析VBScript脚本语言生成语法树;第二步:根据生成的语法树生成与VBScript脚本语言相对应的java语言。

【技术特征摘要】
1. 一种实现VBScript语言跨平台应用的方法,其特征在于:将VBScript脚本语言直接转换成可跨平台应用的java语言,具体方法是:第一步:解析VBScript脚本语言生成语法树;第二步:根据生成的语法树生成与VBScript脚本语言相对应的java语言。2. 根据权利要求1所述的实现VBScript语言跨平台应用的方法,其特征在于:所述解析VBScript脚本语言生成语法树的方法是:A、对VBScript脚本语言进行词法扫描,把VBScript脚本语言本身的“静态规则”存储到内存中;清空内存中的“动态规则”,并根据当前脚本语言实际内容,把自定义函数名及对应参数个数这些“动态规则”过滤出来,存储到内存中,以动态决定每一段特定的VBScript...

【专利技术属性】
技术研发人员:吴湘铮李雁崔晓川
申请(专利权)人:青牛北京技术有限公司
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1