使用Active Scripting进行JavaScript解析的典型应用
正文
本文摘自《脚本驱动的应用软件开发方法与实践》
作者:陆其明
Active Scripting是微软公司提供的一种脚本解析技术,是ActiveX技术的一个重要组成部分。它支持解析两种脚本语言:VBScript和JScript,并且已经在很多专业软件中得到了广泛的应用,其中就包括微软公司自己的Windows操作系统、以及Office系列办公软件。有了Active Scripting技术,我们也可以让自己开发的应用程序来支持脚本解析,使应用程序的部分功能为特定的脚本语言所控制、与脚本程序实现互动,以此大幅度地提升我们的软件产品在用户可定制性、可交互性方面的表现。
接下去,本书将重点介绍Active Scripting的基本结构和实现原理,并以一个实例程序来演示Active Scripting的应用方法。通过这部分内容的学习,读者将基本掌握在自己开发的应用程序中支持脚本解析的技能。
...................
5.2.3 实例程序:CurveSee
假设你去一家公司应聘,被要求做这样一道题目:对于用户输入的任意一个平面函数f(x),请绘制出其函数曲线。很有挑战性哦!
这里的技术难点是如何来计算表达式的值。因为用户输入的表达式是任意的一串字符,如果要计算这个表达式的值,一般的做法是:对表达式进行扫描,去括号,按照运算符的优先级生成二叉树,然后遍历该树生成逆波兰表达式,再然后通过栈的方法进行运算。如果在表达式中再包含有函数的话,那就更麻烦了……
那么有没有简单一点的解决方案呢?答案是肯定的。我们可以使用脚本解析技术!因为JavaScript(或VBScript)引擎能够计算表达式的值,更重要的是,它们能够直接接受字符串形式的表达式。假设现在有个表达式为:f(x) = sin(x),我们只需在某个取值范围内、按照一定的步幅递增x的值,然后让脚本引擎去分别计算sin(x)的值,并将计算的结果赋给变量y,之后将每次x的值和对应的y值(以及当前循环计数器的i值)一起传回给应用程序;应用程序根据这么一对一对的x、y值,就能很方便地画出表达式的函数曲线了。这个过程可以用下面的这段脚本伪码来表示:
// 假设x的取值范围为[xMin, xMax],在这个范围内要计算maxCount个采样点
var x = xMin; // x的初始取值
var xStride = (xMax – xMin) / maxCount; // 计算x的步幅
var y;
for (var i = 0; i < maxCount; i++)
{
// 在脚本中计算表达式的值
y = sin(x);
// 将计算结果传回应用程序
Result(i, x, y);
// 指向x的下一个采样点
x += xStride;
}
接下去,我们就通过CurveSee这个例子,来介绍利用Active Scripting技术解答这个题目的完整实现。(请下载源代码)
正文完
附件:
浙公网安备 33010602011771号