順序タイプ
順序タイプは、順序に表示される項目のタイプ、および順序のカーディナリティを示すものを指定します。
構文
sequence_type ::= type_definition
[quantifier]
quantifier := "*" | "+" | "?"
セマンティクス
サブタイプ関係
順序タイプ間には、サブタイプ関係も存在します。次のように定義されます。
- 空の順序は、数量詞が*または?であるすべての順序タイプのサブタイプです
- 順序タイプSUBは、SUBの項目タイプがSUPの項目タイプのサブタイプであり、SUBの数量詞がSUPの数量詞のサブ数量詞である場合は、別の順序タイプSUP (スーパータイプ)のサブタイプになります(サブ数量詞関係が次のマトリックスによって定義される場合)。
次のマトリックスは、数量詞間のサブ数量詞関係を示しています。列見出しは、数量詞のスーパータイプ(SUP)を示します。行見出しは、数量詞のサブタイプ(SUB)を示します。
たとえば、上記の表に従うと、?は1および?のスーパー数量詞ですが、+および*のスーパー数量詞ではありません。同様に、*は他のすべての数量詞のスーパー数量詞になります。
Sup Q1 | Sub Q2 | 1 | ? | + | * |
1 | true | false | false | false |
? | true | true | false | false |
+ | true | false | true | false |
* | true | true | true | true |
注意:
次の各項では、式に(順序)タイプTが必要であると示されている場合は、式が評価されるときに、結果の順序がタイプTまたはTのサブタイプである必要があることを意味しています。同様に、通常のサブタイプ置換ルールが入力順序に適用されます。つまり、式に入力としてタイプTの順序が必要な場合は、Tの任意のサブタイプを実際に入力として使用できます。