EBMIDE——IOSL语法的提炼(一)

IOSL简介

无意的想法,有意的栽培,从最初的表达式脚本渐渐的演化成了一门脚本语言,它名字叫叫输入/输出脚本语言(In/Out Script Language),简称IOSL

它具备了动态语言的许多特性,例如:弱类型、面向过程、解析执行,它有自己的函数库依赖于平台,以此完成许多复杂的功能。

它与其他语言最大的不同是,它天生就支持多输入、多输出,多输出是构建企业级通信层的一项重要特性,其他语言要实现多输出必须要把多个参数封装到一个结构里再返回(这也不叫多输出了J)

还有,它是一门国产的语言。

IOSL语法的提炼

语法的提炼主要是引入重要的“语法糖”,主要目的是让语法更简洁、易读、易写,减少错误发生等。

严格的字符串定义

先看看原来的字符串定义

方式1Str1 = 字符串1

方式2Str2 = 字符串2”

方式3Str2 = 字符串2’

新的设计中,我取消了方式1的字符串定义方式,要强制采用单、双引号来定义。这样做的目的,一是让语法更严谨,二是我要把方式1的定义方式用作变量的赋值(看下文)

变量的自动解析

看看原来的脚本

Num = 0

Num = @Num+ 1

Num2 = @Num

Num3 = @Num+ @Num2

从上面的代码可以看到,要访问一个变量必须要在前头加上一个“@”符号,这对于脚本编写及其不便,定义的变量名是Num,但是读取时确变成@Num,出现不一致性,而且容易漏掉“@”出错。

再看看新版的脚本

Num = 0

Num = Num + 1

Num2 = Num

Num3 = Num + Num2

少了多余的“@”符号,语法流畅多了。

内部函数定义

支持内部函数的定义,这样做能够把几个紧密关联的函数脚本同时放在同一个文件里,便于日后的阅读、管理、迁移等。

function name(type arg1, type arg2):type out1, type out2

//子语句

error

//子语句

end

end

下面是一个异步调用的例子,用定义一个回调内部函数,消息框确认后出发该函数。

function Callback

InvokeAction("删除数据")

end

ShowQuestion("确定要删除选择的行吗?", “Callback”)

结语

语法的提炼需要时间与经验的积累,这不会是一个轻松的事情,就上述几点语法的变动,我也不得不修改所有相关联的文件,试想如果连同一个紧迫的项目在进行,这些改动是灾难的会影响项目进度。

<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"><img src="http://my.csdn.net/uploads/201205/19/1337412384_3017.png" alt=""><formulas><f eqn="if lineDrawn pixelLineWidth 0"><f eqn="sum @0 1 0"><f eqn="sum 0 0 @1"><f eqn="prod @2 1 2"><f eqn="prod @3 21600 pixelWidth"><f eqn="prod @3 21600 pixelHeight"><f eqn="sum @0 0 1"><f eqn="prod @6 1 2"><f eqn="prod @7 21600 pixelWidth"><f eqn="sum @8 21600 0"><f eqn="prod @7 21600 pixelHeight"><f eqn="sum @10 21600 0"></f></f></f></f></f></f></f></f></f></f></f></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"><lock aspectratio="t" v:ext="edit"></lock></path></stroke></shapetype>

相关文章

EBM专栏

备注

*技术交流与合作:QQ: 157859303Email[email protected]

你可能感兴趣的:(ios)