返回   cpper编程论坛 > Blog > Innocentius
注册账号 论坛帮助 会员列表 日历事件 搜索 今日新帖 标记版面已读

为这篇文章评分

PScript脚本(基本语法)

发表于 2006-04-12 03:47 PM 作者: Innocentius
Innocentius 更新于 2008-01-21 05:55 PM
做了一个简单的脚本引擎,因为语法从Pascal演化而来,因此名字确定为PScript。目前使用C#编写引擎,直接运行在.NET环境下。

PScript的语法是比较简单的,下面是一个简单的程序:

Print("Hello, World");

PScript是大小写不敏感的语言,因此Print等价于print,也等价于PRINT。作为语言的扩展,Print是默认实现的全局函数之一。它的作用是显示后面的字符串。
下面是一个稍微复杂一点的程序:
代码:
For i = 0 To 10 Do
Begin
    Print(i);
End;
这个程序是执行一个循环,显示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支持函数调用,下面语句定义了一个函数:
代码:
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;
结果是显示 3。
评论 2 Email文章
评论总数 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 zero 当前离线
旧
Innocentius 的头像
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 当前离线
发表评论 发表评论
作者为 Innocentius 的最新文章

所有时间均为格林尼治时间 +9。现在的时间是 11:00 PM


Powered by vBulletin® 版本 3.7.0
版权所有 ©2000 - 2009,Jelsoft Enterprises Ltd.
(C) Copy Right All Right Reserved 2001 - 2007

Search Engine Friendly URLs by vBSEO 3.1.0