Mercurial > emacs
annotate lisp/nxml/xsd-regexp.el @ 96126:fcd827c4a553
Fix up docstring conventions.
Move vars to before their first use.
(rst-mode): Don't mess with font-lock-support-mode.
(rst-suggest-new-decoration, rst-adjust-decoration):
Avoid CL's copy-list.
(rst-delete-entire-line): Use line-beginning-position.
(rst-position): New fun.
(rst-straighten-decorations): Use it instead of CL's position.
(rst-straighten-bullets-region): Avoid CL's mapcar*.
(rst-toc-mode): Use define-derived-mode.
(rst-iterate-leftmost-paragraphs, rst-iterate-leftmost-paragraphs-2):
Remove unused var `in-par'. Use `point' rather than `point-marker'.
(rst-line-block-region): Reduce redundancy. Use the `pfxarg' arg.
(rst-replace-lines): Simplify.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Fri, 20 Jun 2008 17:53:42 +0000 |
parents | d495d4d5452f |
children | e374c747704b |
rev | line source |
---|---|
86361 | 1 ;;; xsd-regexp.el --- translate W3C XML Schema regexps to Emacs regexps |
2 | |
87665 | 3 ;; Copyright (C) 2003, 2007, 2008 Free Software Foundation, Inc. |
86361 | 4 |
5 ;; Author: James Clark | |
6 ;; Keywords: XML, regexp | |
7 | |
86558 | 8 ;; This file is part of GNU Emacs. |
9 | |
94666
d495d4d5452f
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
87665
diff
changeset
|
10 ;; GNU Emacs is free software: you can redistribute it and/or modify |
86558 | 11 ;; it under the terms of the GNU General Public License as published by |
94666
d495d4d5452f
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
87665
diff
changeset
|
12 ;; the Free Software Foundation, either version 3 of the License, or |
d495d4d5452f
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
87665
diff
changeset
|
13 ;; (at your option) any later version. |
86361 | 14 |
86558 | 15 ;; GNU Emacs is distributed in the hope that it will be useful, |
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 ;; GNU General Public License for more details. | |
86361 | 19 |
86558 | 20 ;; You should have received a copy of the GNU General Public License |
94666
d495d4d5452f
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
87665
diff
changeset
|
21 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
86361 | 22 |
23 ;;; Commentary: | |
24 | |
25 ;; This handles the regular expressions in the syntax defined by: | |
26 ;; W3C XML Schema Part 2: Datatypes | |
27 ;; <http://www.w3.org/TR/xmlschema-2/#regexs> | |
28 ;; | |
29 ;; The main entry point is `xsdre-translate'. | |
30 ;; | |
31 ;; The features of XSD regexps that make this non-trivial are: | |
32 ;; | |
33 ;; - \p{PROP} escape for matching characters that have various | |
34 ;; Unicode-defined properties | |
35 ;; - character class subtraction:, e.g. [\p{L}-[abc]] matches | |
36 ;; any character in the L category other than a, b and c. | |
37 ;; | |
38 ;; We compute the set of Unicode characters denoted by each XSD | |
39 ;; char-class as a list of ranges. The regexp generated for a | |
40 ;; single escape can be large (several thousand characters). | |
41 ;; | |
42 ;; XSD has non-traditional rules about when characters must be | |
43 ;; and can be quoted with \. These are quite different from | |
44 ;; the Emacs rules. | |
45 ;; | |
46 ;; The semantics of XSD regexps are defined in terms of Unicode. | |
47 ;; Non-Unicode characters are not allowed in regular expressions and | |
48 ;; will not match against the generated regular expressions. A | |
49 ;; Unicode character means a character in one of the Mule charsets | |
50 ;; ascii, latin-iso8859-1, mule-unicode-0100-24ff, | |
51 ;; mule-unicode-2500-33ff, mule-unicode-e000-ffff, eight-bit-control | |
52 ;; or a character translateable to such a character (i.e a character | |
53 ;; for which `encode-char' will return non-nil). | |
54 ;; | |
55 ;; Using unify-8859-on-decoding-mode is probably a good idea here | |
56 ;; (and generally with XML and other Unicode-oriented formats). | |
57 ;; | |
58 ;; Unfortunately, this means that this package is currently useless | |
59 ;; for CJK characters, since there's no mule-unicode charset for the | |
60 ;; CJK ranges of Unicode. We should devise a workaround for this | |
61 ;; until the fabled Unicode version of Emacs makes an appearance. | |
62 | |
63 ;;; Code: | |
64 | |
65 (defun xsdre-translate (regexp) | |
66 "Translate a W3C XML Schema Datatypes regexp to an Emacs regexp. | |
67 Returns a string. REGEXP is a string. If REGEXP is not a valid XSD | |
68 regexp, signal an `xsdre-invalid-regexp' condition." | |
69 (xsdre-from-symbolic | |
70 (xsdre-to-symbolic regexp))) | |
71 | |
72 (defvar xsdre-test-history nil) | |
73 | |
74 (defun xsdre-test-regexp () | |
75 (interactive) | |
76 (while | |
77 (let* ((str (read-from-minibuffer "Regexp: " | |
78 nil | |
79 nil | |
80 nil | |
81 'xsdre-test-history)) | |
82 (symbolic | |
83 (xsdre-to-symbolic str))) | |
84 (with-output-to-temp-buffer "*XSD Regexp Test*" | |
85 (princ "XSD regexp: ") | |
86 (princ str) | |
87 (princ "\n") | |
88 (princ "Symbolic: ") | |
89 (princ "\n") | |
90 (pp symbolic) | |
91 (princ "\n") | |
92 (princ "Emacs regexp: ") | |
93 (princ (xsdre-from-symbolic symbolic))) | |
94 t))) | |
95 | |
96 ;;; Range lists | |
97 | |
98 (defsubst xsdre-make-range (first last) | |
99 "Return a representation of a range of integers. | |
100 If the range contains a single integer, it is represented by that integer. | |
101 Otherwise, it is represented by a (FIRST . LAST) pair." | |
102 (if (= first last) | |
103 first | |
104 (cons first last))) | |
105 | |
106 (defsubst xsdre-range-first (r) | |
107 "Return the first integer in a range." | |
108 (if (consp r) (car r) r)) | |
109 | |
110 (defsubst xsdre-range-last (r) | |
111 "Return the last integer in a range." | |
112 (if (consp r) (cdr r) r)) | |
113 | |
114 (defun xsdre-make-range-list (list) | |
115 "Make a range-list from a list of ranges. | |
116 A range-list represents a set of integers by a list of ranges in a | |
117 canonical form, in which ranges are in increasing order, and adjacent | |
118 ranges are merged wherever possible." | |
119 (when list | |
120 (setq list | |
121 (sort list 'xsdre-range-less-than)) | |
122 (let* ((next (cdr list)) | |
123 (tail list) | |
124 (head (car list)) | |
125 (first (xsdre-range-first head)) | |
126 (last (xsdre-range-last head))) | |
127 (while next | |
128 (setq head (car next)) | |
129 (when (> (xsdre-range-last head) last) | |
130 (if (<= (xsdre-range-first head) (1+ last)) | |
131 (setq last (xsdre-range-last head)) | |
132 (setcar tail (xsdre-make-range first last)) | |
133 (setcdr tail next) | |
134 (setq tail next) | |
135 (setq first (xsdre-range-first head)) | |
136 (setq last (xsdre-range-last head)))) | |
137 (setq next (cdr next))) | |
138 (setcar tail (xsdre-make-range first last)) | |
139 (setcdr tail nil) | |
140 list))) | |
141 | |
142 | |
143 (defun xsdre-range-list-union (range-lists) | |
144 "Return a range-list the union of a list of range-lists." | |
145 (xsdre-make-range-list (apply 'append range-lists))) | |
146 | |
147 (defun xsdre-range-list-difference (orig subtract) | |
148 "Return a range-list for the difference of two range-lists." | |
149 (when orig | |
150 (let (new head next first last) | |
151 (while orig | |
152 (setq head (car orig)) | |
153 (setq first (xsdre-range-first head)) | |
154 (setq last (xsdre-range-last head)) | |
155 (while (and subtract | |
156 (< (xsdre-range-last (car subtract)) first)) | |
157 (setq subtract (cdr subtract))) | |
158 (while (and subtract | |
159 (<= first last) | |
160 (<= (xsdre-range-first (car subtract)) last)) | |
161 (when (< first (xsdre-range-first (car subtract))) | |
162 (setq new | |
163 (cons (xsdre-make-range | |
164 first | |
165 (1- (xsdre-range-first (car subtract)))) | |
166 new))) | |
167 (if (< (xsdre-range-last (car subtract)) last) | |
168 (progn | |
169 (setq first (1+ (xsdre-range-last (car subtract)))) | |
170 (setq subtract (cdr subtract))) | |
171 (setq first (1+ last)))) | |
172 (when (<= first last) | |
173 (setq new (cons (xsdre-make-range first last) new))) | |
174 (setq orig (cdr orig))) | |
175 (nreverse new)))) | |
176 | |
177 (defun xsdre-range-less-than (r1 r2) | |
178 "Return non-nil if range R1 is less than range R2." | |
179 (or (< (xsdre-range-first r1) (xsdre-range-first r2)) | |
180 (and (= (xsdre-range-first r1) (xsdre-range-first r2)) | |
181 (< (xsdre-range-last r1) (xsdre-range-last r2))))) | |
182 | |
183 (defun xsdre-check-range-list (range-list) | |
184 "Check that range-list is a range-list. | |
185 Signal an error if it is not." | |
186 (let ((last nil)) | |
187 (while range-list | |
188 (unless (consp range-list) | |
189 (error "Range list not a list")) | |
190 (let ((head (car range-list))) | |
191 (unless (or (integerp head) | |
192 (and (consp head) | |
193 (integerp (car head)) | |
194 (integerp (cdr head)))) | |
195 (error "Bad range %s" head)) | |
196 (when (and last | |
197 (not (< (1+ last) (xsdre-range-first head)))) | |
198 (error "Ranges not strictly increasing")) | |
199 (setq last (xsdre-range-last head))) | |
200 (setq range-list (cdr range-list)))) | |
201 t) | |
202 | |
203 ;;; Compiling symbolic regexps to Emacs regexps | |
204 | |
205 (defun xsdre-from-symbolic (re) | |
206 "Return an Emacs regexp for the symbolic regexp RE." | |
207 (apply 'concat | |
208 (nreverse (xsdre-compile-regexp re nil)))) | |
209 | |
210 (defun xsdre-compile-regexp (re accum) | |
211 "Return a Emacs regular expression for the symbolic regexp RE. | |
212 Returns a list of strings whose head is the regexp for RE | |
213 and whose tail is ACCUM." | |
214 (cond ((not (consp re)) | |
215 (xsdre-compile-char-class re accum)) | |
216 ((eq (car re) 'choice) | |
217 (setq accum (cons "\\(?:" accum)) | |
218 (let ((choices (cdr re))) | |
219 (while choices | |
220 (setq accum | |
221 (xsdre-compile-regexp (car choices) | |
222 accum)) | |
223 (setq choices (cdr choices)) | |
224 (when choices | |
225 (setq accum | |
226 (cons "\\|" accum))))) | |
227 (cons "\\)" accum)) | |
228 ((eq (car re) 'sequence) | |
229 (let ((members (cdr re))) | |
230 (while members | |
231 (setq accum (xsdre-compile-regexp (car members) | |
232 accum)) | |
233 (setq members (cdr members)))) | |
234 accum) | |
235 ((eq (car re) 'repeat) | |
236 (let* ((sub (nth 1 re)) | |
237 (lower (nth 2 re)) | |
238 (upper (nth 3 re)) | |
239 (need-paren (and (consp sub) | |
240 (eq (car sub) 'sequence)))) | |
241 (when need-paren | |
242 (setq accum (cons "\\(?:" accum))) | |
243 (setq accum | |
244 (xsdre-compile-regexp sub accum)) | |
245 (when need-paren | |
246 (setq accum (cons "\\)" accum))) | |
247 (cond ((not upper) | |
248 (cond ((eq lower 0) | |
249 (cons "*" accum)) | |
250 ((eq lower 1) | |
251 (cons "+" accum)) | |
252 (t | |
253 (cons (concat "\\{" | |
254 (number-to-string lower) | |
255 ",\\}") | |
256 accum)))) | |
257 ((eq lower upper) | |
258 (cons (concat "\\{" | |
259 (number-to-string lower) | |
260 "\\}") | |
261 accum)) | |
262 ((and (eq lower 0) (eq upper 1)) | |
263 (cons "?" accum)) | |
264 (t | |
265 (cons (concat "\\{" | |
266 (number-to-string lower) | |
267 "," | |
268 (number-to-string upper) | |
269 "\\}") | |
270 accum))))) | |
271 (t (xsdre-compile-char-class re accum)))) | |
272 | |
273 (defun xsdre-compile-char-class (cc accum) | |
274 "Return a Emacs regular expression for the symbolic character class CC. | |
275 Returns a list of strings whose head is the regexp for CC | |
276 and whose tail is ACCUM." | |
277 (cons (if (integerp cc) | |
278 (xsdre-compile-single-char cc) | |
279 (let ((ranges (xsdre-range-list-mule-intersection | |
280 (xsdre-char-class-to-range-list cc)))) | |
281 (cond ((null ranges) "\001-\000") | |
282 ((and (null (cdr ranges)) | |
283 (= (xsdre-range-first (car ranges)) | |
284 (xsdre-range-last (car ranges)))) | |
285 (xsdre-compile-single-char | |
286 (xsdre-range-first (car ranges)))) | |
287 (t (xsdre-range-list-to-char-alternative ranges))))) | |
288 accum)) | |
289 | |
290 (defun xsdre-compile-single-char (ch) | |
291 (if (memq ch '(?. ?* ?+ ?? ?\[ ?\] ?^ ?$ ?\\)) | |
292 (string ?\\ ch) | |
293 (string (decode-char 'ucs ch)))) | |
294 | |
295 (defun xsdre-char-class-to-range-list (cc) | |
296 "Return a range-list for a symbolic char-class." | |
297 (cond ((integerp cc) (list cc)) | |
298 ((symbolp cc) | |
299 (or (get cc 'xsdre-ranges) | |
300 (xsdre-char-class-to-range-list (get cc 'xsdre-char-class)))) | |
301 ((integerp (car cc)) | |
302 (if (= (car cc) (cdr cc)) | |
303 (car cc) | |
304 cc)) | |
305 ((eq (car cc) 'union) | |
306 (xsdre-range-list-union (mapcar 'xsdre-char-class-to-range-list | |
307 (cdr cc)))) | |
308 ((eq (car cc) 'difference) | |
309 (xsdre-range-list-difference | |
310 (xsdre-char-class-to-range-list (nth 1 cc)) | |
311 (xsdre-char-class-to-range-list (nth 2 cc)))) | |
312 ((eq (car cc) 'range) | |
313 (list (xsdre-make-range (nth 1 cc) (nth 2 cc)))) | |
314 (t (error "Internal error in XSD regexp compilation: \ | |
315 unknown char-class %s" cc)))) | |
316 | |
317 (defconst xsdre-mule-char-set-ranges | |
318 '((0 . 127) | |
319 (128 . 159) | |
320 (160 . 255) | |
321 (#x0100 . #x24ff) | |
322 (#x2500 . #x33ff) | |
323 (#xe000 . #xffff)) | |
324 "List of ranges for the Mule character sets containing Unicode characters.") | |
325 | |
326 (defun xsdre-range-list-mule-intersection (range-list) | |
327 "Return the intersection of RANGE-LIST with the mule-supported ranges. | |
328 Also split ranges so that no range spans more that one mule charset." | |
329 (when range-list | |
330 (let* ((char-set-ranges (cdr xsdre-mule-char-set-ranges)) | |
331 (mule-ranges nil) | |
332 (char-set-first (caar xsdre-mule-char-set-ranges)) | |
333 (char-set-last (cdar xsdre-mule-char-set-ranges)) | |
334 (range (car range-list)) | |
335 (first (xsdre-range-first range)) | |
336 (last (xsdre-range-last range))) | |
337 (setq range-list (cdr range-list)) | |
338 (while (progn | |
339 (cond ((> first last) | |
340 (if (null range-list) | |
341 nil | |
342 (setq range (car range-list)) | |
343 (setq first (xsdre-range-first range)) | |
344 (setq last (xsdre-range-last range)) | |
345 (setq range-list (cdr range-list)) | |
346 t)) | |
347 ((< char-set-last first) | |
348 (if (null char-set-ranges) | |
349 nil | |
350 (setq char-set-first (caar char-set-ranges)) | |
351 (setq char-set-last (cdar char-set-ranges)) | |
352 (setq char-set-ranges (cdr char-set-ranges)) | |
353 t)) | |
354 ((< first char-set-first) | |
355 (setq first char-set-first)) | |
356 ;; Now we know that | |
357 ;; first <= last | |
358 ;; first <= char-set-last | |
359 ;; first >= char-set-first | |
360 ((<= last char-set-last) | |
361 (setq mule-ranges | |
362 (cons (xsdre-make-range first last) | |
363 mule-ranges)) | |
364 (setq first (1+ last)) | |
365 t) | |
366 (t | |
367 (setq mule-ranges | |
368 (cons (xsdre-make-range first char-set-last) | |
369 mule-ranges)) | |
370 (setq first (1+ char-set-last)) | |
371 t)))) | |
372 (nreverse mule-ranges)))) | |
373 | |
374 (defun xsdre-range-list-to-char-alternative (range-list) | |
375 "Return a char alternative for a range-list. | |
376 RANGE-LIST must contain more than integer. | |
377 The char alternative is a string containing an Emacs regexp | |
378 consisting of a single char alternative delimited with []." | |
379 (let (range caret close-bracket hyphen chars first last) | |
380 (while range-list | |
381 (setq range (car range-list)) | |
382 (setq first (xsdre-range-first range)) | |
383 (setq last (xsdre-range-last range)) | |
384 (while (and (cond ((eq first ?^) | |
385 (setq caret t) | |
386 (setq first (1+ first))) | |
387 ((eq first ?-) | |
388 (setq hyphen t) | |
389 (setq first (1+ first))) | |
390 ((eq first ?\]) | |
391 (setq close-bracket t) | |
392 (setq first (1+ first)))) | |
393 (<= first last))) | |
394 (when (<= first last) | |
395 (setq chars | |
396 (cons first chars)) | |
397 (when (< first last) | |
398 (setq chars | |
399 (if (and (eq last (1+ first)) | |
400 (not (eq last ?-))) | |
401 (cons last chars) | |
402 (cons last (cons ?- chars)))))) | |
403 (setq range-list (cdr range-list))) | |
404 (setq chars | |
405 (mapcar (lambda (c) | |
406 (decode-char 'ucs c)) | |
407 chars)) | |
408 (when caret | |
409 (setq chars (cons ?^ chars))) | |
410 (when hyphen | |
411 (setq chars (cons ?- chars))) | |
412 (setq chars (cons ?\] chars)) | |
413 (setq chars (nreverse chars)) | |
414 (when close-bracket | |
415 (setq chars (cons ?\] chars))) | |
416 (when (equal chars '(?^ ?- ?\])) | |
417 (setq chars '(?- ?^ ?\]))) | |
418 (setq chars (cons ?\[ chars)) | |
419 (apply 'string chars))) | |
420 | |
421 ;;; Parsing | |
422 | |
423 (defvar xsdre-current-regexp nil | |
424 "List of characters remaining to be parsed. Dynamically bound.") | |
425 | |
426 (defun xsdre-to-symbolic (str) | |
427 "Convert a W3C XML Schema datatypes regexp to a symbolic form. | |
428 | |
429 The symbolic form has the following structure: | |
430 | |
431 REGEXP ::= | |
432 (sequence REGEXP ...) | |
433 | (choice REGEXP ...) | |
434 | (repeat REGEXP MIN MAX) | |
435 | CHAR-CLASS | |
436 | |
437 CHAR-CLASS ::= | |
438 CHAR | |
439 | SYMBOLIC-CHAR-CLASS | |
440 | RANGE | |
441 | (union CHAR-CLASS ...) | |
442 | (difference CHAR-CLASS CHAR-CLASS) | |
443 | |
444 RANGE ::= (range LOWER UPPER) | |
445 | |
446 MIN ::= INTEGER | |
447 MAX ::= INTEGER | nil | |
448 CHAR ::= UNICODE | |
449 LOWER ::= UNICODE | |
450 UPPER ::= UNICODE | |
451 SYMBOLIC-CHAR-CLASS ::= SYMBOL | |
452 | |
453 where UNICODE is a integer specifying a Unicode code-point and | |
454 SYMBOLIC-CHAR-CLASS is a symbol which has either a `xsdre-char-class' | |
455 property whose value is a CHAR-CLASS, or a `xsdre-ranges' property | |
456 whose value is a range-list." | |
457 (let ((xsdre-current-regexp (string-to-list str))) | |
458 (condition-case err | |
459 (let ((symbolic (xsdre-parse-regexp))) | |
460 (if xsdre-current-regexp | |
461 (xsdre-parse-error "Unexpected %c" (car xsdre-current-regexp)) | |
462 symbolic)) | |
463 (xsdre-parse-error | |
464 (signal 'xsdre-invalid-regexp | |
465 (list (apply 'format (cdr err)) | |
466 (- (length str) | |
467 (length xsdre-current-regexp)))))))) | |
468 | |
469 (put 'xsdre-invalid-regexp | |
470 'error-conditions | |
471 '(error xsdre-invalid-regexp)) | |
472 | |
473 (put 'xsdre-invalid-regexp | |
474 'error-message | |
475 "Invalid W3C XML Schema Datatypes regular expression") | |
476 | |
477 (defun xsdre-parse-regexp () | |
478 (let ((branches nil)) | |
479 (while (progn | |
480 (setq branches (cons (xsdre-parse-branch) branches)) | |
481 (when (eq (car xsdre-current-regexp) ?|) | |
482 (xsdre-advance) | |
483 t))) | |
484 (if (null (cdr branches)) | |
485 (car branches) | |
486 (cons 'choice (nreverse branches))))) | |
487 | |
488 (defun xsdre-parse-branch () | |
489 (let (items) | |
490 (while (let ((item (xsdre-try-parse-atom))) | |
491 (when item | |
492 (let ((quantifier (xsdre-try-parse-quantifier))) | |
493 (when quantifier | |
494 (setq item | |
495 (list 'repeat | |
496 item | |
497 (car quantifier) | |
498 (cdr quantifier))))) | |
499 (setq items (cons item items))))) | |
500 (cond ((null items) '(sequence)) | |
501 ((null (cdr items)) (car items)) | |
502 (t (cons 'sequence (nreverse items)))))) | |
503 | |
504 (defun xsdre-try-parse-quantifier () | |
505 (let ((ch (car xsdre-current-regexp))) | |
506 (cond ((eq ch ?*) (xsdre-advance) '(0 . nil)) | |
507 ((eq ch ?+) (xsdre-advance) '(1 . nil)) | |
508 ((eq ch ??) (xsdre-advance) '(0 . 1)) | |
509 ((eq ch ?{) | |
510 (xsdre-advance) | |
511 (let ((lower (xsdre-parse-bound))) | |
512 (setq ch (car xsdre-current-regexp)) | |
513 (cond ((eq ch ?}) | |
514 (xsdre-advance) | |
515 (cons lower lower)) | |
516 ((eq ch ?,) | |
517 (xsdre-advance) | |
518 (cond ((eq (car xsdre-current-regexp) ?}) | |
519 (xsdre-advance) | |
520 (cons lower nil)) | |
521 (t | |
522 (let ((upper (xsdre-parse-bound))) | |
523 (xsdre-expect ?}) | |
524 (cons lower upper))))) | |
525 (t (xsdre-parse-error "Expected , or }"))))) | |
526 (t nil)))) | |
527 | |
528 (defun xsdre-parse-bound () | |
529 (let ((n 0)) | |
530 (while (progn | |
531 (let* ((ch (car xsdre-current-regexp)) | |
532 (digit (memq ch '(?9 ?8 ?7 ?6 ?5 ?4 ?3 ?2 ?1 ?0)))) | |
533 (unless digit | |
534 (xsdre-parse-error "Expected a digit")) | |
535 (setq n (+ (* n 10) | |
536 (length (cdr digit))))) | |
537 (xsdre-advance) | |
538 (not (memq (car xsdre-current-regexp) '(?} ?,))))) | |
539 n)) | |
540 | |
541 | |
542 (defun xsdre-try-parse-atom () | |
543 (let ((ch (car xsdre-current-regexp))) | |
544 (cond ((memq ch '(nil ?? ?* ?+ ?\) ?\{ ?\} ?| ?\])) nil) | |
545 ((eq ch ?\\) | |
546 (xsdre-advance) | |
547 (xsdre-parse-escape)) | |
548 ((eq ch ?\() | |
549 (xsdre-advance) | |
550 (let ((ret (xsdre-parse-regexp))) | |
551 (xsdre-expect ?\)) | |
552 ret)) | |
553 ((eq ch ?\[) | |
554 (xsdre-parse-char-class)) | |
555 ((eq ch ?.) | |
556 (xsdre-advance) | |
557 'dot) | |
558 (t | |
559 (let ((uc (encode-char ch 'ucs))) | |
560 (unless uc | |
561 (xsdre-parse-error "%c is not a Unicode character" ch)) | |
562 (xsdre-advance) uc))))) | |
563 | |
564 (defun xsdre-parse-char-class () | |
565 (xsdre-advance) | |
566 (let (compl members ret) | |
567 (when (eq (car xsdre-current-regexp) ?^) | |
568 (setq compl t) | |
569 (xsdre-advance)) | |
570 (while (let ((member (xsdre-parse-char-class-member)) | |
571 uc1 uc2) | |
572 (cond ((eq (car xsdre-current-regexp) ?\-) | |
573 (xsdre-advance) | |
574 (cond ((eq (car xsdre-current-regexp) ?\[) | |
575 (setq members (cons member members)) | |
576 nil) | |
577 ((not (integerp member)) | |
578 (xsdre-parse-error "Lower bound is not a single character")) | |
579 ((not (setq uc1 | |
580 (encode-char member 'ucs))) | |
581 (xsdre-parse-error "Lower bound %c is not a Unicode character" | |
582 member)) | |
583 (t | |
584 (let ((upper (xsdre-parse-char-class-member))) | |
585 (unless (integerp upper) | |
586 (xsdre-parse-error "Upper bound is not a single character")) | |
587 (unless (setq uc2 | |
588 (encode-char upper 'ucs)) | |
589 (xsdre-parse-error "Upper bound %c is not a Unicode character" upper)) | |
590 (setq members | |
591 (cons (list 'range uc1 uc2) | |
592 members))) | |
593 (not (eq (car xsdre-current-regexp) ?\]))))) | |
594 (t (setq members (cons member members)) | |
595 (not (eq (car xsdre-current-regexp) ?\])))))) | |
596 (setq members (nreverse members)) | |
597 (if (null (cdr members)) | |
598 (setq ret (car members)) | |
599 (setq ret (cons 'union members))) | |
600 (when compl | |
601 (setq ret (list 'difference 'any ret))) | |
602 (when (eq (car xsdre-current-regexp) ?\[) | |
603 (setq ret | |
604 (list 'difference ret (xsdre-parse-char-class)))) | |
605 (xsdre-expect ?\]) | |
606 ret)) | |
607 | |
608 (defun xsdre-parse-char-class-member () | |
609 (let ((ch (car xsdre-current-regexp))) | |
610 (cond ((null ch) | |
611 (xsdre-parse-error "Expected ]")) | |
612 ((eq ch ?\\) | |
613 (xsdre-advance) | |
614 (xsdre-parse-escape)) | |
615 ((memq ch '(?\[ ?\] ?-)) | |
616 (xsdre-parse-error "%c must be quoted in a character class" ch)) | |
617 (t (xsdre-advance) ch)))) | |
618 | |
619 (defconst xsdre-single-escape | |
620 '((?s . space) | |
621 (?i . name-initial) | |
622 (?c . name-continue) | |
623 (?d . digit) | |
624 (?w . word))) | |
625 | |
626 (defun xsdre-parse-escape () | |
627 (let ((ch (car xsdre-current-regexp))) | |
628 (xsdre-advance) | |
629 (cond ((memq ch '(?\\ ?| ?. ?- ?^ ?* ?+ ?( ?) ?{ ?} ?[ ?])) ch) | |
630 ((eq ch ?r) ?\r) | |
631 ((eq ch ?n) ?\n) | |
632 ((eq ch ?t) ?\t) | |
633 ((cdr (assq ch xsdre-single-escape))) | |
634 ((let ((positive | |
635 (cdr (assq (downcase ch) xsdre-single-escape)))) | |
636 (and positive | |
637 (list 'difference 'any positive)))) | |
638 ((eq ch ?p) (xsdre-parse-prop)) | |
639 ((eq ch ?P) (list 'difference 'any (xsdre-parse-prop))) | |
640 (t (if ch | |
641 (xsdre-parse-error "Missing char after \\") | |
642 (xsdre-parse-error "Bad escape %c" ch)))))) | |
643 | |
644 (defun xsdre-parse-prop () | |
645 (xsdre-expect ?{) | |
646 (let ((name nil)) | |
647 (while (not (eq (car xsdre-current-regexp) ?\})) | |
648 (unless xsdre-current-regexp | |
649 (xsdre-parse-error "Expected ?")) | |
650 (setq name (cons (car xsdre-current-regexp) | |
651 name)) | |
652 (xsdre-advance)) | |
653 (xsdre-advance) | |
654 (setq name (nreverse name)) | |
655 (cond ((null name) (xsdre-parse-error "Empty property name")) | |
656 ((null (cdr name)) | |
657 (let ((category (intern (string (car name))))) | |
658 (unless (get category 'xsdre-unicode-category) | |
659 (xsdre-parse-error "%s is not a category" category)) | |
660 category)) | |
661 ((null (cddr name)) | |
662 (let ((category (intern (string (car name) (cadr name))))) | |
663 (unless (get category 'xsdre-unicode-category) | |
664 (xsdre-parse-error "%s is not a category" category)) | |
665 category)) | |
666 ((not (and (eq (car name) ?I) | |
667 (eq (cadr name) ?s))) | |
668 (xsdre-parse-error "Block name does not start with Is")) | |
669 (t | |
670 (let ((block (intern (apply 'string (cddr name))))) | |
671 (unless (get block 'xsdre-unicode-block) | |
672 (xsdre-parse-error "%s is not a block name" block)) | |
673 block))))) | |
674 | |
675 (defun xsdre-expect (ch) | |
676 (if (eq (car xsdre-current-regexp) ch) | |
677 (xsdre-advance) | |
678 (xsdre-parse-error "Expected %c" ch))) | |
679 | |
680 (defun xsdre-advance () | |
681 (setq xsdre-current-regexp | |
682 (cdr xsdre-current-regexp))) | |
683 | |
684 (defun xsdre-parse-error (&rest args) | |
685 (signal 'xsdre-parse-error args)) | |
686 | |
687 ;; This error condition is used only internally. | |
688 | |
689 (put 'xsdre-parse-error | |
690 'error-conditions | |
691 '(error xsdre-parse-error)) | |
692 | |
693 (put 'xsdre-parse-error | |
694 'error-message | |
695 "Internal error in parsing XSD regexp") | |
696 | |
697 ;;; Character class data | |
698 | |
699 (put 'dot 'xsdre-char-class '(difference any (union #xA #xD))) | |
700 (put 'digit 'xsdre-char-class 'Nd) | |
701 (put 'word 'xsdre-char-class '(difference any (union P Z C))) | |
702 (put 'space 'xsdre-char-class '(union #x9 #xA #xD #x20)) | |
703 (put 'any 'xsdre-ranges '((#x0 . #x10FFFF))) | |
704 | |
705 (defconst xsdre-gen-categories | |
706 '(Lu Ll Lt Lm Lo Mn Mc Me Nd Nl No Pc Pd | |
707 Ps Pe Pi Pf Po Zs Zl Zp Sm Sc Sk So Cc Cf Co)) | |
708 | |
709 (defun xsdre-gen-categories (file) | |
710 "Use a UnicodeData file to generate code to initialize Unicode categories. | |
711 Code is inserted into the current buffer." | |
712 (interactive "fUnicodeData file: ") | |
713 (save-excursion | |
714 (set-buffer (find-file-noselect file)) | |
715 (goto-char (point-min)) | |
86558 | 716 (mapc (lambda (x) (put x 'xsdre-ranges nil)) xsdre-gen-categories) |
86361 | 717 (while (re-search-forward "^\\([0-9A-Fa-f]*\\);[^;]*;\\([A-Z][a-z]\\);" |
718 nil | |
719 t) | |
720 (let* ((sym (intern (match-string-no-properties 2))) | |
721 (code (string-to-number (match-string-no-properties 1) | |
722 16)) | |
723 (ranges (get sym 'xsdre-ranges)) | |
724 (last-range (car ranges)) | |
725 (forced-range (string= (buffer-substring-no-properties | |
726 (- (match-beginning 2) 6) | |
727 (1- (match-beginning 2))) | |
728 "Last>"))) | |
729 (cond ((and (integerp last-range) | |
730 (or forced-range | |
731 (eq code (1+ last-range)))) | |
732 (put sym | |
733 'xsdre-ranges | |
734 (cons (cons last-range code) | |
735 (cdr ranges)))) | |
736 ((and (consp last-range) | |
737 (or forced-range | |
738 (eq code (1+ (cdr last-range))))) | |
739 (put sym | |
740 'xsdre-ranges | |
741 (cons (cons (car last-range) code) | |
742 (cdr ranges)))) | |
743 (t | |
744 (put sym 'xsdre-ranges (cons code ranges)))))) | |
86558 | 745 (mapc (lambda (x) |
746 (put x | |
747 'xsdre-ranges | |
748 (nreverse (get x 'xsdre-ranges))) | |
749 nil) | |
750 xsdre-gen-categories)) | |
751 (mapc (lambda (x) | |
752 (let ((start (point))) | |
753 (pp (list 'xsdre-def-primitive-category | |
754 (list 'quote x) | |
755 (list 'quote (get x 'xsdre-ranges))) | |
756 (current-buffer)) | |
757 (save-excursion | |
758 (goto-char start) | |
759 (down-list 2) | |
760 (while (condition-case err | |
761 (progn | |
762 (forward-sexp) | |
763 t) | |
764 (error nil)) | |
765 (when (and (< 70 (current-column)) | |
766 (not (looking-at ")"))) | |
767 (insert "\n") | |
768 (lisp-indent-line)))))) | |
769 xsdre-gen-categories)) | |
86361 | 770 |
771 (defun xsdre-def-primitive-category (sym ranges) | |
772 (put sym 'xsdre-ranges ranges) | |
773 (put sym 'xsdre-unicode-category t)) | |
774 | |
775 ;;; Blocks | |
776 | |
777 (defun xsdre-def-block (sym ranges) | |
778 (put sym 'xsdre-ranges ranges) | |
779 (put sym 'xsdre-unicode-block t)) | |
780 | |
781 (xsdre-def-block 'BasicLatin '((#x0000 . #x007F))) | |
782 (xsdre-def-block 'Latin-1Supplement '((#x0080 . #x00FF))) | |
783 (xsdre-def-block 'LatinExtended-A '((#x0100 . #x017F))) | |
784 (xsdre-def-block 'LatinExtended-B '((#x0180 . #x024F))) | |
785 (xsdre-def-block 'IPAExtensions '((#x0250 . #x02AF))) | |
786 (xsdre-def-block 'SpacingModifierLetters '((#x02B0 . #x02FF))) | |
787 (xsdre-def-block 'CombiningDiacriticalMarks '((#x0300 . #x036F))) | |
788 (xsdre-def-block 'Greek '((#x0370 . #x03FF))) | |
789 (xsdre-def-block 'Cyrillic '((#x0400 . #x04FF))) | |
790 (xsdre-def-block 'Armenian '((#x0530 . #x058F))) | |
791 (xsdre-def-block 'Hebrew '((#x0590 . #x05FF))) | |
792 (xsdre-def-block 'Arabic '((#x0600 . #x06FF))) | |
793 (xsdre-def-block 'Syriac '((#x0700 . #x074F))) | |
794 (xsdre-def-block 'Thaana '((#x0780 . #x07BF))) | |
795 (xsdre-def-block 'Devanagari '((#x0900 . #x097F))) | |
796 (xsdre-def-block 'Bengali '((#x0980 . #x09FF))) | |
797 (xsdre-def-block 'Gurmukhi '((#x0A00 . #x0A7F))) | |
798 (xsdre-def-block 'Gujarati '((#x0A80 . #x0AFF))) | |
799 (xsdre-def-block 'Oriya '((#x0B00 . #x0B7F))) | |
800 (xsdre-def-block 'Tamil '((#x0B80 . #x0BFF))) | |
801 (xsdre-def-block 'Telugu '((#x0C00 . #x0C7F))) | |
802 (xsdre-def-block 'Kannada '((#x0C80 . #x0CFF))) | |
803 (xsdre-def-block 'Malayalam '((#x0D00 . #x0D7F))) | |
804 (xsdre-def-block 'Sinhala '((#x0D80 . #x0DFF))) | |
805 (xsdre-def-block 'Thai '((#x0E00 . #x0E7F))) | |
806 (xsdre-def-block 'Lao '((#x0E80 . #x0EFF))) | |
807 (xsdre-def-block 'Tibetan '((#x0F00 . #x0FFF))) | |
808 (xsdre-def-block 'Myanmar '((#x1000 . #x109F))) | |
809 (xsdre-def-block 'Georgian '((#x10A0 . #x10FF))) | |
810 (xsdre-def-block 'HangulJamo '((#x1100 . #x11FF))) | |
811 (xsdre-def-block 'Ethiopic '((#x1200 . #x137F))) | |
812 (xsdre-def-block 'Cherokee '((#x13A0 . #x13FF))) | |
813 (xsdre-def-block 'UnifiedCanadianAboriginalSyllabics '((#x1400 . #x167F))) | |
814 (xsdre-def-block 'Ogham '((#x1680 . #x169F))) | |
815 (xsdre-def-block 'Runic '((#x16A0 . #x16FF))) | |
816 (xsdre-def-block 'Khmer '((#x1780 . #x17FF))) | |
817 (xsdre-def-block 'Mongolian '((#x1800 . #x18AF))) | |
818 (xsdre-def-block 'LatinExtendedAdditional '((#x1E00 . #x1EFF))) | |
819 (xsdre-def-block 'GreekExtended '((#x1F00 . #x1FFF))) | |
820 (xsdre-def-block 'GeneralPunctuation '((#x2000 . #x206F))) | |
821 (xsdre-def-block 'SuperscriptsandSubscripts '((#x2070 . #x209F))) | |
822 (xsdre-def-block 'CurrencySymbols '((#x20A0 . #x20CF))) | |
823 (xsdre-def-block 'CombiningMarksforSymbols '((#x20D0 . #x20FF))) | |
824 (xsdre-def-block 'LetterlikeSymbols '((#x2100 . #x214F))) | |
825 (xsdre-def-block 'NumberForms '((#x2150 . #x218F))) | |
826 (xsdre-def-block 'Arrows '((#x2190 . #x21FF))) | |
827 (xsdre-def-block 'MathematicalOperators '((#x2200 . #x22FF))) | |
828 (xsdre-def-block 'MiscellaneousTechnical '((#x2300 . #x23FF))) | |
829 (xsdre-def-block 'ControlPictures '((#x2400 . #x243F))) | |
830 (xsdre-def-block 'OpticalCharacterRecognition '((#x2440 . #x245F))) | |
831 (xsdre-def-block 'EnclosedAlphanumerics '((#x2460 . #x24FF))) | |
832 (xsdre-def-block 'BoxDrawing '((#x2500 . #x257F))) | |
833 (xsdre-def-block 'BlockElements '((#x2580 . #x259F))) | |
834 (xsdre-def-block 'GeometricShapes '((#x25A0 . #x25FF))) | |
835 (xsdre-def-block 'MiscellaneousSymbols '((#x2600 . #x26FF))) | |
836 (xsdre-def-block 'Dingbats '((#x2700 . #x27BF))) | |
837 (xsdre-def-block 'BraillePatterns '((#x2800 . #x28FF))) | |
838 (xsdre-def-block 'CJKRadicalsSupplement '((#x2E80 . #x2EFF))) | |
839 (xsdre-def-block 'KangxiRadicals '((#x2F00 . #x2FDF))) | |
840 (xsdre-def-block 'IdeographicDescriptionCharacters '((#x2FF0 . #x2FFF))) | |
841 (xsdre-def-block 'CJKSymbolsandPunctuation '((#x3000 . #x303F))) | |
842 (xsdre-def-block 'Hiragana '((#x3040 . #x309F))) | |
843 (xsdre-def-block 'Katakana '((#x30A0 . #x30FF))) | |
844 (xsdre-def-block 'Bopomofo '((#x3100 . #x312F))) | |
845 (xsdre-def-block 'HangulCompatibilityJamo '((#x3130 . #x318F))) | |
846 (xsdre-def-block 'Kanbun '((#x3190 . #x319F))) | |
847 (xsdre-def-block 'BopomofoExtended '((#x31A0 . #x31BF))) | |
848 (xsdre-def-block 'EnclosedCJKLettersandMonths '((#x3200 . #x32FF))) | |
849 (xsdre-def-block 'CJKCompatibility '((#x3300 . #x33FF))) | |
850 (xsdre-def-block 'CJKUnifiedIdeographsExtensionA '((#x3400 . #x4DB5))) | |
851 (xsdre-def-block 'CJKUnifiedIdeographs '((#x4E00 . #x9FFF))) | |
852 (xsdre-def-block 'YiSyllables '((#xA000 . #xA48F))) | |
853 (xsdre-def-block 'YiRadicals '((#xA490 . #xA4CF))) | |
854 (xsdre-def-block 'HangulSyllables '((#xAC00 . #xD7A3))) | |
855 ;;(xsdre-def-block 'HighSurrogates '((#xD800 . #xDB7F))) | |
856 ;;(xsdre-def-block 'HighPrivateUseSurrogates '((#xDB80 . #xDBFF))) | |
857 ;;(xsdre-def-block 'LowSurrogates '((#xDC00 . #xDFFF))) | |
858 (xsdre-def-block 'CJKCompatibilityIdeographs '((#xF900 . #xFAFF))) | |
859 (xsdre-def-block 'AlphabeticPresentationForms '((#xFB00 . #xFB4F))) | |
860 (xsdre-def-block 'ArabicPresentationForms-A '((#xFB50 . #xFDFF))) | |
861 (xsdre-def-block 'CombiningHalfMarks '((#xFE20 . #xFE2F))) | |
862 (xsdre-def-block 'CJKCompatibilityForms '((#xFE30 . #xFE4F))) | |
863 (xsdre-def-block 'SmallFormVariants '((#xFE50 . #xFE6F))) | |
864 (xsdre-def-block 'ArabicPresentationForms-B '((#xFE70 . #xFEFE))) | |
865 (xsdre-def-block 'Specials '((#xFEFF . #xFEFF))) | |
866 (xsdre-def-block 'HalfwidthandFullwidthForms '((#xFF00 . #xFFEF))) | |
867 (xsdre-def-block 'Specials '((#xFFF0 . #xFFFD))) | |
868 (xsdre-def-block 'OldItalic '((#x10300 . #x1032F))) | |
869 (xsdre-def-block 'Gothic '((#x10330 . #x1034F))) | |
870 (xsdre-def-block 'Deseret '((#x10400 . #x1044F))) | |
871 (xsdre-def-block 'ByzantineMusicalSymbols '((#x1D000 . #x1D0FF))) | |
872 (xsdre-def-block 'MusicalSymbols '((#x1D100 . #x1D1FF))) | |
873 (xsdre-def-block 'MathematicalAlphanumericSymbols '((#x1D400 . #x1D7FF))) | |
874 (xsdre-def-block 'CJKUnifiedIdeographsExtensionB '((#x20000 . #x2A6D6))) | |
875 (xsdre-def-block 'CJKCompatibilityIdeographsSupplement '((#x2F800 . #x2FA1F))) | |
876 (xsdre-def-block 'Tags '((#xE0000 . #xE007F))) | |
877 (xsdre-def-block 'PrivateUse '((#xE000 . #xF8FF) | |
878 (#xF0000 . #xFFFFD) | |
879 (#x100000 . #x10FFFD))) | |
880 | |
881 ;;; Categories | |
882 | |
883 ;;; Derived categories | |
884 | |
885 (defun xsdre-def-derived-category (sym char-class) | |
886 (put sym 'xsdre-char-class char-class) | |
887 (put sym 'xsdre-unicode-category t)) | |
888 | |
889 (xsdre-def-derived-category 'L '(union Lu Ll Lt Lm Lo)) | |
890 (xsdre-def-derived-category 'M '(union Mn Mc Me)) | |
891 (xsdre-def-derived-category 'N '(union Nd Nl No)) | |
892 (xsdre-def-derived-category 'P '(union Pc Pd Ps Pe Pi Pf Po)) | |
893 (xsdre-def-derived-category 'Z '(union Zs Zl Zp)) | |
894 (xsdre-def-derived-category 'S '(union Sm Sc Sk So)) | |
895 (xsdre-def-derived-category 'C '(union Cc Cf Co Cn)) | |
896 (xsdre-def-derived-category 'Cn '(difference any | |
897 (union L M N P Z S Cc Cf Co))) | |
898 | |
899 (xsdre-def-primitive-category | |
900 'name-initial | |
901 '(#x003a | |
902 (#x0041 . #x005a) | |
903 #x005f | |
904 (#x0061 . #x007a) | |
905 (#x00c0 . #x00d6) | |
906 (#x00d8 . #x00f6) | |
907 (#x00f8 . #x0131) | |
908 (#x0134 . #x013e) | |
909 (#x0141 . #x0148) | |
910 (#x014a . #x017e) | |
911 (#x0180 . #x01c3) | |
912 (#x01cd . #x01f0) | |
913 (#x01f4 . #x01f5) | |
914 (#x01fa . #x0217) | |
915 (#x0250 . #x02a8) | |
916 (#x02bb . #x02c1) | |
917 #x0386 | |
918 (#x0388 . #x038a) | |
919 #x038c | |
920 (#x038e . #x03a1) | |
921 (#x03a3 . #x03ce) | |
922 (#x03d0 . #x03d6) | |
923 #x03da | |
924 #x03dc | |
925 #x03de | |
926 #x03e0 | |
927 (#x03e2 . #x03f3) | |
928 (#x0401 . #x040c) | |
929 (#x040e . #x044f) | |
930 (#x0451 . #x045c) | |
931 (#x045e . #x0481) | |
932 (#x0490 . #x04c4) | |
933 (#x04c7 . #x04c8) | |
934 (#x04cb . #x04cc) | |
935 (#x04d0 . #x04eb) | |
936 (#x04ee . #x04f5) | |
937 (#x04f8 . #x04f9) | |
938 (#x0531 . #x0556) | |
939 #x0559 | |
940 (#x0561 . #x0586) | |
941 (#x05d0 . #x05ea) | |
942 (#x05f0 . #x05f2) | |
943 (#x0621 . #x063a) | |
944 (#x0641 . #x064a) | |
945 (#x0671 . #x06b7) | |
946 (#x06ba . #x06be) | |
947 (#x06c0 . #x06ce) | |
948 (#x06d0 . #x06d3) | |
949 #x06d5 | |
950 (#x06e5 . #x06e6) | |
951 (#x0905 . #x0939) | |
952 #x093d | |
953 (#x0958 . #x0961) | |
954 (#x0985 . #x098c) | |
955 (#x098f . #x0990) | |
956 (#x0993 . #x09a8) | |
957 (#x09aa . #x09b0) | |
958 #x09b2 | |
959 (#x09b6 . #x09b9) | |
960 (#x09dc . #x09dd) | |
961 (#x09df . #x09e1) | |
962 (#x09f0 . #x09f1) | |
963 (#x0a05 . #x0a0a) | |
964 (#x0a0f . #x0a10) | |
965 (#x0a13 . #x0a28) | |
966 (#x0a2a . #x0a30) | |
967 (#x0a32 . #x0a33) | |
968 (#x0a35 . #x0a36) | |
969 (#x0a38 . #x0a39) | |
970 (#x0a59 . #x0a5c) | |
971 #x0a5e | |
972 (#x0a72 . #x0a74) | |
973 (#x0a85 . #x0a8b) | |
974 #x0a8d | |
975 (#x0a8f . #x0a91) | |
976 (#x0a93 . #x0aa8) | |
977 (#x0aaa . #x0ab0) | |
978 (#x0ab2 . #x0ab3) | |
979 (#x0ab5 . #x0ab9) | |
980 #x0abd | |
981 #x0ae0 | |
982 (#x0b05 . #x0b0c) | |
983 (#x0b0f . #x0b10) | |
984 (#x0b13 . #x0b28) | |
985 (#x0b2a . #x0b30) | |
986 (#x0b32 . #x0b33) | |
987 (#x0b36 . #x0b39) | |
988 #x0b3d | |
989 (#x0b5c . #x0b5d) | |
990 (#x0b5f . #x0b61) | |
991 (#x0b85 . #x0b8a) | |
992 (#x0b8e . #x0b90) | |
993 (#x0b92 . #x0b95) | |
994 (#x0b99 . #x0b9a) | |
995 #x0b9c | |
996 (#x0b9e . #x0b9f) | |
997 (#x0ba3 . #x0ba4) | |
998 (#x0ba8 . #x0baa) | |
999 (#x0bae . #x0bb5) | |
1000 (#x0bb7 . #x0bb9) | |
1001 (#x0c05 . #x0c0c) | |
1002 (#x0c0e . #x0c10) | |
1003 (#x0c12 . #x0c28) | |
1004 (#x0c2a . #x0c33) | |
1005 (#x0c35 . #x0c39) | |
1006 (#x0c60 . #x0c61) | |
1007 (#x0c85 . #x0c8c) | |
1008 (#x0c8e . #x0c90) | |
1009 (#x0c92 . #x0ca8) | |
1010 (#x0caa . #x0cb3) | |
1011 (#x0cb5 . #x0cb9) | |
1012 #x0cde | |
1013 (#x0ce0 . #x0ce1) | |
1014 (#x0d05 . #x0d0c) | |
1015 (#x0d0e . #x0d10) | |
1016 (#x0d12 . #x0d28) | |
1017 (#x0d2a . #x0d39) | |
1018 (#x0d60 . #x0d61) | |
1019 (#x0e01 . #x0e2e) | |
1020 #x0e30 | |
1021 (#x0e32 . #x0e33) | |
1022 (#x0e40 . #x0e45) | |
1023 (#x0e81 . #x0e82) | |
1024 #x0e84 | |
1025 (#x0e87 . #x0e88) | |
1026 #x0e8a | |
1027 #x0e8d | |
1028 (#x0e94 . #x0e97) | |
1029 (#x0e99 . #x0e9f) | |
1030 (#x0ea1 . #x0ea3) | |
1031 #x0ea5 | |
1032 #x0ea7 | |
1033 (#x0eaa . #x0eab) | |
1034 (#x0ead . #x0eae) | |
1035 #x0eb0 | |
1036 (#x0eb2 . #x0eb3) | |
1037 #x0ebd | |
1038 (#x0ec0 . #x0ec4) | |
1039 (#x0f40 . #x0f47) | |
1040 (#x0f49 . #x0f69) | |
1041 (#x10a0 . #x10c5) | |
1042 (#x10d0 . #x10f6) | |
1043 #x1100 | |
1044 (#x1102 . #x1103) | |
1045 (#x1105 . #x1107) | |
1046 #x1109 | |
1047 (#x110b . #x110c) | |
1048 (#x110e . #x1112) | |
1049 #x113c | |
1050 #x113e | |
1051 #x1140 | |
1052 #x114c | |
1053 #x114e | |
1054 #x1150 | |
1055 (#x1154 . #x1155) | |
1056 #x1159 | |
1057 (#x115f . #x1161) | |
1058 #x1163 | |
1059 #x1165 | |
1060 #x1167 | |
1061 #x1169 | |
1062 (#x116d . #x116e) | |
1063 (#x1172 . #x1173) | |
1064 #x1175 | |
1065 #x119e | |
1066 #x11a8 | |
1067 #x11ab | |
1068 (#x11ae . #x11af) | |
1069 (#x11b7 . #x11b8) | |
1070 #x11ba | |
1071 (#x11bc . #x11c2) | |
1072 #x11eb | |
1073 #x11f0 | |
1074 #x11f9 | |
1075 (#x1e00 . #x1e9b) | |
1076 (#x1ea0 . #x1ef9) | |
1077 (#x1f00 . #x1f15) | |
1078 (#x1f18 . #x1f1d) | |
1079 (#x1f20 . #x1f45) | |
1080 (#x1f48 . #x1f4d) | |
1081 (#x1f50 . #x1f57) | |
1082 #x1f59 | |
1083 #x1f5b | |
1084 #x1f5d | |
1085 (#x1f5f . #x1f7d) | |
1086 (#x1f80 . #x1fb4) | |
1087 (#x1fb6 . #x1fbc) | |
1088 #x1fbe | |
1089 (#x1fc2 . #x1fc4) | |
1090 (#x1fc6 . #x1fcc) | |
1091 (#x1fd0 . #x1fd3) | |
1092 (#x1fd6 . #x1fdb) | |
1093 (#x1fe0 . #x1fec) | |
1094 (#x1ff2 . #x1ff4) | |
1095 (#x1ff6 . #x1ffc) | |
1096 #x2126 | |
1097 (#x212a . #x212b) | |
1098 #x212e | |
1099 (#x2180 . #x2182) | |
1100 #x3007 | |
1101 (#x3021 . #x3029) | |
1102 (#x3041 . #x3094) | |
1103 (#x30a1 . #x30fa) | |
1104 (#x3105 . #x312c) | |
1105 (#x4e00 . #x9fa5) | |
1106 (#xac00 . #xd7a3))) | |
1107 | |
1108 (xsdre-def-derived-category 'name-continue '(union name-initial | |
1109 name-continue-not-initial)) | |
1110 | |
1111 (xsdre-def-primitive-category | |
1112 'name-continue-not-initial | |
1113 '((#x002d . #x002e) | |
1114 (#x0030 . #x0039) | |
1115 #x00b7 | |
1116 (#x02d0 . #x02d1) | |
1117 (#x0300 . #x0345) | |
1118 (#x0360 . #x0361) | |
1119 #x0387 | |
1120 (#x0483 . #x0486) | |
1121 (#x0591 . #x05a1) | |
1122 (#x05a3 . #x05b9) | |
1123 (#x05bb . #x05bd) | |
1124 #x05bf | |
1125 (#x05c1 . #x05c2) | |
1126 #x05c4 | |
1127 #x0640 | |
1128 (#x064b . #x0652) | |
1129 (#x0660 . #x0669) | |
1130 #x0670 | |
1131 (#x06d6 . #x06dc) | |
1132 (#x06dd . #x06df) | |
1133 (#x06e0 . #x06e4) | |
1134 (#x06e7 . #x06e8) | |
1135 (#x06ea . #x06ed) | |
1136 (#x06f0 . #x06f9) | |
1137 (#x0901 . #x0903) | |
1138 #x093c | |
1139 (#x093e . #x094c) | |
1140 #x094d | |
1141 (#x0951 . #x0954) | |
1142 (#x0962 . #x0963) | |
1143 (#x0966 . #x096f) | |
1144 (#x0981 . #x0983) | |
1145 #x09bc | |
1146 (#x09be . #x09bf) | |
1147 (#x09c0 . #x09c4) | |
1148 (#x09c7 . #x09c8) | |
1149 (#x09cb . #x09cd) | |
1150 #x09d7 | |
1151 (#x09e2 . #x09e3) | |
1152 (#x09e6 . #x09ef) | |
1153 #x0a02 | |
1154 #x0a3c | |
1155 (#x0a3e . #x0a42) | |
1156 (#x0a47 . #x0a48) | |
1157 (#x0a4b . #x0a4d) | |
1158 (#x0a66 . #x0a6f) | |
1159 (#x0a70 . #x0a71) | |
1160 (#x0a81 . #x0a83) | |
1161 #x0abc | |
1162 (#x0abe . #x0ac5) | |
1163 (#x0ac7 . #x0ac9) | |
1164 (#x0acb . #x0acd) | |
1165 (#x0ae6 . #x0aef) | |
1166 (#x0b01 . #x0b03) | |
1167 #x0b3c | |
1168 (#x0b3e . #x0b43) | |
1169 (#x0b47 . #x0b48) | |
1170 (#x0b4b . #x0b4d) | |
1171 (#x0b56 . #x0b57) | |
1172 (#x0b66 . #x0b6f) | |
1173 (#x0b82 . #x0b83) | |
1174 (#x0bbe . #x0bc2) | |
1175 (#x0bc6 . #x0bc8) | |
1176 (#x0bca . #x0bcd) | |
1177 #x0bd7 | |
1178 (#x0be7 . #x0bef) | |
1179 (#x0c01 . #x0c03) | |
1180 (#x0c3e . #x0c44) | |
1181 (#x0c46 . #x0c48) | |
1182 (#x0c4a . #x0c4d) | |
1183 (#x0c55 . #x0c56) | |
1184 (#x0c66 . #x0c6f) | |
1185 (#x0c82 . #x0c83) | |
1186 (#x0cbe . #x0cc4) | |
1187 (#x0cc6 . #x0cc8) | |
1188 (#x0cca . #x0ccd) | |
1189 (#x0cd5 . #x0cd6) | |
1190 (#x0ce6 . #x0cef) | |
1191 (#x0d02 . #x0d03) | |
1192 (#x0d3e . #x0d43) | |
1193 (#x0d46 . #x0d48) | |
1194 (#x0d4a . #x0d4d) | |
1195 #x0d57 | |
1196 (#x0d66 . #x0d6f) | |
1197 #x0e31 | |
1198 (#x0e34 . #x0e3a) | |
1199 (#x0e46 . #x0e4e) | |
1200 (#x0e50 . #x0e59) | |
1201 #x0eb1 | |
1202 (#x0eb4 . #x0eb9) | |
1203 (#x0ebb . #x0ebc) | |
1204 #x0ec6 | |
1205 (#x0ec8 . #x0ecd) | |
1206 (#x0ed0 . #x0ed9) | |
1207 (#x0f18 . #x0f19) | |
1208 (#x0f20 . #x0f29) | |
1209 #x0f35 | |
1210 #x0f37 | |
1211 #x0f39 | |
1212 (#x0f3e . #x0f3f) | |
1213 (#x0f71 . #x0f84) | |
1214 (#x0f86 . #x0f8b) | |
1215 (#x0f90 . #x0f95) | |
1216 #x0f97 | |
1217 (#x0f99 . #x0fad) | |
1218 (#x0fb1 . #x0fb7) | |
1219 #x0fb9 | |
1220 (#x20d0 . #x20dc) | |
1221 #x20e1 | |
1222 #x3005 | |
1223 (#x302a . #x302f) | |
1224 (#x3031 . #x3035) | |
1225 #x3099 | |
1226 #x309a | |
1227 (#x309d . #x309e) | |
1228 (#x30fc . #x30fe))) | |
1229 | |
1230 ;;; Auto-generated section. | |
1231 | |
1232 ;; The rest of the file was auto-generated by doing M-x xsdre-gen-categories | |
1233 ;; on UnicodeData-3.1.0.txt available from | |
1234 ;; http://www.unicode.org/Public/3.1-Update/UnicodeData-3.1.0.txt | |
1235 | |
1236 (xsdre-def-primitive-category 'Lu | |
1237 '((65 . 90) | |
1238 (192 . 214) | |
1239 (216 . 222) | |
1240 256 258 260 262 264 266 268 270 272 274 276 | |
1241 278 280 282 284 286 288 290 292 294 296 298 | |
1242 300 302 304 306 308 310 313 315 317 319 321 | |
1243 323 325 327 330 332 334 336 338 340 342 344 | |
1244 346 348 350 352 354 356 358 360 362 364 366 | |
1245 368 370 372 374 | |
1246 (376 . 377) | |
1247 379 381 | |
1248 (385 . 386) | |
1249 388 | |
1250 (390 . 391) | |
1251 (393 . 395) | |
1252 (398 . 401) | |
1253 (403 . 404) | |
1254 (406 . 408) | |
1255 (412 . 413) | |
1256 (415 . 416) | |
1257 418 420 | |
1258 (422 . 423) | |
1259 425 428 | |
1260 (430 . 431) | |
1261 (433 . 435) | |
1262 437 | |
1263 (439 . 440) | |
1264 444 452 455 458 461 463 465 467 469 471 473 | |
1265 475 478 480 482 484 486 488 490 492 494 497 | |
1266 500 | |
1267 (502 . 504) | |
1268 506 508 510 512 514 516 518 520 522 524 526 | |
1269 528 530 532 534 536 538 540 542 546 548 550 | |
1270 552 554 556 558 560 562 902 | |
1271 (904 . 906) | |
1272 908 | |
1273 (910 . 911) | |
1274 (913 . 929) | |
1275 (931 . 939) | |
1276 (978 . 980) | |
1277 986 988 990 992 994 996 998 1000 1002 1004 | |
1278 1006 1012 | |
1279 (1024 . 1071) | |
1280 1120 1122 1124 1126 1128 1130 1132 1134 1136 | |
1281 1138 1140 1142 1144 1146 1148 1150 1152 1164 | |
1282 1166 1168 1170 1172 1174 1176 1178 1180 1182 | |
1283 1184 1186 1188 1190 1192 1194 1196 1198 1200 | |
1284 1202 1204 1206 1208 1210 1212 1214 | |
1285 (1216 . 1217) | |
1286 1219 1223 1227 1232 1234 1236 1238 1240 1242 | |
1287 1244 1246 1248 1250 1252 1254 1256 1258 1260 | |
1288 1262 1264 1266 1268 1272 | |
1289 (1329 . 1366) | |
1290 (4256 . 4293) | |
1291 7680 7682 7684 7686 7688 7690 7692 7694 7696 | |
1292 7698 7700 7702 7704 7706 7708 7710 7712 7714 | |
1293 7716 7718 7720 7722 7724 7726 7728 7730 7732 | |
1294 7734 7736 7738 7740 7742 7744 7746 7748 7750 | |
1295 7752 7754 7756 7758 7760 7762 7764 7766 7768 | |
1296 7770 7772 7774 7776 7778 7780 7782 7784 7786 | |
1297 7788 7790 7792 7794 7796 7798 7800 7802 7804 | |
1298 7806 7808 7810 7812 7814 7816 7818 7820 7822 | |
1299 7824 7826 7828 7840 7842 7844 7846 7848 7850 | |
1300 7852 7854 7856 7858 7860 7862 7864 7866 7868 | |
1301 7870 7872 7874 7876 7878 7880 7882 7884 7886 | |
1302 7888 7890 7892 7894 7896 7898 7900 7902 7904 | |
1303 7906 7908 7910 7912 7914 7916 7918 7920 7922 | |
1304 7924 7926 7928 | |
1305 (7944 . 7951) | |
1306 (7960 . 7965) | |
1307 (7976 . 7983) | |
1308 (7992 . 7999) | |
1309 (8008 . 8013) | |
1310 8025 8027 8029 8031 | |
1311 (8040 . 8047) | |
1312 (8120 . 8123) | |
1313 (8136 . 8139) | |
1314 (8152 . 8155) | |
1315 (8168 . 8172) | |
1316 (8184 . 8187) | |
1317 8450 8455 | |
1318 (8459 . 8461) | |
1319 (8464 . 8466) | |
1320 8469 | |
1321 (8473 . 8477) | |
1322 8484 8486 8488 | |
1323 (8490 . 8493) | |
1324 (8496 . 8497) | |
1325 8499 | |
1326 (65313 . 65338) | |
1327 (66560 . 66597) | |
1328 (119808 . 119833) | |
1329 (119860 . 119885) | |
1330 (119912 . 119937) | |
1331 119964 | |
1332 (119966 . 119967) | |
1333 119970 | |
1334 (119973 . 119974) | |
1335 (119977 . 119980) | |
1336 (119982 . 119989) | |
1337 (120016 . 120041) | |
1338 (120068 . 120069) | |
1339 (120071 . 120074) | |
1340 (120077 . 120084) | |
1341 (120086 . 120092) | |
1342 (120120 . 120121) | |
1343 (120123 . 120126) | |
1344 (120128 . 120132) | |
1345 120134 | |
1346 (120138 . 120144) | |
1347 (120172 . 120197) | |
1348 (120224 . 120249) | |
1349 (120276 . 120301) | |
1350 (120328 . 120353) | |
1351 (120380 . 120405) | |
1352 (120432 . 120457) | |
1353 (120488 . 120512) | |
1354 (120546 . 120570) | |
1355 (120604 . 120628) | |
1356 (120662 . 120686) | |
1357 (120720 . 120744))) | |
1358 (xsdre-def-primitive-category 'Ll | |
1359 '((97 . 122) | |
1360 170 181 186 | |
1361 (223 . 246) | |
1362 (248 . 255) | |
1363 257 259 261 263 265 267 269 271 273 275 277 | |
1364 279 281 283 285 287 289 291 293 295 297 299 | |
1365 301 303 305 307 309 | |
1366 (311 . 312) | |
1367 314 316 318 320 322 324 326 | |
1368 (328 . 329) | |
1369 331 333 335 337 339 341 343 345 347 349 351 | |
1370 353 355 357 359 361 363 365 367 369 371 373 | |
1371 375 378 380 | |
1372 (382 . 384) | |
1373 387 389 392 | |
1374 (396 . 397) | |
1375 402 405 | |
1376 (409 . 411) | |
1377 414 417 419 421 424 | |
1378 (426 . 427) | |
1379 429 432 436 438 | |
1380 (441 . 442) | |
1381 (445 . 447) | |
1382 454 457 460 462 464 466 468 470 472 474 | |
1383 (476 . 477) | |
1384 479 481 483 485 487 489 491 493 | |
1385 (495 . 496) | |
1386 499 501 505 507 509 511 513 515 517 519 521 | |
1387 523 525 527 529 531 533 535 537 539 541 543 | |
1388 547 549 551 553 555 557 559 561 563 | |
1389 (592 . 685) | |
1390 912 | |
1391 (940 . 974) | |
1392 (976 . 977) | |
1393 (981 . 983) | |
1394 987 989 991 993 995 997 999 1001 1003 1005 | |
1395 | |
1396 (1007 . 1011) | |
1397 1013 | |
1398 (1072 . 1119) | |
1399 1121 1123 1125 1127 1129 1131 1133 1135 1137 | |
1400 1139 1141 1143 1145 1147 1149 1151 1153 1165 | |
1401 1167 1169 1171 1173 1175 1177 1179 1181 1183 | |
1402 1185 1187 1189 1191 1193 1195 1197 1199 1201 | |
1403 1203 1205 1207 1209 1211 1213 1215 1218 1220 | |
1404 1224 1228 1233 1235 1237 1239 1241 1243 1245 | |
1405 1247 1249 1251 1253 1255 1257 1259 1261 1263 | |
1406 1265 1267 1269 1273 | |
1407 (1377 . 1415) | |
1408 7681 7683 7685 7687 7689 7691 7693 7695 7697 | |
1409 7699 7701 7703 7705 7707 7709 7711 7713 7715 | |
1410 7717 7719 7721 7723 7725 7727 7729 7731 7733 | |
1411 7735 7737 7739 7741 7743 7745 7747 7749 7751 | |
1412 7753 7755 7757 7759 7761 7763 7765 7767 7769 | |
1413 7771 7773 7775 7777 7779 7781 7783 7785 7787 | |
1414 7789 7791 7793 7795 7797 7799 7801 7803 7805 | |
1415 7807 7809 7811 7813 7815 7817 7819 7821 7823 | |
1416 7825 7827 | |
1417 (7829 . 7835) | |
1418 7841 7843 7845 7847 7849 7851 7853 7855 7857 | |
1419 7859 7861 7863 7865 7867 7869 7871 7873 7875 | |
1420 7877 7879 7881 7883 7885 7887 7889 7891 7893 | |
1421 7895 7897 7899 7901 7903 7905 7907 7909 7911 | |
1422 7913 7915 7917 7919 7921 7923 7925 7927 7929 | |
1423 | |
1424 (7936 . 7943) | |
1425 (7952 . 7957) | |
1426 (7968 . 7975) | |
1427 (7984 . 7991) | |
1428 (8000 . 8005) | |
1429 (8016 . 8023) | |
1430 (8032 . 8039) | |
1431 (8048 . 8061) | |
1432 (8064 . 8071) | |
1433 (8080 . 8087) | |
1434 (8096 . 8103) | |
1435 (8112 . 8116) | |
1436 (8118 . 8119) | |
1437 8126 | |
1438 (8130 . 8132) | |
1439 (8134 . 8135) | |
1440 (8144 . 8147) | |
1441 (8150 . 8151) | |
1442 (8160 . 8167) | |
1443 (8178 . 8180) | |
1444 (8182 . 8183) | |
1445 8319 8458 | |
1446 (8462 . 8463) | |
1447 8467 8495 8500 8505 | |
1448 (64256 . 64262) | |
1449 (64275 . 64279) | |
1450 (65345 . 65370) | |
1451 (66600 . 66637) | |
1452 (119834 . 119859) | |
1453 (119886 . 119892) | |
1454 (119894 . 119911) | |
1455 (119938 . 119963) | |
1456 (119990 . 119993) | |
1457 119995 | |
1458 (119997 . 120000) | |
1459 (120002 . 120003) | |
1460 (120005 . 120015) | |
1461 (120042 . 120067) | |
1462 (120094 . 120119) | |
1463 (120146 . 120171) | |
1464 (120198 . 120223) | |
1465 (120250 . 120275) | |
1466 (120302 . 120327) | |
1467 (120354 . 120379) | |
1468 (120406 . 120431) | |
1469 (120458 . 120483) | |
1470 (120514 . 120538) | |
1471 (120540 . 120545) | |
1472 (120572 . 120596) | |
1473 (120598 . 120603) | |
1474 (120630 . 120654) | |
1475 (120656 . 120661) | |
1476 (120688 . 120712) | |
1477 (120714 . 120719) | |
1478 (120746 . 120770) | |
1479 (120772 . 120777))) | |
1480 (xsdre-def-primitive-category 'Lt | |
1481 '(453 456 459 498 | |
1482 (8072 . 8079) | |
1483 (8088 . 8095) | |
1484 (8104 . 8111) | |
1485 8124 8140 8188)) | |
1486 (xsdre-def-primitive-category 'Lm | |
1487 '((688 . 696) | |
1488 (699 . 705) | |
1489 (720 . 721) | |
1490 (736 . 740) | |
1491 750 890 1369 1600 | |
1492 (1765 . 1766) | |
1493 3654 3782 6211 12293 | |
1494 (12337 . 12341) | |
1495 (12445 . 12446) | |
1496 (12540 . 12542) | |
1497 65392 | |
1498 (65438 . 65439))) | |
1499 (xsdre-def-primitive-category 'Lo | |
1500 '(443 | |
1501 (448 . 451) | |
1502 (1488 . 1514) | |
1503 (1520 . 1522) | |
1504 (1569 . 1594) | |
1505 (1601 . 1610) | |
1506 (1649 . 1747) | |
1507 1749 | |
1508 (1786 . 1788) | |
1509 1808 | |
1510 (1810 . 1836) | |
1511 (1920 . 1957) | |
1512 (2309 . 2361) | |
1513 2365 2384 | |
1514 (2392 . 2401) | |
1515 (2437 . 2444) | |
1516 (2447 . 2448) | |
1517 (2451 . 2472) | |
1518 (2474 . 2480) | |
1519 2482 | |
1520 (2486 . 2489) | |
1521 (2524 . 2525) | |
1522 (2527 . 2529) | |
1523 (2544 . 2545) | |
1524 (2565 . 2570) | |
1525 (2575 . 2576) | |
1526 (2579 . 2600) | |
1527 (2602 . 2608) | |
1528 (2610 . 2611) | |
1529 (2613 . 2614) | |
1530 (2616 . 2617) | |
1531 (2649 . 2652) | |
1532 2654 | |
1533 (2674 . 2676) | |
1534 (2693 . 2699) | |
1535 2701 | |
1536 (2703 . 2705) | |
1537 (2707 . 2728) | |
1538 (2730 . 2736) | |
1539 (2738 . 2739) | |
1540 (2741 . 2745) | |
1541 2749 2768 2784 | |
1542 (2821 . 2828) | |
1543 (2831 . 2832) | |
1544 (2835 . 2856) | |
1545 (2858 . 2864) | |
1546 (2866 . 2867) | |
1547 (2870 . 2873) | |
1548 2877 | |
1549 (2908 . 2909) | |
1550 (2911 . 2913) | |
1551 (2949 . 2954) | |
1552 (2958 . 2960) | |
1553 (2962 . 2965) | |
1554 (2969 . 2970) | |
1555 2972 | |
1556 (2974 . 2975) | |
1557 (2979 . 2980) | |
1558 (2984 . 2986) | |
1559 (2990 . 2997) | |
1560 (2999 . 3001) | |
1561 (3077 . 3084) | |
1562 (3086 . 3088) | |
1563 (3090 . 3112) | |
1564 (3114 . 3123) | |
1565 (3125 . 3129) | |
1566 (3168 . 3169) | |
1567 (3205 . 3212) | |
1568 (3214 . 3216) | |
1569 (3218 . 3240) | |
1570 (3242 . 3251) | |
1571 (3253 . 3257) | |
1572 3294 | |
1573 (3296 . 3297) | |
1574 (3333 . 3340) | |
1575 (3342 . 3344) | |
1576 (3346 . 3368) | |
1577 (3370 . 3385) | |
1578 (3424 . 3425) | |
1579 (3461 . 3478) | |
1580 (3482 . 3505) | |
1581 (3507 . 3515) | |
1582 3517 | |
1583 (3520 . 3526) | |
1584 (3585 . 3632) | |
1585 (3634 . 3635) | |
1586 (3648 . 3653) | |
1587 (3713 . 3714) | |
1588 3716 | |
1589 (3719 . 3720) | |
1590 3722 3725 | |
1591 (3732 . 3735) | |
1592 (3737 . 3743) | |
1593 (3745 . 3747) | |
1594 3749 3751 | |
1595 (3754 . 3755) | |
1596 (3757 . 3760) | |
1597 (3762 . 3763) | |
1598 3773 | |
1599 (3776 . 3780) | |
1600 (3804 . 3805) | |
1601 3840 | |
1602 (3904 . 3911) | |
1603 (3913 . 3946) | |
1604 (3976 . 3979) | |
1605 (4096 . 4129) | |
1606 (4131 . 4135) | |
1607 (4137 . 4138) | |
1608 (4176 . 4181) | |
1609 (4304 . 4342) | |
1610 (4352 . 4441) | |
1611 (4447 . 4514) | |
1612 (4520 . 4601) | |
1613 (4608 . 4614) | |
1614 (4616 . 4678) | |
1615 4680 | |
1616 (4682 . 4685) | |
1617 (4688 . 4694) | |
1618 4696 | |
1619 (4698 . 4701) | |
1620 (4704 . 4742) | |
1621 4744 | |
1622 (4746 . 4749) | |
1623 (4752 . 4782) | |
1624 4784 | |
1625 (4786 . 4789) | |
1626 (4792 . 4798) | |
1627 4800 | |
1628 (4802 . 4805) | |
1629 (4808 . 4814) | |
1630 (4816 . 4822) | |
1631 (4824 . 4846) | |
1632 (4848 . 4878) | |
1633 4880 | |
1634 (4882 . 4885) | |
1635 (4888 . 4894) | |
1636 (4896 . 4934) | |
1637 (4936 . 4954) | |
1638 (5024 . 5108) | |
1639 (5121 . 5740) | |
1640 (5743 . 5750) | |
1641 (5761 . 5786) | |
1642 (5792 . 5866) | |
1643 (6016 . 6067) | |
1644 (6176 . 6210) | |
1645 (6212 . 6263) | |
1646 (6272 . 6312) | |
1647 (8501 . 8504) | |
1648 12294 | |
1649 (12353 . 12436) | |
1650 (12449 . 12538) | |
1651 (12549 . 12588) | |
1652 (12593 . 12686) | |
1653 (12704 . 12727) | |
1654 (13312 . 19893) | |
1655 (19968 . 40869) | |
1656 (40960 . 42124) | |
1657 (44032 . 55203) | |
1658 (63744 . 64045) | |
1659 64285 | |
1660 (64287 . 64296) | |
1661 (64298 . 64310) | |
1662 (64312 . 64316) | |
1663 64318 | |
1664 (64320 . 64321) | |
1665 (64323 . 64324) | |
1666 (64326 . 64433) | |
1667 (64467 . 64829) | |
1668 (64848 . 64911) | |
1669 (64914 . 64967) | |
1670 (65008 . 65019) | |
1671 (65136 . 65138) | |
1672 65140 | |
1673 (65142 . 65276) | |
1674 (65382 . 65391) | |
1675 (65393 . 65437) | |
1676 (65440 . 65470) | |
1677 (65474 . 65479) | |
1678 (65482 . 65487) | |
1679 (65490 . 65495) | |
1680 (65498 . 65500) | |
1681 (66304 . 66334) | |
1682 (66352 . 66377) | |
1683 (131072 . 173782) | |
1684 (194560 . 195101))) | |
1685 (xsdre-def-primitive-category 'Mn | |
1686 '((768 . 846) | |
1687 (864 . 866) | |
1688 (1155 . 1158) | |
1689 (1425 . 1441) | |
1690 (1443 . 1465) | |
1691 (1467 . 1469) | |
1692 1471 | |
1693 (1473 . 1474) | |
1694 1476 | |
1695 (1611 . 1621) | |
1696 1648 | |
1697 (1750 . 1756) | |
1698 (1759 . 1764) | |
1699 (1767 . 1768) | |
1700 (1770 . 1773) | |
1701 1809 | |
1702 (1840 . 1866) | |
1703 (1958 . 1968) | |
1704 (2305 . 2306) | |
1705 2364 | |
1706 (2369 . 2376) | |
1707 2381 | |
1708 (2385 . 2388) | |
1709 (2402 . 2403) | |
1710 2433 2492 | |
1711 (2497 . 2500) | |
1712 2509 | |
1713 (2530 . 2531) | |
1714 2562 2620 | |
1715 (2625 . 2626) | |
1716 (2631 . 2632) | |
1717 (2635 . 2637) | |
1718 (2672 . 2673) | |
1719 (2689 . 2690) | |
1720 2748 | |
1721 (2753 . 2757) | |
1722 (2759 . 2760) | |
1723 2765 2817 2876 2879 | |
1724 (2881 . 2883) | |
1725 2893 2902 2946 3008 3021 | |
1726 (3134 . 3136) | |
1727 (3142 . 3144) | |
1728 (3146 . 3149) | |
1729 (3157 . 3158) | |
1730 3263 3270 | |
1731 (3276 . 3277) | |
1732 (3393 . 3395) | |
1733 3405 3530 | |
1734 (3538 . 3540) | |
1735 3542 3633 | |
1736 (3636 . 3642) | |
1737 (3655 . 3662) | |
1738 3761 | |
1739 (3764 . 3769) | |
1740 (3771 . 3772) | |
1741 (3784 . 3789) | |
1742 (3864 . 3865) | |
1743 3893 3895 3897 | |
1744 (3953 . 3966) | |
1745 (3968 . 3972) | |
1746 (3974 . 3975) | |
1747 (3984 . 3991) | |
1748 (3993 . 4028) | |
1749 4038 | |
1750 (4141 . 4144) | |
1751 4146 | |
1752 (4150 . 4151) | |
1753 4153 | |
1754 (4184 . 4185) | |
1755 (6071 . 6077) | |
1756 6086 | |
1757 (6089 . 6099) | |
1758 6313 | |
1759 (8400 . 8412) | |
1760 8417 | |
1761 (12330 . 12335) | |
1762 (12441 . 12442) | |
1763 64286 | |
1764 (65056 . 65059) | |
1765 (119143 . 119145) | |
1766 (119163 . 119170) | |
1767 (119173 . 119179) | |
1768 (119210 . 119213))) | |
1769 (xsdre-def-primitive-category 'Mc | |
1770 '(2307 | |
1771 (2366 . 2368) | |
1772 (2377 . 2380) | |
1773 (2434 . 2435) | |
1774 (2494 . 2496) | |
1775 (2503 . 2504) | |
1776 (2507 . 2508) | |
1777 2519 | |
1778 (2622 . 2624) | |
1779 2691 | |
1780 (2750 . 2752) | |
1781 2761 | |
1782 (2763 . 2764) | |
1783 (2818 . 2819) | |
1784 2878 2880 | |
1785 (2887 . 2888) | |
1786 (2891 . 2892) | |
1787 2903 2947 | |
1788 (3006 . 3007) | |
1789 (3009 . 3010) | |
1790 (3014 . 3016) | |
1791 (3018 . 3020) | |
1792 3031 | |
1793 (3073 . 3075) | |
1794 (3137 . 3140) | |
1795 (3202 . 3203) | |
1796 3262 | |
1797 (3264 . 3268) | |
1798 (3271 . 3272) | |
1799 (3274 . 3275) | |
1800 (3285 . 3286) | |
1801 (3330 . 3331) | |
1802 (3390 . 3392) | |
1803 (3398 . 3400) | |
1804 (3402 . 3404) | |
1805 3415 | |
1806 (3458 . 3459) | |
1807 (3535 . 3537) | |
1808 (3544 . 3551) | |
1809 (3570 . 3571) | |
1810 (3902 . 3903) | |
1811 3967 4140 4145 4152 | |
1812 (4182 . 4183) | |
1813 (6068 . 6070) | |
1814 (6078 . 6085) | |
1815 (6087 . 6088) | |
1816 (119141 . 119142) | |
1817 (119149 . 119154))) | |
1818 (xsdre-def-primitive-category 'Me | |
1819 '((1160 . 1161) | |
1820 (1757 . 1758) | |
1821 (8413 . 8416) | |
1822 (8418 . 8419))) | |
1823 (xsdre-def-primitive-category 'Nd | |
1824 '((48 . 57) | |
1825 (1632 . 1641) | |
1826 (1776 . 1785) | |
1827 (2406 . 2415) | |
1828 (2534 . 2543) | |
1829 (2662 . 2671) | |
1830 (2790 . 2799) | |
1831 (2918 . 2927) | |
1832 (3047 . 3055) | |
1833 (3174 . 3183) | |
1834 (3302 . 3311) | |
1835 (3430 . 3439) | |
1836 (3664 . 3673) | |
1837 (3792 . 3801) | |
1838 (3872 . 3881) | |
1839 (4160 . 4169) | |
1840 (4969 . 4977) | |
1841 (6112 . 6121) | |
1842 (6160 . 6169) | |
1843 (65296 . 65305) | |
1844 (120782 . 120831))) | |
1845 (xsdre-def-primitive-category 'Nl | |
1846 '((5870 . 5872) | |
1847 (8544 . 8579) | |
1848 12295 | |
1849 (12321 . 12329) | |
1850 (12344 . 12346) | |
1851 66378)) | |
1852 (xsdre-def-primitive-category 'No | |
1853 '((178 . 179) | |
1854 185 | |
1855 (188 . 190) | |
1856 (2548 . 2553) | |
1857 (3056 . 3058) | |
1858 (3882 . 3891) | |
1859 (4978 . 4988) | |
1860 8304 | |
1861 (8308 . 8313) | |
1862 (8320 . 8329) | |
1863 (8531 . 8543) | |
1864 (9312 . 9371) | |
1865 9450 | |
1866 (10102 . 10131) | |
1867 (12690 . 12693) | |
1868 (12832 . 12841) | |
1869 (12928 . 12937) | |
1870 (66336 . 66339))) | |
1871 (xsdre-def-primitive-category 'Pc | |
1872 '(95 | |
1873 (8255 . 8256) | |
1874 12539 | |
1875 (65075 . 65076) | |
1876 (65101 . 65103) | |
1877 65343 65381)) | |
1878 (xsdre-def-primitive-category 'Pd | |
1879 '(45 173 1418 6150 | |
1880 (8208 . 8213) | |
1881 12316 12336 | |
1882 (65073 . 65074) | |
1883 65112 65123 65293)) | |
1884 (xsdre-def-primitive-category 'Ps | |
1885 '(40 91 123 3898 3900 5787 8218 8222 8261 8317 | |
1886 8333 9001 12296 12298 12300 12302 12304 | |
1887 12308 12310 12312 12314 12317 64830 65077 | |
1888 65079 65081 65083 65085 65087 65089 65091 | |
1889 65113 65115 65117 65288 65339 65371 65378)) | |
1890 (xsdre-def-primitive-category 'Pe | |
1891 '(41 93 125 3899 3901 5788 8262 8318 8334 9002 | |
1892 12297 12299 12301 12303 12305 12309 12311 | |
1893 12313 12315 | |
1894 (12318 . 12319) | |
1895 64831 65078 65080 65082 65084 65086 65088 | |
1896 65090 65092 65114 65116 65118 65289 65341 | |
1897 65373 65379)) | |
1898 (xsdre-def-primitive-category 'Pi | |
1899 '(171 8216 | |
1900 (8219 . 8220) | |
1901 8223 8249)) | |
1902 (xsdre-def-primitive-category 'Pf | |
1903 '(187 8217 8221 8250)) | |
1904 (xsdre-def-primitive-category 'Po | |
1905 '((33 . 35) | |
1906 (37 . 39) | |
1907 42 44 | |
1908 (46 . 47) | |
1909 (58 . 59) | |
1910 (63 . 64) | |
1911 92 161 183 191 894 903 | |
1912 (1370 . 1375) | |
1913 1417 1470 1472 1475 | |
1914 (1523 . 1524) | |
1915 1548 1563 1567 | |
1916 (1642 . 1645) | |
1917 1748 | |
1918 (1792 . 1805) | |
1919 (2404 . 2405) | |
1920 2416 3572 3663 | |
1921 (3674 . 3675) | |
1922 (3844 . 3858) | |
1923 3973 | |
1924 (4170 . 4175) | |
1925 4347 | |
1926 (4961 . 4968) | |
1927 (5741 . 5742) | |
1928 (5867 . 5869) | |
1929 (6100 . 6106) | |
1930 6108 | |
1931 (6144 . 6149) | |
1932 (6151 . 6154) | |
1933 (8214 . 8215) | |
1934 (8224 . 8231) | |
1935 (8240 . 8248) | |
1936 (8251 . 8254) | |
1937 (8257 . 8259) | |
1938 (8264 . 8269) | |
1939 (12289 . 12291) | |
1940 65072 | |
1941 (65097 . 65100) | |
1942 (65104 . 65106) | |
1943 (65108 . 65111) | |
1944 (65119 . 65121) | |
1945 65128 | |
1946 (65130 . 65131) | |
1947 (65281 . 65283) | |
1948 (65285 . 65287) | |
1949 65290 65292 | |
1950 (65294 . 65295) | |
1951 (65306 . 65307) | |
1952 (65311 . 65312) | |
1953 65340 65377 65380)) | |
1954 (xsdre-def-primitive-category 'Zs | |
1955 '(32 160 5760 | |
1956 (8192 . 8203) | |
1957 8239 12288)) | |
1958 (xsdre-def-primitive-category 'Zl | |
1959 '(8232)) | |
1960 (xsdre-def-primitive-category 'Zp | |
1961 '(8233)) | |
1962 (xsdre-def-primitive-category 'Sm | |
1963 '(43 | |
1964 (60 . 62) | |
1965 124 126 172 177 215 247 8260 | |
1966 (8314 . 8316) | |
1967 (8330 . 8332) | |
1968 (8592 . 8596) | |
1969 (8602 . 8603) | |
1970 8608 8611 8614 8622 | |
1971 (8654 . 8655) | |
1972 8658 8660 | |
1973 (8704 . 8945) | |
1974 (8968 . 8971) | |
1975 (8992 . 8993) | |
1976 9655 9665 9839 64297 65122 | |
1977 (65124 . 65126) | |
1978 65291 | |
1979 (65308 . 65310) | |
1980 65372 65374 65506 | |
1981 (65513 . 65516) | |
1982 120513 120539 120571 120597 120629 120655 | |
1983 120687 120713 120745 120771)) | |
1984 (xsdre-def-primitive-category 'Sc | |
1985 '(36 | |
1986 (162 . 165) | |
1987 (2546 . 2547) | |
1988 3647 6107 | |
1989 (8352 . 8367) | |
1990 65129 65284 | |
1991 (65504 . 65505) | |
1992 (65509 . 65510))) | |
1993 (xsdre-def-primitive-category 'Sk | |
1994 '(94 96 168 175 180 184 | |
1995 (697 . 698) | |
1996 (706 . 719) | |
1997 (722 . 735) | |
1998 (741 . 749) | |
1999 (884 . 885) | |
2000 (900 . 901) | |
2001 8125 | |
2002 (8127 . 8129) | |
2003 (8141 . 8143) | |
2004 (8157 . 8159) | |
2005 (8173 . 8175) | |
2006 (8189 . 8190) | |
2007 (12443 . 12444) | |
2008 65342 65344 65507)) | |
2009 (xsdre-def-primitive-category 'So | |
2010 '((166 . 167) | |
2011 169 174 176 182 1154 1769 | |
2012 (1789 . 1790) | |
2013 2554 2928 | |
2014 (3841 . 3843) | |
2015 (3859 . 3863) | |
2016 (3866 . 3871) | |
2017 3892 3894 3896 | |
2018 (4030 . 4037) | |
2019 (4039 . 4044) | |
2020 4047 | |
2021 (8448 . 8449) | |
2022 (8451 . 8454) | |
2023 (8456 . 8457) | |
2024 8468 | |
2025 (8470 . 8472) | |
2026 (8478 . 8483) | |
2027 8485 8487 8489 8494 8498 8506 | |
2028 (8597 . 8601) | |
2029 (8604 . 8607) | |
2030 (8609 . 8610) | |
2031 (8612 . 8613) | |
2032 (8615 . 8621) | |
2033 (8623 . 8653) | |
2034 (8656 . 8657) | |
2035 8659 | |
2036 (8661 . 8691) | |
2037 (8960 . 8967) | |
2038 (8972 . 8991) | |
2039 (8994 . 9000) | |
2040 (9003 . 9083) | |
2041 (9085 . 9114) | |
2042 (9216 . 9254) | |
2043 (9280 . 9290) | |
2044 (9372 . 9449) | |
2045 (9472 . 9621) | |
2046 (9632 . 9654) | |
2047 (9656 . 9664) | |
2048 (9666 . 9719) | |
2049 (9728 . 9747) | |
2050 (9753 . 9838) | |
2051 (9840 . 9841) | |
2052 (9985 . 9988) | |
2053 (9990 . 9993) | |
2054 (9996 . 10023) | |
2055 (10025 . 10059) | |
2056 10061 | |
2057 (10063 . 10066) | |
2058 10070 | |
2059 (10072 . 10078) | |
2060 (10081 . 10087) | |
2061 10132 | |
2062 (10136 . 10159) | |
2063 (10161 . 10174) | |
2064 (10240 . 10495) | |
2065 (11904 . 11929) | |
2066 (11931 . 12019) | |
2067 (12032 . 12245) | |
2068 (12272 . 12283) | |
2069 12292 | |
2070 (12306 . 12307) | |
2071 12320 | |
2072 (12342 . 12343) | |
2073 (12350 . 12351) | |
2074 (12688 . 12689) | |
2075 (12694 . 12703) | |
2076 (12800 . 12828) | |
2077 (12842 . 12867) | |
2078 (12896 . 12923) | |
2079 12927 | |
2080 (12938 . 12976) | |
2081 (12992 . 13003) | |
2082 (13008 . 13054) | |
2083 (13056 . 13174) | |
2084 (13179 . 13277) | |
2085 (13280 . 13310) | |
2086 (42128 . 42145) | |
2087 (42148 . 42163) | |
2088 (42165 . 42176) | |
2089 (42178 . 42180) | |
2090 42182 65508 65512 | |
2091 (65517 . 65518) | |
2092 (65532 . 65533) | |
2093 (118784 . 119029) | |
2094 (119040 . 119078) | |
2095 (119082 . 119140) | |
2096 (119146 . 119148) | |
2097 (119171 . 119172) | |
2098 (119180 . 119209) | |
2099 (119214 . 119261))) | |
2100 (xsdre-def-primitive-category 'Cc | |
2101 '((0 . 31) | |
2102 (127 . 159))) | |
2103 (xsdre-def-primitive-category 'Cf | |
2104 '(1807 | |
2105 (6155 . 6158) | |
2106 (8204 . 8207) | |
2107 (8234 . 8238) | |
2108 (8298 . 8303) | |
2109 65279 | |
2110 (65529 . 65531) | |
2111 (119155 . 119162) | |
2112 917505 | |
2113 (917536 . 917631))) | |
2114 (xsdre-def-primitive-category 'Co | |
2115 '((57344 . 63743) | |
2116 (983040 . 1048573) | |
2117 (1048576 . 1114109))) | |
2118 | |
2119 (provide 'xsd-regexp) | |
2120 | |
86379 | 2121 ;; arch-tag: bf990d61-a26c-4fd3-b578-56a5640729da |
86361 | 2122 ;;; xsd-regexp.el ends here |