陳述式

Statements(陳述式)是用來控制變數要如何操作、怎麼進行操作的程式碼,
Blackey Script的陳述式同樣借鑒了C++的語法進行撰寫。
一般而言,程式碼的多數比例為運算陳述式,
運算陳述式將會由上到下依序執行,
執行過程遇到其他陳述式時則可能進行跳轉。

各種陳述式語法條列如下表:

陳述式語法
Expression statement
Selection statement
Iteration statement
Jump statement

接下來,我們對每一種不同的陳述式展開說明。

運算陳述式 – Expression statement

運算陳述式的語法相當簡單,注意語法內的方括號是需要忽略的。

[expression ] ;

運算陳述式會依序執行,最常見的運算陳述式如指派/呼叫函式等,舉例如下:

x = 1;
y = 1 * 2;
print(y);

選擇陳述式 – Selection statement

目前Blackey Script在選擇陳述式只支援if-else陳述式。
if-else陳述式使用運算陳述式做為條件來控制分支,
當if運算式得到為非零值時,就會跳轉進入if區塊中,而略過其他區塊。
如果運算的值為零,則會略過if區塊,跳轉進入else區塊 (如果有else區塊的話)。

Case 1

// 如果expression運算為非零,則進入if區塊,運行statement
if ( expression ) {

statement1;

}

Case 2

// 如果expression運算為非零,則進入if區塊,運行statement1,忽略else區塊
if ( expression ) {

statement1;

} else {

// 如果expression運算為零,則進入else區塊,運行statement2,忽略if區塊
statement2;

}

Case 3

// 如果expression1運算為非零,則進入if區塊,運行statement1,忽略其他區塊
if ( expression1 ) {

statement1;

} else if (expression2) {

// expression1運算為零時,開始運算expression2,
// 如果expression2運算為非零,則進入該區塊,運行statement2,忽略else區塊
statement2;

} else {

// 當expression1跟expression2都運算為零時,執行else區塊
statement3;

}

舉例如下:

x = 1;
y = 2;
if (x < y) {

print(“x 小於 y”);

} else {

print(“x 大於等於 y”);

}
// 印出 “x 小於 y”

疊代陳述式 – Iterator statement

疊代陳述式會使指定區塊依據某個條件來決定執行次數,
次數可以為零次或是多次,一般我們將疊代陳述式稱作迴圈。
在疊代陳述式未達到終止條件時,如遇到跳躍陳述式也可能提早中止迴圈。

Blackey Script目前僅支援while陳述式,語法如下:

while ( expression ) {

statement;

}

舉例如下:

x = 0;
while (x < 5) {

print(x);
x = x + 1;

}
// 印出 0, 1, 2, 3, 4

跳躍陳述式 – Jump statement

跳躍陳述式會從目前的區塊進行跳轉,
當前的區塊可能是迴圈,或者是自定義函數。
Blackey Script目前支援三種跳轉陳述式,語法如下:

跳躍陳述式語法
break; 跳過該區塊剩餘的語句,
離開最前的迴圈
continue; 跳過該區塊剩餘的語句,
開始下一次的迴圈循環
return [expression] ; 跳過該區塊剩餘的語句,
回傳陳述表達式的運算結果。

break / continue

break/continue陳述式通常會搭配if-else陳述式來提早跳出迴圈,舉例如下:

break case

x = 0;
while (x < 100) {

print(x);
x = x + 1;
if (x > 5) {

print(“break out”);
break;

}

}
print(“done”);
// 印出 0, 1, 2, 3, 4, 5, “break out”, “done”

continue case

x = 0;
while (x < 100) {

x = x + 1;
if (x > 5) {

continue;

}
print(x);

}
print(“done”);
// 印出 1, 2, 3, 4, 5, “done”

return

return陳述式的使用方式通常用於自定義函數中,
如果你直接使用在腳本中,則會在執行到return的時候終止整個腳本的運行。

x = 0;
while (x < 100) {

print(x);
x = x + 1;
if (x > 5) {

print(“break out”);
return 0;

}

}
print(“done”);
// 印出 0, 1, 2, 3, 4, 5, “break out”
// 跟 break 的範例不同,這邊不會印出”done”

exit

exit陳述式的使用方式通常用於自定義函數中,
在執行到exit的時候就終止整個腳本的運行。
帶入非0值時,會在日誌視窗印出日誌,方便你確認錯誤的發生點:

def quitCheck(val) {

if (val == 3) {

exit(1);

}

}

x = 0;
while (x < 100) {

x = x + 1;
quitCheck(x);
print(x);

}
print(“done”);
// 印出 1, 2, 3, 4

// 印出 exit(1)
[Line: 13] exit error code 1.000000