國
立 政 治 大 學
‧
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