• 沒有找到結果。

PGML 所含有的 elements

Chapter 4 PGML / PUML

4.2 PGML – Pervasive loGic Markup Language

4.2.3 PGML 所含有的 elements

根據討論出來的PGML 所必須具備的能力,以及為了方便使用 PGML 的程 式設計師,能夠很快地熟悉PGML 的語法,所以 PGML 的 elements 採用一 般程式語言語法的命名規則。下面將所有的elements 分類列出(表 4-1):

[表 4-1 PGML 所有的 elements 說明]

Element Description Core elements

<object> 每一份 PGML 文件的 root element (document element),說明這是一份 可視為一個物件(object)的 PGML 文 件。<object>的 element content 即是 所 要 描 述 的 邏 輯 運 算 (logic computing)。

<method> PGML 最 主 要 的 element , 每 個

<method>的 element content 代表的 是想要執行的邏輯描述。另一方面 來看,一個對外開放的<method>就 相當於PGML 對外的一個門戶,提 供一個介面(interface)。

<variable> 在 PGML 中若要宣告變數或是參 數,便是使用這個element。

<operand> 在 PGML 中 , 這 也 是 很 重 要 的 element。要使用常數或使用變數都 要靠這個element 來描述。為邏輯中 最基本的運算子,可代表常數或變 數。

Common elements in many places

<declaration> 用來宣告 global variable 和 local variable 的 element。<declaration>的 element content 即是<variable>的集 合 。 可 為<object> 或 <method> 的 child element。

<test> <test> element content 所代表的語意 是:邏輯判斷。在邏輯上,<test>的 element content 的結果只有兩種:

True 或 False。可為<for>、<if>或

<while>的 child element。

<action> <action>的 element content 所代表的 語意是:啟動邏輯運算。可為<for>、

<if>、<while>和<method>的 child element。也就是說,在流程控制時、

經過條件判斷後以及呼叫某method 時,所要做的動作,都是<action>的 element content 的內容。

Flow control elements

<while> 代表做flow control 的 element,語 意 相 當 於 一 般 程 式 語 言 的 while-loop statement。要完成流程控 制的工作必須搭配<test>和<action>

等child elements。

<for> 代表做flow control 的 element,語 意相當於一般程式語言的 for-loop statement。要完成流程控制的工作 必須搭配<init>、<test>、<step>以及

<action>等 child elements。

<init> <for> element 的 child element 。

<init>的 element content 在語意上即 是代表在做 for-loop 之前的初始值 設定。

<step> <for> element 的 child element 。

<step>的 element content 在語意上 即是代表每做一次 for-loop 之後的 下個階段的狀態。

Condition control elements

<if> 代 表 做 condition control 的 element。語意相當於一般程式語言 的 if-else statement。要完成條件控 制的工作必須搭配<test>和<action>

這兩個child elements,如果需要的 話 也 必 須 搭 配<else> 這 個 child

element。

<else> 在邏輯的語意上,<else>的 element content 即表示當不滿足之前的條件 時,便執行<else> 的 element content 裡的邏輯運算描述。

Mathematic operation elements

<add> 代表加法的element。必須要有兩個 child elements,在語意上即代表將 這兩個child elements 相加。

<sub> 代表減法的element。必須要有兩個 child elements,在語意上即代表將 這兩個child elements 相減。

<mult> 代表乘法的element。必須要有兩個 child elements,在語意上即代表將 這兩個child elements 相乘。

<div> 代表除法的element。必須要有兩個 child elements,在語意上即代表將 這兩個child elements 相除之後取所 得的商數。

<mod> 代表modulus 的 element。必須要有 兩個child elements,在語意上即代 表將這兩個child elements 相除之後 取所得餘數。

Logic comparison elements

<greater-than> 代 表 邏 輯 比 較 中 ,” 大 於 ” 的 element 。 必 須 要 有 兩 個 child elements,在語意上即是比較是否第 一個child element 大於第二個 child element。

<lesser-than> 代 表 邏 輯 比 較 中 ,” 小 於 ” 的 element 。 必 須 要 有 兩 個 child elements,在語意上即是比較是否第 一個child element 小於第二個 child element。

<equal-to> 代 表 邏 輯 比 較 中 ,” 等 於 ” 的 element 。 必 須 要 有 兩 個 child elements,在語意上即是比較是否第 一個child element 等於第二個 child

element。

<not-equal> 代 表 邏 輯 比 較 中 ,” 不 等 於 ” 的 element 。 必 須 要 有 兩 個 child elements,在語意上即是比較是否第 一個 child element 不等於第二個 child element。

<greater-or-equal> 代表邏輯比較中,”大於或等於”的 element 。 必 須 要 有 兩 個 child elements,在語意上即是比較是否第 一個child element 大於或等於第二 個child element。

<lesser-or-equal> 代表邏輯比較中,”小於或等於”的 element 。 必 須 要 有 兩 個 child elements,在語意上即是比較是否第 一個child element 小於或等於第二 個child element。

Logic operation elements

<and> 代 表 邏 輯 運 算 中 的 ”and” 的 element 。 必 須 要 有 兩 個 child elements,在語意上即是滿足第一個 child element 且滿足第二個 child element。

<or> 代表邏輯運算中的”or”的 element。

必須要有兩個child elements,在語 意上即是滿足第一個 child element 或滿足第二個child element。

<not> 代 表 邏 輯 運 算 中 的 ”not” 的 element 。 只 能 有 一 個 child elements , 在 語 意 上 即 是 將 child element 的邏輯顛倒。例如:將 True 變成False,將 False 變成 True。

Method-call and Library- function-call elements

<call-method> 用來表示要呼叫物件本身method 的 element。

<lib> 用來表示要使用library 裡頭的某個 function 的 element。

Other elements

<in> 為<method>的 child element。用來描

述一個 method 所需的參數。child element 為<variable>。

<return> 屬 於<action> 或 <else> 的 element content 中的 element,也相當於在

<method>的 element content 之中。

當 method 需要回傳東西時,便在

<action>或<else>的 element content 做return 的描述。

<assign> <assign>的 element content 表示將某 個數值或變數的值 assign 給某一變 數。