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 給某一變 數。