File: sedcheck.sed.html

package info (click to toggle)
sedsed 2.0.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 4,008 kB
  • sloc: sed: 37,239; ansic: 2,395; python: 815; sh: 624; makefile: 95
file content (319 lines) | stat: -rw-r--r-- 66,019 bytes parent folder | download | duplicates (2)
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
<html>
<head><meta name="Generator" content="sedsed --htmlize">
<title>Colorized sedcheck.sed</title></head>
<body bgcolor="#000000" text="#ffffff"
      link="#ff00ff" alink="#ff00ff" vlink="#ff00ff">
<pre>
<font color="#00ffff"><b># sedcheck.sed - detects various POSIX compatibility issues in sed scripts</b></font>
<font color="#00ffff"><b># </b></font>
<font color="#00ffff"><b># (C) 2003 Laurent Vogel - GPL version 2 or later at your option.</b></font>
<font color="#00ffff"><b># </b></font>
<font color="#00ffff"><b># 2003-09-12 version 0.1 </b></font>

<font color="#00ffff"><b># hide _,&lt;,&gt;,~ behind '</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>['_&lt;&gt;~]</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>&amp;</b></font>'a_b&lt;c&gt;d~e,<font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>g</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>['_&lt;&gt;~]\)[^,]*\1\<font color="#ff00ff"><b>(</b></font>[^,]\)[^,]*,</b></font><font color="#ff6060"><b>/</b></font>'<font color="#00ff00"><b>\2</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>g</b></font>

<font color="#00ffff"><b># consider the hold buffer; initialize line number and issue number</b></font>
<font color="#ffff00"><b>x</b></font>
<font color="#8080ff"><b>1</b></font> <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>.*</b></font><font color="#ff6060"><b>/</b></font>C~0,0+012345678910999000990090<font color="#ff6060"><b>/</b></font>
<font color="#00ffff"><b># increment line number</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>.\)\<font color="#ff00ff"><b>(</b></font>9*\)\<font color="#ff00ff"><b>(</b></font>,[^+]*+[^9]*\1\<font color="#ff00ff"><b>(</b></font>.0*\).*\2\<font color="#ff00ff"><b>(</b></font>0*\)\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\4</b></font><font color="#00ff00"><b>\5</b></font><font color="#00ff00"><b>\3</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>x</b></font>

<font color="#00ffff"><b># get back state from previous line</b></font>
<font color="#ffff00"><b>G</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>.*\)\n\<font color="#ff00ff"><b>(</b></font>[^~]*~\).*</b></font><font color="#ff6060"><b>/</b></font>_<font color="#00ff00"><b>\2</b></font><font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

<font color="#ff00ff"><b>:</b></font><font color="#ff00ff"><b><a name="loop">loop</a></b></font>

<font color="#00ffff"><b># outside commands: _~ = at top level, _{{~ inside two nested groups</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>_{*~\)\<font color="#ff00ff"><b>(</b></font>[ 	][ 	]*\)</b></font><font color="#ff6060"><b>/</b></font>&lt;trailing 'blank's should be avoided&gt;<font color="#00ff00"><b>\2</b></font><font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_\<font color="#ff00ff"><b>(</b></font>{{*~\);</b></font><font color="#ff6060"><b>/</b></font>&lt;";" not allowed in {...} groups&gt;;_C<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_~;</b></font><font color="#ff6060"><b>/</b></font>;_C~<font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_\<font color="#ff00ff"><b>(</b></font>{*~\)}</b></font><font color="#ff6060"><b>/</b></font>_c<font color="#00ff00"><b>\1</b></font>}<font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>_{*~\)\<font color="#ff00ff"><b>(</b></font>#.*\)</b></font><font color="#ff6060"><b>/</b></font>&lt;"#" should be preceded by ";" or 'newline'&gt;<font color="#00ff00"><b>\2</b></font><font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_\<font color="#ff00ff"><b>(</b></font>{*~\)$</b></font><font color="#ff6060"><b>/</b></font>_C<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>_{*~\)\<font color="#ff00ff"><b>(</b></font>.*\)</b></font><font color="#ff6060"><b>/</b></font>&lt;trailing garbage after command (rest of the line <font color="#00ff00"><b>\
</b></font>ignored)&gt;<font color="#00ff00"><b>\2</b></font><font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

<font color="#00ffff"><b># 'C'ommand: skip blanks, try first address</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>_C[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[ 	][ 	]*\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font><font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_C\<font color="#ff00ff"><b>(</b></font>[^~]*~[0-9$/\]\)</b></font><font color="#ff6060"><b>/</b></font>_ad<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

<font color="#00ffff"><b># 'a'ddress</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>_a[^~]*~\)\<font color="#ff00ff"><b>(</b></font>00*\)\<font color="#ff00ff"><b>(</b></font>[0-9]\)</b></font><font color="#ff6060"><b>/</b></font>&lt;useless leading 0&gt;<font color="#00ff00"><b>\2</b></font><font color="#00ff00"><b>\1</b></font><font color="#00ff00"><b>\3</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_a\<font color="#ff00ff"><b>(</b></font>[^~]*~\)0</b></font><font color="#ff6060"><b>/</b></font>&lt;line 0 is a GNU extension&gt;0_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_a\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\\$</b></font><font color="#ff6060"><b>/</b></font>\\&lt;'newline' is not a valid delimiter&gt;_\\b'z<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_a\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\\\<font color="#ff00ff"><b>(</b></font>\\[^\]*\\\)</b></font><font color="#ff6060"><b>/</b></font>\\&lt;"\\" is not a valid delimiter&gt;<font color="#00ff00"><b>\2</b></font>_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_a[^{~]*\<font color="#ff00ff"><b>(</b></font>{*~\)\\\<font color="#ff00ff"><b>(</b></font>\\.*\)</b></font><font color="#ff6060"><b>/</b></font>\\&lt;"\\" is not a valid delimiter&gt;<font color="#00ff00"><b>\2</b></font>&lt;missing <font color="#00ff00"><b>\
</b></font>delimiter&gt;_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_a\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\\\<font color="#ff00ff"><b>(</b></font>'*[^']\)</b></font><font color="#ff6060"><b>/</b></font>\\<font color="#00ff00"><b>\2</b></font>_b<font color="#00ff00"><b>\2</b></font><font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_a\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\/</b></font><font color="#ff6060"><b>/</b></font>\/_b\/<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_a\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\$</b></font><font color="#ff6060"><b>/</b></font>$_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_a\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[1-9][0-9]*\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_a.\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>.*\)</b></font><font color="#ff6060"><b>/</b></font>&lt;bad address (rest of line ignored)&gt;<font color="#00ff00"><b>\2</b></font>_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

<font color="#00ffff"><b># 'd' is 1addr command, 'e' is 2addr command: try second address</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>_d[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[ 	][ 	]*\),</b></font><font color="#ff6060"><b>/</b></font>&lt;no 'blank's allowed&gt;<font color="#00ff00"><b>\2</b></font><font color="#00ff00"><b>\1</b></font>,<font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_d\<font color="#ff00ff"><b>(</b></font>[^~]*~\),\<font color="#ff00ff"><b>(</b></font>[ 	][ 	]*\)</b></font><font color="#ff6060"><b>/</b></font>,&lt;no 'blank's allowed&gt;<font color="#00ff00"><b>\2</b></font>_ae<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_d\<font color="#ff00ff"><b>(</b></font>[^~]*~\),</b></font><font color="#ff6060"><b>/</b></font>,_ae<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

<font color="#00ffff"><b># a function can be preceded by blanks and '!'s </b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>_[cde][^~]*~\)\<font color="#ff00ff"><b>(</b></font>[ 	][ 	]*\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font><font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>_[Cde][^~]*~\)!\<font color="#ff00ff"><b>(</b></font>!*\)!</b></font><font color="#ff6060"><b>/</b></font>!&lt;multiple "!" not recommended&gt;<font color="#00ff00"><b>\2</b></font><font color="#00ff00"><b>\1</b></font>!<font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>_[Cde][^~]*~\)!\<font color="#ff00ff"><b>(</b></font>[ 	][ 	]*\)</b></font><font color="#ff6060"><b>/</b></font>!&lt;no 'blank's allowed after "!"&gt;<font color="#00ff00"><b>\2</b></font><font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>_[Cde][^~]*~\)!</b></font><font color="#ff6060"><b>/</b></font>!<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_C\<font color="#ff00ff"><b>(</b></font>[^~]*~.\)</b></font><font color="#ff6060"><b>/</b></font>_c<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

<font color="#00ffff"><b># 0addr and 1 addr messages </b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[de]\<font color="#ff00ff"><b>(</b></font>[^~]*~\)$</b></font><font color="#ff6060"><b>/</b></font>&lt;missing command&gt;_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[de]\<font color="#ff00ff"><b>(</b></font>[^~]*~[:#}]\)</b></font><font color="#ff6060"><b>/</b></font>&lt;no addresses allowed&gt;_c<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_e\<font color="#ff00ff"><b>(</b></font>[^~]*~[aiqr=]\)</b></font><font color="#ff6060"><b>/</b></font>&lt;at most one address allowed&gt;_c<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

<font color="#00ffff"><b># no need to remember the number of addresses any longer</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[de]</b></font><font color="#ff6060"><b>/</b></font>_c<font color="#ff6060"><b>/</b></font>

<font color="#00ffff"><b># comment, empty command</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>#.*\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\);</b></font><font color="#ff6060"><b>/</b></font>_<font color="#00ff00"><b>\1</b></font>;<font color="#ff6060"><b>/</b></font>

<font color="#00ffff"><b># {, }</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\){</b></font><font color="#ff6060"><b>/</b></font>{_C{<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\){</b></font><font color="#ff6060"><b>/</b></font>{_C{<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>^\<font color="#ff00ff"><b>(</b></font>[ 	]*[^ 	_][^_]*\)_c{\<font color="#ff00ff"><b>(</b></font>[^~]*~\)}</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\1</b></font>&lt;"}" should be preceded by a <font color="#00ff00"><b>\
</b></font>'newline'&gt;}_}<font color="#00ff00"><b>\2</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c{\<font color="#ff00ff"><b>(</b></font>[^~]*~\)}</b></font><font color="#ff6060"><b>/</b></font>}_}<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_}\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[ 	]*\);</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>&lt;";" not allowed after { ... } groups&gt;;_C<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_}\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[ 	]*\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c~}</b></font><font color="#ff6060"><b>/</b></font>&lt;mismatched { ... }&gt;}_~<font color="#ff6060"><b>/</b></font>

<font color="#00ffff"><b># a\, i\, c\</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[aic]\\\)\<font color="#ff00ff"><b>(</b></font>[ 	][ 	]*\)$</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>&lt;trailing 'blank's&gt;<font color="#00ff00"><b>\3</b></font>_\\t<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[aic]\\\)$</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>_\\t<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[aic]\\\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>&lt;'newline' expected&gt;_t<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[aic]\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>&lt;"\\'newline'" expected&gt;_t<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>_t[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[^\][^\]*\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font><font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_\<font color="#ff00ff"><b>(</b></font>t[^~]*~\)\\$</b></font><font color="#ff6060"><b>/</b></font>\\_\\<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>_t[^~]*~\)\\\\</b></font><font color="#ff6060"><b>/</b></font>\\\\<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>_t[^~]*~\)\<font color="#ff00ff"><b>(</b></font>\\'*[^\']\)</b></font><font color="#ff6060"><b>/</b></font>&lt;useless "\\"&gt;<font color="#00ff00"><b>\2</b></font><font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_t\<font color="#ff00ff"><b>(</b></font>[^~]*~\)$</b></font><font color="#ff6060"><b>/</b></font>_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

<font color="#00ffff"><b># b, t, : - POSIX is quite unclear: are leading spaces and tabs allowed?</b></font>
<font color="#00ffff"><b># I assume here that zero or one leading space is OK, and anything else</b></font>
<font color="#00ffff"><b># doubtful.</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\):\<font color="#ff00ff"><b>(</b></font>[ 	]*[;#}]\)</b></font><font color="#ff6060"><b>/</b></font>:&lt;missing label&gt;_<font color="#00ff00"><b>\1</b></font><font color="#00ff00"><b>\2</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\):\<font color="#ff00ff"><b>(</b></font>[ 	]*\)$</b></font><font color="#ff6060"><b>/</b></font>:&lt;missing label&gt;_<font color="#00ff00"><b>\1</b></font><font color="#00ff00"><b>\2</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\):\<font color="#ff00ff"><b>(</b></font>[ 	][ 	]*\)</b></font><font color="#ff6060"><b>/</b></font>:&lt;'blank's not recommended here&gt;<font color="#00ff00"><b>\2</b></font>_l<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\):</b></font><font color="#ff6060"><b>/</b></font>:_l<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[bt]\)\<font color="#ff00ff"><b>(</b></font>[ 	]*\)$</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>_<font color="#00ff00"><b>\1</b></font><font color="#00ff00"><b>\3</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[bt]\) </b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font> _l<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[bt]\)\<font color="#ff00ff"><b>(</b></font>[ 	]*\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>&lt;single 'space' recommended here&gt;<font color="#00ff00"><b>\3</b></font>_l<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_l\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[^;#} 	]*\)\<font color="#ff00ff"><b>(</b></font>[;}#]\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>&lt;avoid "<font color="#00ff00"><b>\3</b></font>" in labels&gt;_<font color="#00ff00"><b>\1</b></font><font color="#00ff00"><b>\3</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_l\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[^;#} 	]*\)\<font color="#ff00ff"><b>(</b></font>[ 	]\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>&lt;avoid 'blank's in labels&gt;<font color="#00ff00"><b>\3</b></font>_C<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_l\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>'*[^']'*[^']'*[^']'*[^']'*[^']'*[^']'*[^']'*[^']\)\<font color="#ff00ff"><b>(</b></font>..*\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>&lt;<font color="#00ff00"><b>\
</b></font>label more than 8 characters long&gt;<font color="#00ff00"><b>\3</b></font>_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_l\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>.*\)\<font color="#ff00ff"><b>(</b></font>[ 	][ 	]*\)$</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>&lt;trailing 'blank's not <font color="#00ff00"><b>\
</b></font>recommended&gt;<font color="#00ff00"><b>\3</b></font>_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_l\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>.*\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

<font color="#00ffff"><b># d, D, g, G, h, H, l, n, N, p, P, q, x, =</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[dDgGhHlnNpPqx=]\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

<font color="#00ffff"><b># r, w</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[rw]\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>_n<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_n\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[ 	][ 	]*\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>_m<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_n\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>..*\)</b></font><font color="#ff6060"><b>/</b></font>&lt;'blank's expected&gt;<font color="#00ff00"><b>\2</b></font>_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_m\<font color="#ff00ff"><b>(</b></font>[^~]*~\)$</b></font><font color="#ff6060"><b>/</b></font>&lt;missing filename&gt;_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_m\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[^;#]*\)\<font color="#ff00ff"><b>(</b></font>[;#].*\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>&lt;part of the filename&gt;<font color="#00ff00"><b>\3</b></font>_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_m\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>..*\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

<font color="#00ffff"><b># s, y</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\)s$</b></font><font color="#ff6060"><b>/</b></font>s&lt;'newline' is not a valid delimiter&gt;_\\b'zs'zS0<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\)y$</b></font><font color="#ff6060"><b>/</b></font>y&lt;'newline' is not a valid delimiter&gt;_\\y'zy'y<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\)s\<font color="#ff00ff"><b>(</b></font>\\[^\]*\\[^\]*\\\)</b></font><font color="#ff6060"><b>/</b></font>s&lt;"\\" is not a valid delimiter&gt;<font color="#00ff00"><b>\2</b></font>_S0<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\)y\<font color="#ff00ff"><b>(</b></font>\\[^\]*\\[^\]*\\\)</b></font><font color="#ff6060"><b>/</b></font>y&lt;"\\" is not a valid delimiter&gt;<font color="#00ff00"><b>\2</b></font>_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[sy]\)\<font color="#ff00ff"><b>(</b></font>\\.*\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>&lt;"\\" is not a valid delimiter&gt;<font color="#00ff00"><b>\3</b></font>&lt;missing <font color="#00ff00"><b>\
</b></font>delimiter&gt;_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\)s\<font color="#ff00ff"><b>(</b></font>'*[^']\)</b></font><font color="#ff6060"><b>/</b></font>s<font color="#00ff00"><b>\2</b></font>_b<font color="#00ff00"><b>\2</b></font>s<font color="#00ff00"><b>\2</b></font>S0<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\)y\<font color="#ff00ff"><b>(</b></font>'*[^']\)</b></font><font color="#ff6060"><b>/</b></font>y<font color="#00ff00"><b>\2</b></font>_y<font color="#00ff00"><b>\2</b></font>y<font color="#00ff00"><b>\2</b></font><font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

<font color="#00ffff"><b># s right hand side and both sides of y</b></font>
<font color="#ff00ff"><b>:</b></font><font color="#ff00ff"><b><a name="sy">sy</a></b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>_[sy]\/[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[^\/][^\/]*\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font><font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[sy]\<font color="#ff00ff"><b>(</b></font>'*[^']\)\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\1</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\1</b></font>_<font color="#00ff00"><b>\2</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_\<font color="#ff00ff"><b>(</b></font>[sy][^~]*~\)\<font color="#ff00ff"><b>(</b></font>[^\]\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>_?<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_\<font color="#ff00ff"><b>(</b></font>s\<font color="#ff00ff"><b>(</b></font>[1-9&amp;]\)[^~]*~\)\\\2</b></font><font color="#ff6060"><b>/</b></font>&lt;"\\<font color="#00ff00"><b>\2</b></font>" ambiguous with "<font color="#00ff00"><b>\2</b></font>" as delimiter<font color="#00ff00"><b>\
</b></font>&gt;\\<font color="#00ff00"><b>\2</b></font>_?<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_\<font color="#ff00ff"><b>(</b></font>[sy]\<font color="#ff00ff"><b>(</b></font>'*[^']\)[^~]*~\)\\\2</b></font><font color="#ff6060"><b>/</b></font>\\<font color="#00ff00"><b>\2</b></font>_?<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_\<font color="#ff00ff"><b>(</b></font>s[^~]*~\)\<font color="#ff00ff"><b>(</b></font>\\[^1-9&amp;n\]\)</b></font><font color="#ff6060"><b>/</b></font>&lt;"<font color="#00ff00"><b>\2</b></font>" unspecified&gt;<font color="#00ff00"><b>\2</b></font>_?<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_\<font color="#ff00ff"><b>(</b></font>s[^~]*~\)\<font color="#ff00ff"><b>(</b></font>\\n\)</b></font><font color="#ff6060"><b>/</b></font>&lt;"\\n" unspecified (use 'newline' instead)&gt;<font color="#00ff00"><b>\2</b></font>_?<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_\<font color="#ff00ff"><b>(</b></font>y[^~]*~\)\<font color="#ff00ff"><b>(</b></font>\\[^n\]\)</b></font><font color="#ff6060"><b>/</b></font>&lt;"<font color="#00ff00"><b>\2</b></font>" unspecified&gt;<font color="#00ff00"><b>\2</b></font>_?<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_\<font color="#ff00ff"><b>(</b></font>[sy][^~]*~\)\<font color="#ff00ff"><b>(</b></font>\\'*.\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>_?<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_\<font color="#ff00ff"><b>(</b></font>s[^~]*~\)\\$</b></font><font color="#ff6060"><b>/</b></font>\\_\\<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_\<font color="#ff00ff"><b>(</b></font>y[^~]*~\)\\$</b></font><font color="#ff6060"><b>/</b></font>&lt;"\\'newline'" invalid (use "\\n" instead)&gt;\\_\\<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_y'y\<font color="#ff00ff"><b>(</b></font>[^~]*~\)$</b></font><font color="#ff6060"><b>/</b></font>_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[sy]'z\<font color="#ff00ff"><b>(</b></font>[^~]*~\)$</b></font><font color="#ff6060"><b>/</b></font>_\\<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_y'*[^']y'*[^']\<font color="#ff00ff"><b>(</b></font>[^~]*~\)$</b></font><font color="#ff6060"><b>/</b></font>&lt;missing delimiter&gt;_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[sy]'*[^']\<font color="#ff00ff"><b>(</b></font>[^~]*~\)$</b></font><font color="#ff6060"><b>/</b></font>&lt;missing delimiter&gt;_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[sy]</b></font><font color="#ff6060"><b>/</b></font> <font color="#ffff00"><b>t</b></font> <a href="#sy">sy</a>

<font color="#00ffff"><b># s flags</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>_S[^~]*~\)p</b></font><font color="#ff6060"><b>/</b></font>p<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_S[01]\<font color="#ff00ff"><b>(</b></font>[^~]*~\)g</b></font><font color="#ff6060"><b>/</b></font>g_S1<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_S0\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[0-9][0-9]*\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>_S2<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>_S1[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[0-9][0-9]*\)</b></font><font color="#ff6060"><b>/</b></font>&lt;both "g" and "n" flags&gt;<font color="#00ff00"><b>\2</b></font><font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>_S2[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[0-9][0-9]*\)</b></font><font color="#ff6060"><b>/</b></font>&lt;multiple "n" flags&gt;<font color="#00ff00"><b>\2</b></font><font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>_S2[^~]*~\)g</b></font><font color="#ff6060"><b>/</b></font>&lt;both "g" and "n" flags&gt;g<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_S.\<font color="#ff00ff"><b>(</b></font>[^~]*~[ 	;#]\)</b></font><font color="#ff6060"><b>/</b></font>_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_S.\<font color="#ff00ff"><b>(</b></font>[^~]*~\)$</b></font><font color="#ff6060"><b>/</b></font>_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_S.\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[^pg0-9w]\)$</b></font><font color="#ff6060"><b>/</b></font>&lt;unknown flag&gt;<font color="#00ff00"><b>\2</b></font>_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_S.\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[^pg0-9w].*\)</b></font><font color="#ff6060"><b>/</b></font>&lt;unknown flag (rest of line ignored)&gt;<font color="#00ff00"><b>\2</b></font>_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_S.\<font color="#ff00ff"><b>(</b></font>[^~]*~\)w</b></font><font color="#ff6060"><b>/</b></font>w_n<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

<font color="#00ffff"><b># #</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>#.*\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_c\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[^#; 	].*\)</b></font><font color="#ff6060"><b>/</b></font>&lt;unknown command (rest of line ignored)&gt;<font color="#00ff00"><b>\2</b></font>_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

<font color="#00ffff"><b># 'b'eginning of regexp</b></font>
<font color="#00ffff"><b># "*" is special unless at the beginning of the regex (after optional "^")</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_b\<font color="#ff00ff"><b>(</b></font>[^^][^~]*~\)^</b></font><font color="#ff6060"><b>/</b></font>^_b<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_b\<font color="#ff00ff"><b>(</b></font>[^*][^~]*~\)\*</b></font><font color="#ff6060"><b>/</b></font>*_r<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_b</b></font><font color="#ff6060"><b>/</b></font>_r<font color="#ff6060"><b>/</b></font>

<font color="#00ffff"><b># 'r'egexp loop. state 'R' after a repeated symbol and 'B' inside a bracket</b></font>
<font color="#00ffff"><b># expression. </b></font>
<font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rB]</b></font><font color="#ff6060"><b>/</b></font> <font color="#ff6060"><b>{</b></font>

    <font color="#ff00ff"><b>:</b></font><font color="#ff00ff"><b><a name="reloop">reloop</a></b></font>
    <font color="#00ffff"><b># shortcut, when the delimiter is "/"</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>\/[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[^\/*$[][^\/*$[]*\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>_r<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>'*[^']\)\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\1</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\1</b></font>_<font color="#00ff00"><b>\2</b></font><font color="#ff6060"><b>/</b></font>

    <font color="#00ffff"><b># \x</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>\<font color="#ff00ff"><b>(</b></font>[n.(){1-9^$*[]\)[^~]*~\)\\\2</b></font><font color="#ff6060"><b>/</b></font>&lt;"\\<font color="#00ff00"><b>\2</b></font>" ambiguous with "<font color="#00ff00"><b>\2</b></font>" as <font color="#00ff00"><b>\
</b></font>delimiter&gt;_?r<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>\<font color="#ff00ff"><b>(</b></font>'*[^']\)[^~]*~\)\\\2</b></font><font color="#ff6060"><b>/</b></font>\\<font color="#00ff00"><b>\2</b></font>_?r<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>\\[^n.\*^$(){1-9?+[]\)</b></font><font color="#ff6060"><b>/</b></font>&lt;"<font color="#00ff00"><b>\2</b></font>" undefined&gt;<font color="#00ff00"><b>\2</b></font>_?r<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\\?</b></font><font color="#ff6060"><b>/</b></font>&lt;"\\?" undefined (use "\\{0,1\\}" instead)&gt;\\?_?r<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\\+</b></font><font color="#ff6060"><b>/</b></font>&lt;"\\+" undefined (use "\\{1,\\}" instead)&gt;\\+_?r<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>\\[n.\*^$1-9)[]\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>_?r<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\\<font color="#ff00ff"><b>(</b></font>\^</b></font><font color="#ff6060"><b>/</b></font>\\(&lt;subexpression anchoring is optional (use <font color="#00ff00"><b>\
</b></font>"\\^" instead)&gt;^_?r<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\\<font color="#ff00ff"><b>(</b></font>\*</b></font><font color="#ff6060"><b>/</b></font>\\(*_?r<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\\<font color="#ff00ff"><b>(</b></font></b></font><font color="#ff6060"><b>/</b></font>\\(_?r<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

    <font color="#00ffff"><b># \{...\}</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>\\{\)\<font color="#ff00ff"><b>(</b></font>[^0-9]\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>&lt;bad interval&gt;<font color="#00ff00"><b>\3</b></font>_?r<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>\\{[0-9][0-9]*\)\<font color="#ff00ff"><b>(</b></font>[^\,0-9]\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>&lt;bad interval&gt;<font color="#00ff00"><b>\3</b></font>_?r<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>\\{[0-9][0-9]*\)\<font color="#ff00ff"><b>(</b></font>\\[^}]\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>&lt;bad interval&gt;<font color="#00ff00"><b>\3</b></font>_?r<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>\\{[0-9][0-9]*,\)\<font color="#ff00ff"><b>(</b></font>[^\0-9]\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>&lt;bad interval&gt;<font color="#00ff00"><b>\3</b></font>_?r<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>\\{[0-9][0-9]*,[0-9][0-9]*\)\<font color="#ff00ff"><b>(</b></font>[^\0-9]\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>&lt;bad <font color="#00ff00"><b>\
</b></font>interval&gt;<font color="#00ff00"><b>\3</b></font>_?r<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>\\{[0-9][0-9]*,[0-9][0-9]*\)\<font color="#ff00ff"><b>(</b></font>\\[^}]\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>&lt;bad <font color="#00ff00"><b>\
</b></font>interval&gt;<font color="#00ff00"><b>\3</b></font>_?r<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_R\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>\\{[^}]*}\)</b></font><font color="#ff6060"><b>/</b></font>&lt;multiple "*" or intervals&gt;<font color="#00ff00"><b>\2</b></font>_?r<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_r\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>\\{[^}]*}\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>_?R<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

    <font color="#00ffff"><b># entering a bracket expression</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>\[^^]\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>_B<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>\[^]\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>_B<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>\[^\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>_B<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>\[\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>_B<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

    <font color="#00ffff"><b># bracket expression</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>_B[^~]*~\)\<font color="#ff00ff"><b>(</b></font>[^]\[][^]\[]*\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font><font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>_B[^~]*~\)\\n</b></font><font color="#ff6060"><b>/</b></font>&lt;"\\n" ambiguous (use "n\\" instead)&gt;\\n<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>_B[^~]*~\)\\\<font color="#ff00ff"><b>(</b></font>[^n]\)</b></font><font color="#ff6060"><b>/</b></font>\\<font color="#00ff00"><b>\1</b></font><font color="#00ff00"><b>\2</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_\<font color="#ff00ff"><b>(</b></font>B[^~]*~\)\\$</b></font><font color="#ff6060"><b>/</b></font>&lt;"\\'newline'" not allowed&gt;\\_\\<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>_B[^~]*~\)\<font color="#ff00ff"><b>(</b></font>\[[.=:].[^]]*]\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font><font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>_B[^~]*~\)\[\<font color="#ff00ff"><b>(</b></font>[^.=:]\)</b></font><font color="#ff6060"><b>/</b></font>[<font color="#00ff00"><b>\1</b></font><font color="#00ff00"><b>\2</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_B\<font color="#ff00ff"><b>(</b></font>[^~]*~\)]</b></font><font color="#ff6060"><b>/</b></font>]_?r<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

    <font color="#00ffff"><b># *</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_R\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\*</b></font><font color="#ff6060"><b>/</b></font>&lt;multiple "*" or intervals&gt;*_?r<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_r\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\*</b></font><font color="#ff6060"><b>/</b></font>*_?R<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

    <font color="#00ffff"><b># $</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>\$\\)\)</b></font><font color="#ff6060"><b>/</b></font>&lt;subexpression anchoring is optional (use <font color="#00ff00"><b>\
</b></font>"\\$" instead)&gt;<font color="#00ff00"><b>\2</b></font>_?r<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\$</b></font><font color="#ff6060"><b>/</b></font>$_?r<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

    <font color="#00ffff"><b># \&lt;newline&gt;</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]'z\<font color="#ff00ff"><b>(</b></font>[^~]*~\)$</b></font><font color="#ff6060"><b>/</b></font>_\\<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rRB][^{~]*\<font color="#ff00ff"><b>(</b></font>{*~\)$</b></font><font color="#ff6060"><b>/</b></font>&lt;missing delimiter&gt;_<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\\$</b></font><font color="#ff6060"><b>/</b></font>&lt;"\\'newline'" not allowed (use "\\n" <font color="#00ff00"><b>\
</b></font>instead)&gt;\\_\\r<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

    <font color="#00ffff"><b># any other character</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rR]\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>.\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font>_?r<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>

    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_?</b></font><font color="#ff6060"><b>/</b></font>_<font color="#ff6060"><b>/</b></font>
    <font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_[rRB]</b></font><font color="#ff6060"><b>/</b></font> <font color="#ffff00"><b>t</b></font> <a href="#reloop">reloop</a>
<font color="#ff6060"><b>}</b></font>

<font color="#00ffff"><b># force re-cycle</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_?</b></font><font color="#ff6060"><b>/</b></font>_<font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>t</b></font> <a href="#loop">loop</a>

<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\n</b></font><font color="#ff6060"><b>/</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>g</b></font>

<font color="#00ffff"><b># end of line not reached by the parser?</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>_\<font color="#ff00ff"><b>(</b></font>[^~]*~\)\<font color="#ff00ff"><b>(</b></font>..*\)</b></font><font color="#ff6060"><b>/</b></font>&lt;syntax error (rest of line ignored)&gt;<font color="#00ff00"><b>\2</b></font>_C~<font color="#ff6060"><b>/</b></font>

<font color="#00ffff"><b># update state in the hold buffer, removing any leading \ in the state</b></font>
<font color="#00ffff"><b># (these are used to control when a command can extend to the next line) </b></font>
<font color="#ffff00"><b>G</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>[^_]*\)_\\*\<font color="#ff00ff"><b>(</b></font>.*\)\<font color="#ff00ff"><b>(</b></font>\n\)[^~]*~\<font color="#ff00ff"><b>(</b></font>.*\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font><font color="#00ff00"><b>\4</b></font><font color="#00ff00"><b>\3</b></font><font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>h</b></font>
<font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>&lt;</b></font><font color="#ff6060"><b>/</b></font> <font color="#ff6060"><b>!</b></font><font color="#ffff00"><b>b</b></font> <a href="#noerror">noerror</a>

<font color="#ff00ff"><b>:</b></font><font color="#ff00ff"><b><a name="error">error</a></b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>[^~]*~\<font color="#ff00ff"><b>(</b></font>[0-9]*\)[^&lt;]*&lt;\<font color="#ff00ff"><b>(</b></font>[^&gt;]*\).*</b></font><font color="#ff6060"><b>/</b></font>line <font color="#00ff00"><b>\1</b></font>: <font color="#00ff00"><b>\2</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>'\<font color="#ff00ff"><b>(</b></font>[^']*\)'</b></font><font color="#ff6060"><b>/</b></font>&lt;<font color="#00ff00"><b>\1</b></font>&gt;<font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>g</b></font>
<font color="#ffff00"><b>p</b></font>
<font color="#ffff00"><b>g</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>.*\n</b></font><font color="#ff6060"><b>/</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>&lt;[^&gt;]*&gt;</b></font><font color="#ff6060"><b>/</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>g</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>'.</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>&amp;</b></font>'a_b&lt;c&gt;d~e,<font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>g</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>'\<font color="#ff00ff"><b>(</b></font>.\)[^,]*\<font color="#ff00ff"><b>(</b></font>[^,]\)\1[^,]*,</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\2</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>g</b></font>
<font color="#ffff00"><b>p</b></font>
<font color="#ffff00"><b>g</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>.*\n</b></font><font color="#ff6060"><b>/</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>[^&lt;]*\)&lt;.*</b></font><font color="#ff6060"><b>/</b></font>&gt;<font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ff00ff"><b>:</b></font><font color="#ff00ff"><b><a name="tospace">tospace</a></b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>&gt;'*[^	]</b></font><font color="#ff6060"><b>/</b></font> &gt;<font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>&gt;\<font color="#ff00ff"><b>(</b></font>		*\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\1</b></font>&gt;<font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>&gt;$</b></font><font color="#ff6060"><b>/</b></font>^<font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>p</b></font>
<font color="#ffff00"><b>t</b></font> <a href="#tospace">tospace</a>
<font color="#ffff00"><b>g</b></font>
<font color="#00ffff"><b># remove first issue and increment issue count</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>&lt;[^&gt;]*&gt;</b></font><font color="#ff6060"><b>/</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\<font color="#ff00ff"><b>(</b></font>.\)\<font color="#ff00ff"><b>(</b></font>9*\)\<font color="#ff00ff"><b>(</b></font>+[0-8]*\1\<font color="#ff00ff"><b>(</b></font>[0-9]0*\)[0-9]*\2\<font color="#ff00ff"><b>(</b></font>0*\).*\n\)</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\4</b></font><font color="#00ff00"><b>\5</b></font><font color="#00ff00"><b>\3</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>h</b></font>
<font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>&lt;</b></font><font color="#ff6060"><b>/</b></font> <font color="#ffff00"><b>b</b></font> <a href="#error">error</a>

<font color="#ff00ff"><b>:</b></font><font color="#ff00ff"><b><a name="noerror">noerror</a></b></font>
<font color="#00ffff"><b># remove the line from the future hold buffer</b></font>
<font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>\n.*</b></font><font color="#ff6060"><b>/</b></font><font color="#ff6060"><b>/</b></font>
<font color="#ffff00"><b>h</b></font>

<font color="#8080ff"><b>$</b></font> <font color="#ff6060"><b>!</b></font><font color="#ffff00"><b>d</b></font>

<font color="#00ffff"><b># if the issue count is not null, report it.</b></font>
<font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>[^~]*~[^,]*,\<font color="#ff00ff"><b>(</b></font>[1-9][0-9]*\).*</b></font><font color="#ff6060"><b>/</b></font> <font color="#ff6060"><b>{</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\1</b></font> issues reported.<font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>s</b></font><font color="#ff6060"><b>/</b></font><font color="#8080ff"><b>^\<font color="#ff00ff"><b>(</b></font>1 issue\)s</b></font><font color="#ff6060"><b>/</b></font><font color="#00ff00"><b>\1</b></font><font color="#ff6060"><b>/</b></font>
    <font color="#ffff00"><b>q</b></font>
<font color="#ff6060"><b>}</b></font>
<font color="#ffff00"><b>d</b></font>



<font color="#00ffff"><b>### colorized by <a href="https://aurelio.net/projects/sedsed/">sedsed</a>, a debugger and code formatter for sed scripts</b></font>

</pre></body></html>