順序タイプ

順序タイプは、順序に表示される項目のタイプ、および順序のカーディナリティを示すものを指定します。

構文

sequence_type ::= type_definition [quantifier]

quantifier := "*" | "+" | "?"

セマンティクス

数量詞
数量詞は次のいずれかです。
  • *は、一連の0 (ゼロ)個以上の項目を示します。
  • *は、一連の1個以上の項目を示します。
  • ?は、一連の0 (ゼロ)個または1個の項目を示します。
  • 数量詞がない場合は、項目が1つのみの順序を示します。

サブタイプ関係

順序タイプ間には、サブタイプ関係も存在します。次のように定義されます。
  • 空の順序は、数量詞が*または?であるすべての順序タイプのサブタイプです
  • 順序タイプSUBは、SUBの項目タイプがSUPの項目タイプのサブタイプであり、SUBの数量詞がSUPの数量詞のサブ数量詞である場合は、別の順序タイプSUP (スーパータイプ)のサブタイプになります(サブ数量詞関係が次のマトリックスによって定義される場合)。
次のマトリックスは、数量詞間のサブ数量詞関係を示しています。列見出しは、数量詞のスーパータイプ(SUP)を示します。行見出しは、数量詞のサブタイプ(SUB)を示します。
Sup Q1 | Sub Q2 1 ? + *
1 true false false false
? true true false false
+ true false true false
* true true true true
たとえば、上記の表に従うと、?1および?のスーパー数量詞ですが、+および*のスーパー数量詞ではありません。同様に、*は他のすべての数量詞のスーパー数量詞になります。

注意:

次の各項では、式に(順序)タイプTが必要であると示されている場合は、式が評価されるときに、結果の順序がタイプTまたはTのサブタイプである必要があることを意味しています。同様に、通常のサブタイプ置換ルールが入力順序に適用されます。つまり、式に入力としてタイプTの順序が必要な場合は、Tの任意のサブタイプを実際に入力として使用できます。