EXPRESS語言參考手冊.doc
《EXPRESS語言參考手冊.doc》由會員分享,可在線閱讀,更多相關(guān)《EXPRESS語言參考手冊.doc(110頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 EXPRESS語言參考手冊 目 錄 第1章 概述錯誤! 未找到索引項。 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 符號 2.4 保留字 2.4.1 關(guān)鍵字 2.4.2 作為運算符的保留字 2.4.3 標準常數(shù)
2、 2.4.4 標準函數(shù) 2.4.5 標準過程 2.5 標識符 2.6 常數(shù) 2.6.1 二進制常數(shù) 2.6.2 整數(shù) 2.6.3 實數(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ù)類型) 3.1.4 LOGICAL(邏輯類型) 3.1.5 BOOLEAN(布爾類型) 3.1.6 BINARY(二進制類型) 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ù)據(jù)類型(Entity Type) 3.4 自定義數(shù)據(jù)類型(Defined Type) 3.5 枚舉類型 3.6 選擇數(shù)據(jù)類型(Select) 第4章、聲明語句與塊 4.1 標識符的作用域 4.2 類型聲明(Type Declarations) 4.3 實體(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 實體引用(ENTITY REFERENCE) 5.4.3 函數(shù)引用(FUNCTION REFERENCES) 5.4.4 過程引用(PROCEDURE REFERENCES) 5.4.5 類型引用(TYPE REFERENCES) 5.5 子類的修剪(pruning) 第6章、表達式 6.1 算術(shù)運算符 6.1.1 實數(shù)取舍(REAL NUMBER ROUNDING) 6.2 關(guān)系運算符 6.2.1 值比較運算符 6.2.2 區(qū)間表達式 6.2.3實例比較運算符 6.2.4 成員運算
6、符 6.2.5 LIKE運算符 6.3 二進制運算符 6.3.1 二進制下標運算 6.3.2 二進制數(shù)子串下標 6.3.3二進制數(shù)連接運算符 6.4 邏輯運算符 6.4.1 NOT運算符 6.4.2 AND運算符 6.4.3 OR 運算符 6.4.4 XOR運算符 6.5 字符串運算符 6.5.1 串下標 6.5.2 子串下標 6.5.3 字符串連接運算符 6.6 聚集運算符 6.6.1 聚集下標 6.6.2 相交運算符 6.6.3 并運算符 6.6.4差運算符 6.6.5 子集運算
7、符 6.6.6 超集運算符 6.7 引用 6.7.1簡單引用 6.7.2前綴式引用 6.8實體運算符 6.8.1 屬性的引用 6.8.2 組引用(group reference) 6.9 函數(shù)調(diào)用 6.10 聚集的初始化 6.11 實體生成器 6.11.1復(fù)雜實體生成器 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章、標準常量 8.1 常數(shù)e 8.2 不確定值 8.3 邏輯假--FALSE 8.4 圓周率--PI 8.5 自身詞--SELF 8.6 邏輯真--TRUE 8.7 UNKNOW 第9章、標準函數(shù) 第10章、標準過程 第1章 概述 EXPRESS是一種規(guī)范化的信息模型語言。它提供了對論域中對象的規(guī)范(或定義)的詳細描述,同時地提供了與這些對象有
9、關(guān)的信息和約束的描述。EXPRESS主要用于信息建模。關(guān)于其標準可參見ISO TR9007、ISO 10303。 EXPRESS并不是一種程序設(shè)計語言。它由允許用明確和簡要說明數(shù)據(jù)限制定義的明確對象語言元素組成。EXPRESS語言不包含輸入/輸出、信息處理以及管理之外的語言元素。 1.1 基本概念 在EXPRESS中,定義了以下概念: 屬性(Attribute):用于描述實體的特性、品質(zhì)、特征等。 概念模式(Conceptual Schema):沒有具體實現(xiàn)的一種模式。 常量(Constant):不隨時間變化或環(huán)境變化而變化的值。
10、 數(shù)據(jù)(Data):表示信息的符號。 實體(Entity):表示具有共同特性的概念或物理對象的一類集合。 函數(shù)(Function):接收輸入?yún)?shù)并產(chǎn)生指定類型輸出結(jié)果值的算法。輸入?yún)?shù)值不能被修改。 信息(Information):關(guān)于事實、過程或思想的知識。 信息庫(Information base):參見ISO TR 9007。 實例(Instance):一種類型的一個特定值。 模型(Model):論域的一種規(guī)范化描述。 對象(Object):存在于現(xiàn)實世界的物質(zhì)或概念。 全體(Population):一個信息
11、庫的內(nèi)容。 初等項(Primary):用一個名字或常數(shù)表示的值。 過程(Procedure):處理輸入?yún)?shù)并產(chǎn)生一個終結(jié)狀態(tài)的算法。輸入?yún)?shù)值可以被修改。 命題(Proposition):對一個事例或事例集為有效的特殊狀態(tài)的斷言或否定。 規(guī)則(Rule):對于一個實體實例或?qū)嵗c實例之間的一個或多個約束的詳細描述。 模式(Schema):構(gòu)造部分或全部模型的數(shù)據(jù)項的集合。 稀疏數(shù)組(Sparse array):一個包含未知值的EXPRESS數(shù)組。 語言符號(Token):不能再分解詞意的語言詞匯元素。 類型(Typ
12、e):有效值范圍的表示。 1.2 語法格式 下面介紹EXPRESS語法中用到的語法符號。 EXPRESS的語法在語法框中表示。在語法框中有若干條規(guī)則,每條規(guī)則的左側(cè)有一個標號,作為其它語法對它進行引用的標識。 用于定義EXPRESS語法的元語言(meta language)如下所述。標識符(identifier)一詞通常表示一個非終結(jié)符號,它與另一個產(chǎn)生式有聯(lián)系。常數(shù)文字(literal)通常表示一個終結(jié)符號,它是字符序列并且不能再展開。在這種情況下,字符表示任何定義在ISO 6937中的可打印字符,標識符由字母、數(shù)字和連接符組成。 語法 = {
13、產(chǎn)生式}. 產(chǎn)生式 = 標識符 ‘=’ 表達式 ‘.’ . 表達式 = 項{ ‘|’ 項}. 項 = 因子{同子}. 因子 = 標識符 | 文字 | 組 | 選項 | 重復(fù). 文字 = ’’’’ 字符{字符} ’’’’. 組 = ‘(’ 表達式 ‘)’. 選項 = ‘[’ 表達式 ‘]’. 重復(fù) = ‘{’ 表達式 ‘}’. 常數(shù)文字是終結(jié)符號,它用單引號括起來,并且區(qū)分大小寫。當(dāng)單引號出現(xiàn)在常數(shù)文字中時必須連寫兩次。括在括號中的一組表達式被當(dāng)作一個單元處理。用[ ]括起來的表達式表示該表達式
14、是可選的。用{}括起來的表達式表示該表達式可重復(fù)多次。 例1:串類型的語法如下: 語法: 271 │ string_type = STRING [ ‘(’ width ‘)’ [ FIXED ] ] . 294 │ width = simple_expression. . 串類型的語法定義中包含串的定義、串長度表達式和字符串長度是否可變,中括號[ ]括起來的一部分是可選的。小括號(‘(’ ‘)’)指示必出現(xiàn)的字符。 按照上述規(guī)則,下列的任何一個定義都是合法的: a) string b) string
15、( 22 ) c) string ( 19 ) fixed 1.3 特殊字符注解 下面的注解通常用于表示全部字符集,并且有些特殊字符是不能顯示的。 \a 表示任何可打印的ISO6937字符 \n 表示換行符 \q 表示撇號()符 \s 表示空格符 \o 表示任何其它字符 下邊給出一個關(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 模式的基本元素:字符集、注明、符號、保留字、標識符和常數(shù)文字(Literals)。 語法定義摘于EXPRESS Language Syntax A,它定義了語言的語法,并且提供了這里沒有的語言產(chǎn)生式,關(guān)于語法規(guī)范的定義已在第1章中給出了。 基本語言元素由文字流組成,通常它
17、被分割成若干物理行。一個物理行包含0個或任何數(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ī)則的字符串組成。除去空格的這些字符組合成語言符號。EXPRESS的語言符號包括關(guān)鍵字、標識
18、符、符號 或文字,用于寫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可用大寫、小寫或字母表的混合字母,僅在被引號引起的字母大小寫是有效的。 2.1.3 下劃線 下劃線字符(_)在形成標識符和關(guān)鍵字被使用。下劃線不能用于第一個字符。 2.1.4 特殊字符 語法: 137 | special = not_paren_star_special | ‘*’ | ‘(‘ | ‘)’ . 130 | no
20、t_paren_star_special = ‘!’ | ‘@’ | ‘#’ | ‘$’ | ‘%’ | ‘^’ | ‘&’ | ‘_’ | ‘-’ | ‘+’ | ‘=’ | ‘{’ | ‘}’ | ‘[’ | ‘]’ | ‘~’ | ‘:’ | ‘;’ | ‘“‘ | ’’’’ | ‘,’ | ‘.’ | ‘?’ | ‘/’ | ‘|’ | ‘\’ . 特殊字符主要用于語言部分,它們可用于注釋和括起來的串中。 2.1.5 空字符 空字符用于分隔語言符號,并且常常用于提高寫語言的結(jié)構(gòu)和可讀性,例如分隔或加空行。 2.1.5
21、.1 空格 在兩個語言符號之間可用一個或多個空格。在語言語法中,注釋\s習(xí)慣用于表示一個空格字符。 2.1.5.2 換行 換行標明一個源行的物理結(jié)束,換行通常處理為一個空格,但是當(dāng)終結(jié)一個注釋或者終結(jié)一個文字串時,它是一個記號。在語言語法中,換行被注釋\n表示。 2.1.5.3 其它字符 沒有在2.1.1到2.1.5.2中定義的字符,將作為空格處理,除非它們出現(xiàn)在串文字中。在EXPRESS語法中,注釋\o用于表示其它字符。 2.2 注解(Remark) 注解用于文檔,它在語言元素中無效。注解有兩種:嵌入式注解和行尾注解。嵌入式注解可
22、放于任何兩個語言元素之間,行尾注解出現(xiàn)在一個物理行的未尾并且等價于一個行結(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)在任意兩個語言元素之間。 任何字符均可出現(xiàn)在嵌入注解的開始與結(jié)束之間,包括換行字符。所以,嵌入式注解可以占據(jù)多個物理行。 嵌入式注解可嵌套。當(dāng)嵌套注解時必順注意符號對‘(*’與’*)’成對匹配。 例4:下面是嵌入式注解嵌套的例子 (* The
25、 (* symbol starts a remark, and the *) symbol ends it *) 2.2.2 行尾注解 語法: 279 | tail_remark = ‘--’ { \a | \s } \n . 行尾注解在一個物理行的未尾。兩個連字符(--)表示行尾注解開始,用換行符結(jié)束它。 2.3 符號 運算符號字符或是EXPRESS中有特殊含義的字符組。符號在EXPRESS中用作分隔符或操作符,分隔符用于分隔鄰接的詞匯元素。操作符與運算符有聯(lián)系,它表示在操作數(shù)上執(zhí)行的操作,見第6章對運算符的詳細解
26、釋。EXPRESS符號見表1。 表1-EXPRESS 符號 . , ; : * + - = \ / < > [ ] { } | ( ) ** <= <> >= <* := || :=: :<>: % , (* *) -- @ 2.4 保留字 EXPRESS保留字包括關(guān)鍵字和標準常數(shù)、函數(shù)或過程的名字,保留字將不被用于標識符。EXPRESS保留字描述如下,保留字可用大寫、小寫字母、下劃線字符及“?”組合而成。 2.4.1 關(guān)鍵字 EXPRESS關(guān)鍵字已列于表2中,關(guān)鍵字通常用于增加語
27、義以便于語言更容易閱讀和理解。 2.4.2 作為運算符的保留字 運算符保留字定義已列于表3中。 2.4.3 標準常數(shù) 標準常數(shù)的名字已列于表4中。見第8章對這些標準常數(shù)的詳細說明。 2.4.4 標準函數(shù) 標準函數(shù)的名字已列于表5中,見第8章對這些函數(shù)的說細說明。 2.4.5 標準過程 標準過程的名字已列于表6中。見第15節(jié)對這些過程的說細說明。 表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保留字(運算符) AND ANDOR DIV IN LIKE MOD NOT OR XOR
30、 表4-EXPRESS保留字(標準常數(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保留字(標
31、準過程名) INSERT REMOVE 2.5 標識符 標識符是在模式中給出元素的名字,包括模式本身的名字。標識符不能與EXPRESS的保留字相同。 標識符的第一個字符是一個字母。若還有其它字符的話,剩余的字符可為字母、數(shù)字或下劃線的任何組合。用于組成標識符的字母對大小寫是不敏感。 2.6 常數(shù) 語法: 221 | literal = binary_literal | integer_literal | logical | logical_literal | real_litera
32、l | string_literal . 常數(shù)是由一組字符組成的數(shù)值。常數(shù)的類型取決于字符是如何組成語法元素的。常數(shù)類型可以是二進制數(shù)、整數(shù)、實數(shù)、字符串和邏輯型的。 2.6.1 二進制常數(shù) 語法: 118 | binary_literal = ‘%’ bit {bit } . 119 | bit = ‘0’ | ‘1’ . 二進制常數(shù)表示一個二進制類型值,并且它由%符號開始,后邊跟若干個位(0或1)。 例6: 一個有效的二進制數(shù)可表示為: % 2.6.2 整數(shù)
33、 語法: 123 | integer_literal = digits . 22 | digits = digit { digit } . 一個整數(shù)常數(shù)表示一個整數(shù)類型值,并且它全部由數(shù)字組成。 例7: 有效整數(shù)常數(shù) 4016 38 2.6.3 實數(shù)常數(shù) 一個實數(shù)常數(shù)表示一個實數(shù)類型值,并且它由一個尾數(shù)和一個可選的指數(shù)部分組成。尾數(shù)包含一個小數(shù)點。 語法: 133 | real_literal = digits ‘.’ [ digits ] [ ‘E’ [
34、 sign ] digits ] . 122 | digits = digit { digit } . 135 | sign = ‘+’ | ‘-’ . 例8: 有效的實數(shù)文字 1.E6 "E" 可用大寫或小寫 3.5e-5 359.62 例9: 無效的實數(shù)常數(shù) .001 在小數(shù)點前最少有一位數(shù)字 1e10 必有小數(shù)點在文字中 2.6.4 字符串常數(shù) 字符串常數(shù)表示一個字符串類型值,是一個由單引號括起來的字符序列。如果單引號是字符串的一部分
35、,需寫兩個連續(xù)的單引號。字符串常數(shù)不能包含換行符,所以一個字符串常數(shù)不能跨越一個物理行。 語法: 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ù)中的單引號個數(shù)應(yīng)總為偶數(shù)個。 Eds Computer store 超越了一個物理行 2.6.5 邏輯常數(shù) 邏輯常數(shù)表示一個邏輯或布爾類型值,并且它是標準常數(shù)TRUE、FALSE或UNKNOWN三者之一。UNKNOWN與布爾數(shù)據(jù)類型是兼容的。 語法: 125 | logical_liberal = FALSE | TRUE | UNKNOWN . 第3章、數(shù)據(jù)類型 數(shù)據(jù)類型是EXPRESS
37、語言的最基礎(chǔ)部分。數(shù)據(jù)類型用于表示實例值的取值范圍。每個值(特性、邏輯變量或形式參數(shù))都與其取值范圍有關(guān)系。例如:整數(shù)取值范圍即全部整數(shù)的集合。 數(shù)據(jù)類型可分成以下幾類:簡單類型(Simple types)、聚集類型(aggregation types)、定義類型(defined types)、實體類型(entity types)、枚舉類型(enumeration types)、普通類型(generic types)、選擇類型(select types)等。 數(shù)據(jù)類型應(yīng)用時要受到一定的限制,不同的數(shù)據(jù)類型有不同的應(yīng)用場合。表7中列出了各種類型數(shù)據(jù)在使用中的限制。 表7-類
38、型的使用 類型 a b c 簡單類型 ● ● ● 聚集類型 ● ● ● 定義類型 ● ● ● 普通類型 ● 聚集類型 ● 枚舉類型 ● 選擇類型 ● 說明: a) 基本類型:表示一個屬性或局部量; b) 參量類型:表示一個規(guī)范化參量或函數(shù)結(jié)果; c) 潛在類型(underlying types):用來表示一個定義類型。 3.1簡單類型 簡單類型表示EXPRESS中最小數(shù)據(jù)單位。即它們不能再分割為EXPRESS
39、能夠識別的更小元素。追蹤模式(schema)的一條路徑,最終將以這些簡單類型之一結(jié)束。簡單類型包括:數(shù)值型(NUMBER)、實型(REAL)、整型(INTEGER)、字符串型(STRING)、布爾型(BOOLEAN)、邏輯型(LOGICAL)和二進制型(BINARY)等。 3.1.1 NUNBER(數(shù)值類型) 語法: 228│number_type = NUMBER . 當(dāng)一個數(shù)的具體表示細節(jié)不重要時使用NUMBER類,NUMBER類型是REAL和INTEGER數(shù)據(jù)類型的超類。 例12: size:NUMBER; 由于我
40、們可能不知道size具體表示的對象是什么,因此沒法準確地表示它。例如,在一場足球比賽中觀眾的人數(shù)則size是一個整數(shù),而如果用size來表示投球量,則size是一個實數(shù)。 3.1.2 INTEGER(整數(shù)類型) 語法: 201 | integer_type= INTEGER . INTEGER數(shù)據(jù)類型是NUMBER數(shù)據(jù)類型的子類,它用于表示一個整數(shù)的值,其量值沒有限制。 例13: 本例用一個整數(shù)數(shù)據(jù)類型表示屬性名為nodes的值的區(qū)域 ENTITY foo; nodes: INTEGER
41、; ... END_ENTITY; 3.1.3 REAL(實數(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ù)是無限可分的,并且是精確的。科學(xué)記數(shù)法表示的實數(shù)只能表示指定精度的值。precision_spec表示有效數(shù)字位數(shù),是一個
42、大0的整數(shù),不指定Precision_spec時,實數(shù)可以為任意精度。 一個實數(shù)用一個尾數(shù)和一個可選的指數(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(二進制類型)
語法
157 | binary_type=BINARY [ ‘(’ width ‘)’ [ FIXED ] ] .
294 | width=simple_expression.
BINARY數(shù)據(jù)類型表示具有0或1值的位序列。二進制可定義為固定長度的或者是可變長度的。如果二進制沒被詳細說明為固定長度(在說明中用FIXED保留字),則它被說明為可變長度??勺兲匦栽试S二進制隨機地增長或收縮它的長度。二進制的任意部分和單獨的一個位都可使用下標尋址,這一技術(shù)陳述于第6.3節(jié)。
規(guī)則與限制:
a)width(可選的)給出了能被容 45、納的最大位數(shù)。該表達式將產(chǎn)生一個正的整數(shù)結(jié)果。
b)當(dāng)沒有詳細說明時,二進制值的位的數(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個或多個字符序列。
在串中字母的大小寫是有區(qū)別的。width給出了可容納的最金字符數(shù),width是一個整數(shù)。 串可定義為固定長度或是可變長度。若串沒被說明為固定長度(在說明時用FIXED保留字),則它被說明為可變長度??勺兲匦员硎咀址呻S機增長或收縮其長度。
在字符串中,可對其中的子串或單個字符進行下標尋址,這一技術(shù)在第6.5節(jié)中介紹。
例16
string1 : STRING;
string1定義成一個沒有最大長度的可變串。
例17:
string2:STRING(10);
string1被定義為一個最長為10個字符的串,但在實際上它在0到10 47、個字符是可變的。
例18:
string3:STRING(10) FIXED;
string3被定義成一個有精確10個字符長度的串,它的實際長度不能變化。
3.2聚集數(shù)據(jù)類型
聚集數(shù)據(jù)類型用于表示順序或非順序的某些基本類型元素的集合,集合中元素的個數(shù)是否可變,這取決于聚集的類型。聚集包括以下幾種類型:ARRAY(數(shù)組)、BAG(包)、LIST(表)和SET(集合)。
每種聚集類型有不同的含義:
(1) ARRAY數(shù)據(jù)類型有固定元素個數(shù),元素的索引是很重要的。
例19:
數(shù)學(xué)中的矩陣可被定義為多維數(shù)組。
(2)BAG數(shù)據(jù)類型的元素是無序 48、的,元素可重復(fù)出現(xiàn),包中元素的個數(shù)是否可變可以在類型聲明時指定。
例20:
加固器(如螺母、螺栓、螺絲釘、鉚釘?shù)?在組裝問題上可被看作一個包,這個包中可能含有許多一樣的螺栓,可以從中選取任一個。
(3)LIST數(shù)據(jù)類型的元素是有序的,元素是否可重復(fù)出現(xiàn)以及元素的個數(shù)是否可變可以在類型聲明時指定。
例21:
對于一個生產(chǎn)過程所要完成的操作可表示為一個LIST,它的一個特點是它能隨機收縮或擴張,如一個操作可以被加入到該LIST中也可以從該LIST中刪除一個操作。
(4)SET數(shù)據(jù)類型的元素是無序的,但元素不允許出現(xiàn)重復(fù),SET中元素的個數(shù)是否可變可以 49、在類型聲明時指定。
例22:
世界上人口是一個SET集合。
聚集類型總是一維的,如果要表示多維的對象,可以將聚集元素說明成聚集類型,這樣多層嵌套可表示出多維聚集。
例23:
LIST[1:3]OF ARRAY[5:10]OF INTEGER
這是一個二維聚集。
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ù)類型表示有序的、元素個數(shù)的固定的聚集。在一個數(shù)組中無素的數(shù)量,通過它的下限和上限確定。上、下限的值可為負數(shù)、0或正整數(shù)表達式,上限必須大于或等于下限。
假定m是下限,n是上限,在數(shù)組中有n-m+1個元素。每個數(shù)組元素可通過下標尋址。
說明如下:
a)bound_spec包括兩個表達式。
52、 b)兩個表達式bound_1和bound_2的結(jié)果都是整數(shù)。.
c)bound_1表達式給出數(shù)組的下限。
d)bound_2表達式給出數(shù)組的上限,該值必須固定,所以不能用"?"。
e)bound_1必須小于或等于bound_2。
f)如果提供了OPTIONAL關(guān)鍵字的話,它表示并非全部元素均需要值,即元素可以為null,產(chǎn)生一個稀疏數(shù)組。
g)如果提供UNIQUE關(guān)鍵字的話,它表示在一個數(shù)組實例中,每個元素都是不相同的。
例24:
本例說明如何聲明一個多維數(shù)組。
sectors:ARRAY[1:10]OF …第一維
ARRAY[1 53、1:14]OF… 第二維
a;
第一組數(shù)組有10個元 ,元素類型為ARRAY[11:14]OF a;第二組數(shù)組中有4 個元素,元素類型為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ù)類型表示無序的同類元素的集合,元素的個數(shù)可以有選擇進行說明,若沒有說明元素的個數(shù),則包中可有任何數(shù)量的元素,包中的元素可以重復(fù)。
說明如下:
a).bound_spec包含兩個表達式
b).bound_1是大于等于0的整數(shù)表達式,它給出包中最小的元素個數(shù),即下限。
c).bound_2是大于等于bound_1的整數(shù)表達式;它給出了在包中可存放的最大元素個數(shù),即上限。
當(dāng)用"?"替代bound_2時,包中元素的個數(shù)沒有上界的限制。
d)若忽略bound_spec,默認為界限為[0 56、:?]。
例25:
本例定義屬性類型是一個以點(實體數(shù)據(jù)類型)為元素的包。
a_bag_of_points:BAG OF point;
屬性名a_bag_of_points是一個包,這個包中可有0或多個點,若要求包中需要至少一個元素。則要把下限定義為1,如下:
a_bag_of_poinbs:BAG[1:?]OF point;
現(xiàn)在屬性 a_bag_of_points最少包含一個元素。
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ù)類型表示一個有序的同類元素的聚集。在表中元素的個數(shù)是否可變可在說明時定義,若元素個數(shù)沒被說明,表中能存放任意數(shù)目的元素。表中的元素可以重復(fù)。
說明如下:
a).bound_spec包含兩個表達式。
b).bound_1是一個大于等于0的整數(shù)表達式,它給出 59、了表中最少的元素個數(shù),即下限
c).bound_2是大于等于bound_1的整數(shù)表達式.它給出了表中可放的的最大元素個數(shù),即上限。
當(dāng)用"?"替代時,表中元素的個數(shù)沒有上界的限制。
d)如果忽略bound_spec,默認的界限為[0:?]。
e)如果使用UNIQUE關(guān)鍵字,它說明在同一個表中的元素不可重復(fù)出現(xiàn)。
例26:
本例定義了一個數(shù)組表,表由0到10個數(shù)組成,表中每個數(shù)組是互不相同的。
complex_lint:LIST[0:10]OF UNIQUE ARRAY[1:10]OF INTEGER;
表complex_list中整數(shù)的個數(shù)根據(jù)LIST 60、中數(shù)組的個數(shù)不同而不同,可能的個數(shù)有:
0、10、20、...、90、100個。當(dāng)用UNIQUE關(guān)鍵字指定后,表中的每個數(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元素的個數(shù)是否可變可在說明時定義,若元素個數(shù)沒被說明,表中能放下任何數(shù)目的元素。SET中元素不可以重復(fù)出現(xiàn)。
說明如下:
a)bound_spec包含兩個表達式。
b)bound_1是一個大于等于0的整數(shù)表達式,它給出了集合中最少的元素個數(shù),即下限
c)bound_2是一大于等于bound_1的整數(shù)表達式;它給出了集合中可放的最大元素個數(shù),即上限。
當(dāng)用"?"替代上限時,集合中元素的個數(shù)沒有上限的限制。
d)如果忽略bound_spec,默認的界限為[0:?]。
例27:
該例定義了一個屬性,其類型是一個元 63、素為點(是一個實體數(shù)據(jù)類型)的集合。
a_set_of_poimts:SET OF point;
屬性a_set_of_points能夠包含0或多個點,每個點實例(在集合實例中)將與其它點實例不同。
如果一個集合需要最少一個元素,說明要提供一個下限:
a_set_of_points:SET [1:?]OF point;
屬性 a_set_of_points現(xiàn)在至少包含一個元素;每個點實例(在集合實例中)將是互不相同的。
3.3 實體數(shù)據(jù)類型(Entity Type)
語法:
187 | entity_ref = entity_id .
184 64、| entity_id = simple_id .
實體類型是被實體聲明語句聲明的對象類型(參見第4.3節(jié))。在模式中聲明的任何實體能夠作為屬性,局部變量或形式參數(shù)的數(shù)據(jù)類型。用實體作為一個屬性的數(shù)據(jù)類型,則在兩個實體間建立了關(guān)系。
說明如下:
entity_ref是對同一模式中所聲明實體的一個引用,當(dāng)該實體在另一模式中聲明時,則要建立對之引用的接口(參見第5章)。
例28:
本例利用一個點實體作為一個屬性的數(shù)據(jù)類型。
ENTITY point;
x,y,z:REAL;
END_ENT 65、ITY;
ENTITY line;
p0,p1:POINT;
END_ENTITY;
線實例有兩個屬性p0和p1。每個屬性的數(shù)據(jù)類型是一個點(point),在這種情況下,每個屬性的值是必須的。其中任何一個點為空都不能定義直線。
3.4 自定義數(shù)據(jù)類型(Defined Type)
語法:
284 | type_ref = type_id .
282 | type_id = simple_id .
自定義數(shù)據(jù)類型是用戶對標準數(shù)據(jù)類型集合的擴展,它運用TYPE語句定義。其使用方法與標準類型 66、相同,其它數(shù)據(jù)類型通過引用自定義數(shù)據(jù)類型的名字可使用它。type_ref是用類型聲明定義的自定義數(shù)據(jù)類型的名字,type_id是標準數(shù)據(jù)類型名字。
例29:
下列定義了幾個數(shù)據(jù)類型,它們指出計量單位和屬性間的關(guān)系。
TYPE volume = REAL;
END_TYPE;
ENTITY PART;
...
bulk:volume;
END_ENTITY;
屬性bulk表示一個實數(shù),但是,使用自定義數(shù)據(jù)類型volume,幫助理解實數(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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。