#?SuikaWiki/0.9
[1] [DFN[[ABBR[HyOrd][HyTime Lexicographic Ordering Definition Notation]]]]は、
[[ISO/IEC 10744]] が規定する[[辞書的順序付け]]のための[[記法]]です。

仕様書: ISO/IEC 10744:1997 A.2.4
<http://www.y12.doe.gov/sgml/wg8/docs/n1920/html/clause-A.2.4.html>

[2]
:[[公開識別子]]:[CODE(SGML)[ISO/IEC 10744:1997//NOTATION HyTime Lexicographic Ordering Definition Notation (HyOrd)//EN]]
:[[属性]]:
,[CODE(SGMLa)[[[altreps]]]]
,[CODE(SGMLa)[[[included]]]]
,[CDOE(SGMLa)[[[superdcn]]]]

[3] 構文:
- [CODE(ABNF)[[DFN[HyOrd 指定]] := *分離子 文 *(1*分離子 文) *分離子]]
- [CODE(ABNF)[[DFN[分離子]] := [CODE(SGML)[[[s]]]] / [[注釈]]]]
- [CODE(ABNF)[[DFN[文]] := 対応文字写像 / 文字列写像]]
- [CODE(ABNF)[[DFN[対応文字写像]] := 文字並び指定 *分離子 [CODE(SGML)[[[pero]]]] *分離子 文字並び指定]]
-- 左側と右側の文字の数が同じか、または右側は空でなければなりません。
- [CODE(ABNF)[[DFN[文字並び写像]] := 表記文字並び / 数値文字並び]]
- [CODE(ABNF)[[DFN[文字列写像]] := 表記文字並び *分離子 [CODE(SGML)[[[vi]]]] *分離子 表記文字並び]]
- [CODE(ABNF)[[DFN[表記文字並び]] := [CODE(SGML)[[[lit]]]] *[[SGML文字]] [CODE(SGML)[lit]] / [CODE(SGML)[[[lita]]]] *SGML 文字 [CODE(SGML)[lita]]]]
- [CODE(ABNF)[[DFN[数値文字並び]] := [CODE(SGML)[[[dso]]]] *[CODE(SGML)[s]] [ [[数]] *(1*[CODE(SGML)[s]] 数) *[CODE(SGML)[s]] ] [CODE(SGML)[[[dsc]]]]]]

[VAR(ABNF)[文]]の左側に来る[VAR(ABNF)[表記文字並び]]や[VAR(ABNF)[数値文字並び]]は最低1文字が必要です。
左側の並びで指定した文字列を変換元の文字列から探して対応する右側の並びで指定した文字列に置換することになりますが、
複数候補があるときは最長のものを使います。

[4] 宣言例:
[PRE(SGML)[
<!-- [[字句型宣言集合]] -->
<![[NOTATION]] HyOrd
  [[PUBLIC]] "ISO/IEC 10744:1997//NOTATION HyTime
              Lexicographic Ordering Definition
              Notation (HyOrd)//EN">
]PRE]

HyOrd を使った[[字句型宣言]]の例:
[PRE(SGML)[
<!-- 字句型宣言集合, 記法 HyOrd の宣言の後 -->
<![[LEXORD]] exampleOrder
  "[VAR[HyOrd による記述]]" HyOrd>

<![[LEXTYPE]] exampleLextype
  #[[ORDER]] exampleOrder
  PUBLIC "[VAR[...]]" lexNotation>
]PRE]

[5] HyOrd 文の例:
- [6] [SAMP["ABCDEFGHIJKLMNOPQRSTUVWXYZ" % "NOPQRSTUVWXYZABCDEFGHIJKLM" -- [[ROT13]] --]]
- [7] [SAMP["出来る" = "できる"]]
- [8] [SAMP[ [13 10] = [10] -- CRLF -> LF --]]
- [9] [SAMP["、。,." % "" -- 句読点を除去 --]]


