-
Notifications
You must be signed in to change notification settings - Fork 4
/
584.txt
155 lines (105 loc) · 5.33 KB
/
584.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
[17]
[DFN[[RUBYB[[RUBY[制][せい]][RUBY[御][ぎょ]]シーケンス][control sequence]]]]は、
[CODE(charname)@en[CSI]]
から始まる[[制御機能]]を表す[[ビット組合せ]]列 ([[バイト列]]) です。
* 仕様書
[16] [[ISO/IEC6429]] / [[JISX0211]] で定義されてます。
* 意味
[4]
>
:制御シーケンス (control sequence):
制御機能 [CODE(char)[[[CONTROL SEQUENCE INTRODUCER]]]] ([CODE(char)[[[CSI]]]], [CODE(char)[制御シーケンス開始]])
から始まるビット組合せの列であって、
[[パラメタ]]をもつか又はもたない制御機能の符号化表現のために使う。
([[JIS X 0211]]‐1994 4.2.24)
[3]
>
:制御シーケンス (control sequence):
[[制御機能]] [CODE(charname)@en[[[CONTROL SEQUENCE INTRODUCER]]]]
([CODE(charname)@en[[[CSI]]]],
[CODE(jcharname)[[[制御シーケンス開始]]]])
から始まる一つ以上の[[ビット組合せ]]であって、
[[制御機能]]の[[符号化表現]]のために使う。
[SRC[[[JIS X 0201]]:1997 3.5]]
* 構文
[12]
[[ISO/IEC 6429:1991]] 5.4 を元に [[ABNF]] で書くと、大まかな構造はこんなんです。
-control-sequence = CSI [P] *I F
-CSI = ESC %x5B / %x9B ;; ESC Fe / [[CR]] ([[符号]]の構造・[[告知]]による)
-P = std-P / private-P ;; Parameter byte(s)
-std-P = %x30-3B *( %x30-3F )
-pvt-P = %x3C-3F *( %x30-3F )
-I = %x20-2F ;; Intermediate byte
-F = std-F / private-F ;; Final byte
-std-F = %x40-6F
-private-F = %x70-7E
**7ビット・8ビット変換のための例外的解釈
冒頭の ABNF は、こんな風に修正しないといけません。
-control-sequence = CSI *(s P) *(s I) s F
-s = %x0E / %x0F ;; SHIFT OUT / SHIFT IN
-P = %x30-3F / %xB0-BF
-I = %x20-2F / %xA0-AF
-F = %x40-7E / %xC0-FE
詳しくは[[7ビット符号と8ビット符号]]を参照。
** ISO/IEC 10646 における利用
[18]
[[ISO/IEC 10646]] および [[Unicode]]
での利用については、
[[ISO/IEC 10646におけるエスケープシーケンス]]参照。
** その他の非 ISO/IEC 2022 符号体系における利用
[19]
[[ISO/IEC 2022]]
とも
[[ISO/IEC 10646]]
とも異なる[[文字コード]]体系における利用については、
[[エスケープシーケンス]]参照。
* 終端バイト
[13]
[[制御シーケンス]]の末尾の[[終端バイト]]が[[制御シーケンス]]の意味を表します。
[14]
つまり[[制御シーケンス]]を受信して処理するときは、[[制御シーケンス]]の末尾までを読み終わる必要があります。
;; [15] [[エスケープシーケンス]]の[[終端バイト]]とは割当が完全に異なります。
- [21]
[N[2/9]] ([CODE[)]]) [N[7/0]] ([CODE[p]]) - [[CSI )p]]
-[20]
[N[2/10]] ([CODE[*]]) [N[7/0]] ([CODE[p]]) - [CODE(charname)@en[DECSPPCS]]
*パラメーター・バイト
-P = std-P / pvt-P
-std-P = sub-string *(separator sub-string)
-separator = %x3B
-sub-string = *( DIGIT / digit-separator )
-DIGIT = %x30-39
-digit-separator = %x3A ;; 小数点などに使用
sub-string の先導 *"0" は無視可能。 ("0123" == "123", "000" == "0")
sub-string は空 (empty) になり得る。最後の sub-string が空であるのは、その直前の
separator が無いのと同じ意味。 ("1;1;" == "1;1")
[[#comment]]
*SGML での定義
[5]
>
:(137) [DFN[制御シーケンス]] ([DFN@en[control sequence]]):
それ以降の[[文字列]]の[[解釈]]、[[表現]]又はその他の[[処理]]を[[制御]]する[[機能制御文字]]で始まる[[文字]]の[[並び]]。
- 例 [[エスケープシーケンス]]
;; 出典: [[JIS X 4151]]‐1992 3.
[1] [[SGML]]では、>>5と定義しています。[[符号化文字集合]]規格で言う[[制御シーケンス]]
([CODE(char)[CSI]] で始まる列) のほかに、
例示にあるように[[エスケープ・シーケンス]]も含みます。
(ほかに [CODE(char)[[[SS2]]]]
などの[[制御文字]]も含むのかもしれません。 SGML
の[[文字集合]]は ISO の体系に限りませんから、[[漢字イン]]・
[[漢字アウト]]なども含まれると思われます。)
* 関連
[6] [[制御ストリング]]は別。
*メモ
[8]
俗に[DFN[ANSIエスケープシーケンス]]というとき、大抵は[[制御シーケンス]]のことを指しています。
([[制御シーケンス]]以外の[[エスケープシーケンス]]を指す場合もあります。)
[7] [CITE[Digital Ansi-Compliant Print Protocol Lev 2 Program. Ref. Man. - PPLV2PMB.PDF]], [TIME[1995-08-31T14:32:02.000Z]], [TIME[2022-05-02T12:20:35.927Z]] <http://sup.xenya.si/sup/info/digital/MDS/jun99/Cd3/PRINTER/PPLV2PMB.PDF#page=92>
[9] [[ARIB STD-B5]], [[ARIB STD-B24]], [[T.61]], [[T.101]]
[10] [[ISO文字コードにおける書字方向]]
[11] [[GB 8565.3-88]]
- [2] [WEAK[2004-01-05 03:55:03 +00:00]] ''[[SPCU]]'':
[22] [CITE@ja[New Terminal Control Commands for Ambiguous Width Characters - Google ドキュメント]], [TIME[2022-12-11T08:09:51.000Z]] <https://docs.google.com/document/d/1Dgq81J0eQEfjq3MR__O7VrbSVnatr9CCqMEITse9psk/edit?pli=1>
[23] [CITE@ja[Control functions - akinomyoga/contra]], [TIME[2021-12-31T23:05:20.000Z]], [TIME[2022-12-11T08:12:27.206Z]] <https://akinomyoga.github.io/contra/escseq.html>
[24] [[SGR]]
[25] [[DRCSMMv1]]