#?SuikaWiki/0.9 [1] 【[[SGML]]】 [[具象構文]]によって割当てられ、[[マーク]]として認知された上で [[SGML機能]]を果たす[[マーク文字]]。[[データ]]が許される[[文脈]]でマークとして[[認知]]されない場合は、データとして扱う (機能文字の[[記録開始]] [CODE(SGML)[[[RS]]]] 及び[[記録終了]] [CODE(SGML)[[[RE]]]] の場合のように、[[言語]]が特別の扱いを指示する場合を除く。)。 Function character。 ([[JISX4151]]‐1992 定義 (46)) - [2] [CODE(ABNF)[[DFN[機能文字]] := RE / RS / [[SPACE]] / [[SEPCHAR]] / [[MSOCHAR]] / [[MSICHAR]] / [[MSSCHAR]] / [[FUNCHAR]] ;; (54)]] [[#comment]] * 機能文字に関する SGML 宣言の定義の例 [[#comment]] ** 装置独立の多符号具象構文のための機能マーク文字 [3] JIS X 4051‐1992 の参考6図14のものです。 [PRE[ FUNCTION RE 13 -- 0/13 CR -- RS 10 -- 0/10 LF -- SPACE 32 -- 2/0 SP -- TAB SPACECAHR 9 -- 0/9 TAB -- -- 幾らなんでも SEPCHAR の間違いだよね? -- ESC FUNCHAR 27 -- 1/11 ESC -- LS0 FUNCHAR 15 -- 0/15 LS0 / SI -- SS2 FUNCHAR 142 -- 8/14 SS2 -- SS3 FUNCHAR 143 -- 8/15 SS3 -- ]PRE] 前提となっている[[符号拡張]]は、 - [[G0]] = [[GL]] : 全ての図形[[マーク文字]]を含む - [[G1]] = [[GR]]; G1 への[[指示シーケンス]]を使用 - G1, [[G2]], [[G3]]; 各々への指示シーケンスを使用; [[固定シフト]]で右に[[呼出]]し - G2, G3: [[単独シフト]]で左に呼出し [4] この前提だと [CODE(char)[[[LS0]]]] は要らないと思うんだけどなぁ。あっても無害だけど。 なお、 [CODE(char)[[[LS1R]]]], [CODE(char)[[[LS2R]]]], [CODE(char)[[[LS3R]]]] がいずれも機能文字になってないのは、 単一の[[制御文字]]ではなく複数文字の[[エスケープシーケンス]]になってしまうからです。 ところで、これじゃあエスケープシーケンスの[[中間バイト]]や[[終端バイト]]が[[重要なSGML文字]]だった場合に誤認されちまいませんか? まさか終端バイトまでマーク読み飛ばしにするわけにもいかないし。。。[WEAK[(3/0〜7/14 を機能文字にするのはかなり勇気が要る。)]] - [5] >>4 参考6 3.1.1 ではそれを避けるためにエスケープシーケンス全体を[[短縮参照区切子]]にしてしまう方法を紹介しています。・・・って、使うエスケープシーケンスを全種類登録するんですか。。。 [[#comment]]