EBMIDE——服务脚本IOS(三):IOS语言

IOS简介

IOS是In/Out Script(输入/输出脚本)的简称,在我的设计中,用in,out,script3个节点来描述一个服务调用。

目前的问题

目前的IOS脚本部分是用XML节点来描述的,这样做降低了脚本语法的解析难度。但是,带来的问题是,要遵循xml文档语法,在属性里编写表达式时要避开双引号,语法不够简便等导致编写服务时不方便。所以,需要抛开XML的约束,让IOS成为一种轻量级的脚本语言,编写起来要更方便。

XML脚本的问题,编写不方便…

<script>

<!--io: 输入/输出脚本,i:invoke执行,o: out输出-->

<io i="" o=""/>

<!--if: 条件脚本,i: invoke执行-->

<if i="">

<!--成功则执行if/io里的脚本-->

<io i="" o=""/>

<!--elseif: 条件脚本中的分支判断,i: invoke执行-->

<elseif i="">

<io i="" o=""/>

</elseif>

<!--else: 条件脚本中的否定-->

<else>

<io i="" o=""/>

</else>

</if>

<!--foreach: 遍历脚本,i:invoke执行获取父项,o:out输出子项-->

<foreach i="" o="">

<io i="" o=""/>

</foreach>

<!--invoke: 调用子服务,service:子服务名称-->

<invoke service="">

<in>

<!-- i:当前服务的参数,o:子服务的输入参数-->

<io i="" o=""/>

</in>

<out>

<!-- i:子服务的输出参数,o:当前服务的参数-->

<io i="" o=""/>

</out>

</invoke>

<!--throwerror: 引发异常,i:invoke执行异常信息-->

<throwerror i=""/>

<!--error: 错误处理脚本-->

<error>

<io i="" o=""/>

</error>

</script>

IOS语言的设计

【语言的命名】

输入/输出脚本语言:In/Out Script Language,简称IOSL

【语句的划分】

每个语句以换行结束,对于双引号""、单引号''、小括号()和中括号[]内的换行不算作语句结束

【注释】

双斜线//注释内容,,对于双引号""、单引号''、小括号()和中括号[]内的双斜线不算作注释

例子:

//注释...

代替XML节点:

<!---->

【赋值语句:=】

等号=分隔,执行表达式expression并把结果赋值到变量var。var为空时则不设置任何变量。var为空时可缺省等号。

例子:

var = expression

= expression

expression

代替XML节点:

<io i=""o=""/>

【条件语句:if...elseif...else...】

if关键字后面表达式expression为真时执行内部子语句,否则执行后面的else if或else语句;

else if关键字后面表达式expression为真时执行内部子语句,否则执行后面的else if或else语句;

在if和else if的判断都为假时才执行else的内部子语句;

if后允许出现0个或多个else if和0个或1个else。

例子:

if expression

//子语句

elseif expression

//子语句

end

else

//子语句

end

end

代替XML节点:

<if i="">

<--子节点-->

<elseifi="">

<--子节点-->

</elseif>

<else>

<--子节点-->

</else>

</if>

【遍历语句:foreach...in...】

遍历表达式expression的执行结果,遍历时的子项赋值到变量var

例子:

foreach var in expression

//子语句

end

代替XML节点:

<foreach i="" o="">

<--子节点-->

</foreach>

【异常语句:throwerror】

引发异常,异常消息是表达式expression的执行值。

例子:

throwerror expression

代替XML节点:

<throwerrori=""/>

【调用语句:invoke...】

调用invoke关键字后面的子服务脚本service。in子语句内部声明输入参数,out子语句内部声明输出参数

例子:

invoke service

in

//赋值子语句

end

out

//赋值子语句

end

end

代替XML节点:

<invoke service="">

<in>

<--赋值子节点-->

</in>

<out>

<--赋值子节点-->

</out>

</invoke>

【错误处理语句:error...】

当脚本发生异常时执行error内的子语句。只允许出现0个或1个error语句。

例子:

error

//子语句

end

代替XML节点:

<error>

<--子节点-->

</error>

【循环语句:while...】

当表达式expression值为真时执行内部子语句。

例子:

while expression

//子语句

end

新的IOS编辑器

支持新版本的IOSL编辑,关键字高亮显示,服务参数移到左边,增加表达式选择模块。

编写脚本时可选择或查看表达式,使用更方便。

服务脚本的script节点则改成CDATA括住的脚本语句。

相关文章

EBMIDE——相关文章索引

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值