Squirrel 文档翻译(Statements)

一个Squirrel是一系列的声明块组成。

Squireel中声明块和和C系列的语言很相似 (C/C++, Java, C# etc...):赋值,函数调用,程序流控制结构,等等,并且外加一些自定义的声明,像yield,table和数组构造器(所有这些细节的信息后续文档中都覆盖到了)。声明块可以被新行或者“;”(如果在switch/case结构中的话也可以被case和default分割),如果声明块后跟有“}”上述分割符号是非必须的。

 

stat := '{' stats '}'

被“{}”分割的一串声明叫做块,块本身也是声明块。

 

控制流声明

Squirreel实现了最常用的控制流结构:if, while, do-while, switch-case, for, foreach

 

true 和false

Squirrel有布尔型,和c++一样,它把null,0(整型),0.0(浮点型)当做false,其他的值都看做真。

 

 

if(a>b)
    a=b;
else
    b=a;

if(a==10)
{
    b=a+b;
    return a;
}


  
  
while
stat:= 'while' '(' exp ')' stat
执行表达式直到条件为false。
function testy(n)
{
    local a=0;
    while(a<n) a+=1;
	
	while(1)
	{
        if(a<0) break;
        a-=1;
    }
}
					

    
    
do/while
stat:= 'do' stat 'while' '(' expression ')'
首先执行一次声明块,接下来重复执行声明直到条件为false
local a=0;
do
{
    print(a+"/n");
    a+=1;
} while(a>100)
 

    
    
switch

stat := 'switch' ''( exp ')' '{'
	'case' case_exp ':'
		stats
	['default' ':'
		stats]
'}'
 
是一种控制语句,允许通过传递函数体内某个选择分支进行选择执行。控制权传递给case标签,case标签用来和条件表达式匹配,如果都全都不匹配
就会跳转到default标签。一个switch选择语句可以包含任意数量的case项,如果两个case项具有相同的表达式结果,第一个将被执行。default项是为一个被第一次也是最后一次执行的分支。
break关键字可以跳出switch块。
 
循环

      
      
for
stat:= 'for' '(' [initexp] ';' [condexp] ';' [incexp] ')' statement
 
执行语句以至条件为false:
for(local a=0;a<10;a+=1)
    print(a+"/n");
//or
glob <- null
for(glob=0;glob<10;glob+=1){
    print(glob+"/n");
}
//or
for(;;){
    print(loops forever+"/n");
}	
		

      
      
foreach
'foreach' '(' [index_id','] value_id 'in' exp ')' stat
 
对表,数组,类,字符串或者迭代器中每个元素执行声明块语句,如果exp是迭代器,每次迭代它都会被激活,并且知道生命期结束。val值就是resume函数的返回值,
迭代从0开始。
local a=[10,23,33,41,589,56]
foreach(idx,val in a)
    print("index="+idx+" value="+val+"/n");
//or
foreach(val in a)
    print("value="+val+"/n");

        
        

break

stat := 'break'
break声明语句将会终止执行中的循环(for, foreach, while or do/while),或者跳到switch选择语句外。
 

          
          

continue

stat := 'continue'
continue操作符将会跳过后续的执行,跳到下次循环的开始。
 

            
            

return

stat:= return [exp]
return语句终止当前函数或者迭代器的执行,也可以返回表达式的执行结果。如果省略了return语句,将返回null,如果return语句被用在一个迭代器中,这个迭代器就永远不会被激活。

 

            
            

yield

stat := yield [exp]

(看Generators).

 
局部变量声明
initz := id [= exp][',' initz]
stat := 'local' initz
局部变量可以声明在程序的任何地方,它的作用域从被声明处开始到当前所在块结束。例外:局部变量可以作为for语句的第一个表达式。
for(local a=0;a<10;a+=1)
    print(a); 

函数声明
funcname := id ['::' id] stat:= 'function' id ['::' id]+ '(' args ')'[':' '(' args ')'] stat

创建一个新函数

 

类声明

memberdecl := id '=' exp [';'] | '[' exp ']' '=' exp [';'] | functionstat | 'constructor' functionexp stat:= 'class' derefexp ['extends' derefexp] '{' [memberdecl] '}'

创建一个新类

try/catch

stat:= 'try' stat 'catch' '(' id ')' stat

 

try包含的代码块,在这个快内,有异常发生,比如运行期错误,抛出异常等。catch语句提供异常处理代码。当异常被捕获时,catch块的ID参数将指向这个异常。

throw

stat:= 'throw' exp

 

抛出异常,可以抛出任意值。

 

const

stat:= 'const' id '=' 'Integer | Float | StringLiteral
      

声明一个常量(看Constants & Enumerations).

 

enum

enumerations := ( ‘id’ '=' Integer | Float | StringLiteral ) [‘,’] stat:= 'enum' id '{' enumerations '}'

声明枚举变量 (看 Constants & Enumerations).

表达式声明
stat := exp

在Squirrel中,每个表达式都可以时声明块,表达式的值也可以被抛出。

if/else

stat:= 'if' '(' exp ')' stat ['else' state
有条件的根据表达式的结构执行声明块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丑娃儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值