注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Bioinformatics home

 
 
 

日志

 
 

Google Simple 语言学习(1)  

2009-07-29 23:04:31|  分类: Simple |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

Simple 语言

Draft version

 2009 六月

作者: Herbert Czymontek

 

语法:

Simple语法采用可扩展的巴科斯范式来标记

巴科斯范式如下:  

  在双引号外的字(有可能有下划线)代表着语法部分。

  尖括号( < > )内包含的为必选项。

  方括号( [ ] )内包含的为可选项(0至 1次)。

  大括号( { } )内包含的为可重复0至无数次的项。

  竖线( | )表示在其左右两边任选一项,相当于"OR"的意思。

语言词汇用蓝粗标记,如 数字1 :1

 

词汇结构:

源文件都是普通的text文件

默认采用UTF-8编码

与其他Basic语言不一样,Simple对大小写敏感,

 

行结束

Simple通过一行来结束,也就是说声明采用行结束区分。如下面的行结束符:

EndOfLine := (CR | LF | CR LF)

?  \u000D (CR – 回车)

?   \u000A (LF – 换行)

?   CR LF (回车换行)

行结束符在单行继续符号 (  _  ) 失效,但是 _ 不能作为起始行的起始符。

 

占位符

占位符 TAB( tab \u0009)和 VT(垂直 tab \u000B)可以用来做分隔标记

 

布尔逻辑

True | Flase

赋予变量布尔逻辑值

BooleanLiteral := True | False

 

字符串

字符串由 双引号 "标记的一系列Unicode字符集。如果字符内部包含"字符,需要在字符前面使用反斜杠(\)。同样,如果字符串内部包含反斜杠 (\),则需要用(\\)表示。

但是以下符号意义特殊

(\n)换行符  (\r)回车符  (\t)占位符  (\f)换页符

例:

StringLiteral := " { StringCharacter } "

StringCharacter := InputCharacter except " and \ | EscapedCharacter

InputCharacter := any 16-bit Unicode character

EscapedCharacter := \\ | \" | \n | \r | \t | \f

 

对象

如果某个对象已初始化但没有任何引用,Nothing表示为空

ObjectLiteral := Nothing

 

 

分隔符

Simple中,一系列分隔符可以这样用

Separator := ( | ) | , | :

 

运算符

 << | < | <= | = | <> | => | > | >> | & | + | - | \ | * | / | ^ |

 

类型和值

Types and Values

简单类型:(数组类型 | 非数组类型)

Type := NonArrayType | ArrayType

 Boolean | Byte | Short | Integer | Long | Single | Double | String | Date | Variant | ObjectType| ArrayType

 

Boolean类型 True 、 False

Byte类型 占8位字节整数  范围 -128 to 127

Short 类型 16位字节整数值 范围 -32768 to 32767

Integer类型  32位字节整数值 范围 -2147483648 to 2147483647.

Long 类型 64位字节整数值  范围  - 9223372036854775808 -9223372036854775807

Single 类型 单精度的float型

Double 类型 双精度的float型

String 类型

Date 类型

Variant (可变类型)

 

Array 数组类型

数组类型的元素的类型一致,可以多维,最多256维

数组类型可以指定最大数组大小,可以不指定,动态调整数组类型。

 

对象类型:

指向某个对象实例或者Nothing

Simple支持对象继承与接口继承。一个接口对象可以包括常量、无实体的函数和过程

每个非接口对象有两个预先定义的事件

1.       Load事件, 在任何一个对象发生引用触发

2.       分配对象实例的会触发初始化事件 Initialize 事件。如 New 操作符

 

变量默认值

Boolean False

Byte 0

Short 0

Integer 0

Long 0

Single 0.0

Double 0.0

String  ""

Date Nothing

Variant any default Value

Array Nothing

Object Nothing

 

类型转换

 

 

变量定义

' Good Examples: Variable Declarations

Dim data1 As Integer ' instance data member

Static Dim data2 As Integer, data3 As Integer ' object data member

 

过程

Sub Foo()

Dim localData As Integer ' local variable

End Sub

 

过程2

Sub Foo()

Static Dim localData As Integer ' compile time error: no 'static' local variables

End Sub

 

常量

Const ZERO As Integer = 0

Const ONE As Integer = ZERO + 1, TWO As Integer = ONE + 1

 

 

过程举例

Sub ParenthesizedExpressionExamples()

Dim par1 As Integer, par2 As Integer, par3 As Integer

par1 = 1

par2 = 2

par3 = 3

TestProcedure(par1, par2, par3, TestFunction())

' par1 still 1, par2 still 2, but par3 now 4, 4th actual argument wasn't an lvalue - so no notable

changes there

End Sub

 

 

带参数过程 (默认是传值 , ByVal传值  ByRef变量引用)

Sub TestProcedure(par1 As Integer, ByVal par2 As Integer, ByRef par3 As Integer, ByRef par4 As Integer)

par1 = 2

par2 = 3

par3 = 4

par4 = 5

End Sub

 

函数定义(类似VB)

Function TestFunction() As Integer

TestFunction = 4  ' will return 4

End Function

 

属性定义

' Examples of property declaration

Dim currentStatus As String ' Backing storage for Status property

Property Status As String

Get

Status = currentStatus ' Returns the status

End Get

Set

currentStatus = Status ' Stores status into backing

StatusLabel.Text = Status ' Updates StatusLabel

End Set

End Property

 

 

事件声明

Event TestEvent(str As String)

End Event

 

Dim Obj As ObjectWithEvent ' variable holding instance of an object defining TestEvent

Event Obj.TestEvent(str As String)

StatusLabel = "Status: " & str

End Event

 

别名

' Good Examples:

' You cannot only use Alias for shorter names but also to disambiguate names

Alias FirstObjectType = com.google.devtools.example1.ObjectType ' object type defined in

com.google.devtools.example1

Alias SecondObjectType = com.google.devtools.example2.ObjectType ' object type defined in

com.google.devtools.example2

Dim data1 As FirstObjectType

Dim data2 As SecondObjectType

  评论这张
 
阅读(2719)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017