hutch-xamplr-pp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1037 @@
1
+ # xampl-pp : XML pull parser
2
+ # Copyright (C) 2002-2009 Bob Hutchison
3
+ #
4
+ # This library is free software; you can redistribute it and/or
5
+ # modify it under the terms of the GNU Lesser General Public
6
+ # License as published by the Free Software Foundation; either
7
+ # version 2.1 of the License, or (at your option) any later version.
8
+ #
9
+ # This library is distributed in the hope that it will be useful,
10
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
+ # #Lesser General Public License for more details.
13
+ #
14
+ # You should have received a copy of the GNU Lesser General Public
15
+ # License along with this library; if not, write to the Free Software
16
+ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
+ #
18
+
19
+ require "xampl-pp-dtd"
20
+
21
+ class Xampl_PP
22
+ alias :nextEventBase :nextEvent
23
+ alias :setInputBase :setInput
24
+ alias :encodeBase :encode
25
+ alias :readBase :read
26
+
27
+ def nextEvent
28
+ begin
29
+ begin
30
+ return nextEventBase
31
+ ensure
32
+ #IGNORABLE_WHITESPACE
33
+ #DOCTYPE
34
+ if nil == @errorMessage then
35
+ if @unresolvedEntity then
36
+ raise "unresolvedEntity"
37
+ end
38
+ case @type
39
+ when START_ELEMENT
40
+ if (0 == @elementName.length) then
41
+ if @haveRoot then
42
+ raise "unexpected element"
43
+ end
44
+ end
45
+ legalName
46
+ @haveRoot = true
47
+ when END_ELEMENT
48
+ legalName
49
+ when COMMENT
50
+ if nil != @text.index(/--/u) then
51
+ raise "illegal '--' in comment"
52
+ end
53
+ legalText
54
+ when TEXT
55
+ if 0 == @elementName.length then
56
+ raise "text at document level"
57
+ end
58
+ legalText
59
+ when CDATA_SECTION
60
+ if 0 == @elementName.length then
61
+ raise "CDATA section at document level"
62
+ end
63
+ legalText
64
+ when ENTITY_REF
65
+ if 0 == @elementName.length then
66
+ raise "entity ref at document level"
67
+ end
68
+ legalText
69
+ when END_DOCUMENT
70
+ if 0 != @elementName.length then
71
+ raise sprintf("unexpected end of document (%d open elements)",
72
+ @elementName.length)
73
+ end
74
+ if !@haveRoot then
75
+ raise "unexpected end of document (no element)"
76
+ end
77
+ when PROCESSING_INSTRUCTION
78
+ if @pastXMLDecl and parseXMLDecl then
79
+ raise "unexpected XMLDecl"
80
+ end
81
+ legalText
82
+ end
83
+ @pastXMLDecl = true
84
+ end
85
+ end
86
+ rescue Exception => message
87
+ #print message.backtrace.join("\n")
88
+ if nil == @errorMessage then
89
+ if nil != @inputBuffer then
90
+ @errorMessage = sprintf("parse error: '%s' -- String input, line %d, column %d", message, @line, @column)
91
+ elsif nil != @input then
92
+ if @input.kind_of? File then
93
+ @errorMessage = sprintf("parse error: '%s' -- file '%s', line %d, column %d", message, @input.path, @line, @column)
94
+ else
95
+ @errorMessage = sprintf("parse error: '%s' -- unnamed IO stream, line %d, column %d", message, @line, @column)
96
+ end
97
+ else
98
+ @errorMessage = sprintf("parse error: '%s' -- unknown source, line %d, column %d", message, @line, @column)
99
+ end
100
+ end
101
+ raise @errorMessage
102
+ end
103
+ end
104
+
105
+ private
106
+
107
+ def setInput(v)
108
+ @haveRoot = false
109
+ @pastXMLDecl = false
110
+ @quickNamePattern = Regexp.new(/^[\x41-\x5A\x61-\x7a_:][\x30-\x39\x41-\x5A\x61-\x7a_:\.\-]*$/, 0, "UTF-8")
111
+ @quickTextPattern = /^[\x09\x0A\x0D\x20-\x7f]*$/mu
112
+ setInputBase(v)
113
+ end
114
+
115
+ def legalChar(c)
116
+ if c < 0x20 then
117
+ if (c != 0x9) and (c != 0x0A) and (c != 0x0D) then
118
+ raise "illegal character"
119
+ end
120
+ elsif (0xD7FF < c) and (c < 0xE000) then
121
+ raise "illegal character"
122
+ elsif (0xFFFD < c) and (c < 0x10000) then
123
+ raise "illegal character"
124
+ elsif (0x10FFFF < c) then
125
+ raise "illegal character"
126
+ end
127
+ return c
128
+ end
129
+
130
+ def encode(c)
131
+ return encodeBase(legalChar(c))
132
+ end
133
+
134
+ def read
135
+ return legalChar(readBase)
136
+ end
137
+
138
+ def legalText
139
+ if nil == @text then
140
+ raise "undefined text"
141
+ end
142
+
143
+ return if 0 == @text.index(@quickTextPattern)
144
+
145
+ a = @text.unpack('U*')
146
+ start = true
147
+ for c in a
148
+ legalChar(c)
149
+ end
150
+ end
151
+
152
+ def legalName
153
+ if nil == @name then
154
+ raise "undefined element name"
155
+ end
156
+
157
+ return if 0 == @name.index(@quickNamePattern)
158
+
159
+ a = @name.unpack('U*')
160
+ start = true
161
+ for c in a
162
+ # NameStart
163
+ while start do
164
+ break if (0x0041 <= c) and (c <= 0x005A)
165
+ break if (0x0061 <= c) and (c <= 0x007A)
166
+ break if c == ?_
167
+ break if c == ?:
168
+ break if (0x00C0 <= c) and (c <= 0x00D6)
169
+ break if (0x00D8 <= c) and (c <= 0x00F6)
170
+ break if (0x00F8 <= c) and (c <= 0x00FF)
171
+ break if (0x0100 <= c) and (c <= 0x0131)
172
+ break if (0x0134 <= c) and (c <= 0x013E)
173
+ break if (0x0141 <= c) and (c <= 0x0148)
174
+ break if (0x014A <= c) and (c <= 0x017E)
175
+ break if (0x0180 <= c) and (c <= 0x01C3)
176
+ break if (0x01CD <= c) and (c <= 0x01F0)
177
+ break if (0x01F4 <= c) and (c <= 0x01F5)
178
+ break if (0x01FA <= c) and (c <= 0x0217)
179
+ break if (0x0250 <= c) and (c <= 0x02A8)
180
+ break if (0x02BB <= c) and (c <= 0x02C1)
181
+ break if c == 0x0386
182
+ break if (0x0388 <= c) and (c <= 0x038A)
183
+ break if c == 0x038C
184
+ break if (0x038E <= c) and (c <= 0x03A1)
185
+ break if (0x03A3 <= c) and (c <= 0x03CE)
186
+ break if (0x03D0 <= c) and (c <= 0x03D6)
187
+ break if c == 0x03DA
188
+ break if c == 0x03DC
189
+ break if c == 0x03DE
190
+ break if c == 0x03E0
191
+ break if (0x03E2 <= c) and (c <= 0x03F3)
192
+ break if (0x0401 <= c) and (c <= 0x040C)
193
+ break if (0x040E <= c) and (c <= 0x044F)
194
+ break if (0x0451 <= c) and (c <= 0x045C)
195
+ break if (0x045E <= c) and (c <= 0x0481)
196
+ break if (0x0490 <= c) and (c <= 0x04C4)
197
+ break if (0x04C7 <= c) and (c <= 0x04C8)
198
+ break if (0x04CB <= c) and (c <= 0x04CC)
199
+ break if (0x04D0 <= c) and (c <= 0x04EB)
200
+ break if (0x04EE <= c) and (c <= 0x04F5)
201
+ break if (0x04F8 <= c) and (c <= 0x04F9)
202
+ break if (0x0531 <= c) and (c <= 0x0556)
203
+ break if c == 0x0559
204
+ break if (0x0561 <= c) and (c <= 0x0586)
205
+ break if (0x05D0 <= c) and (c <= 0x05EA)
206
+ break if (0x05F0 <= c) and (c <= 0x05F2)
207
+ break if (0x0621 <= c) and (c <= 0x063A)
208
+ break if (0x0641 <= c) and (c <= 0x064A)
209
+ break if (0x0671 <= c) and (c <= 0x06B7)
210
+ break if (0x06BA <= c) and (c <= 0x06BE)
211
+ break if (0x06C0 <= c) and (c <= 0x06CE)
212
+ break if (0x06D0 <= c) and (c <= 0x06D3)
213
+ break if c == 0x06D5
214
+ break if (0x06E5 <= c) and (c <= 0x06E6)
215
+ break if (0x0905 <= c) and (c <= 0x0939)
216
+ break if c == 0x093D
217
+ break if (0x0958 <= c) and (c <= 0x0961)
218
+ break if (0x0985 <= c) and (c <= 0x098C)
219
+ break if (0x098F <= c) and (c <= 0x0990)
220
+ break if (0x0993 <= c) and (c <= 0x09A8)
221
+ break if (0x09AA <= c) and (c <= 0x09B0)
222
+ break if c == 0x09B2
223
+ break if (0x09B6 <= c) and (c <= 0x09B9)
224
+ break if (0x09DC <= c) and (c <= 0x09DD)
225
+ break if (0x09DF <= c) and (c <= 0x09E1)
226
+ break if (0x09F0 <= c) and (c <= 0x09F1)
227
+ break if (0x0A05 <= c) and (c <= 0x0A0A)
228
+ break if (0x0A0F <= c) and (c <= 0x0A10)
229
+ break if (0x0A13 <= c) and (c <= 0x0A28)
230
+ break if (0x0A2A <= c) and (c <= 0x0A30)
231
+ break if (0x0A32 <= c) and (c <= 0x0A33)
232
+ break if (0x0A35 <= c) and (c <= 0x0A36)
233
+ break if (0x0A38 <= c) and (c <= 0x0A39)
234
+ break if (0x0A59 <= c) and (c <= 0x0A5C)
235
+ break if c == 0x0A5E
236
+ break if (0x0A72 <= c) and (c <= 0x0A74)
237
+ break if (0x0A85 <= c) and (c <= 0x0A8B)
238
+ break if c == 0x0A8D
239
+ break if (0x0A8F <= c) and (c <= 0x0A91)
240
+ break if (0x0A93 <= c) and (c <= 0x0AA8)
241
+ break if (0x0AAA <= c) and (c <= 0x0AB0)
242
+ break if (0x0AB2 <= c) and (c <= 0x0AB3)
243
+ break if (0x0AB5 <= c) and (c <= 0x0AB9)
244
+ break if c == 0x0ABD
245
+ break if c == 0x0AE0
246
+ break if (0x0B05 <= c) and (c <= 0x0B0C)
247
+ break if (0x0B0F <= c) and (c <= 0x0B10)
248
+ break if (0x0B13 <= c) and (c <= 0x0B28)
249
+ break if (0x0B2A <= c) and (c <= 0x0B30)
250
+ break if (0x0B32 <= c) and (c <= 0x0B33)
251
+ break if (0x0B36 <= c) and (c <= 0x0B39)
252
+ break if c == 0x0B3D
253
+ break if (0x0B5C <= c) and (c <= 0x0B5D)
254
+ break if (0x0B5F <= c) and (c <= 0x0B61)
255
+ break if (0x0B85 <= c) and (c <= 0x0B8A)
256
+ break if (0x0B8E <= c) and (c <= 0x0B90)
257
+ break if (0x0B92 <= c) and (c <= 0x0B95)
258
+ break if (0x0B99 <= c) and (c <= 0x0B9A)
259
+ break if c == 0x0B9C
260
+ break if (0x0B9E <= c) and (c <= 0x0B9F)
261
+ break if (0x0BA3 <= c) and (c <= 0x0BA4)
262
+ break if (0x0BA8 <= c) and (c <= 0x0BAA)
263
+ break if (0x0BAE <= c) and (c <= 0x0BB5)
264
+ break if (0x0BB7 <= c) and (c <= 0x0BB9)
265
+ break if (0x0C05 <= c) and (c <= 0x0C0C)
266
+ break if (0x0C0E <= c) and (c <= 0x0C10)
267
+ break if (0x0C12 <= c) and (c <= 0x0C28)
268
+ break if (0x0C2A <= c) and (c <= 0x0C33)
269
+ break if (0x0C35 <= c) and (c <= 0x0C39)
270
+ break if (0x0C60 <= c) and (c <= 0x0C61)
271
+ break if (0x0C85 <= c) and (c <= 0x0C8C)
272
+ break if (0x0C8E <= c) and (c <= 0x0C90)
273
+ break if (0x0C92 <= c) and (c <= 0x0CA8)
274
+ break if (0x0CAA <= c) and (c <= 0x0CB3)
275
+ break if (0x0CB5 <= c) and (c <= 0x0CB9)
276
+ break if c == 0x0CDE
277
+ break if (0x0CE0 <= c) and (c <= 0x0CE1)
278
+ break if (0x0D05 <= c) and (c <= 0x0D0C)
279
+ break if (0x0D0E <= c) and (c <= 0x0D10)
280
+ break if (0x0D12 <= c) and (c <= 0x0D28)
281
+ break if (0x0D2A <= c) and (c <= 0x0D39)
282
+ break if (0x0D60 <= c) and (c <= 0x0D61)
283
+ break if (0x0E01 <= c) and (c <= 0x0E2E)
284
+ break if c == 0x0E30
285
+ break if (0x0E32 <= c) and (c <= 0x0E33)
286
+ break if (0x0E40 <= c) and (c <= 0x0E45)
287
+ break if (0x0E81 <= c) and (c <= 0x0E82)
288
+ break if c == 0x0E84
289
+ break if (0x0E87 <= c) and (c <= 0x0E88)
290
+ break if c == 0x0E8A
291
+ break if c == 0x0E8D
292
+ break if (0x0E94 <= c) and (c <= 0x0E97)
293
+ break if (0x0E99 <= c) and (c <= 0x0E9F)
294
+ break if (0x0EA1 <= c) and (c <= 0x0EA3)
295
+ break if c == 0x0EA5
296
+ break if c == 0x0EA7
297
+ break if (0x0EAA <= c) and (c <= 0x0EAB)
298
+ break if (0x0EAD <= c) and (c <= 0x0EAE)
299
+ break if c == 0x0EB0
300
+ break if (0x0EB2 <= c) and (c <= 0x0EB3)
301
+ break if c == 0x0EBD
302
+ break if (0x0EC0 <= c) and (c <= 0x0EC4)
303
+ break if (0x0F40 <= c) and (c <= 0x0F47)
304
+ break if (0x0F49 <= c) and (c <= 0x0F69)
305
+ break if (0x10A0 <= c) and (c <= 0x10C5)
306
+ break if (0x10D0 <= c) and (c <= 0x10F6)
307
+ break if c == 0x1100
308
+ break if (0x1102 <= c) and (c <= 0x1103)
309
+ break if (0x1105 <= c) and (c <= 0x1107)
310
+ break if c == 0x1109
311
+ break if (0x110B <= c) and (c <= 0x110C)
312
+ break if (0x110E <= c) and (c <= 0x1112)
313
+ break if c == 0x113C
314
+ break if c == 0x113E
315
+ break if c == 0x1140
316
+ break if c == 0x114C
317
+ break if c == 0x114E
318
+ break if c == 0x1150
319
+ break if (0x1154 <= c) and (c <= 0x1155)
320
+ break if c == 0x1159
321
+ break if (0x115F <= c) and (c <= 0x1161)
322
+ break if c == 0x1163
323
+ break if c == 0x1165
324
+ break if c == 0x1167
325
+ break if c == 0x1169
326
+ break if (0x116D <= c) and (c <= 0x116E)
327
+ break if (0x1172 <= c) and (c <= 0x1173)
328
+ break if c == 0x1175
329
+ break if c == 0x119E
330
+ break if c == 0x11A8
331
+ break if c == 0x11AB
332
+ break if (0x11AE <= c) and (c <= 0x11AF)
333
+ break if (0x11B7 <= c) and (c <= 0x11B8)
334
+ break if c == 0x11BA
335
+ break if (0x11BC <= c) and (c <= 0x11C2)
336
+ break if c == 0x11EB
337
+ break if c == 0x11F0
338
+ break if c == 0x11F9
339
+ break if (0x1E00 <= c) and (c <= 0x1E9B)
340
+ break if (0x1EA0 <= c) and (c <= 0x1EF9)
341
+ break if (0x1F00 <= c) and (c <= 0x1F15)
342
+ break if (0x1F18 <= c) and (c <= 0x1F1D)
343
+ break if (0x1F20 <= c) and (c <= 0x1F45)
344
+ break if (0x1F48 <= c) and (c <= 0x1F4D)
345
+ break if (0x1F50 <= c) and (c <= 0x1F57)
346
+ break if c == 0x1F59
347
+ break if c == 0x1F5B
348
+ break if c == 0x1F5D
349
+ break if (0x1F5F <= c) and (c <= 0x1F7D)
350
+ break if (0x1F80 <= c) and (c <= 0x1FB4)
351
+ break if (0x1FB6 <= c) and (c <= 0x1FBC)
352
+ break if c == 0x1FBE
353
+ break if (0x1FC2 <= c) and (c <= 0x1FC4)
354
+ break if (0x1FC6 <= c) and (c <= 0x1FCC)
355
+ break if (0x1FD0 <= c) and (c <= 0x1FD3)
356
+ break if (0x1FD6 <= c) and (c <= 0x1FDB)
357
+ break if (0x1FE0 <= c) and (c <= 0x1FEC)
358
+ break if (0x1FF2 <= c) and (c <= 0x1FF4)
359
+ break if (0x1FF6 <= c) and (c <= 0x1FFC)
360
+ break if c == 0x2126
361
+ break if (0x212A <= c) and (c <= 0x212B)
362
+ break if c == 0x212E
363
+ break if (0x2180 <= c) and (c <= 0x2182)
364
+ break if c == 0x3007
365
+ break if (0x3021 <= c) and (c <= 0x3029)
366
+ break if (0x3041 <= c) and (c <= 0x3094)
367
+ break if (0x30A1 <= c) and (c <= 0x30FA)
368
+ break if (0x3105 <= c) and (c <= 0x312C)
369
+ break if (0x4E00 <= c) and (c <= 0x9FA5)
370
+ break if (0xAC00 <= c) and (c <= 0xD7A3)
371
+ break if (0x0030 <= c) and (c <= 0x0039)
372
+ break if (0x0041 <= c) and (c <= 0x005A)
373
+ break if (0x0061 <= c) and (c <= 0x007A)
374
+ break if c == 0x00B7
375
+ break if (0x00C0 <= c) and (c <= 0x00D6)
376
+ break if (0x00D8 <= c) and (c <= 0x00F6)
377
+ break if (0x00F8 <= c) and (c <= 0x00FF)
378
+ break if (0x0100 <= c) and (c <= 0x0131)
379
+ break if (0x0134 <= c) and (c <= 0x013E)
380
+ break if (0x0141 <= c) and (c <= 0x0148)
381
+ break if (0x014A <= c) and (c <= 0x017E)
382
+ break if (0x0180 <= c) and (c <= 0x01C3)
383
+ break if (0x01CD <= c) and (c <= 0x01F0)
384
+ break if (0x01F4 <= c) and (c <= 0x01F5)
385
+ break if (0x01FA <= c) and (c <= 0x0217)
386
+ break if (0x0250 <= c) and (c <= 0x02A8)
387
+ break if (0x02BB <= c) and (c <= 0x02C1)
388
+ break if c == 0x02D0
389
+ break if c == 0x02D1
390
+ break if (0x0300 <= c) and (c <= 0x0345)
391
+ break if (0x0360 <= c) and (c <= 0x0361)
392
+ break if c == 0x0386
393
+ break if c == 0x0387
394
+ break if (0x0388 <= c) and (c <= 0x038A)
395
+ break if c == 0x038C
396
+ break if (0x038E <= c) and (c <= 0x03A1)
397
+ break if (0x03A3 <= c) and (c <= 0x03CE)
398
+ break if (0x03D0 <= c) and (c <= 0x03D6)
399
+ break if c == 0x03DA
400
+ break if c == 0x03DC
401
+ break if c == 0x03DE
402
+ break if c == 0x03E0
403
+ break if (0x03E2 <= c) and (c <= 0x03F3)
404
+ break if (0x0401 <= c) and (c <= 0x040C)
405
+ break if (0x040E <= c) and (c <= 0x044F)
406
+ break if (0x0451 <= c) and (c <= 0x045C)
407
+ break if (0x045E <= c) and (c <= 0x0481)
408
+ break if (0x0483 <= c) and (c <= 0x0486)
409
+ break if (0x0490 <= c) and (c <= 0x04C4)
410
+ break if (0x04C7 <= c) and (c <= 0x04C8)
411
+ break if (0x04CB <= c) and (c <= 0x04CC)
412
+ break if (0x04D0 <= c) and (c <= 0x04EB)
413
+ break if (0x04EE <= c) and (c <= 0x04F5)
414
+ break if (0x04F8 <= c) and (c <= 0x04F9)
415
+ break if (0x0531 <= c) and (c <= 0x0556)
416
+ break if c == 0x0559
417
+ break if (0x0561 <= c) and (c <= 0x0586)
418
+ break if (0x0591 <= c) and (c <= 0x05A1)
419
+ break if (0x05A3 <= c) and (c <= 0x05B9)
420
+ break if (0x05BB <= c) and (c <= 0x05BD)
421
+ break if c == 0x05BF
422
+ break if (0x05C1 <= c) and (c <= 0x05C2)
423
+ break if c == 0x05C4
424
+ break if (0x05D0 <= c) and (c <= 0x05EA)
425
+ break if (0x05F0 <= c) and (c <= 0x05F2)
426
+ break if (0x0621 <= c) and (c <= 0x063A)
427
+ break if c == 0x0640
428
+ break if (0x0641 <= c) and (c <= 0x064A)
429
+ break if (0x064B <= c) and (c <= 0x0652)
430
+ break if (0x0660 <= c) and (c <= 0x0669)
431
+ break if c == 0x0670
432
+ break if (0x0671 <= c) and (c <= 0x06B7)
433
+ break if (0x06BA <= c) and (c <= 0x06BE)
434
+ break if (0x06C0 <= c) and (c <= 0x06CE)
435
+ break if (0x06D0 <= c) and (c <= 0x06D3)
436
+ break if c == 0x06D5
437
+ break if (0x06D6 <= c) and (c <= 0x06DC)
438
+ break if (0x06DD <= c) and (c <= 0x06DF)
439
+ break if (0x06E0 <= c) and (c <= 0x06E4)
440
+ break if (0x06E5 <= c) and (c <= 0x06E6)
441
+ break if (0x06E7 <= c) and (c <= 0x06E8)
442
+ break if (0x06EA <= c) and (c <= 0x06ED)
443
+ break if (0x06F0 <= c) and (c <= 0x06F9)
444
+ break if (0x0901 <= c) and (c <= 0x0903)
445
+ break if (0x0905 <= c) and (c <= 0x0939)
446
+ break if c == 0x093C
447
+ break if c == 0x093D
448
+ break if (0x093E <= c) and (c <= 0x094C)
449
+ break if c == 0x094D
450
+ break if (0x0951 <= c) and (c <= 0x0954)
451
+ break if (0x0958 <= c) and (c <= 0x0961)
452
+ break if (0x0962 <= c) and (c <= 0x0963)
453
+ break if (0x0966 <= c) and (c <= 0x096F)
454
+ break if (0x0981 <= c) and (c <= 0x0983)
455
+ break if (0x0985 <= c) and (c <= 0x098C)
456
+ break if (0x098F <= c) and (c <= 0x0990)
457
+ break if (0x0993 <= c) and (c <= 0x09A8)
458
+ break if (0x09AA <= c) and (c <= 0x09B0)
459
+ break if c == 0x09B2
460
+ break if (0x09B6 <= c) and (c <= 0x09B9)
461
+ break if c == 0x09BC
462
+ break if c == 0x09BE
463
+ break if c == 0x09BF
464
+ break if (0x09C0 <= c) and (c <= 0x09C4)
465
+ break if (0x09C7 <= c) and (c <= 0x09C8)
466
+ break if (0x09CB <= c) and (c <= 0x09CD)
467
+ break if c == 0x09D7
468
+ break if (0x09DC <= c) and (c <= 0x09DD)
469
+ break if (0x09DF <= c) and (c <= 0x09E1)
470
+ break if (0x09E2 <= c) and (c <= 0x09E3)
471
+ break if (0x09E6 <= c) and (c <= 0x09EF)
472
+ break if (0x09F0 <= c) and (c <= 0x09F1)
473
+ break if c == 0x0A02
474
+ break if (0x0A05 <= c) and (c <= 0x0A0A)
475
+ break if (0x0A0F <= c) and (c <= 0x0A10)
476
+ break if (0x0A13 <= c) and (c <= 0x0A28)
477
+ break if (0x0A2A <= c) and (c <= 0x0A30)
478
+ break if (0x0A32 <= c) and (c <= 0x0A33)
479
+ break if (0x0A35 <= c) and (c <= 0x0A36)
480
+ break if (0x0A38 <= c) and (c <= 0x0A39)
481
+ break if c == 0x0A3C
482
+ break if c == 0x0A3E
483
+ break if c == 0x0A3F
484
+ break if (0x0A40 <= c) and (c <= 0x0A42)
485
+ break if (0x0A47 <= c) and (c <= 0x0A48)
486
+ break if (0x0A4B <= c) and (c <= 0x0A4D)
487
+ break if (0x0A59 <= c) and (c <= 0x0A5C)
488
+ break if c == 0x0A5E
489
+ break if (0x0A66 <= c) and (c <= 0x0A6F)
490
+ break if (0x0A70 <= c) and (c <= 0x0A71)
491
+ break if (0x0A72 <= c) and (c <= 0x0A74)
492
+ break if (0x0A81 <= c) and (c <= 0x0A83)
493
+ break if (0x0A85 <= c) and (c <= 0x0A8B)
494
+ break if c == 0x0A8D
495
+ break if (0x0A8F <= c) and (c <= 0x0A91)
496
+ break if (0x0A93 <= c) and (c <= 0x0AA8)
497
+ break if (0x0AAA <= c) and (c <= 0x0AB0)
498
+ break if (0x0AB2 <= c) and (c <= 0x0AB3)
499
+ break if (0x0AB5 <= c) and (c <= 0x0AB9)
500
+ break if c == 0x0ABC
501
+ break if c == 0x0ABD
502
+ break if (0x0ABE <= c) and (c <= 0x0AC5)
503
+ break if (0x0AC7 <= c) and (c <= 0x0AC9)
504
+ break if (0x0ACB <= c) and (c <= 0x0ACD)
505
+ break if c == 0x0AE0
506
+ break if (0x0AE6 <= c) and (c <= 0x0AEF)
507
+ break if (0x0B01 <= c) and (c <= 0x0B03)
508
+ break if (0x0B05 <= c) and (c <= 0x0B0C)
509
+ break if (0x0B0F <= c) and (c <= 0x0B10)
510
+ break if (0x0B13 <= c) and (c <= 0x0B28)
511
+ break if (0x0B2A <= c) and (c <= 0x0B30)
512
+ break if (0x0B32 <= c) and (c <= 0x0B33)
513
+ break if (0x0B36 <= c) and (c <= 0x0B39)
514
+ break if c == 0x0B3C
515
+ break if c == 0x0B3D
516
+ break if (0x0B3E <= c) and (c <= 0x0B43)
517
+ break if (0x0B47 <= c) and (c <= 0x0B48)
518
+ break if (0x0B4B <= c) and (c <= 0x0B4D)
519
+ break if (0x0B56 <= c) and (c <= 0x0B57)
520
+ break if (0x0B5C <= c) and (c <= 0x0B5D)
521
+ break if (0x0B5F <= c) and (c <= 0x0B61)
522
+ break if (0x0B66 <= c) and (c <= 0x0B6F)
523
+ break if (0x0B82 <= c) and (c <= 0x0B83)
524
+ break if (0x0B85 <= c) and (c <= 0x0B8A)
525
+ break if (0x0B8E <= c) and (c <= 0x0B90)
526
+ break if (0x0B92 <= c) and (c <= 0x0B95)
527
+ break if (0x0B99 <= c) and (c <= 0x0B9A)
528
+ break if c == 0x0B9C
529
+ break if (0x0B9E <= c) and (c <= 0x0B9F)
530
+ break if (0x0BA3 <= c) and (c <= 0x0BA4)
531
+ break if (0x0BA8 <= c) and (c <= 0x0BAA)
532
+ break if (0x0BAE <= c) and (c <= 0x0BB5)
533
+ break if (0x0BB7 <= c) and (c <= 0x0BB9)
534
+ break if (0x0BBE <= c) and (c <= 0x0BC2)
535
+ break if (0x0BC6 <= c) and (c <= 0x0BC8)
536
+ break if (0x0BCA <= c) and (c <= 0x0BCD)
537
+ break if c == 0x0BD7
538
+ break if (0x0BE7 <= c) and (c <= 0x0BEF)
539
+ break if (0x0C01 <= c) and (c <= 0x0C03)
540
+ break if (0x0C05 <= c) and (c <= 0x0C0C)
541
+ break if (0x0C0E <= c) and (c <= 0x0C10)
542
+ break if (0x0C12 <= c) and (c <= 0x0C28)
543
+ break if (0x0C2A <= c) and (c <= 0x0C33)
544
+ break if (0x0C35 <= c) and (c <= 0x0C39)
545
+ break if (0x0C3E <= c) and (c <= 0x0C44)
546
+ break if (0x0C46 <= c) and (c <= 0x0C48)
547
+ break if (0x0C4A <= c) and (c <= 0x0C4D)
548
+ break if (0x0C55 <= c) and (c <= 0x0C56)
549
+ break if (0x0C60 <= c) and (c <= 0x0C61)
550
+ break if (0x0C66 <= c) and (c <= 0x0C6F)
551
+ break if (0x0C82 <= c) and (c <= 0x0C83)
552
+ break if (0x0C85 <= c) and (c <= 0x0C8C)
553
+ break if (0x0C8E <= c) and (c <= 0x0C90)
554
+ break if (0x0C92 <= c) and (c <= 0x0CA8)
555
+ break if (0x0CAA <= c) and (c <= 0x0CB3)
556
+ break if (0x0CB5 <= c) and (c <= 0x0CB9)
557
+ break if (0x0CBE <= c) and (c <= 0x0CC4)
558
+ break if (0x0CC6 <= c) and (c <= 0x0CC8)
559
+ break if (0x0CCA <= c) and (c <= 0x0CCD)
560
+ break if (0x0CD5 <= c) and (c <= 0x0CD6)
561
+ break if c == 0x0CDE
562
+ break if (0x0CE0 <= c) and (c <= 0x0CE1)
563
+ break if (0x0CE6 <= c) and (c <= 0x0CEF)
564
+ break if (0x0D02 <= c) and (c <= 0x0D03)
565
+ break if (0x0D05 <= c) and (c <= 0x0D0C)
566
+ break if (0x0D0E <= c) and (c <= 0x0D10)
567
+ break if (0x0D12 <= c) and (c <= 0x0D28)
568
+ break if (0x0D2A <= c) and (c <= 0x0D39)
569
+ break if (0x0D3E <= c) and (c <= 0x0D43)
570
+ break if (0x0D46 <= c) and (c <= 0x0D48)
571
+ break if (0x0D4A <= c) and (c <= 0x0D4D)
572
+ break if c == 0x0D57
573
+ break if (0x0D60 <= c) and (c <= 0x0D61)
574
+ break if (0x0D66 <= c) and (c <= 0x0D6F)
575
+ break if (0x0E01 <= c) and (c <= 0x0E2E)
576
+ break if c == 0x0E30
577
+ break if c == 0x0E31
578
+ break if (0x0E32 <= c) and (c <= 0x0E33)
579
+ break if (0x0E34 <= c) and (c <= 0x0E3A)
580
+ break if (0x0E40 <= c) and (c <= 0x0E45)
581
+ break if c == 0x0E46
582
+ break if (0x0E47 <= c) and (c <= 0x0E4E)
583
+ break if (0x0E50 <= c) and (c <= 0x0E59)
584
+ break if (0x0E81 <= c) and (c <= 0x0E82)
585
+ break if c == 0x0E84
586
+ break if (0x0E87 <= c) and (c <= 0x0E88)
587
+ break if c == 0x0E8A
588
+ break if c == 0x0E8D
589
+ break if (0x0E94 <= c) and (c <= 0x0E97)
590
+ break if (0x0E99 <= c) and (c <= 0x0E9F)
591
+ break if (0x0EA1 <= c) and (c <= 0x0EA3)
592
+ break if c == 0x0EA5
593
+ break if c == 0x0EA7
594
+ break if (0x0EAA <= c) and (c <= 0x0EAB)
595
+ break if (0x0EAD <= c) and (c <= 0x0EAE)
596
+ break if c == 0x0EB0
597
+ break if c == 0x0EB1
598
+ break if (0x0EB2 <= c) and (c <= 0x0EB3)
599
+ break if (0x0EB4 <= c) and (c <= 0x0EB9)
600
+ break if (0x0EBB <= c) and (c <= 0x0EBC)
601
+ break if c == 0x0EBD
602
+ break if (0x0EC0 <= c) and (c <= 0x0EC4)
603
+ break if c == 0x0EC6
604
+ break if (0x0EC8 <= c) and (c <= 0x0ECD)
605
+ break if (0x0ED0 <= c) and (c <= 0x0ED9)
606
+ break if (0x0F18 <= c) and (c <= 0x0F19)
607
+ break if (0x0F20 <= c) and (c <= 0x0F29)
608
+ break if c == 0x0F35
609
+ break if c == 0x0F37
610
+ break if c == 0x0F39
611
+ break if c == 0x0F3E
612
+ break if c == 0x0F3F
613
+ break if (0x0F40 <= c) and (c <= 0x0F47)
614
+ break if (0x0F49 <= c) and (c <= 0x0F69)
615
+ break if (0x0F71 <= c) and (c <= 0x0F84)
616
+ break if (0x0F86 <= c) and (c <= 0x0F8B)
617
+ break if (0x0F90 <= c) and (c <= 0x0F95)
618
+ break if c == 0x0F97
619
+ break if (0x0F99 <= c) and (c <= 0x0FAD)
620
+ break if (0x0FB1 <= c) and (c <= 0x0FB7)
621
+ break if c == 0x0FB9
622
+ break if (0x10A0 <= c) and (c <= 0x10C5)
623
+ break if (0x10D0 <= c) and (c <= 0x10F6)
624
+ break if c == 0x1100
625
+ break if (0x1102 <= c) and (c <= 0x1103)
626
+ break if (0x1105 <= c) and (c <= 0x1107)
627
+ break if c == 0x1109
628
+ break if (0x110B <= c) and (c <= 0x110C)
629
+ break if (0x110E <= c) and (c <= 0x1112)
630
+ break if c == 0x113C
631
+ break if c == 0x113E
632
+ break if c == 0x1140
633
+ break if c == 0x114C
634
+ break if c == 0x114E
635
+ break if c == 0x1150
636
+ break if (0x1154 <= c) and (c <= 0x1155)
637
+ break if c == 0x1159
638
+ break if (0x115F <= c) and (c <= 0x1161)
639
+ break if c == 0x1163
640
+ break if c == 0x1165
641
+ break if c == 0x1167
642
+ break if c == 0x1169
643
+ break if (0x116D <= c) and (c <= 0x116E)
644
+ break if (0x1172 <= c) and (c <= 0x1173)
645
+ break if c == 0x1175
646
+ break if c == 0x119E
647
+ break if c == 0x11A8
648
+ break if c == 0x11AB
649
+ break if (0x11AE <= c) and (c <= 0x11AF)
650
+ break if (0x11B7 <= c) and (c <= 0x11B8)
651
+ break if c == 0x11BA
652
+ break if (0x11BC <= c) and (c <= 0x11C2)
653
+ break if c == 0x11EB
654
+ break if c == 0x11F0
655
+ break if c == 0x11F9
656
+ break if (0x1E00 <= c) and (c <= 0x1E9B)
657
+ break if (0x1EA0 <= c) and (c <= 0x1EF9)
658
+ break if (0x1F00 <= c) and (c <= 0x1F15)
659
+ break if (0x1F18 <= c) and (c <= 0x1F1D)
660
+ break if (0x1F20 <= c) and (c <= 0x1F45)
661
+ break if (0x1F48 <= c) and (c <= 0x1F4D)
662
+ break if (0x1F50 <= c) and (c <= 0x1F57)
663
+ break if c == 0x1F59
664
+ break if c == 0x1F5B
665
+ break if c == 0x1F5D
666
+ break if (0x1F5F <= c) and (c <= 0x1F7D)
667
+ break if (0x1F80 <= c) and (c <= 0x1FB4)
668
+ break if (0x1FB6 <= c) and (c <= 0x1FBC)
669
+ break if c == 0x1FBE
670
+ break if (0x1FC2 <= c) and (c <= 0x1FC4)
671
+ break if (0x1FC6 <= c) and (c <= 0x1FCC)
672
+ break if (0x1FD0 <= c) and (c <= 0x1FD3)
673
+ break if (0x1FD6 <= c) and (c <= 0x1FDB)
674
+ break if (0x1FE0 <= c) and (c <= 0x1FEC)
675
+ break if (0x1FF2 <= c) and (c <= 0x1FF4)
676
+ break if (0x1FF6 <= c) and (c <= 0x1FFC)
677
+ break if (0x20D0 <= c) and (c <= 0x20DC)
678
+ break if c == 0x20E1
679
+ break if c == 0x2126
680
+ break if (0x212A <= c) and (c <= 0x212B)
681
+ break if c == 0x212E
682
+ break if (0x2180 <= c) and (c <= 0x2182)
683
+ break if c == 0x3005
684
+ break if c == 0x3007
685
+ break if (0x3021 <= c) and (c <= 0x3029)
686
+ break if (0x302A <= c) and (c <= 0x302F)
687
+ break if (0x3031 <= c) and (c <= 0x3035)
688
+ break if (0x3041 <= c) and (c <= 0x3094)
689
+ break if c == 0x3099
690
+ break if c == 0x309A
691
+ break if (0x309D <= c) and (c <= 0x309E)
692
+ break if (0x30A1 <= c) and (c <= 0x30FA)
693
+ break if (0x30FC <= c) and (c <= 0x30FE)
694
+ break if (0x3105 <= c) and (c <= 0x312C)
695
+ break if (0x4E00 <= c) and (c <= 0x9FA5)
696
+ break if (0xAC00 <= c) and (c <= 0xD7A3)
697
+ raise "illegal name start character"
698
+ end
699
+ start = false
700
+
701
+ #while true do
702
+ next if (0x0030 <= c) and (c <= 0x0039)
703
+ next if (0x0041 <= c) and (c <= 0x005A)
704
+ next if (0x0061 <= c) and (c <= 0x007A)
705
+ next if c == ?.
706
+ next if c == ?-
707
+ next if c == ?_
708
+ next if c == ?:
709
+ next if c == 0x00B7
710
+ next if (0x00C0 <= c) and (c <= 0x00D6)
711
+ next if (0x00D8 <= c) and (c <= 0x00F6)
712
+ next if (0x00F8 <= c) and (c <= 0x00FF)
713
+ next if (0x0100 <= c) and (c <= 0x0131)
714
+ next if (0x0134 <= c) and (c <= 0x013E)
715
+ next if (0x0141 <= c) and (c <= 0x0148)
716
+ next if (0x014A <= c) and (c <= 0x017E)
717
+ next if (0x0180 <= c) and (c <= 0x01C3)
718
+ next if (0x01CD <= c) and (c <= 0x01F0)
719
+ next if (0x01F4 <= c) and (c <= 0x01F5)
720
+ next if (0x01FA <= c) and (c <= 0x0217)
721
+ next if (0x0250 <= c) and (c <= 0x02A8)
722
+ next if (0x02BB <= c) and (c <= 0x02C1)
723
+ next if c == 0x02D0
724
+ next if c == 0x02D1
725
+ next if (0x0300 <= c) and (c <= 0x0345)
726
+ next if (0x0360 <= c) and (c <= 0x0361)
727
+ next if c == 0x0386
728
+ next if c == 0x0387
729
+ next if (0x0388 <= c) and (c <= 0x038A)
730
+ next if c == 0x038C
731
+ next if (0x038E <= c) and (c <= 0x03A1)
732
+ next if (0x03A3 <= c) and (c <= 0x03CE)
733
+ next if (0x03D0 <= c) and (c <= 0x03D6)
734
+ next if c == 0x03DA
735
+ next if c == 0x03DC
736
+ next if c == 0x03DE
737
+ next if c == 0x03E0
738
+ next if (0x03E2 <= c) and (c <= 0x03F3)
739
+ next if (0x0401 <= c) and (c <= 0x040C)
740
+ next if (0x040E <= c) and (c <= 0x044F)
741
+ next if (0x0451 <= c) and (c <= 0x045C)
742
+ next if (0x045E <= c) and (c <= 0x0481)
743
+ next if (0x0483 <= c) and (c <= 0x0486)
744
+ next if (0x0490 <= c) and (c <= 0x04C4)
745
+ next if (0x04C7 <= c) and (c <= 0x04C8)
746
+ next if (0x04CB <= c) and (c <= 0x04CC)
747
+ next if (0x04D0 <= c) and (c <= 0x04EB)
748
+ next if (0x04EE <= c) and (c <= 0x04F5)
749
+ next if (0x04F8 <= c) and (c <= 0x04F9)
750
+ next if (0x0531 <= c) and (c <= 0x0556)
751
+ next if c == 0x0559
752
+ next if (0x0561 <= c) and (c <= 0x0586)
753
+ next if (0x0591 <= c) and (c <= 0x05A1)
754
+ next if (0x05A3 <= c) and (c <= 0x05B9)
755
+ next if (0x05BB <= c) and (c <= 0x05BD)
756
+ next if c == 0x05BF
757
+ next if (0x05C1 <= c) and (c <= 0x05C2)
758
+ next if c == 0x05C4
759
+ next if (0x05D0 <= c) and (c <= 0x05EA)
760
+ next if (0x05F0 <= c) and (c <= 0x05F2)
761
+ next if (0x0621 <= c) and (c <= 0x063A)
762
+ next if c == 0x0640
763
+ next if (0x0641 <= c) and (c <= 0x064A)
764
+ next if (0x064B <= c) and (c <= 0x0652)
765
+ next if (0x0660 <= c) and (c <= 0x0669)
766
+ next if c == 0x0670
767
+ next if (0x0671 <= c) and (c <= 0x06B7)
768
+ next if (0x06BA <= c) and (c <= 0x06BE)
769
+ next if (0x06C0 <= c) and (c <= 0x06CE)
770
+ next if (0x06D0 <= c) and (c <= 0x06D3)
771
+ next if c == 0x06D5
772
+ next if (0x06D6 <= c) and (c <= 0x06DC)
773
+ next if (0x06DD <= c) and (c <= 0x06DF)
774
+ next if (0x06E0 <= c) and (c <= 0x06E4)
775
+ next if (0x06E5 <= c) and (c <= 0x06E6)
776
+ next if (0x06E7 <= c) and (c <= 0x06E8)
777
+ next if (0x06EA <= c) and (c <= 0x06ED)
778
+ next if (0x06F0 <= c) and (c <= 0x06F9)
779
+ next if (0x0901 <= c) and (c <= 0x0903)
780
+ next if (0x0905 <= c) and (c <= 0x0939)
781
+ next if c == 0x093C
782
+ next if c == 0x093D
783
+ next if (0x093E <= c) and (c <= 0x094C)
784
+ next if c == 0x094D
785
+ next if (0x0951 <= c) and (c <= 0x0954)
786
+ next if (0x0958 <= c) and (c <= 0x0961)
787
+ next if (0x0962 <= c) and (c <= 0x0963)
788
+ next if (0x0966 <= c) and (c <= 0x096F)
789
+ next if (0x0981 <= c) and (c <= 0x0983)
790
+ next if (0x0985 <= c) and (c <= 0x098C)
791
+ next if (0x098F <= c) and (c <= 0x0990)
792
+ next if (0x0993 <= c) and (c <= 0x09A8)
793
+ next if (0x09AA <= c) and (c <= 0x09B0)
794
+ next if c == 0x09B2
795
+ next if (0x09B6 <= c) and (c <= 0x09B9)
796
+ next if c == 0x09BC
797
+ next if c == 0x09BE
798
+ next if c == 0x09BF
799
+ next if (0x09C0 <= c) and (c <= 0x09C4)
800
+ next if (0x09C7 <= c) and (c <= 0x09C8)
801
+ next if (0x09CB <= c) and (c <= 0x09CD)
802
+ next if c == 0x09D7
803
+ next if (0x09DC <= c) and (c <= 0x09DD)
804
+ next if (0x09DF <= c) and (c <= 0x09E1)
805
+ next if (0x09E2 <= c) and (c <= 0x09E3)
806
+ next if (0x09E6 <= c) and (c <= 0x09EF)
807
+ next if (0x09F0 <= c) and (c <= 0x09F1)
808
+ next if c == 0x0A02
809
+ next if (0x0A05 <= c) and (c <= 0x0A0A)
810
+ next if (0x0A0F <= c) and (c <= 0x0A10)
811
+ next if (0x0A13 <= c) and (c <= 0x0A28)
812
+ next if (0x0A2A <= c) and (c <= 0x0A30)
813
+ next if (0x0A32 <= c) and (c <= 0x0A33)
814
+ next if (0x0A35 <= c) and (c <= 0x0A36)
815
+ next if (0x0A38 <= c) and (c <= 0x0A39)
816
+ next if c == 0x0A3C
817
+ next if c == 0x0A3E
818
+ next if c == 0x0A3F
819
+ next if (0x0A40 <= c) and (c <= 0x0A42)
820
+ next if (0x0A47 <= c) and (c <= 0x0A48)
821
+ next if (0x0A4B <= c) and (c <= 0x0A4D)
822
+ next if (0x0A59 <= c) and (c <= 0x0A5C)
823
+ next if c == 0x0A5E
824
+ next if (0x0A66 <= c) and (c <= 0x0A6F)
825
+ next if (0x0A70 <= c) and (c <= 0x0A71)
826
+ next if (0x0A72 <= c) and (c <= 0x0A74)
827
+ next if (0x0A81 <= c) and (c <= 0x0A83)
828
+ next if (0x0A85 <= c) and (c <= 0x0A8B)
829
+ next if c == 0x0A8D
830
+ next if (0x0A8F <= c) and (c <= 0x0A91)
831
+ next if (0x0A93 <= c) and (c <= 0x0AA8)
832
+ next if (0x0AAA <= c) and (c <= 0x0AB0)
833
+ next if (0x0AB2 <= c) and (c <= 0x0AB3)
834
+ next if (0x0AB5 <= c) and (c <= 0x0AB9)
835
+ next if c == 0x0ABC
836
+ next if c == 0x0ABD
837
+ next if (0x0ABE <= c) and (c <= 0x0AC5)
838
+ next if (0x0AC7 <= c) and (c <= 0x0AC9)
839
+ next if (0x0ACB <= c) and (c <= 0x0ACD)
840
+ next if c == 0x0AE0
841
+ next if (0x0AE6 <= c) and (c <= 0x0AEF)
842
+ next if (0x0B01 <= c) and (c <= 0x0B03)
843
+ next if (0x0B05 <= c) and (c <= 0x0B0C)
844
+ next if (0x0B0F <= c) and (c <= 0x0B10)
845
+ next if (0x0B13 <= c) and (c <= 0x0B28)
846
+ next if (0x0B2A <= c) and (c <= 0x0B30)
847
+ next if (0x0B32 <= c) and (c <= 0x0B33)
848
+ next if (0x0B36 <= c) and (c <= 0x0B39)
849
+ next if c == 0x0B3C
850
+ next if c == 0x0B3D
851
+ next if (0x0B3E <= c) and (c <= 0x0B43)
852
+ next if (0x0B47 <= c) and (c <= 0x0B48)
853
+ next if (0x0B4B <= c) and (c <= 0x0B4D)
854
+ next if (0x0B56 <= c) and (c <= 0x0B57)
855
+ next if (0x0B5C <= c) and (c <= 0x0B5D)
856
+ next if (0x0B5F <= c) and (c <= 0x0B61)
857
+ next if (0x0B66 <= c) and (c <= 0x0B6F)
858
+ next if (0x0B82 <= c) and (c <= 0x0B83)
859
+ next if (0x0B85 <= c) and (c <= 0x0B8A)
860
+ next if (0x0B8E <= c) and (c <= 0x0B90)
861
+ next if (0x0B92 <= c) and (c <= 0x0B95)
862
+ next if (0x0B99 <= c) and (c <= 0x0B9A)
863
+ next if c == 0x0B9C
864
+ next if (0x0B9E <= c) and (c <= 0x0B9F)
865
+ next if (0x0BA3 <= c) and (c <= 0x0BA4)
866
+ next if (0x0BA8 <= c) and (c <= 0x0BAA)
867
+ next if (0x0BAE <= c) and (c <= 0x0BB5)
868
+ next if (0x0BB7 <= c) and (c <= 0x0BB9)
869
+ next if (0x0BBE <= c) and (c <= 0x0BC2)
870
+ next if (0x0BC6 <= c) and (c <= 0x0BC8)
871
+ next if (0x0BCA <= c) and (c <= 0x0BCD)
872
+ next if c == 0x0BD7
873
+ next if (0x0BE7 <= c) and (c <= 0x0BEF)
874
+ next if (0x0C01 <= c) and (c <= 0x0C03)
875
+ next if (0x0C05 <= c) and (c <= 0x0C0C)
876
+ next if (0x0C0E <= c) and (c <= 0x0C10)
877
+ next if (0x0C12 <= c) and (c <= 0x0C28)
878
+ next if (0x0C2A <= c) and (c <= 0x0C33)
879
+ next if (0x0C35 <= c) and (c <= 0x0C39)
880
+ next if (0x0C3E <= c) and (c <= 0x0C44)
881
+ next if (0x0C46 <= c) and (c <= 0x0C48)
882
+ next if (0x0C4A <= c) and (c <= 0x0C4D)
883
+ next if (0x0C55 <= c) and (c <= 0x0C56)
884
+ next if (0x0C60 <= c) and (c <= 0x0C61)
885
+ next if (0x0C66 <= c) and (c <= 0x0C6F)
886
+ next if (0x0C82 <= c) and (c <= 0x0C83)
887
+ next if (0x0C85 <= c) and (c <= 0x0C8C)
888
+ next if (0x0C8E <= c) and (c <= 0x0C90)
889
+ next if (0x0C92 <= c) and (c <= 0x0CA8)
890
+ next if (0x0CAA <= c) and (c <= 0x0CB3)
891
+ next if (0x0CB5 <= c) and (c <= 0x0CB9)
892
+ next if (0x0CBE <= c) and (c <= 0x0CC4)
893
+ next if (0x0CC6 <= c) and (c <= 0x0CC8)
894
+ next if (0x0CCA <= c) and (c <= 0x0CCD)
895
+ next if (0x0CD5 <= c) and (c <= 0x0CD6)
896
+ next if c == 0x0CDE
897
+ next if (0x0CE0 <= c) and (c <= 0x0CE1)
898
+ next if (0x0CE6 <= c) and (c <= 0x0CEF)
899
+ next if (0x0D02 <= c) and (c <= 0x0D03)
900
+ next if (0x0D05 <= c) and (c <= 0x0D0C)
901
+ next if (0x0D0E <= c) and (c <= 0x0D10)
902
+ next if (0x0D12 <= c) and (c <= 0x0D28)
903
+ next if (0x0D2A <= c) and (c <= 0x0D39)
904
+ next if (0x0D3E <= c) and (c <= 0x0D43)
905
+ next if (0x0D46 <= c) and (c <= 0x0D48)
906
+ next if (0x0D4A <= c) and (c <= 0x0D4D)
907
+ next if c == 0x0D57
908
+ next if (0x0D60 <= c) and (c <= 0x0D61)
909
+ next if (0x0D66 <= c) and (c <= 0x0D6F)
910
+ next if (0x0E01 <= c) and (c <= 0x0E2E)
911
+ next if c == 0x0E30
912
+ next if c == 0x0E31
913
+ next if (0x0E32 <= c) and (c <= 0x0E33)
914
+ next if (0x0E34 <= c) and (c <= 0x0E3A)
915
+ next if (0x0E40 <= c) and (c <= 0x0E45)
916
+ next if c == 0x0E46
917
+ next if (0x0E47 <= c) and (c <= 0x0E4E)
918
+ next if (0x0E50 <= c) and (c <= 0x0E59)
919
+ next if (0x0E81 <= c) and (c <= 0x0E82)
920
+ next if c == 0x0E84
921
+ next if (0x0E87 <= c) and (c <= 0x0E88)
922
+ next if c == 0x0E8A
923
+ next if c == 0x0E8D
924
+ next if (0x0E94 <= c) and (c <= 0x0E97)
925
+ next if (0x0E99 <= c) and (c <= 0x0E9F)
926
+ next if (0x0EA1 <= c) and (c <= 0x0EA3)
927
+ next if c == 0x0EA5
928
+ next if c == 0x0EA7
929
+ next if (0x0EAA <= c) and (c <= 0x0EAB)
930
+ next if (0x0EAD <= c) and (c <= 0x0EAE)
931
+ next if c == 0x0EB0
932
+ next if c == 0x0EB1
933
+ next if (0x0EB2 <= c) and (c <= 0x0EB3)
934
+ next if (0x0EB4 <= c) and (c <= 0x0EB9)
935
+ next if (0x0EBB <= c) and (c <= 0x0EBC)
936
+ next if c == 0x0EBD
937
+ next if (0x0EC0 <= c) and (c <= 0x0EC4)
938
+ next if c == 0x0EC6
939
+ next if (0x0EC8 <= c) and (c <= 0x0ECD)
940
+ next if (0x0ED0 <= c) and (c <= 0x0ED9)
941
+ next if (0x0F18 <= c) and (c <= 0x0F19)
942
+ next if (0x0F20 <= c) and (c <= 0x0F29)
943
+ next if c == 0x0F35
944
+ next if c == 0x0F37
945
+ next if c == 0x0F39
946
+ next if c == 0x0F3E
947
+ next if c == 0x0F3F
948
+ next if (0x0F40 <= c) and (c <= 0x0F47)
949
+ next if (0x0F49 <= c) and (c <= 0x0F69)
950
+ next if (0x0F71 <= c) and (c <= 0x0F84)
951
+ next if (0x0F86 <= c) and (c <= 0x0F8B)
952
+ next if (0x0F90 <= c) and (c <= 0x0F95)
953
+ next if c == 0x0F97
954
+ next if (0x0F99 <= c) and (c <= 0x0FAD)
955
+ next if (0x0FB1 <= c) and (c <= 0x0FB7)
956
+ next if c == 0x0FB9
957
+ next if (0x10A0 <= c) and (c <= 0x10C5)
958
+ next if (0x10D0 <= c) and (c <= 0x10F6)
959
+ next if c == 0x1100
960
+ next if (0x1102 <= c) and (c <= 0x1103)
961
+ next if (0x1105 <= c) and (c <= 0x1107)
962
+ next if c == 0x1109
963
+ next if (0x110B <= c) and (c <= 0x110C)
964
+ next if (0x110E <= c) and (c <= 0x1112)
965
+ next if c == 0x113C
966
+ next if c == 0x113E
967
+ next if c == 0x1140
968
+ next if c == 0x114C
969
+ next if c == 0x114E
970
+ next if c == 0x1150
971
+ next if (0x1154 <= c) and (c <= 0x1155)
972
+ next if c == 0x1159
973
+ next if (0x115F <= c) and (c <= 0x1161)
974
+ next if c == 0x1163
975
+ next if c == 0x1165
976
+ next if c == 0x1167
977
+ next if c == 0x1169
978
+ next if (0x116D <= c) and (c <= 0x116E)
979
+ next if (0x1172 <= c) and (c <= 0x1173)
980
+ next if c == 0x1175
981
+ next if c == 0x119E
982
+ next if c == 0x11A8
983
+ next if c == 0x11AB
984
+ next if (0x11AE <= c) and (c <= 0x11AF)
985
+ next if (0x11B7 <= c) and (c <= 0x11B8)
986
+ next if c == 0x11BA
987
+ next if (0x11BC <= c) and (c <= 0x11C2)
988
+ next if c == 0x11EB
989
+ next if c == 0x11F0
990
+ next if c == 0x11F9
991
+ next if (0x1E00 <= c) and (c <= 0x1E9B)
992
+ next if (0x1EA0 <= c) and (c <= 0x1EF9)
993
+ next if (0x1F00 <= c) and (c <= 0x1F15)
994
+ next if (0x1F18 <= c) and (c <= 0x1F1D)
995
+ next if (0x1F20 <= c) and (c <= 0x1F45)
996
+ next if (0x1F48 <= c) and (c <= 0x1F4D)
997
+ next if (0x1F50 <= c) and (c <= 0x1F57)
998
+ next if c == 0x1F59
999
+ next if c == 0x1F5B
1000
+ next if c == 0x1F5D
1001
+ next if (0x1F5F <= c) and (c <= 0x1F7D)
1002
+ next if (0x1F80 <= c) and (c <= 0x1FB4)
1003
+ next if (0x1FB6 <= c) and (c <= 0x1FBC)
1004
+ next if c == 0x1FBE
1005
+ next if (0x1FC2 <= c) and (c <= 0x1FC4)
1006
+ next if (0x1FC6 <= c) and (c <= 0x1FCC)
1007
+ next if (0x1FD0 <= c) and (c <= 0x1FD3)
1008
+ next if (0x1FD6 <= c) and (c <= 0x1FDB)
1009
+ next if (0x1FE0 <= c) and (c <= 0x1FEC)
1010
+ next if (0x1FF2 <= c) and (c <= 0x1FF4)
1011
+ next if (0x1FF6 <= c) and (c <= 0x1FFC)
1012
+ next if (0x20D0 <= c) and (c <= 0x20DC)
1013
+ next if c == 0x20E1
1014
+ next if c == 0x2126
1015
+ next if (0x212A <= c) and (c <= 0x212B)
1016
+ next if c == 0x212E
1017
+ next if (0x2180 <= c) and (c <= 0x2182)
1018
+ next if c == 0x3005
1019
+ next if c == 0x3007
1020
+ next if (0x3021 <= c) and (c <= 0x3029)
1021
+ next if (0x302A <= c) and (c <= 0x302F)
1022
+ next if (0x3031 <= c) and (c <= 0x3035)
1023
+ next if (0x3041 <= c) and (c <= 0x3094)
1024
+ next if c == 0x3099
1025
+ next if c == 0x309A
1026
+ next if (0x309D <= c) and (c <= 0x309E)
1027
+ next if (0x30A1 <= c) and (c <= 0x30FA)
1028
+ next if (0x30FC <= c) and (c <= 0x30FE)
1029
+ next if (0x3105 <= c) and (c <= 0x312C)
1030
+ next if (0x4E00 <= c) and (c <= 0x9FA5)
1031
+ next if (0xAC00 <= c) and (c <= 0xD7A3)
1032
+
1033
+ raise "illegal name character"
1034
+ #end
1035
+ end
1036
+ end
1037
+ end