• 沒有找到結果。

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

76

6.2 延伸導引精靈描述語言(EWDL)

本系統以「.iwiz」作為特定領域語言 EWDL 檔案的附檔名,開啟此檔案時 Eclipse 會針 對此附檔名開啟專屬的整合式開發環境,此開發環境是利用 Xtext 設計特定領域語言時,

Xtext 自動產生的專屬開發環境,提供了包括 Syntax Coloring、Content Assist、Validation、

Quick Fixes 與 Folding ...等強大的輔助編輯功能,讓使用者能夠更容易的進行開發。

對於 EWDL 的編輯方式,主要透過幾個保留字的使用來編輯一個完整的導引精靈 程式,表 6-1 為導引精靈程式的描述語法,以「Wizard」保留字作為整個程式的開頭,

以「end」作為程式編輯的結尾,並且在保留字 Wizard 的後面依序輸入導引精靈的名稱 與標題,接著在「< >」之中輸入此導引精靈的詳細敘述完成一個導引精靈的宣告,包含 在裡面的則是用來進行資料收集的導引精靈頁面的描述。

表 6-1:導引精靈程式的描述語法。

表 6-2:導引精靈頁面的描述語法。

01 Wizard wizard_name "title"

02 (< "description" >)?

03

04 iPageNames … 05 iPageLists … 06 iPages … 07 end

01 Page page_name;

02 PageList page_name

(-> page_name)* :page_name(,page_name)*)?;

03

04 Page page_name "title" { 05 (< "description" >)?

06 Questions … 07 }

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

77

導引精靈頁面的宣告與描述方式,表 6-2 為導引精靈頁面的描述語法,以「Page」

保留字宣告一個導引精靈的頁面,以「PageList」保留字宣告導引精靈執行順序,每一個 頁面必須是已經宣告過的頁面,並且可以串接一至多個頁面,透過”->”進行串連,再來 透過冒號”:”來宣告一至多個子頁面,表示此頁面串列可能會執行到哪一個子頁面,若 無子頁面,就直接使用分號”;”作結束。接下來以一組大括號「{ }」將其內容包含在其 中,同樣的在保留字 Page 的後面依序輸入導引精靈頁面的名稱與標題,其中每一個導 引精靈頁面的名稱都必須先以保留字「Page」進行宣告,並且每一個都必須是唯一的,

接著在「< >」之中輸入此導引精靈頁面的詳細敘述完成一個導引精靈頁面的宣告,包含 在裡面的就是用來收集資料的問題描述。

表 6-3:宣告一個 Question 與 GroupQuestion 的語法。

接著是對於收集資料問題的宣告與描述方式,表 6-3 為宣告的語法,以「Question」

保留字來宣告一個 Question,同樣的在保留字後面依序輸入 Question 的名稱、標題與預 設值,接著使用保留字「use」來選擇問題的顯示樣式完成一個 Question 的宣告,圖 6-4 為 Question 的顯示樣式。,不同的顯示樣式對於 Question 接下來的描述方式也會有所不 同,如果回答的方式是有固定的答案選項如 radio、check 與 dropdown,就必須以一組大 括號「{ }」將答案的選項描述在裡面,並以保留字「i.」來宣告一個答案選項,依序輸 入答案的標題與值來完成宣告,對於 GroupQuestion 的宣告是以「Group」保留字來宣告

01 Question question_name "title" ("default_value")?

02 use display_style ({

03 i. "title" value 04 other Menu Items … 05 })?

06 Group group_name "title" { 07 Questions …

08 Group Questions … 09 }

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

78

一個 GroupQuestion 依序輸入 GroupQuestion 的名字與標題完成一個 GroupQuestion 的宣 告,接著利用一組大括號「{ }」將群組問題描述在裡面,其中包含上述的 Question 與自 己本身都可以描述在群組問題裡。

圖 6-4:Question 的顯示樣式。

最後是 help 與 validation 的宣告與描述方式,表 6-4 為宣告語法,以「Help」保留 字來宣告一個 help,接著輸入內容完成一個 Help 的宣告,以「Validate」保留字來宣告 一個 validation,接著利用一組大括號「{ }」將需要做驗證的變數、驗證方法以及以「Error」

作為保留字宣告的錯誤訊息包含在裡面,完成一個 validation 的宣告,對於 help 與 validation 的宣告必須緊接著在 Question 或 GroupQuestion 後面進行描述,由於並非每一 個 Question 或 GroupQuestion 都需要所以是可以省略的。

表 6-4:宣告一個 Help 與 Validation 的語法。

01 (Help "help message")?

02

03 (Validate {

04 check_value "check_mehtod"

05 Error "error message"

06 })?

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

79