PScript脚本(基本语法)
做了一个简单的脚本引擎,因为语法从Pascal演化而来,因此名字确定为PScript。目前使用C#编写引擎,直接运行在.NET环境下。
PScript的语法是比较简单的,下面是一个简单的程序:
Print("Hello, World");
PScript是大小写不敏感的语言,因此Print等价于print,也等价于PRINT。作为语言的扩展,Print是默认实现的全局函数之一。它的作用是显示后面的字符串。
下面是一个稍微复杂一点的程序:
这个程序是执行一个循环,显示0到10的数字。在PScript中,变量在使用前不一定需要声明,如果需要声明,则使用declare语句,例如:
Declare a;
这样就定义了一个简单类型的变量a。简单类型的变量可以是数字、字符串和布尔值,通过赋值语句进行修改:
Set a = 1;
Set a = "hello";
Set a = true;
对于PScript来说,简单类型变量的值可以在数字、字符串和布尔值之间自由转换。因此可以写:
Set a = "10";
Print (a+12);
这样的执行结果就是22。但是如果:
Set a="a10";
Print(a+12);
这样的结果是a1012。如果需要明确连接字符串,则可以使用String.StrCat函数。
在 PScript中,declare、set以及call关键字(函数调用)都是可以省略的,因此:
Set a= 1;
等价于
a=1;
PScript支持的其它流程控制语句包括:
If … Then
While … Do
Repeat … Until
Break
Continue
Return
PScript支持函数调用,下面语句定义了一个函数:
通过下面语句来调用:
Call Func();
Call关键字可以省略,因此可以简写为:
Func();
如果不省略Call关键字,那么在函数没有参数的情况下,可以省略括号,例如:
Call Func;
但是如果省略Call关键字,那么:
Func;
将会被认为是一个变量定义语句。
可以给函数声明参数:
上述程序将会显示:
a=1 b=2
函数也可以通过 Return 语句返回值,返回值可以用于表达式中,例如:
结果是显示 3。
PScript的语法是比较简单的,下面是一个简单的程序:
Print("Hello, World");
PScript是大小写不敏感的语言,因此Print等价于print,也等价于PRINT。作为语言的扩展,Print是默认实现的全局函数之一。它的作用是显示后面的字符串。
下面是一个稍微复杂一点的程序:
代码:
For i = 0 To 10 Do
Begin
Print(i);
End; Declare a;
这样就定义了一个简单类型的变量a。简单类型的变量可以是数字、字符串和布尔值,通过赋值语句进行修改:
Set a = 1;
Set a = "hello";
Set a = true;
对于PScript来说,简单类型变量的值可以在数字、字符串和布尔值之间自由转换。因此可以写:
Set a = "10";
Print (a+12);
这样的执行结果就是22。但是如果:
Set a="a10";
Print(a+12);
这样的结果是a1012。如果需要明确连接字符串,则可以使用String.StrCat函数。
在 PScript中,declare、set以及call关键字(函数调用)都是可以省略的,因此:
Set a= 1;
等价于
a=1;
PScript支持的其它流程控制语句包括:
If … Then
While … Do
Repeat … Until
Break
Continue
Return
PScript支持函数调用,下面语句定义了一个函数:
代码:
Func: Function
Begin
Print("Hello");
End; Call Func();
Call关键字可以省略,因此可以简写为:
Func();
如果不省略Call关键字,那么在函数没有参数的情况下,可以省略括号,例如:
Call Func;
但是如果省略Call关键字,那么:
Func;
将会被认为是一个变量定义语句。
可以给函数声明参数:
代码:
Func: Function(a, b)
Begin
Print("a=", a, " b=", b);
End;
Func(1, 2); a=1 b=2
函数也可以通过 Return 语句返回值,返回值可以用于表达式中,例如:
代码:
Func: Function(a, b)
Begin
Return a+b;
End; 评论总数 2
评论
| | your script language is cool. Why not talk about the implementation? Does it base on macro expansion or just follow the traditional implemention of imperative language? |
发表于 2008-01-21 05:53 PM 作者: zero |
| | No. The interpreter works like a classic interpreter, which consists of the lexical phase, the gammer parser, the code generator, and the interpreter of the intermedia code. THe intermedia code is a kind of gammer tree. |
发表于 2008-01-28 05:02 PM 作者: Innocentius |
发表评论 |
作者为 Innocentius 的最新文章
- 在使用Passport认证的网站返回401错误代码 (2006-11-23)
- 一个怪异的服务器问题 (2006-08-21)
- C++ XML 序列化器 (2006-08-04)
- sscli 2.0 简介 (2006-05-10)
- PScript 脚本(进一步的特征) (2006-04-18)




