EXPRESS語言參考手冊.doc
《EXPRESS語言參考手冊.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《EXPRESS語言參考手冊.doc(110頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、 EXPRESS語言參考手冊 目 錄 第1章 概述錯(cuò)誤! 未找到索引項(xiàng)。 1.1 基本概念 1.2 語法格式 1.3 特殊字符注解 第2章 基本語言元素 2.1 字符集 2.1.1 數(shù)字(digits) 2.1.2 字母(letter) 2.1.3 下劃線 2.1.4 特殊字符 2.1.5 空字符 2.2 注解(Remark) 2.2.1 嵌入式注解 2.2.2 行尾注解 2.3 符號(hào) 2.4 保留字 2.4.1 關(guān)鍵字 2.4.2 作為運(yùn)算符的保留字 2.4.3 標(biāo)準(zhǔn)常數(shù)
2、 2.4.4 標(biāo)準(zhǔn)函數(shù) 2.4.5 標(biāo)準(zhǔn)過程 2.5 標(biāo)識(shí)符 2.6 常數(shù) 2.6.1 二進(jìn)制常數(shù) 2.6.2 整數(shù) 2.6.3 實(shí)數(shù)常數(shù) 2.6.4 字符串常數(shù) 2.6.5 邏輯常數(shù) 第3章、數(shù)據(jù)類型 3.1簡單類型 3.1.1 NUNBER(數(shù)值類型) 3.1.2 INTEGER(整數(shù)類型) 3.1.3 REAL(實(shí)數(shù)類型) 3.1.4 LOGICAL(邏輯類型) 3.1.5 BOOLEAN(布爾類型) 3.1.6 BINARY(二進(jìn)制類型) 3.1.7 STRING(字符串類型) 3.2聚集
3、數(shù)據(jù)類型 3.2.1ARRAY(數(shù)組類型) 3.2.2BAG(包類型) 3.2.3 LIST(表類型) 3.2.4SET(集合類型) 3.3 實(shí)體數(shù)據(jù)類型(Entity Type) 3.4 自定義數(shù)據(jù)類型(Defined Type) 3.5 枚舉類型 3.6 選擇數(shù)據(jù)類型(Select) 第4章、聲明語句與塊 4.1 標(biāo)識(shí)符的作用域 4.2 類型聲明(Type Declarations) 4.3 實(shí)體(Entity) 4.3.1 屬性(Attributes) 4.3.2 局部規(guī)則(Local Rules) 4.3.3
4、超類與子類 4.3.4 隱含聲明(Implicit Declarations) 4.4 模式(Schema) 4.5 常量(constant) 4.6 算法(Algorithms) 4.6.1 參數(shù)(Parameters) 4.6.2 局部變量(Local Variables) 4.6.3 函數(shù) 4.6.4 過程 4.7 規(guī)則(Rule) 第5章、接口規(guī)范 5.1 USE接口規(guī)范 5.2 REFERENCE接口規(guī)范 5.3 USE與REFERNCE的相互制約 5.4 隱式引用 5.4.1 常量引用(CONSTAN
5、T REFERENCE) 5.4.2 實(shí)體引用(ENTITY REFERENCE) 5.4.3 函數(shù)引用(FUNCTION REFERENCES) 5.4.4 過程引用(PROCEDURE REFERENCES) 5.4.5 類型引用(TYPE REFERENCES) 5.5 子類的修剪(pruning) 第6章、表達(dá)式 6.1 算術(shù)運(yùn)算符 6.1.1 實(shí)數(shù)取舍(REAL NUMBER ROUNDING) 6.2 關(guān)系運(yùn)算符 6.2.1 值比較運(yùn)算符 6.2.2 區(qū)間表達(dá)式 6.2.3實(shí)例比較運(yùn)算符 6.2.4 成員運(yùn)算
6、符 6.2.5 LIKE運(yùn)算符 6.3 二進(jìn)制運(yùn)算符 6.3.1 二進(jìn)制下標(biāo)運(yùn)算 6.3.2 二進(jìn)制數(shù)子串下標(biāo) 6.3.3二進(jìn)制數(shù)連接運(yùn)算符 6.4 邏輯運(yùn)算符 6.4.1 NOT運(yùn)算符 6.4.2 AND運(yùn)算符 6.4.3 OR 運(yùn)算符 6.4.4 XOR運(yùn)算符 6.5 字符串運(yùn)算符 6.5.1 串下標(biāo) 6.5.2 子串下標(biāo) 6.5.3 字符串連接運(yùn)算符 6.6 聚集運(yùn)算符 6.6.1 聚集下標(biāo) 6.6.2 相交運(yùn)算符 6.6.3 并運(yùn)算符 6.6.4差運(yùn)算符 6.6.5 子集運(yùn)算
7、符 6.6.6 超集運(yùn)算符 6.7 引用 6.7.1簡單引用 6.7.2前綴式引用 6.8實(shí)體運(yùn)算符 6.8.1 屬性的引用 6.8.2 組引用(group reference) 6.9 函數(shù)調(diào)用 6.10 聚集的初始化 6.11 實(shí)體生成器 6.11.1復(fù)雜實(shí)體生成器 6.12 類型兼容性 第7章、可執(zhí)行語句 7.1 空語句 7.2 ALIAS語句 7.3 賦值語句 7.4 CASE語句 7.5 復(fù)合語句 7.6 ESCAPE語句 7.7 IF...THEN...ELSE語句 7.8 過程調(diào)用語句
8、 7.9 REPEAT(循環(huán))語句 7.9.1 增量控制 7.9.2 WHILE條件 7.9.3 UNTIL條件 7.10 RETURN語句 7.11 SKIP語句 第8章、標(biāo)準(zhǔn)常量 8.1 常數(shù)e 8.2 不確定值 8.3 邏輯假--FALSE 8.4 圓周率--PI 8.5 自身詞--SELF 8.6 邏輯真--TRUE 8.7 UNKNOW 第9章、標(biāo)準(zhǔn)函數(shù) 第10章、標(biāo)準(zhǔn)過程 第1章 概述 EXPRESS是一種規(guī)范化的信息模型語言。它提供了對論域中對象的規(guī)范(或定義)的詳細(xì)描述,同時(shí)地提供了與這些對象有
9、關(guān)的信息和約束的描述。EXPRESS主要用于信息建模。關(guān)于其標(biāo)準(zhǔn)可參見ISO TR9007、ISO 10303。 EXPRESS并不是一種程序設(shè)計(jì)語言。它由允許用明確和簡要說明數(shù)據(jù)限制定義的明確對象語言元素組成。EXPRESS語言不包含輸入/輸出、信息處理以及管理之外的語言元素。 1.1 基本概念 在EXPRESS中,定義了以下概念: 屬性(Attribute):用于描述實(shí)體的特性、品質(zhì)、特征等。 概念模式(Conceptual Schema):沒有具體實(shí)現(xiàn)的一種模式。 常量(Constant):不隨時(shí)間變化或環(huán)境變化而變化的值。
10、 數(shù)據(jù)(Data):表示信息的符號(hào)。 實(shí)體(Entity):表示具有共同特性的概念或物理對象的一類集合。 函數(shù)(Function):接收輸入?yún)?shù)并產(chǎn)生指定類型輸出結(jié)果值的算法。輸入?yún)?shù)值不能被修改。 信息(Information):關(guān)于事實(shí)、過程或思想的知識(shí)。 信息庫(Information base):參見ISO TR 9007。 實(shí)例(Instance):一種類型的一個(gè)特定值。 模型(Model):論域的一種規(guī)范化描述。 對象(Object):存在于現(xiàn)實(shí)世界的物質(zhì)或概念。 全體(Population):一個(gè)信息
11、庫的內(nèi)容。 初等項(xiàng)(Primary):用一個(gè)名字或常數(shù)表示的值。 過程(Procedure):處理輸入?yún)?shù)并產(chǎn)生一個(gè)終結(jié)狀態(tài)的算法。輸入?yún)?shù)值可以被修改。 命題(Proposition):對一個(gè)事例或事例集為有效的特殊狀態(tài)的斷言或否定。 規(guī)則(Rule):對于一個(gè)實(shí)體實(shí)例或?qū)嵗c實(shí)例之間的一個(gè)或多個(gè)約束的詳細(xì)描述。 模式(Schema):構(gòu)造部分或全部模型的數(shù)據(jù)項(xiàng)的集合。 稀疏數(shù)組(Sparse array):一個(gè)包含未知值的EXPRESS數(shù)組。 語言符號(hào)(Token):不能再分解詞意的語言詞匯元素。 類型(Typ
12、e):有效值范圍的表示。 1.2 語法格式 下面介紹EXPRESS語法中用到的語法符號(hào)。 EXPRESS的語法在語法框中表示。在語法框中有若干條規(guī)則,每條規(guī)則的左側(cè)有一個(gè)標(biāo)號(hào),作為其它語法對它進(jìn)行引用的標(biāo)識(shí)。 用于定義EXPRESS語法的元語言(meta language)如下所述。標(biāo)識(shí)符(identifier)一詞通常表示一個(gè)非終結(jié)符號(hào),它與另一個(gè)產(chǎn)生式有聯(lián)系。常數(shù)文字(literal)通常表示一個(gè)終結(jié)符號(hào),它是字符序列并且不能再展開。在這種情況下,字符表示任何定義在ISO 6937中的可打印字符,標(biāo)識(shí)符由字母、數(shù)字和連接符組成。 語法 = {
13、產(chǎn)生式}. 產(chǎn)生式 = 標(biāo)識(shí)符 ‘=’ 表達(dá)式 ‘.’ . 表達(dá)式 = 項(xiàng){ ‘|’ 項(xiàng)}. 項(xiàng) = 因子{同子}. 因子 = 標(biāo)識(shí)符 | 文字 | 組 | 選項(xiàng) | 重復(fù). 文字 = ’’’’ 字符{字符} ’’’’. 組 = ‘(’ 表達(dá)式 ‘)’. 選項(xiàng) = ‘[’ 表達(dá)式 ‘]’. 重復(fù) = ‘{’ 表達(dá)式 ‘}’. 常數(shù)文字是終結(jié)符號(hào),它用單引號(hào)括起來,并且區(qū)分大小寫。當(dāng)單引號(hào)出現(xiàn)在常數(shù)文字中時(shí)必須連寫兩次。括在括號(hào)中的一組表達(dá)式被當(dāng)作一個(gè)單元處理。用[ ]括起來的表達(dá)式表示該表達(dá)式
14、是可選的。用{}括起來的表達(dá)式表示該表達(dá)式可重復(fù)多次。 例1:串類型的語法如下: 語法: 271 │ string_type = STRING [ ‘(’ width ‘)’ [ FIXED ] ] . 294 │ width = simple_expression. . 串類型的語法定義中包含串的定義、串長度表達(dá)式和字符串長度是否可變,中括號(hào)[ ]括起來的一部分是可選的。小括號(hào)(‘(’ ‘)’)指示必出現(xiàn)的字符。 按照上述規(guī)則,下列的任何一個(gè)定義都是合法的: a) string b) string
15、( 22 ) c) string ( 19 ) fixed 1.3 特殊字符注解 下面的注解通常用于表示全部字符集,并且有些特殊字符是不能顯示的。 \a 表示任何可打印的ISO6937字符 \n 表示換行符 \q 表示撇號(hào)()符 \s 表示空格符 \o 表示任何其它字符 下邊給出一個(gè)關(guān)于Schema的例子: SCHEMA example; ENTITY entity1; a:integer; b:integer;
16、 END_ENTITY; ENTITY entity2 a:entity1; b:integer; END_ENTITY; END_SCHEMA; 第2章 基本語言元素 本節(jié)說明組成EXPRESS 模式的基本元素:字符集、注明、符號(hào)、保留字、標(biāo)識(shí)符和常數(shù)文字(Literals)。 語法定義摘于EXPRESS Language Syntax A,它定義了語言的語法,并且提供了這里沒有的語言產(chǎn)生式,關(guān)于語法規(guī)范的定義已在第1章中給出了。 基本語言元素由文字流組成,通常它
17、被分割成若干物理行。一個(gè)物理行包含0個(gè)或任何數(shù)目的字符,最后以換行符結(jié)束,在EXPRESS中的一行可有任意長度。 下面的例子中,例2和例3在功能上是相等的。 例2: entity point; x,y,z: real ; end-entity; 例3: ENTITY point; x, y, z: real; END_ENTITY; 2.1 字符集 EXPRESS語言由特定規(guī)則的字符串組成。除去空格的這些字符組合成語言符號(hào)。EXPRESS的語言符號(hào)包括關(guān)鍵字、標(biāo)識(shí)
18、符、符號(hào) 或文字,用于寫EXPRESS的基本字符包括數(shù)字、字符、下劃線、空格及一些特殊字符: 2.1.1 數(shù)字(digits) 語法: 121 | digits = ‘0’ | ‘1’ | ‘2’ | ‘3’ | ‘4’ | ‘5’ | ‘6’ | ‘7’ | ‘8’ | ‘9’ . EXPRESS使用阿拉伯?dāng)?shù)字0-9。 2.1.2 字母(letter) 語法: 124 | letter = ‘a(chǎn)’ | ‘b’ | ‘c’ | ‘d’ | ‘e’ | ‘f’ | ‘g’ | ‘h’ | ‘I’ | ‘j’ | ‘k’ | ‘l’
19、| ‘m’ | ‘n’ | ‘o’ | ‘p’ | ‘q’ | ‘r’ | ‘s’ | ‘t’ | ‘u’ | ‘v’ | ‘w’ | ‘x’ | ‘y’ | ‘z’ . EXPRESS可用大寫、小寫或字母表的混合字母,僅在被引號(hào)引起的字母大小寫是有效的。 2.1.3 下劃線 下劃線字符(_)在形成標(biāo)識(shí)符和關(guān)鍵字被使用。下劃線不能用于第一個(gè)字符。 2.1.4 特殊字符 語法: 137 | special = not_paren_star_special | ‘*’ | ‘(‘ | ‘)’ . 130 | no
20、t_paren_star_special = ‘!’ | ‘@’ | ‘#’ | ‘$’ | ‘%’ | ‘^’ | ‘&’ | ‘_’ | ‘-’ | ‘+’ | ‘=’ | ‘{’ | ‘}’ | ‘[’ | ‘]’ | ‘~’ | ‘:’ | ‘;’ | ‘“‘ | ’’’’ | ‘,’ | ‘.’ | ‘?’ | ‘/’ | ‘|’ | ‘\’ . 特殊字符主要用于語言部分,它們可用于注釋和括起來的串中。 2.1.5 空字符 空字符用于分隔語言符號(hào),并且常常用于提高寫語言的結(jié)構(gòu)和可讀性,例如分隔或加空行。 2.1.5
21、.1 空格 在兩個(gè)語言符號(hào)之間可用一個(gè)或多個(gè)空格。在語言語法中,注釋\s習(xí)慣用于表示一個(gè)空格字符。 2.1.5.2 換行 換行標(biāo)明一個(gè)源行的物理結(jié)束,換行通常處理為一個(gè)空格,但是當(dāng)終結(jié)一個(gè)注釋或者終結(jié)一個(gè)文字串時(shí),它是一個(gè)記號(hào)。在語言語法中,換行被注釋\n表示。 2.1.5.3 其它字符 沒有在2.1.1到2.1.5.2中定義的字符,將作為空格處理,除非它們出現(xiàn)在串文字中。在EXPRESS語法中,注釋\o用于表示其它字符。 2.2 注解(Remark) 注解用于文檔,它在語言元素中無效。注解有兩種:嵌入式注解和行尾注解。嵌入式注解可
22、放于任何兩個(gè)語言元素之間,行尾注解出現(xiàn)在一個(gè)物理行的未尾并且等價(jià)于一個(gè)行結(jié)束符。 2.2.1 嵌入式注解 語法: 180 | embedded_remark = ‘(*’ { not_lparen_star | lparen_not_star | star_not_rparen | embedded_remark } ‘*)’ . 128 | not_lparen_star = not_paren_star | ‘)’ . 129 | not_paren_star = letter | digit | not_paren_star_special
23、 . 130 | not_paren_star_special = ‘!’ | ‘@’ | ‘#’ | ‘$’ | ‘%’ | ‘^’ | ‘&’ | ‘_’ | ‘-’ | ‘+’ | ‘=’ | ‘{’ | ‘}’ | ‘[‘ | ‘]’ | ‘~’ | ‘:’ | ‘;’ | ‘“‘ | ’’’’ | ‘,’ | ‘.’ | ‘?’ | ‘/’ | ‘|’ | ‘\’ . 126 | lparen_not_star = ‘(’ not_star . 132 | not_star = not_paren_star | ‘(’ | ‘)’ . 138 | st
24、ar_not_rparen = ‘*’ not_rparen . 131 | not_rparen = not_paren_star | ‘*’ | ‘(’ . 字符對(*表示嵌入式注解的開始,字符對*)表示嵌入式注解的結(jié)束。嵌入式注解可出現(xiàn)在任意兩個(gè)語言元素之間。 任何字符均可出現(xiàn)在嵌入注解的開始與結(jié)束之間,包括換行字符。所以,嵌入式注解可以占據(jù)多個(gè)物理行。 嵌入式注解可嵌套。當(dāng)嵌套注解時(shí)必順注意符號(hào)對‘(*’與’*)’成對匹配。 例4:下面是嵌入式注解嵌套的例子 (* The
25、 (* symbol starts a remark, and the *) symbol ends it *) 2.2.2 行尾注解 語法: 279 | tail_remark = ‘--’ { \a | \s } \n . 行尾注解在一個(gè)物理行的未尾。兩個(gè)連字符(--)表示行尾注解開始,用換行符結(jié)束它。 2.3 符號(hào) 運(yùn)算符號(hào)字符或是EXPRESS中有特殊含義的字符組。符號(hào)在EXPRESS中用作分隔符或操作符,分隔符用于分隔鄰接的詞匯元素。操作符與運(yùn)算符有聯(lián)系,它表示在操作數(shù)上執(zhí)行的操作,見第6章對運(yùn)算符的詳細(xì)解
26、釋。EXPRESS符號(hào)見表1。 表1-EXPRESS 符號(hào) . , ; : * + - = \ / < > [ ] { } | ( ) ** <= <> >= <* := || :=: :<>: % , (* *) -- @ 2.4 保留字 EXPRESS保留字包括關(guān)鍵字和標(biāo)準(zhǔn)常數(shù)、函數(shù)或過程的名字,保留字將不被用于標(biāo)識(shí)符。EXPRESS保留字描述如下,保留字可用大寫、小寫字母、下劃線字符及“?”組合而成。 2.4.1 關(guān)鍵字 EXPRESS關(guān)鍵字已列于表2中,關(guān)鍵字通常用于增加語
27、義以便于語言更容易閱讀和理解。 2.4.2 作為運(yùn)算符的保留字 運(yùn)算符保留字定義已列于表3中。 2.4.3 標(biāo)準(zhǔn)常數(shù) 標(biāo)準(zhǔn)常數(shù)的名字已列于表4中。見第8章對這些標(biāo)準(zhǔn)常數(shù)的詳細(xì)說明。 2.4.4 標(biāo)準(zhǔn)函數(shù) 標(biāo)準(zhǔn)函數(shù)的名字已列于表5中,見第8章對這些函數(shù)的說細(xì)說明。 2.4.5 標(biāo)準(zhǔn)過程 標(biāo)準(zhǔn)過程的名字已列于表6中。見第15節(jié)對這些過程的說細(xì)說明。 表2-EXPRESS函數(shù)保留字 ABSTRACT AGGREGATE ALIAS ARRAY AS BAG BEGIN BINARY BOOLEAN BY CASE CO
28、NSTANT CONTEXT DERIVE ELSE END END_ALIAS END_CASE END_CONSTANT END_CONTEXT END_ENTITY END_FUNCTION END_IF END_LOCAL END_MODEL END_PROCEDURE END_REPEAT END_RULE END_SCHEMA END_TYPE ENTITY ENUMERATION ESCAPE FIXED FOR FROM FUNCTION GENERIC IF INTEGER INVERSE LIST LOCAL
29、LOGICAL MODEL NUMBER OF ONEOF OPTIONAL OTHERWISE PROCEDURE QUERY REAL REFERENCE REPEAT RETURN RULE SCHEMA SELECT SET SKIP STRING SUBTYPE SUPERTYPE THEN TO TYPE UNIQUE UNTIL USE VAR WHERE WHILE 表3-EXPRESS保留字(運(yùn)算符) AND ANDOR DIV IN LIKE MOD NOT OR XOR
30、 表4-EXPRESS保留字(標(biāo)準(zhǔn)常數(shù)) ? SELF CONST_E PI FALSE TRUE UNKNOWN 表5-EXPRESS保留字(函數(shù)名) ABS ACOS ASIN ATAN BLENGTH COS EXITS EXP FORMAT HIBOUND HIINDEX LENGTH LOBOUND LOG LOG10 LOG2 LOINDEX NVL ODD ROLESOF SIN SIZEOF SQRT TAN TYPEOF USEDIN VALUE 表6 - EXPRESS保留字(標(biāo)
31、準(zhǔn)過程名) INSERT REMOVE 2.5 標(biāo)識(shí)符 標(biāo)識(shí)符是在模式中給出元素的名字,包括模式本身的名字。標(biāo)識(shí)符不能與EXPRESS的保留字相同。 標(biāo)識(shí)符的第一個(gè)字符是一個(gè)字母。若還有其它字符的話,剩余的字符可為字母、數(shù)字或下劃線的任何組合。用于組成標(biāo)識(shí)符的字母對大小寫是不敏感。 2.6 常數(shù) 語法: 221 | literal = binary_literal | integer_literal | logical | logical_literal | real_litera
32、l | string_literal . 常數(shù)是由一組字符組成的數(shù)值。常數(shù)的類型取決于字符是如何組成語法元素的。常數(shù)類型可以是二進(jìn)制數(shù)、整數(shù)、實(shí)數(shù)、字符串和邏輯型的。 2.6.1 二進(jìn)制常數(shù) 語法: 118 | binary_literal = ‘%’ bit {bit } . 119 | bit = ‘0’ | ‘1’ . 二進(jìn)制常數(shù)表示一個(gè)二進(jìn)制類型值,并且它由%符號(hào)開始,后邊跟若干個(gè)位(0或1)。 例6: 一個(gè)有效的二進(jìn)制數(shù)可表示為: % 2.6.2 整數(shù)
33、 語法: 123 | integer_literal = digits . 22 | digits = digit { digit } . 一個(gè)整數(shù)常數(shù)表示一個(gè)整數(shù)類型值,并且它全部由數(shù)字組成。 例7: 有效整數(shù)常數(shù) 4016 38 2.6.3 實(shí)數(shù)常數(shù) 一個(gè)實(shí)數(shù)常數(shù)表示一個(gè)實(shí)數(shù)類型值,并且它由一個(gè)尾數(shù)和一個(gè)可選的指數(shù)部分組成。尾數(shù)包含一個(gè)小數(shù)點(diǎn)。 語法: 133 | real_literal = digits ‘.’ [ digits ] [ ‘E’ [
34、 sign ] digits ] . 122 | digits = digit { digit } . 135 | sign = ‘+’ | ‘-’ . 例8: 有效的實(shí)數(shù)文字 1.E6 "E" 可用大寫或小寫 3.5e-5 359.62 例9: 無效的實(shí)數(shù)常數(shù) .001 在小數(shù)點(diǎn)前最少有一位數(shù)字 1e10 必有小數(shù)點(diǎn)在文字中 2.6.4 字符串常數(shù) 字符串常數(shù)表示一個(gè)字符串類型值,是一個(gè)由單引號(hào)括起來的字符序列。如果單引號(hào)是字符串的一部分
35、,需寫兩個(gè)連續(xù)的單引號(hào)。字符串常數(shù)不能包含換行符,所以一個(gè)字符串常數(shù)不能跨越一個(gè)物理行。 語法: 139 | string_literal = \q {character | \s | \o } \q . 120 | character = digit | letter | special . 例10:有效的字符串常數(shù) Baby needs a new pair of shoes! 讀為:Baby needs a new pair of shoes! Eds Computer store 讀為 Eds Computer
36、store 例11:非法的字符串常數(shù)例子 Eds Computer store 字符串常數(shù)中的單引號(hào)個(gè)數(shù)應(yīng)總為偶數(shù)個(gè)。 Eds Computer store 超越了一個(gè)物理行 2.6.5 邏輯常數(shù) 邏輯常數(shù)表示一個(gè)邏輯或布爾類型值,并且它是標(biāo)準(zhǔn)常數(shù)TRUE、FALSE或UNKNOWN三者之一。UNKNOWN與布爾數(shù)據(jù)類型是兼容的。 語法: 125 | logical_liberal = FALSE | TRUE | UNKNOWN . 第3章、數(shù)據(jù)類型 數(shù)據(jù)類型是EXPRESS
37、語言的最基礎(chǔ)部分。數(shù)據(jù)類型用于表示實(shí)例值的取值范圍。每個(gè)值(特性、邏輯變量或形式參數(shù))都與其取值范圍有關(guān)系。例如:整數(shù)取值范圍即全部整數(shù)的集合。 數(shù)據(jù)類型可分成以下幾類:簡單類型(Simple types)、聚集類型(aggregation types)、定義類型(defined types)、實(shí)體類型(entity types)、枚舉類型(enumeration types)、普通類型(generic types)、選擇類型(select types)等。 數(shù)據(jù)類型應(yīng)用時(shí)要受到一定的限制,不同的數(shù)據(jù)類型有不同的應(yīng)用場合。表7中列出了各種類型數(shù)據(jù)在使用中的限制。 表7-類
38、型的使用 類型 a b c 簡單類型 ● ● ● 聚集類型 ● ● ● 定義類型 ● ● ● 普通類型 ● 聚集類型 ● 枚舉類型 ● 選擇類型 ● 說明: a) 基本類型:表示一個(gè)屬性或局部量; b) 參量類型:表示一個(gè)規(guī)范化參量或函數(shù)結(jié)果; c) 潛在類型(underlying types):用來表示一個(gè)定義類型。 3.1簡單類型 簡單類型表示EXPRESS中最小數(shù)據(jù)單位。即它們不能再分割為EXPRESS
39、能夠識(shí)別的更小元素。追蹤模式(schema)的一條路徑,最終將以這些簡單類型之一結(jié)束。簡單類型包括:數(shù)值型(NUMBER)、實(shí)型(REAL)、整型(INTEGER)、字符串型(STRING)、布爾型(BOOLEAN)、邏輯型(LOGICAL)和二進(jìn)制型(BINARY)等。 3.1.1 NUNBER(數(shù)值類型) 語法: 228│number_type = NUMBER . 當(dāng)一個(gè)數(shù)的具體表示細(xì)節(jié)不重要時(shí)使用NUMBER類,NUMBER類型是REAL和INTEGER數(shù)據(jù)類型的超類。 例12: size:NUMBER; 由于我
40、們可能不知道size具體表示的對象是什么,因此沒法準(zhǔn)確地表示它。例如,在一場足球比賽中觀眾的人數(shù)則size是一個(gè)整數(shù),而如果用size來表示投球量,則size是一個(gè)實(shí)數(shù)。 3.1.2 INTEGER(整數(shù)類型) 語法: 201 | integer_type= INTEGER . INTEGER數(shù)據(jù)類型是NUMBER數(shù)據(jù)類型的子類,它用于表示一個(gè)整數(shù)的值,其量值沒有限制。 例13: 本例用一個(gè)整數(shù)數(shù)據(jù)類型表示屬性名為nodes的值的區(qū)域 ENTITY foo; nodes: INTEGER
41、; ... END_ENTITY; 3.1.3 REAL(實(shí)數(shù)類型) 語法: 244 | real_type = REAL [ ‘(’Precision_spec ‘)’ ] . 234 | Precision_spec = simple_expression . REAL數(shù)據(jù)類型是NUMBER數(shù)據(jù)類型的子類,它用于表示有理數(shù),無理數(shù)以及采用科學(xué)記數(shù)法表示的實(shí)數(shù)。有理數(shù)和無理數(shù)是無限可分的,并且是精確的。科學(xué)記數(shù)法表示的實(shí)數(shù)只能表示指定精度的值。precision_spec表示有效數(shù)字位數(shù),是一個(gè)
42、大0的整數(shù),不指定Precision_spec時(shí),實(shí)數(shù)可以為任意精度。 一個(gè)實(shí)數(shù)用一個(gè)尾數(shù)和一個(gè)可選的指數(shù)表示,數(shù)的有效位數(shù)是去掉前邊所有的零后尾數(shù)的位數(shù)。 3.1.4 LOGICAL(邏輯類型) 語法: 225 | Logical-type = LOGICAL . LOGICAL數(shù)據(jù)類型表示TRUE(真)、FALSE(假)、或UNKNOWN(未知)的值。 邏輯數(shù)據(jù)類型有下列條件:FALSE < UNKNOWN < TRUE。除了有UNKNOW值的,邏輯數(shù)據(jù)類型和布爾數(shù)據(jù)類型是兼容的。 3.1.5 BOOLEAN(布爾類型)
43、
語法:
158 | boolean-type=BOOLEAN
布爾類型表示TRUE(真)或FALSE(假)值。布爾類型可以被看作為LOGICAL類型的子類。
BOOLEAN數(shù)據(jù)類型有下列條件關(guān)系:FALSE 44、ARY(二進(jìn)制類型)
語法
157 | binary_type=BINARY [ ‘(’ width ‘)’ [ FIXED ] ] .
294 | width=simple_expression.
BINARY數(shù)據(jù)類型表示具有0或1值的位序列。二進(jìn)制可定義為固定長度的或者是可變長度的。如果二進(jìn)制沒被詳細(xì)說明為固定長度(在說明中用FIXED保留字),則它被說明為可變長度。可變特性允許二進(jìn)制隨機(jī)地增長或收縮它的長度。二進(jìn)制的任意部分和單獨(dú)的一個(gè)位都可使用下標(biāo)尋址,這一技術(shù)陳述于第6.3節(jié)。
規(guī)則與限制:
a)width(可選的)給出了能被容 45、納的最大位數(shù)。該表達(dá)式將產(chǎn)生一個(gè)正的整數(shù)結(jié)果。
b)當(dāng)沒有詳細(xì)說明時(shí),二進(jìn)制值的位的數(shù)不受限制。
例15:
下列用于保持字符字體信息。
ENTITY character;
representatiou:ARRAY[1:20] OF BINARY(8) FIXED;
END_ENTITY;
3.1.7 STRING(字符串類型)
語法:
271 | string_type = STRING [ ‘(‘ width ‘)’ [FIXED] ].
294 | width=simple_expression.
STRING數(shù)據(jù)類型 46、表示0個(gè)或多個(gè)字符序列。
在串中字母的大小寫是有區(qū)別的。width給出了可容納的最金字符數(shù),width是一個(gè)整數(shù)。 串可定義為固定長度或是可變長度。若串沒被說明為固定長度(在說明時(shí)用FIXED保留字),則它被說明為可變長度??勺兲匦员硎咀址呻S機(jī)增長或收縮其長度。
在字符串中,可對其中的子串或單個(gè)字符進(jìn)行下標(biāo)尋址,這一技術(shù)在第6.5節(jié)中介紹。
例16
string1 : STRING;
string1定義成一個(gè)沒有最大長度的可變串。
例17:
string2:STRING(10);
string1被定義為一個(gè)最長為10個(gè)字符的串,但在實(shí)際上它在0到10 47、個(gè)字符是可變的。
例18:
string3:STRING(10) FIXED;
string3被定義成一個(gè)有精確10個(gè)字符長度的串,它的實(shí)際長度不能變化。
3.2聚集數(shù)據(jù)類型
聚集數(shù)據(jù)類型用于表示順序或非順序的某些基本類型元素的集合,集合中元素的個(gè)數(shù)是否可變,這取決于聚集的類型。聚集包括以下幾種類型:ARRAY(數(shù)組)、BAG(包)、LIST(表)和SET(集合)。
每種聚集類型有不同的含義:
(1) ARRAY數(shù)據(jù)類型有固定元素個(gè)數(shù),元素的索引是很重要的。
例19:
數(shù)學(xué)中的矩陣可被定義為多維數(shù)組。
(2)BAG數(shù)據(jù)類型的元素是無序 48、的,元素可重復(fù)出現(xiàn),包中元素的個(gè)數(shù)是否可變可以在類型聲明時(shí)指定。
例20:
加固器(如螺母、螺栓、螺絲釘、鉚釘?shù)?在組裝問題上可被看作一個(gè)包,這個(gè)包中可能含有許多一樣的螺栓,可以從中選取任一個(gè)。
(3)LIST數(shù)據(jù)類型的元素是有序的,元素是否可重復(fù)出現(xiàn)以及元素的個(gè)數(shù)是否可變可以在類型聲明時(shí)指定。
例21:
對于一個(gè)生產(chǎn)過程所要完成的操作可表示為一個(gè)LIST,它的一個(gè)特點(diǎn)是它能隨機(jī)收縮或擴(kuò)張,如一個(gè)操作可以被加入到該LIST中也可以從該LIST中刪除一個(gè)操作。
(4)SET數(shù)據(jù)類型的元素是無序的,但元素不允許出現(xiàn)重復(fù),SET中元素的個(gè)數(shù)是否可變可以 49、在類型聲明時(shí)指定。
例22:
世界上人口是一個(gè)SET集合。
聚集類型總是一維的,如果要表示多維的對象,可以將聚集元素說明成聚集類型,這樣多層嵌套可表示出多維聚集。
例23:
LIST[1:3]OF ARRAY[5:10]OF INTEGER
這是一個(gè)二維聚集。
3.2.1數(shù)組類型(ARRAY)
語法:
149 | array_type = ARRAY ‘[’ bound_spec ‘]’ OF [ OPTIONAL ]
[ UNIOUE] base_type .
161 | bound_spec = ‘[’ bound_1 50、‘:’ bound_2 ‘]’ .
159 | bound_1 = simple_expression .
160 | bound_2 = simple_expression .
156 | base_type = aggregation_types | simple_types | named_types .
144 | aggregation_types = array_type | bag_type | list_type | set_type .
268 | simple_types = binary_type | boolean_type | integer_type |
51、
logical_type | number_type | real_type | string_string_type .
226 | named_types = entity_ref | type_ref .
ARRAY數(shù)據(jù)類型表示有序的、元素個(gè)數(shù)的固定的聚集。在一個(gè)數(shù)組中無素的數(shù)量,通過它的下限和上限確定。上、下限的值可為負(fù)數(shù)、0或正整數(shù)表達(dá)式,上限必須大于或等于下限。
假定m是下限,n是上限,在數(shù)組中有n-m+1個(gè)元素。每個(gè)數(shù)組元素可通過下標(biāo)尋址。
說明如下:
a)bound_spec包括兩個(gè)表達(dá)式。
52、 b)兩個(gè)表達(dá)式bound_1和bound_2的結(jié)果都是整數(shù)。.
c)bound_1表達(dá)式給出數(shù)組的下限。
d)bound_2表達(dá)式給出數(shù)組的上限,該值必須固定,所以不能用"?"。
e)bound_1必須小于或等于bound_2。
f)如果提供了OPTIONAL關(guān)鍵字的話,它表示并非全部元素均需要值,即元素可以為null,產(chǎn)生一個(gè)稀疏數(shù)組。
g)如果提供UNIQUE關(guān)鍵字的話,它表示在一個(gè)數(shù)組實(shí)例中,每個(gè)元素都是不相同的。
例24:
本例說明如何聲明一個(gè)多維數(shù)組。
sectors:ARRAY[1:10]OF …第一維
ARRAY[1 53、1:14]OF… 第二維
a;
第一組數(shù)組有10個(gè)元 ,元素類型為ARRAY[11:14]OF a;第二組數(shù)組中有4 個(gè)元素,元素類型為a,因此在在屬性setors中一共有40類型為a的元素。
3.2.2包類型(BAG)
語法:
155 | bag_type = BAG [ bound_spec ] OF base_type.
161 | bound_spec = ‘[’ bound_1 ‘:’ bound_2 ‘]’.
159 | bound_1 = simple_expression.
160 | bound_2 = simple_expr 54、ession.
156 | base_type = aggregation_types | simple_types | named_types.
144 | aggregation_types = array_type | bag_type | list_type | set_type.
268 | simple_types = binary_type | boolean_type | integer_type |
logical_type | number_type | real_type | string_type.
226 | named_types=entity_ 55、tef |type_ref.
BAG數(shù)據(jù)類型表示無序的同類元素的集合,元素的個(gè)數(shù)可以有選擇進(jìn)行說明,若沒有說明元素的個(gè)數(shù),則包中可有任何數(shù)量的元素,包中的元素可以重復(fù)。
說明如下:
a).bound_spec包含兩個(gè)表達(dá)式
b).bound_1是大于等于0的整數(shù)表達(dá)式,它給出包中最小的元素個(gè)數(shù),即下限。
c).bound_2是大于等于bound_1的整數(shù)表達(dá)式;它給出了在包中可存放的最大元素個(gè)數(shù),即上限。
當(dāng)用"?"替代bound_2時(shí),包中元素的個(gè)數(shù)沒有上界的限制。
d)若忽略bound_spec,默認(rèn)為界限為[0 56、:?]。
例25:
本例定義屬性類型是一個(gè)以點(diǎn)(實(shí)體數(shù)據(jù)類型)為元素的包。
a_bag_of_points:BAG OF point;
屬性名a_bag_of_points是一個(gè)包,這個(gè)包中可有0或多個(gè)點(diǎn),若要求包中需要至少一個(gè)元素。則要把下限定義為1,如下:
a_bag_of_poinbs:BAG[1:?]OF point;
現(xiàn)在屬性 a_bag_of_points最少包含一個(gè)元素。
3.2.3 表類型(LIST)
語法:
220 | list_type = LIST [ bound_spec ] OF [ UNIQUE ] base_t 57、ype.
161 | bound_spec = ‘[’ bound_1 ‘:’ bound_2 ‘]’.
159 | bound_1 = simple_expression.
160 | bound_2 = simple_expression.
156 | base_type = aggregation_types | simple_types | named_types.
144 | aggregation_types = array_type | bag_type | list_type | set_type.
268 | simple_types = binary_type 58、| boolean_type | integer_type |
logical_type | number_type | real_type | string_type.
226 | named_types=entity_tef | type_ref.
LIST數(shù)據(jù)類型表示一個(gè)有序的同類元素的聚集。在表中元素的個(gè)數(shù)是否可變可在說明時(shí)定義,若元素個(gè)數(shù)沒被說明,表中能存放任意數(shù)目的元素。表中的元素可以重復(fù)。
說明如下:
a).bound_spec包含兩個(gè)表達(dá)式。
b).bound_1是一個(gè)大于等于0的整數(shù)表達(dá)式,它給出 59、了表中最少的元素個(gè)數(shù),即下限
c).bound_2是大于等于bound_1的整數(shù)表達(dá)式.它給出了表中可放的的最大元素個(gè)數(shù),即上限。
當(dāng)用"?"替代時(shí),表中元素的個(gè)數(shù)沒有上界的限制。
d)如果忽略bound_spec,默認(rèn)的界限為[0:?]。
e)如果使用UNIQUE關(guān)鍵字,它說明在同一個(gè)表中的元素不可重復(fù)出現(xiàn)。
例26:
本例定義了一個(gè)數(shù)組表,表由0到10個(gè)數(shù)組成,表中每個(gè)數(shù)組是互不相同的。
complex_lint:LIST[0:10]OF UNIQUE ARRAY[1:10]OF INTEGER;
表complex_list中整數(shù)的個(gè)數(shù)根據(jù)LIST 60、中數(shù)組的個(gè)數(shù)不同而不同,可能的個(gè)數(shù)有:
0、10、20、...、90、100個(gè)。當(dāng)用UNIQUE關(guān)鍵字指定后,表中的每個(gè)數(shù)組是不同的。
3.2.4集合類型(SET)
語法:
220 | set_type = SET [ bound_spec ] OF base_type.
161 | bound_spec = ‘[’ bound_1 ‘:’ bound_2 ‘]’.
159 | bound_1 = simple_expression.
160 | bound_2 = simple_expression.
156 | base_type = aggregation_ty 61、pes | simple_types | named_types.
144 | aggregation_types = array_type | bag_type | list_type | set_type.
268 | simple_types = binary_type | boolean_type | integer_type |
logical_type | number_type | real_type | string_type.
226 | named_types=entity_tef | type_ref.
62、 SET類型表示無順序的同類元素的聚集,SET元素的個(gè)數(shù)是否可變可在說明時(shí)定義,若元素個(gè)數(shù)沒被說明,表中能放下任何數(shù)目的元素。SET中元素不可以重復(fù)出現(xiàn)。
說明如下:
a)bound_spec包含兩個(gè)表達(dá)式。
b)bound_1是一個(gè)大于等于0的整數(shù)表達(dá)式,它給出了集合中最少的元素個(gè)數(shù),即下限
c)bound_2是一大于等于bound_1的整數(shù)表達(dá)式;它給出了集合中可放的最大元素個(gè)數(shù),即上限。
當(dāng)用"?"替代上限時(shí),集合中元素的個(gè)數(shù)沒有上限的限制。
d)如果忽略bound_spec,默認(rèn)的界限為[0:?]。
例27:
該例定義了一個(gè)屬性,其類型是一個(gè)元 63、素為點(diǎn)(是一個(gè)實(shí)體數(shù)據(jù)類型)的集合。
a_set_of_poimts:SET OF point;
屬性a_set_of_points能夠包含0或多個(gè)點(diǎn),每個(gè)點(diǎn)實(shí)例(在集合實(shí)例中)將與其它點(diǎn)實(shí)例不同。
如果一個(gè)集合需要最少一個(gè)元素,說明要提供一個(gè)下限:
a_set_of_points:SET [1:?]OF point;
屬性 a_set_of_points現(xiàn)在至少包含一個(gè)元素;每個(gè)點(diǎn)實(shí)例(在集合實(shí)例中)將是互不相同的。
3.3 實(shí)體數(shù)據(jù)類型(Entity Type)
語法:
187 | entity_ref = entity_id .
184 64、| entity_id = simple_id .
實(shí)體類型是被實(shí)體聲明語句聲明的對象類型(參見第4.3節(jié))。在模式中聲明的任何實(shí)體能夠作為屬性,局部變量或形式參數(shù)的數(shù)據(jù)類型。用實(shí)體作為一個(gè)屬性的數(shù)據(jù)類型,則在兩個(gè)實(shí)體間建立了關(guān)系。
說明如下:
entity_ref是對同一模式中所聲明實(shí)體的一個(gè)引用,當(dāng)該實(shí)體在另一模式中聲明時(shí),則要建立對之引用的接口(參見第5章)。
例28:
本例利用一個(gè)點(diǎn)實(shí)體作為一個(gè)屬性的數(shù)據(jù)類型。
ENTITY point;
x,y,z:REAL;
END_ENT 65、ITY;
ENTITY line;
p0,p1:POINT;
END_ENTITY;
線實(shí)例有兩個(gè)屬性p0和p1。每個(gè)屬性的數(shù)據(jù)類型是一個(gè)點(diǎn)(point),在這種情況下,每個(gè)屬性的值是必須的。其中任何一個(gè)點(diǎn)為空都不能定義直線。
3.4 自定義數(shù)據(jù)類型(Defined Type)
語法:
284 | type_ref = type_id .
282 | type_id = simple_id .
自定義數(shù)據(jù)類型是用戶對標(biāo)準(zhǔn)數(shù)據(jù)類型集合的擴(kuò)展,它運(yùn)用TYPE語句定義。其使用方法與標(biāo)準(zhǔn)類型 66、相同,其它數(shù)據(jù)類型通過引用自定義數(shù)據(jù)類型的名字可使用它。type_ref是用類型聲明定義的自定義數(shù)據(jù)類型的名字,type_id是標(biāo)準(zhǔn)數(shù)據(jù)類型名字。
例29:
下列定義了幾個(gè)數(shù)據(jù)類型,它們指出計(jì)量單位和屬性間的關(guān)系。
TYPE volume = REAL;
END_TYPE;
ENTITY PART;
...
bulk:volume;
END_ENTITY;
屬性bulk表示一個(gè)實(shí)數(shù),但是,使用自定義數(shù)據(jù)類型volume,幫助理解實(shí)數(shù)的含義和文法。即,REAL表示值而不是其它東西。
3.5 枚舉類型
語法:
190 | enumeration_type = ENUMERATION OF ‘(’ enumeration_id
{‘,’enumeration_id} ’)’ .
188 | enumeration_id = simple_id .
ENUMERATION數(shù)據(jù)
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識(shí)競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案