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