L脚本语言语法手冊 0.10版

L脚本语言语法手冊

0.10版


 

 

 

简  介

       L脚本语言是一个轻量级的,旨在接近自然语言的编程语言,眼下支持在中文、英文基础上的编程。并可扩展为随意语种。L脚本语言的语法结构简单。程序结构相对松散,易学易用。

          眼下L脚本语言仍处于开发初期,功能尚不完好。眼下提供了一个简单的源代码编辑器,建议使用notepad++或者ultraedit进行源代码编辑。

文件夹

一、        介绍..2

二、        凝视..3

三、        对象定义和引用..3

四、        整数和浮点数..4

五、        数值计算、逻辑运算、位运算..4

六、        分支和循环..7

七、        字符串和正則表達式..9

八、        函数..12

九、        文件和文件夹..13

十、        注冊表..16

十一、       时间日期..17

十二、       ..18

十三、       网络..20

十四、       随机数..22

十五、       ..24

十六、       与C/C++的交互..24

十七、       用户交互接口..25

十八、       ..25

十九、       进程..26

二十、       线程..27

二十一、       调试器使用..28

二十二、       password学相关..28

二十三、       多语言..30

二十四、       跨平台..30

二十五、       扩展特性..30

二十六、       窗口与图形..30

二十七、       其他..31

一、      介绍

L脚本语言是在中文环境中开发的。L脚本的代码同意存储为ansi格式或unicode格式

L脚本语言定义了单一的语法格式

动作:对象类型,对象名称,參数列表

Action:ObjectType,ObjectName,ParamList

L脚本语言的每一行代码都遵从这一条语法规则,相对其它编程语言来说,这种设计更加简单。更easy实现,更easy学习和记忆

因为有着简洁的语法,L脚本语言的解释引擎实现相比比其它编程语言简单了很多,对于比較简单的编程任务。已经足够了

说明:语法文档中以红色字体标识的部分说明该项语言特性未来会在新版本号中删除,如今仍为可选

二、      凝视

L脚本语言的凝视是以#打头的行,凝视和空行会被解释引擎自己主动忽略

当解释引擎发现某行代码中包括错误时会尽可能地提供错误信息并简单地将这行代码忽略掉

三、      对象定义和引用

不论什么对象必须先进行定义之后才干引用,对象定义的格式为

定义:对象类型,对象名称,初始值

define:objecttype,objectname,initialvalue

比如

          定义:整数,number1,0

          define:int,number1,0

          定义:整数,number2,1

          define:int,number2,1

          定义:浮点数,double,1.0

          define:double,double1,1.0

          定义:字符串,string1,”helloworld”

          define:string,string1,”helloworld”

假设想要将对象的内容展示出来,能够这样

          显示:number1

          show:number1

          显示:string1

          show:string1

:是分隔符用来分隔动作和对象

,是分隔符用来分隔參数列表

在这里。对象的名称能够是除:,以外的不论什么字符串,中文、英文、韩文都是能够的

四、      整数和浮点数

L脚本语言内置了对整数和浮点数的支持。同意进行四则运算、逻辑运算以及取余数等

整数定义的格式为

          定义:整数,整数的名称,整数的初始值(可选)

          define:int,nameofint,initialvalue(optional)

浮点数定义的格式为

          定义:浮点数,浮点数的名称,浮点数的初始值(可选)

          define:double,nameofdouble,initialvalue(optional)

整数和浮点数定义时若没有初始值,则默认初始化为0

五、      数值计算、逻辑运算、位运算

数值计算和逻辑运算必须遵从固定的格式

          计算:表达式的内容,表达式的内容,…

          compute:expression,expression,…

          计算:number1+number2

          compute:number1+number2

          计算:number1*number2

          compute:number1*number2

          计算:number1>number2

          compute:number1>number2

          计算:number1=number2+100,number1=number*3

          compute: number1=number2+100,number1=number*3

每一行代码的执行结果会保存到一个“结果”对象中,这个对象是全局的

所以假设我们想要把数值计算的结果显示出来,就能够这样写

          计算:number1+number2*100

          compute:number1+number2*100

          显示:结果

          show:result

表达式的个数能够是随意多个。L脚本语言会依次计算每个表达式,并把最后一个表达式的运算结果存入“结果”对象

加减乘除四则运算

加法

          计算:number+number2

          compute:number+number2

          显示:结果

          show:result

减法

          计算:number1-number2

          compute:number1-number2

          显示:结果

          show:result

乘法

          计算:number1*number2

          compute:number1*number2

          显示:结果

          show:result

除法

          计算:number1/number2

          compute:numbe1/number2

           显示:结果

          show:result

取余数

          计算:number1%number2

          compute:number1%number2

          显示:结果

          show:result

赋值

          计算:number1=number2+1

          compute:number1=number2+1

           显示:结果  

          show:result

          计算:number1+=number2

          compute:number1+=number2

          计算:number1-=number2

          compute:number1-=number2

          计算:number1*=number2

          compute:number1*=number2

          计算:number1/=number2

          compute:number1/=number2

          计算:number1%=number2

          compute:number1%=number2

括号的使用

          乘法 除法 取余数 操作的优先级高于 加法和减法 同级的运算保持左结合性。因此假设希望改变运算的顺序,须要通过使用括号,如

          计算:(number1+number2)*100

          compute:(number1+number2)*100

逻辑运算

          L脚本语言中逻辑值"真"等价于数值1, 逻辑值"假"等价于数值0

          因此逻辑运算的值仅有1和0两种状态      

比較大小

          计算:number1>number2

          compute:number1>number2

          显示:结果

          show:result

          计算:number1>=number2

          compute:number1>=number2

          计算:number1<number2

          compute:number1<number2

          计算:number1<=number2

          compute:number1<=number2

          计算:number1==number2

          compute:number1==number2

逻辑与、逻辑或、逻辑异或、逻辑非         

位运算

          包含按位取反,按位左移,按位右移。按位与,按位或,按位异或

六、      分支和循环

L脚本语言中支持条件分支。叫做“假设”语句,格式为

假设:条件表达式或逻辑运算表达式 。条件为真时运行的语句

否则:条件为假时运行的语句

test:expression,action:

otherwise:action:

比如

          假设:number1>number2,显示:"大于"

          test:number1>number2,show:”big than!”

          否则:显示:“小于”

          otherwise:show:”less than!”

在L脚本语言中循环语句叫做“当”语句,格式为

当:条件表达式或逻辑运算表达式。条件为真时反复运行的语句

while:expression,action:

或者

当:条件表达式或逻辑运算表达式

#循环语句块

#假设:条件满足,跳出

#假设:条件满足,继续

结束

 

能够在循环体中通过 跳出 命令来结束循环。类似于C语言的break

能够在循环体中通过 继续 命令来忽略后面的循环体。又一次考察条件表达式開始新一轮的循环,类似于C语言的continue

比如

          当:1,调用:函数,function1

          while:1,call:function,function1

    定义:整数,int1,100

当:int1>0

             假设:int1==50,跳出

             显示:int1

             计算:int1-=1

结束

七、      字符串和正則表達式

字符串定义时能够进行初始化。若没有初始化參数,则默觉得空串

字符串定义的格式为

定义:字符串。字符串的名称,字符串的初始值

define:string,nameofstring,intialvaue

比如

定义:字符串,string1,”hello”

define:string,string1,”hello”

定义:字符串。string2," world"

define:string,string2,” world”

支持字符串的连接操作

格式为

连接:字符串。第一个字符串,第二个字符串

connect:string,first string,second string

连接:字符串,string1,string2

connect:string,string1,string2

显示:string1

show:string1

支持字符串取子串的操作

格式为

取子串:子串名称,原字符串名称,取子串时的事实上位置。取子串的长度

getsubstring:nameofsubstring,originalstring,startpos,lengthofsubstring

定义:字符串,string3

define:string,string3

取子串:string3,string1,1,3

getsubstring:string3,string1,1,3

同意将字符串的内容清空

格式为

清空:字符串,字符串的名称

clear:string,nameofstring

支持字符串查找子串的操作

格式为

查找:字符串,原字符串,子串

find:string,originalstring,substring

假设找到子串。“结果”对象置为一个整数对象,其值是1否则值是0

查找:字符串,string1,string2

find:string,string1,string2

支持字符串替换子串的操作

格式为

替换:字符串,原字符串,字符串中的子串,替换的子串

replace:string,originalstring,substring,replacedstring

和查找一样。假设找到子串,“结果”对象置为一个整数对象。其值是1否则值是0

替换:字符串,string1,string2,"xyz"

replace:string,string1,string2,”xyz”

                   字符串能够转换大写和小写,还能够反转

                   语法格式为

转换:字符串名称,大写

transform:nameofstring,upper

转换:字符串名称,小写

transform:nameofstring,lower

转换:字符串名称。反转

transform:nameofstring,reverse

          正則表達式本身是特殊格式的字符串,定义格式为

定义:正則表達式,正則表達式的名称,正則表達式的内容

define:regexp,name of regexp,regexp string content

                             定义:正則表達式,regexp1,"ddd"

                             define:regexp,regexp1,”ddd”

          假设要使用正則表達式匹配某个字符串,格式例如以下

                             定义:字符串,str2,"abc"

                             define:string,str2,”abc”

定义:字符串,str1,123

define:string,str1,123

匹配:正則表達式,regexp1,str1

match:regexp,regexp1,str1

匹配:正則表達式,regexp1,str2

match:regexp,regexp2,str2

八、      函数

和其他编程语言一样,函数必须先定义之后才干进行调用

函数定义的格式为

定义:函数。函数的名称。形式參数列表

開始:函数。函数的名称

#函数体

结束:函数,函数的名称

结束

define:function,name_of_function,formalparameters

start:function, name_of_function

#functionbody

end:function, name_of_function

end

函数的參数能够是0个或随意多个。函数的參数必须是对象或静态数值

函数体能够是随意合法的代码行,可是不同意函数的嵌套定义

函数体必须是由对称的“開始“。“结束”包起来

函数体内部同意定义局部对象,其生存期随函数调用时产生。函数调用结束时销毁

函数调用的格式为

调用:函数,函数的名称,实际參数列表

调用:函数的名称,实际參数列表

函数的名称:实际參数列表

call:function, name_of_function,realparameters

call: name_of_function,realparameters

name_of_function:realparameters

L脚本语言的函数没有返回值。因此。假设我们须要保存函数执行的结果,能够将所需结果对象作为參数传递给函数

L脚本语言的函数參数是占位符号,并不能表示參数的对象类型,因此,在设计函数的时候须要自己确保形式參数与实际參数的类型一致,这样设计是为了实现简单,同一时候考虑L脚本语言并不适合处理大型任务,因此函数实现不会过于复杂,可是使用时应小心可能存在的问题

函数调用的样例代码

定义:整数,ab,22

定义:函数,乘以二,參数1

開始:函数,乘以二

    计算:參数1=參数1*2

结束:函数,乘以二

乘以二:ab

显示:ab

九、      文件和文件夹

L脚本语言中,文件和文件夹都是内置对象

打开文件或文件夹的语句会返回一个文件对象,不须要定义

格式为

打开:文件。文件对象名,文件的完整路径名

open:file,name_of_file_object,full_path_of_file

打开:文件夹,文件夹对象名,文件夹的完整路径

open:directory,name of directory object,full path of diretory

          如:

打开:文件,file1,c:1.txt

open:file,file1,c:1.txt

打开:文件夹,dir1,c:

open:directiory,dir1,c:

          对文件对象支持的操作有 复制、移动、删除、取大小、读取、写入

          文件操作的语法格式为

                   复制:文件,源文件名称,目标文件名称

                   copy:file,sourcefilename,destfilename

移动:文件,源文件名称,目标文件名称

move:file,sourcefile,destfile

删除:文件,文件路径名

delete:file,filepathname

取大小:文件,文件对象,保存文件大小的整数对象

getsize:file,name of file object,name of int object

写入:文件,文件对象,内存对象

write:file,name of file object,name of memory object

写入:文件,文件对象,字符串对象

write:file,name of file object,name of string object

获取:属性,文件对象,保存文件属性的表对象

get:attribute,name of file object,name of table object

插入:表, 保存文件属性的表对象,属性名称

insert:table,name of table object,attribute name

设置:属性,文件对象,文件的属性

set:attribute,name of file object,name of table object

获取:文件对象,创建时间,保存创建时间的time对象名(新建)

get:fileobject,createtime,name of timeobject(create new one)

获取:文件对象,改动时间,保存改动时间的time对象名(新建)

get:fileobject,modifytime,name of timeobject

获取:文件对象,訪问时间,保存訪问时间的time对象名(新建)

get:fileobject,accesstime,name of timeobject

获取: 文件对象,驱动器,保存驱动器的字符串

get:fileobject,drive,name of string object

获取: 文件对象,文件夹,保存文件夹的字符串

get:fileobject,path,name of string object

获取: 文件对象,文件名称,保存文件名称的字符串

get:fileobject,filename,name of string object

获取: 文件对象,扩展名,保存扩展名的字符串

get:fileobject,extension,name of string object

          对文件夹对象支持的操作有 枚举文件夹中的文件 、枚举文件夹中的子文件夹 、复制、 移动、 删除

                   打开:文件夹,文件夹对象,文件夹的路径

                   open:directory,name of directory object,full path of directory

枚举:文件,文件夹对象,保存文件列表的表对象

enum:file,name of directory object,name of table object

枚举:子文件夹,文件夹对象,保存文件夹列表的表对象

enum:subdir,name of directory object,name of table object

显示:保存文件列表的表对象

show:tableobject

显示:保存文件夹列表的表对象

show:tableobject

复制:文件夹,源文件夹的路径,目标文件夹的路径

copy:directory,source directory,dest directory

移动:文件夹,源文件夹的路径,目标文件夹的路径

move:directory, source directory,dest directory

删除:文件夹,文件夹的路径

delete:directory,full path of directory

十、      注冊表

L脚本语言内置了对訪问Windows注冊表的支持

打开一个注冊表项会返回一个注冊表对象。在这个对象上支持读取、写入、删除操作

语法格式为

打开:注冊表,注冊表对象名,注冊表路径,值的名称

open:registry,name of registry object,path of registery,key name

读取:注冊表,注冊表对象名,字符串对象名

read:registry, name of registry object,name of string object

写入:注冊表,注冊表对象名,字符串对象名

write:registry, name of registry object,,name of string object

删除:注冊表,注冊表对象名

delete:registry, name of registry object

 

打开:注冊表,reg1,HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun,HttpServer

open:registry,reg1, HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionRun,HttpServer

读取:注冊表,reg1,string1

read:registry,reg1,string1

写入:注冊表,reg1,string1

write:registry,reg1,string1

删除:注冊表,reg1

delete:registry,reg1

十一、 时间日期

L脚本语言中。时间对象的定义方式为

定义:时间。时间对象的名称

define:time,name of time object

能够将当前时间读取到时间对象中

读取:当前时间, 时间对象的名称

read:currenttime,name of time object

时间对象能够通过比較运算符进行比較

                            

                假设想要让脚本在执行过程中等待一段时间,能够调用睡眠语句

睡眠:须要睡眠的毫秒数

sleep:millisecond 

能够将时间对象的小时,分,秒读入到整数变量中

语法格式为

获取:时间对象名,时,整数变量名

get:timeobj1,hour,inthour1

获取:时间对象名,分,整数变量名

get:timeobj1,minute,intminute1

获取:时间对象名,秒,整数变量名

get:timeobj1,second,intsecond1

比如:

定义:时间,time1

define:time,time1

读取:当前时间,time1

read:currenttime,time1

显示:time1

show:time1

睡眠:1000

sleep:1000

定义:时间,time2

define:time,time2

读取:当前时间,time2

read:currenttime,time2

显示:time2

show:time2

假设:((time1<time2)||(time1==time2)),显示:"time1早于或等于time2"

test: ((time1<time2)||(time1==time2)),show:”time1 early than or equal to time2”

十二、 表

L脚本语言中的表的概念与Lua语言中的表的概念类似。实际上就是名字与对象之间的映射关系

表中的元素能够是随意合法的L脚本对象,表的大小是动态的,同意动态加入删除元素

表定义的语法格式为

定义:表,表的名称

define:table,name of table object

插入:表,表的名称,对象名

insert:table,name of table object,user object name

取大小,表。整数变量名

getsize:table,name of int object

取元素:表,元素的别名,元素在表中的索引

getelement:table,element’s replace name,index of element

          比如

                   定义:字符串,str1,"hello"

                   define:string,str1,”hello”

定义:字符串,str2,"world"

define:string,str2,”world”

定义:整数,number1,123456

define:int,number1,123456

定义:浮点数,number2,1.75

define:double,number2,1.75

定义:表,table1

define:table,table1

插入:表,table1,str1

insert:table,table1,str1

插入:表,table1,str2

insert:table,table1,str2

插入:表,table1,number1

insert:table,table1,number1

插入:表,table1,number2

insert:table,table1,number2

定义:函数,function1,參数1,參数2

define:function,function1,param1,param2

開始:函数,function1

start:function,function1

显示:參数1

show:param1

显示:參数2

show:param2

结束:函数,function1

end:function,function1

插入:表,table1,function1

insert:table,table1,function1

显示:table1

show:table1

十三、 网络

眼下L脚本支持TCP和UDP协议的网络訪问,后台使用堵塞式socket实现

对网络的訪问通过网络连接对象和地址对象完毕

定义地址对象的格式为

定义:地址,地址对象的名称,IP(如127.0.0.1),port号(如27015)

define:address,name of address object,IP,port

定义网络连接对象的格式为

定义:网络连接,网络连接的名称,TCP或UDP

define:netconnection,name of netconnection object,protocol type

针对网络连接对象的动作有监听,连接。发送,接收    格式为

连接: 网络连接的名称, 地址对象的名称

connect:netconnection object,addressobject

发送: 网络连接的名称,字符串对象名

send:netconnection object ,stringobject

接收: 网络连接的名称, 字符串对象名

receive:netconnection object,stringobject

具体请參考样例代码

L脚本语言内置了对HTTP协议的支持,能够实现httpclient功能

语法结构例如以下

定义:HTTP连接,站点连接

define:httpconnection,httpconnection object name

获取:站点连接,URL地址,保存页面内容的字符串

get:httpconnectionobject,url address,string object

提交:站点连接,URL地址,保存提交内容的字符串,保存响应信息的字符串

post:httpconnectionobject,url address,submit content string,reponse string

比如

定义:HTTP连接,站点连接

define:httpconnection,webconn

定义:字符串。页面Url

define:string,url

定义:函数,页面抓取

define:function,getweb

開始:函数。页面抓取

start:function,getweb

          显示:请输入站点URL地址

          show:”pleaser input url address”

          等待:用户输入。页面Url

          warit:userinput,url

          获取:站点连接,http://www.126.com,页面Url

          get: webconn, http://www.126.com,url

          显示:页面Url

          show:url

          打开:文件,file1,c:1.html

          open:file,file1,c:1.html

          写入:文件,file1,页面Url

          write:file,file1,url

结束:函数,页面抓取

end:function,getweb

当:1。调用:函数,页面抓取

while:1,call:function,getweb

定义:HTTP连接,站点连接

define:httpconnection,webconn

定义:字符串,页面Url,http://www.baidu.com

define:string,url,http://www.baidu.com

定义:字符串。表单数据,wd=123

define:string,forms,wd=123

定义:字符串。响应信息

define:string,response

提交:站点连接,页面Url,表单数据,响应信息

submit:webconn,url,forms,response

显示:响应信息

show:response

十四、 随机数

在程序中我们常常会用到随机信息

在L脚本语言中,随机数是一类对象,实际上是特殊的整数类型

用法为

生成:随机数,随机数对象的名称

generate:randomnumber, name of random number

刷新:随机数, 随机数对象的名称

refresh:randomnumber,name of random number

          比如

                   生成:随机数,random1

                   generate:randomnumber,random1

显示:random1

show:random1

定义:整数,count,1000

define:int,count,1000

定义:函数,genrandom

define:function,genrandom

開始:函数,genrandom

start:function,genrandom

刷新:随机数,random1

refresh:randomnumber,random1

显示:random1

show:random1

计算:count=count-1

compute:count=count-1

结束:函数,genrandom

end:function,genrandom

当:count>0,调用:函数,genrandom

while:count>0,call:function,genrandom

十五、 库

L脚本语言支持自己定义库以及库的导入机制,以最大程度的提供灵活性,并同意将自己定义的函数注冊为全局动作

库文件是仅仅包括对象定义和函数定义的脚本文件

库文件必须以#scplib 为起始行

在库中定义的对象为全局用户对象和函数为全局用户函数

使用库时须要首先导入,语法格式为

          导入:库,库文件的完整路径名

          import:lib,full path of libfile

普通用户函数调用时的格式为

          调用:函数,函数的名称,函数的參数列表

          call:function,functionname,real parameters list

注冊为全局动作的函数就能够直接通过函数名来调用。语法格式为

          注冊:函数,函数的名称

          register:function,functionname

函数:函数的參数列表

function:real parameters list

请參考样例代码

十六、 与C/C++的交互

因为操作系统提供的API都是C语言的接口,为了实现功能扩展。L脚本语言也同意直接调用操作系统的C语言API函数

眼下。仅支持函数调用约定为__stdcall 的C语言函数

C语言的变量和L脚本语言的对象不是一一相应的关系。因此调用C语言函数的时候不能直接将L脚本语言的对象作为參数传入。可是能够进行适当的转换

L脚本语言中眼下实现了6种主要的C语言数据类型对象

C整数,C无符号整数,句柄,C字符指针。C宽字符指针。指针

相应的C语言数据类型为int ,unsigned int ,HANDLE, char *,wchar_t * ,void *

这里的句柄是指WINDOWS操作系统中的句柄类型HANDLE。指针是指C语言的无类型指针void *

在调用C语言函数之前须要进行适当的定义,格式为

定义:C函数,函数别名, 动态库文件,C语言函数原名,返回值类型,參数类型列表

比如

定义:C函数,MyOutputDebugStringW, c:windowssystem32Kernel32.dll,OutputDebugStringW,无,C宽字符指针

定义:C函数,myMessageBoxW, c:windowssystem32user32.dll,MessageBoxW,C整数,句柄,C宽字符指针,C宽字符指针,C无符号整数

调用C语言函数时须要传入适当的參数和返回值 格式为

调用:C函数, 函数别名,返回值,參数列表

比如

调用:C函数,myMessageBoxW,返回值,參数1,參数2,參数3,參数4

十七、 用户交互接口

十八、 类

L脚本语言支持用户自己定义类,以支持面向对象的类型封装

语法格式为

          定义:类,类的名字

          define:class,name of class

開始:类。类的名字

start:class,name of class

                   定义:整数,成员变量,初始值

                   define:int,name of member,initialvalue

定义:字符串,成员变量字符串,初始值

                   define:string,name of member,initial value

定义:函数。成员函数,成员函数參数

define:function,name of member function,formal parameters

                   開始:函数,成员函数

start:function, name of member function

                   结束:函数,成员函数

                    end:function, name of member function

结束

结束:类。类的名字

          结束

同意调用类的成员函数。语法格式为

          调用:类的名字:成员函数,成员函数參数

          call:classname:functionname,parameters

十九、 进程

假设我们想要在程序中启动外部程序。能够

          执行:程序,进程的名称,进程可执行文件的路径名,启动參数

          run:process,process object name,full path of process file,parameter

假设想要关闭已启动的外部程序,能够

          关闭:程序, 进程的名称

          shutdown:process,process object name

比如:

    执行:程序,proc1,notepad.exe,c:hello.txt

    run:process,proc1,notepad.exe,c:hello.txt

          关闭:程序,proc1

          shutdown:process,proc1

L脚本内置了进程通信的支持。眼下支持命名管道方式的双向通信

语法格式为

打开:管道。管道对象名称,Windows管道名

写入:管道。管道对象名称,字符串名称

读取:管道,管道对象名称,字符串名称

关闭:管道,管道对象名称

比如

打开:管道,pipe1,\.pipemypipe1

open:pipe,pipe1, \.pipemypipe1

写入:管道,pipe1,string1

write:pipe,pipe1,string1

读取:管道,pipe1,string2

read:pipe,pipe1,string2

显示:string2

show:string2

关闭:管道。pipe1

close:pipe,pipe1

二十、 线程

L脚本支持多线程,同意在脚本中派生新的线程。以支持并发操作

语法格式为

          定义:线程,线程的名称,线程函数

          define:thread,name of thread object ,thread function

          执行:线程,线程的名称。线程函数的參数

          run:thread,name of thread object,parameters

在这里。线程函数就是线程运行体所运行的操作,这里和调用函数非常相似,可是这个函数是在还有一个线程中运行的

具体的用法能够參考样例代码

二十一、             调试器使用

L脚本语言提供了一个简单的调试器,用来进行脚本源码的调试,在调试器中打开文件后,选中行点击右键就可以对代码行设置断点,点击调试button即開始调试过程。当脚本运行到设置了断点的行后就会中断下来,并在消息输出窗体中显示提示信息。

再次右键点击已设置断点的行就可以清除断点。

调试器也支持简单的调试命令

bp 行号  ,用来设置断点

bc 行号   ,用来清除断点

g           ,调试执行脚本

sd           ,单步调试脚本

s              ,继续执行脚本

二十二、            password学相关

L脚本语言内置了一些password学算法操作

如字符串加密解密(RC4) 求字符串哈希值(MD5)

内存对象加解密(AES)

语法格式为

加密:字符串名称,密钥字符串名称

encrypt:name of string object,name of key string

解密:字符串名称,密钥字符串名称

decrypt: name of string object,name of key string

求哈希:字符串名称,保存哈希值的字符串,哈希算法名称

hash: name of string object,hash value string name,algorithm

加密:内存对象名称, 密钥字符串名称

encrypt:name of memoryobject,name of key string

解密:内存对象名称, 密钥字符串名称

decrypt:name of memoryobject,name of key string

比如

加密:str1,str2

encrypt:str1,str2

显示:str1

show:str1

解密:str1,str2

decrypt:str1,str2

显示:str1

show:str1

求哈希:str1,str3,MD5

hash:str1,str3,MD5

定义:字符串,str1,"我是一个字符串"

定义:字符串,str2,"密钥"

申请:内存,mem1,1024

写入:mem1,str1

显示:mem1

加密:mem1,str2

显示:mem1

解密:mem1,str2

显示:mem1

释放:内存,mem1

          利用L脚本语言内置的password学算法机制。能够实现脚本内容的加密处理,以此实现算法保护

二十三、            多语言

L脚本语言提供一个keyword为英文的版本号,以方便英文环境的编程,语法结构与中文版同样

二十四、            跨平台

眼下L脚本语言支持windows和Linux两个平台的开发。Linux平台上眼下提供有限的支持

二十五、            扩展特性

L脚本语言中能够直接调用python代码,这样我们能够实现L脚本和python混合编程

在L脚本中。python代码是一个对象,声明一个python对象。就能够直接调用python的代码

语法格式为

定义:PYTHON,python对象名,python版本号(3.4或2.7)

调用:PYTHON, python对象名,python代码字符串

调用:PYTHON, python对象名, python代码文件的全路径

比如

定义:PYTHON,pythonscript1,3.4

调用:PYTHON,pythonscript1,"print('hello')"

调用:PYTHON,pythonscript1,H:scriptengineScritpEngineReleasepyemb7.py

二十六、            窗口与图形

L脚本语言内置了一些主要的图形对象,以支持图形化的编程

画布对象是一个窗口,在上面能够进行图形元素的绘制

          眼下支持在画布对象上绘制矩形、椭圆

          语法格式为

定义:画布,画布对象的名称

define:canvas,name of canvas object

显示: 画布对象的名称

show: name of canvas object

画:矩形, 画布对象的名称,左上角横坐标,左上角纵坐标,宽度,高度

draw:rect, name of canvas object,xpos ,y pos ,width,height

画:椭圆, 画布对象的名称,左上角横坐标,左上角纵坐标,宽度,高度

draw:elipse, name of canvas object,xpos ,y pos ,width,height

二十七、            其他 

为方便进行系统管理,L脚本提供了一些内置的全局对象

如 计算机 是当前执行脚本的宿主机器

我们能够通过脚本来对本机进行控制

关闭:计算机

shutdown:computer

重新启动:计算机

reboot:computer

挂起:计算机

suspend:computer

原文地址:https://www.cnblogs.com/hrhguanli/p/5076795.html