annotate lisp/progmodes/ebnf-dtd.el @ 63308:51d38cfbe542

Warn about using "cvs up -kb" if one intends to commit changes. Add a pointer to another site with detailed configure and build instructions. Suggest to look at config.log when configure fails. Add MinGW Make 3.80 to the list of successful combinations.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 11 Jun 2005 11:31:29 +0000
parents 87f9bb9d3718
children feac886f9929 4da4a09e8b1b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
54712
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1 ;;; ebnf-dtd.el --- parser for DTD (Data Type Description for XML)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
2
60917
87f9bb9d3718 * progmodes/ebnf-abn.el, progmodes/ebnf-bnf.el,
Werner LEMBERG <wl@gnu.org>
parents: 54713
diff changeset
3 ;; Copyright (C) 2004, 2005 Free Sofware Foundation, Inc.
54712
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
4
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
5 ;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
6 ;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
7 ;; Time-stamp: <2004/04/04 21:50:16 vinicius>
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
8 ;; Keywords: wp, ebnf, PostScript
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
9 ;; Version: 1.0
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
10
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
11 ;; This file is part of GNU Emacs.
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
12
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
13 ;; GNU Emacs is free software; you can redistribute it and/or modify
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
14 ;; it under the terms of the GNU General Public License as published by
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
15 ;; the Free Software Foundation; either version 2, or (at your option)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
16 ;; any later version.
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
17
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
18 ;; GNU Emacs is distributed in the hope that it will be useful,
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
21 ;; GNU General Public License for more details.
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
22
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
23 ;; You should have received a copy of the GNU General Public License
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
24 ;; along with GNU Emacs; see the file COPYING. If not, write to the
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
25 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
26 ;; Boston, MA 02111-1307, USA.
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
27
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
28 ;;; Commentary:
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
29
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
30 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
31 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
32 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
33 ;; This is part of ebnf2ps package.
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
34 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
35 ;; This package defines a parser for DTD (Data Type Description for XML).
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
36 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
37 ;; See ebnf2ps.el for documentation.
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
38 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
39 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
40 ;; DTD Syntax
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
41 ;; ----------
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
42 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
43 ;; See the URLs:
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
44 ;; `http://www.w3.org/TR/2004/REC-xml-20040204/'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
45 ;; (Extensible Markup Language (XML) 1.0 (Third Edition))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
46 ;; `http://www.w3.org/TR/html40/'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
47 ;; (HTML 4.01 Specification)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
48 ;; `http://www.w3.org/TR/NOTE-html-970421'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
49 ;; (HTML DTD with support for Style Sheets)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
50 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
51 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
52 ;; /* Document */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
53 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
54 ;; document ::= prolog element Misc*
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
55 ;; /* Note that *only* the prolog will be parsed */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
56 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
57 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
58 ;; /* Characters */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
59 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
60 ;; Char ::= #x9 | #xA | #xD
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
61 ;; | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
62 ;; /* any Unicode character, excluding the surrogate blocks, FFFE, and FFFF. */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
63 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
64 ;; /* NOTE:
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
65 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
66 ;; Document authors are encouraged to avoid "compatibility characters", as
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
67 ;; defined in section 6.8 of [Unicode] (see also D21 in section 3.6 of
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
68 ;; [Unicode3]). The characters defined in the following ranges are also
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
69 ;; discouraged. They are either control characters or permanently undefined
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
70 ;; Unicode characters:
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
71 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
72 ;; [#x7F-#x84], [#x86-#x9F], [#xFDD0-#xFDDF],
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
73 ;; [#1FFFE-#x1FFFF], [#2FFFE-#x2FFFF], [#3FFFE-#x3FFFF],
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
74 ;; [#4FFFE-#x4FFFF], [#5FFFE-#x5FFFF], [#6FFFE-#x6FFFF],
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
75 ;; [#7FFFE-#x7FFFF], [#8FFFE-#x8FFFF], [#9FFFE-#x9FFFF],
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
76 ;; [#AFFFE-#xAFFFF], [#BFFFE-#xBFFFF], [#CFFFE-#xCFFFF],
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
77 ;; [#DFFFE-#xDFFFF], [#EFFFE-#xEFFFF], [#FFFFE-#xFFFFF],
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
78 ;; [#10FFFE-#x10FFFF]. */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
79 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
80 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
81 ;; /* White Space */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
82 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
83 ;; S ::= (#x20 | #x9 | #xD | #xA)+
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
84 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
85 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
86 ;; /* Names and Tokens */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
87 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
88 ;; NameChar ::= Letter | Digit | '.' | '-' | '_' | ':'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
89 ;; | CombiningChar | Extender
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
90 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
91 ;; Name ::= (Letter | '_' | ':') (NameChar)*
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
92 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
93 ;; Names ::= Name (#x20 Name)*
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
94 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
95 ;; Nmtoken ::= (NameChar)+
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
96 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
97 ;; Nmtokens ::= Nmtoken (#x20 Nmtoken)*
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
98 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
99 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
100 ;; /* Literals */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
101 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
102 ;; EntityValue ::= '"' ([^%&"] | PEReference | Reference)* '"'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
103 ;; | "'" ([^%&'] | PEReference | Reference)* "'"
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
104 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
105 ;; AttValue ::= '"' ([^<&"] | Reference)* '"'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
106 ;; | "'" ([^<&'] | Reference)* "'"
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
107 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
108 ;; SystemLiteral ::= ('"' [^"]* '"')
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
109 ;; | ("'" [^']* "'")
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
110 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
111 ;; PubidLiteral ::= '"' PubidChar* '"'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
112 ;; | "'" (PubidChar - "'")* "'"
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
113 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
114 ;; PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | [-'()+,./:=?;!*#@$_%]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
115 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
116 ;; /* NOTE:
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
117 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
118 ;; Although the EntityValue production allows the definition of a general
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
119 ;; entity consisting of a single explicit < in the literal (e.g., <!ENTITY
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
120 ;; mylt "<">), it is strongly advised to avoid this practice since any
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
121 ;; reference to that entity will cause a well-formedness error. */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
122 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
123 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
124 ;; /* Character Data */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
125 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
126 ;; CharData ::= [^<&]* - ([^<&]* ']]>' [^<&]*)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
127 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
128 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
129 ;; /* Comments */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
130 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
131 ;; Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
132 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
133 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
134 ;; /* Processing Instructions */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
135 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
136 ;; PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
137 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
138 ;; PITarget ::= Name - (('X' | 'x') ('M' | 'm') ('L' | 'l'))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
139 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
140 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
141 ;; /* CDATA Sections */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
142 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
143 ;; CDSect ::= CDStart CData CDEnd
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
144 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
145 ;; CDStart ::= '<![CDATA['
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
146 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
147 ;; CData ::= (Char* - (Char* ']]>' Char*))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
148 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
149 ;; CDEnd ::= ']]>'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
150 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
151 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
152 ;; /* Prolog */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
153 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
154 ;; prolog ::= XMLDecl? Misc* (doctypedecl Misc*)?
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
155 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
156 ;; XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
157 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
158 ;; VersionInfo ::= S 'version' Eq ("'" VersionNum "'" | '"' VersionNum '"')
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
159 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
160 ;; Eq ::= S? '=' S?
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
161 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
162 ;; VersionNum ::= '1.0'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
163 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
164 ;; Misc ::= Comment | PI | S
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
165 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
166 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
167 ;; /* Document Type Definition */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
168 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
169 ;; doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S?
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
170 ;; ('[' intSubset ']' S?)? '>'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
171 ;; [VC: Root Element Type]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
172 ;; [WFC: External Subset]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
173 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
174 ;; DeclSep ::= PEReference | S
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
175 ;; [WFC: PE Between Declarations]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
176 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
177 ;; intSubset ::= (markupdecl | DeclSep)*
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
178 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
179 ;; markupdecl ::= elementdecl | AttlistDecl | EntityDecl
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
180 ;; | NotationDecl | PI | Comment
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
181 ;; [VC: Proper Declaration/PE Nesting]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
182 ;; [WFC: PEs in Internal Subset]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
183 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
184 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
185 ;; /* External Subset */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
186 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
187 ;; extSubset ::= TextDecl? extSubsetDecl
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
188 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
189 ;; extSubsetDecl ::= ( markupdecl | conditionalSect | DeclSep)*
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
190 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
191 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
192 ;; /* Standalone Document Declaration */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
193 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
194 ;; SDDecl ::= S 'standalone' Eq
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
195 ;; (("'" ('yes' | 'no') "'") | ('"' ('yes' | 'no') '"'))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
196 ;; [VC: Standalone Document Declaration]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
197 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
198 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
199 ;; /* Element */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
200 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
201 ;; element ::= EmptyElemTag | STag content ETag
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
202 ;; [WFC: Element Type Match]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
203 ;; [VC: Element Valid]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
204 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
205 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
206 ;; /* Start-tag */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
207 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
208 ;; STag ::= '<' Name (S Attribute)* S? '>'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
209 ;; [WFC: Unique Att Spec]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
210 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
211 ;; Attribute ::= Name Eq AttValue
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
212 ;; [VC: Attribute Value Type]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
213 ;; [WFC: No External Entity References]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
214 ;; [WFC: No < in Attribute Values]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
215 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
216 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
217 ;; /* End-tag */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
218 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
219 ;; ETag ::= '</' Name S? '>'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
220 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
221 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
222 ;; /* Content of Elements */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
223 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
224 ;; content ::= CharData?
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
225 ;; ((element | Reference | CDSect | PI | Comment) CharData?)*
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
226 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
227 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
228 ;; /* Tags for Empty Elements */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
229 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
230 ;; EmptyElemTag ::= '<' Name (S Attribute)* S? '/>'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
231 ;; [WFC: Unique Att Spec]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
232 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
233 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
234 ;; /* Element Type Declaration */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
235 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
236 ;; elementdecl ::= '<!ELEMENT' S Name S contentspec S? '>'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
237 ;; [VC: Unique Element Type Declaration]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
238 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
239 ;; contentspec ::= 'EMPTY' | 'ANY' | Mixed | children
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
240 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
241 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
242 ;; /* Element-content Models */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
243 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
244 ;; children ::= (choice | seq) ('?' | '*' | '+')?
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
245 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
246 ;; cp ::= (Name | choice | seq) ('?' | '*' | '+')?
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
247 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
248 ;; choice ::= '(' S? cp ( S? '|' S? cp )+ S? ')'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
249 ;; [VC: Proper Group/PE Nesting]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
250 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
251 ;; seq ::= '(' S? cp ( S? ',' S? cp )* S? ')'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
252 ;; [VC: Proper Group/PE Nesting]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
253 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
254 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
255 ;; /* Mixed-content Declaration */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
256 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
257 ;; Mixed ::= '(' S? '#PCDATA' (S? '|' S? Name)* S? ')*'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
258 ;; | '(' S? '#PCDATA' S? ')'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
259 ;; [VC: Proper Group/PE Nesting]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
260 ;; [VC: No Duplicate Types]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
261 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
262 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
263 ;; /* Attribute-list Declaration */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
264 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
265 ;; AttlistDecl ::= '<!ATTLIST' S Name AttDef* S? '>'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
266 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
267 ;; AttDef ::= S Name S AttType S DefaultDecl
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
268 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
269 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
270 ;; /* Attribute Types */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
271 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
272 ;; AttType ::= StringType | TokenizedType | EnumeratedType
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
273 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
274 ;; StringType ::= 'CDATA'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
275 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
276 ;; TokenizedType ::= 'ID' [VC: ID]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
277 ;; [VC: One ID per Element Type]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
278 ;; [VC: ID Attribute Default]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
279 ;; | 'IDREF' [VC: IDREF]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
280 ;; | 'IDREFS' [VC: IDREF]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
281 ;; | 'ENTITY' [VC: Entity Name]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
282 ;; | 'ENTITIES' [VC: Entity Name]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
283 ;; | 'NMTOKEN' [VC: Name Token]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
284 ;; | 'NMTOKENS' [VC: Name Token]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
285 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
286 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
287 ;; /* Enumerated Attribute Types */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
288 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
289 ;; EnumeratedType ::= NotationType | Enumeration
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
290 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
291 ;; NotationType ::= 'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
292 ;; [VC: Notation Attributes]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
293 ;; [VC: One Notation Per Element Type]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
294 ;; [VC: No Notation on Empty Element]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
295 ;; [VC: No Duplicate Tokens]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
296 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
297 ;; Enumeration ::= '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
298 ;; [VC: Enumeration]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
299 ;; [VC: No Duplicate Tokens]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
300 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
301 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
302 ;; /* Attribute Defaults */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
303 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
304 ;; DefaultDecl ::= '#REQUIRED' | '#IMPLIED'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
305 ;; | (('#FIXED' S)? AttValue)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
306 ;; [VC: Required Attribute]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
307 ;; [VC: Attribute Default Value Syntactically Correct]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
308 ;; [WFC: No < in Attribute Values]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
309 ;; [VC: Fixed Attribute Default]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
310 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
311 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
312 ;; /* Conditional Section */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
313 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
314 ;; conditionalSect ::= includeSect | ignoreSect
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
315 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
316 ;; includeSect ::= '<![' S? 'INCLUDE' S? '[' extSubsetDecl ']]>'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
317 ;; [VC: Proper Conditional Section/PE Nesting]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
318 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
319 ;; ignoreSect ::= '<![' S? 'IGNORE' S? '[' ignoreSectContents* ']]>'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
320 ;; [VC: Proper Conditional Section/PE Nesting]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
321 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
322 ;; ignoreSectContents ::= Ignore ('<![' ignoreSectContents ']]>' Ignore)*
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
323 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
324 ;; Ignore ::= Char* - (Char* ('<![' | ']]>') Char*)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
325 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
326 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
327 ;; /* Character Reference */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
328 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
329 ;; CharRef ::= '&#' [0-9]+ ';'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
330 ;; | '&#x' [0-9a-fA-F]+ ';'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
331 ;; [WFC: Legal Character]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
332 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
333 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
334 ;; /* Entity Reference */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
335 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
336 ;; Reference ::= EntityRef | CharRef
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
337 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
338 ;; EntityRef ::= '&' Name ';'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
339 ;; [WFC: Entity Declared]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
340 ;; [VC: Entity Declared]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
341 ;; [WFC: Parsed Entity]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
342 ;; [WFC: No Recursion]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
343 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
344 ;; PEReference ::= '%' Name ';'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
345 ;; [VC: Entity Declared]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
346 ;; [WFC: No Recursion]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
347 ;; [WFC: In DTD]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
348 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
349 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
350 ;; /* Entity Declaration */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
351 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
352 ;; EntityDecl ::= GEDecl | PEDecl
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
353 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
354 ;; GEDecl ::= '<!ENTITY' S Name S EntityDef S? '>'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
355 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
356 ;; PEDecl ::= '<!ENTITY' S '%' S Name S PEDef S? '>'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
357 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
358 ;; EntityDef ::= EntityValue | (ExternalID NDataDecl?)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
359 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
360 ;; PEDef ::= EntityValue | ExternalID
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
361 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
362 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
363 ;; /* External Entity Declaration */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
364 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
365 ;; ExternalID ::= 'SYSTEM' S SystemLiteral
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
366 ;; | 'PUBLIC' S PubidLiteral S SystemLiteral
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
367 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
368 ;; NDataDecl ::= S 'NDATA' S Name
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
369 ;; [VC: Notation Declared]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
370 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
371 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
372 ;; /* Text Declaration */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
373 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
374 ;; TextDecl ::= '<?xml' VersionInfo? EncodingDecl S? '?>'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
375 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
376 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
377 ;; /* Well-Formed External Parsed Entity */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
378 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
379 ;; extParsedEnt ::= TextDecl? content
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
380 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
381 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
382 ;; /* Encoding Declaration */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
383 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
384 ;; EncodingDecl ::= S 'encoding' Eq ('"' EncName '"' | "'" EncName "'" )
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
385 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
386 ;; EncName ::= [A-Za-z] ([A-Za-z0-9._] | '-')*
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
387 ;; /* Encoding name contains only Latin characters */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
388 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
389 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
390 ;; /* Notation Declarations */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
391 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
392 ;; NotationDecl ::= '<!NOTATION' S Name S (ExternalID | PublicID) S? '>'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
393 ;; [VC: Unique Notation Name]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
394 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
395 ;; PublicID ::= 'PUBLIC' S PubidLiteral
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
396 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
397 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
398 ;; /* Characters */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
399 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
400 ;; Letter ::= BaseChar | Ideographic
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
401 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
402 ;; BaseChar ::= [#x0041-#x005A] | [#x0061-#x007A] | [#x00C0-#x00D6]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
403 ;; | [#x00D8-#x00F6] | [#x00F8-#x00FF] | [#x0100-#x0131]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
404 ;; | [#x0134-#x013E] | [#x0141-#x0148] | [#x014A-#x017E]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
405 ;; | [#x0180-#x01C3] | [#x01CD-#x01F0] | [#x01F4-#x01F5]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
406 ;; | [#x01FA-#x0217] | [#x0250-#x02A8] | [#x02BB-#x02C1]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
407 ;; | #x0386 | [#x0388-#x038A] | #x038C
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
408 ;; | [#x038E-#x03A1] | [#x03A3-#x03CE] | [#x03D0-#x03D6]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
409 ;; | #x03DA | #x03DC | #x03DE
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
410 ;; | #x03E0 | [#x03E2-#x03F3] | [#x0401-#x040C]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
411 ;; | [#x040E-#x044F] | [#x0451-#x045C] | [#x045E-#x0481]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
412 ;; | [#x0490-#x04C4] | [#x04C7-#x04C8] | [#x04CB-#x04CC]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
413 ;; | [#x04D0-#x04EB] | [#x04EE-#x04F5] | [#x04F8-#x04F9]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
414 ;; | [#x0531-#x0556] | #x0559 | [#x0561-#x0586]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
415 ;; | [#x05D0-#x05EA] | [#x05F0-#x05F2] | [#x0621-#x063A]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
416 ;; | [#x0641-#x064A] | [#x0671-#x06B7] | [#x06BA-#x06BE]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
417 ;; | [#x06C0-#x06CE] | [#x06D0-#x06D3] | #x06D5
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
418 ;; | [#x06E5-#x06E6] | [#x0905-#x0939] | #x093D
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
419 ;; | [#x0958-#x0961] | [#x0985-#x098C] | [#x098F-#x0990]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
420 ;; | [#x0993-#x09A8] | [#x09AA-#x09B0] | #x09B2
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
421 ;; | [#x09B6-#x09B9] | [#x09DC-#x09DD] | [#x09DF-#x09E1]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
422 ;; | [#x09F0-#x09F1] | [#x0A05-#x0A0A] | [#x0A0F-#x0A10]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
423 ;; | [#x0A13-#x0A28] | [#x0A2A-#x0A30] | [#x0A32-#x0A33]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
424 ;; | [#x0A35-#x0A36] | [#x0A38-#x0A39] | [#x0A59-#x0A5C]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
425 ;; | #x0A5E | [#x0A72-#x0A74] | [#x0A85-#x0A8B]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
426 ;; | #x0A8D | [#x0A8F-#x0A91] | [#x0A93-#x0AA8]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
427 ;; | [#x0AAA-#x0AB0] | [#x0AB2-#x0AB3] | [#x0AB5-#x0AB9]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
428 ;; | #x0ABD | #x0AE0 | [#x0B05-#x0B0C]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
429 ;; | [#x0B0F-#x0B10] | [#x0B13-#x0B28] | [#x0B2A-#x0B30]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
430 ;; | [#x0B32-#x0B33] | [#x0B36-#x0B39] | #x0B3D
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
431 ;; | [#x0B5C-#x0B5D] | [#x0B5F-#x0B61] | [#x0B85-#x0B8A]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
432 ;; | [#x0B8E-#x0B90] | [#x0B92-#x0B95] | [#x0B99-#x0B9A]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
433 ;; | #x0B9C | [#x0B9E-#x0B9F] | [#x0BA3-#x0BA4]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
434 ;; | [#x0BA8-#x0BAA] | [#x0BAE-#x0BB5] | [#x0BB7-#x0BB9]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
435 ;; | [#x0C05-#x0C0C] | [#x0C0E-#x0C10] | [#x0C12-#x0C28]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
436 ;; | [#x0C2A-#x0C33] | [#x0C35-#x0C39] | [#x0C60-#x0C61]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
437 ;; | [#x0C85-#x0C8C] | [#x0C8E-#x0C90] | [#x0C92-#x0CA8]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
438 ;; | [#x0CAA-#x0CB3] | [#x0CB5-#x0CB9] | #x0CDE
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
439 ;; | [#x0CE0-#x0CE1] | [#x0D05-#x0D0C] | [#x0D0E-#x0D10]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
440 ;; | [#x0D12-#x0D28] | [#x0D2A-#x0D39] | [#x0D60-#x0D61]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
441 ;; | [#x0E01-#x0E2E] | #x0E30 | [#x0E32-#x0E33]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
442 ;; | [#x0E40-#x0E45] | [#x0E81-#x0E82] | #x0E84
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
443 ;; | [#x0E87-#x0E88] | #x0E8A | #x0E8D
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
444 ;; | [#x0E94-#x0E97] | [#x0E99-#x0E9F] | [#x0EA1-#x0EA3]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
445 ;; | #x0EA5 | #x0EA7 | [#x0EAA-#x0EAB]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
446 ;; | [#x0EAD-#x0EAE] | #x0EB0 | [#x0EB2-#x0EB3]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
447 ;; | #x0EBD | [#x0EC0-#x0EC4] | [#x0F40-#x0F47]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
448 ;; | [#x0F49-#x0F69] | [#x10A0-#x10C5] | [#x10D0-#x10F6]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
449 ;; | #x1100 | [#x1102-#x1103] | [#x1105-#x1107]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
450 ;; | #x1109 | [#x110B-#x110C] | [#x110E-#x1112]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
451 ;; | #x113C | #x113E | #x1140
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
452 ;; | #x114C | #x114E | #x1150
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
453 ;; | [#x1154-#x1155] | #x1159 | [#x115F-#x1161]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
454 ;; | #x1163 | #x1165 | #x1167
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
455 ;; | #x1169 | [#x116D-#x116E] | [#x1172-#x1173]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
456 ;; | #x1175 | #x119E | #x11A8
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
457 ;; | #x11AB | [#x11AE-#x11AF] | [#x11B7-#x11B8]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
458 ;; | #x11BA | [#x11BC-#x11C2] | #x11EB
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
459 ;; | #x11F0 | #x11F9 | [#x1E00-#x1E9B]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
460 ;; | [#x1EA0-#x1EF9] | [#x1F00-#x1F15] | [#x1F18-#x1F1D]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
461 ;; | [#x1F20-#x1F45] | [#x1F48-#x1F4D] | [#x1F50-#x1F57]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
462 ;; | #x1F59 | #x1F5B | #x1F5D
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
463 ;; | [#x1F5F-#x1F7D] | [#x1F80-#x1FB4] | [#x1FB6-#x1FBC]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
464 ;; | #x1FBE | [#x1FC2-#x1FC4] | [#x1FC6-#x1FCC]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
465 ;; | [#x1FD0-#x1FD3] | [#x1FD6-#x1FDB] | [#x1FE0-#x1FEC]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
466 ;; | [#x1FF2-#x1FF4] | [#x1FF6-#x1FFC] | #x2126
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
467 ;; | [#x212A-#x212B] | #x212E | [#x2180-#x2182]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
468 ;; | [#x3041-#x3094] | [#x30A1-#x30FA] | [#x3105-#x312C]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
469 ;; | [#xAC00-#xD7A3]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
470 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
471 ;; Ideographic ::= [#x4E00-#x9FA5] | #x3007 | [#x3021-#x3029]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
472 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
473 ;; CombiningChar ::= [#x0300-#x0345] | [#x0360-#x0361] | [#x0483-#x0486]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
474 ;; | [#x0591-#x05A1] | [#x05A3-#x05B9] | [#x05BB-#x05BD]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
475 ;; | #x05BF | [#x05C1-#x05C2] | #x05C4
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
476 ;; | [#x064B-#x0652] | #x0670 | [#x06D6-#x06DC]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
477 ;; | [#x06DD-#x06DF] | [#x06E0-#x06E4] | [#x06E7-#x06E8]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
478 ;; | [#x06EA-#x06ED] | [#x0901-#x0903] | #x093C
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
479 ;; | [#x093E-#x094C] | #x094D | [#x0951-#x0954]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
480 ;; | [#x0962-#x0963] | [#x0981-#x0983] | #x09BC
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
481 ;; | #x09BE | #x09BF | [#x09C0-#x09C4]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
482 ;; | [#x09C7-#x09C8] | [#x09CB-#x09CD] | #x09D7
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
483 ;; | [#x09E2-#x09E3] | #x0A02 | #x0A3C
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
484 ;; | #x0A3E | #x0A3F | [#x0A40-#x0A42]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
485 ;; | [#x0A47-#x0A48] | [#x0A4B-#x0A4D] | [#x0A70-#x0A71]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
486 ;; | [#x0A81-#x0A83] | #x0ABC | [#x0ABE-#x0AC5]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
487 ;; | [#x0AC7-#x0AC9] | [#x0ACB-#x0ACD] | [#x0B01-#x0B03]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
488 ;; | #x0B3C | [#x0B3E-#x0B43] | [#x0B47-#x0B48]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
489 ;; | [#x0B4B-#x0B4D] | [#x0B56-#x0B57] | [#x0B82-#x0B83]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
490 ;; | [#x0BBE-#x0BC2] | [#x0BC6-#x0BC8] | [#x0BCA-#x0BCD]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
491 ;; | #x0BD7 | [#x0C01-#x0C03] | [#x0C3E-#x0C44]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
492 ;; | [#x0C46-#x0C48] | [#x0C4A-#x0C4D] | [#x0C55-#x0C56]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
493 ;; | [#x0C82-#x0C83] | [#x0CBE-#x0CC4] | [#x0CC6-#x0CC8]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
494 ;; | [#x0CCA-#x0CCD] | [#x0CD5-#x0CD6] | [#x0D02-#x0D03]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
495 ;; | [#x0D3E-#x0D43] | [#x0D46-#x0D48] | [#x0D4A-#x0D4D]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
496 ;; | #x0D57 | #x0E31 | [#x0E34-#x0E3A]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
497 ;; | [#x0E47-#x0E4E] | #x0EB1 | [#x0EB4-#x0EB9]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
498 ;; | [#x0EBB-#x0EBC] | [#x0EC8-#x0ECD] | [#x0F18-#x0F19]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
499 ;; | #x0F35 | #x0F37 | #x0F39
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
500 ;; | #x0F3E | #x0F3F | [#x0F71-#x0F84]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
501 ;; | [#x0F86-#x0F8B] | [#x0F90-#x0F95] | #x0F97
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
502 ;; | [#x0F99-#x0FAD] | [#x0FB1-#x0FB7] | #x0FB9
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
503 ;; | [#x20D0-#x20DC] | #x20E1 | [#x302A-#x302F]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
504 ;; | #x3099 | #x309A
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
505 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
506 ;; Digit ::= [#x0030-#x0039] | [#x0660-#x0669] | [#x06F0-#x06F9]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
507 ;; | [#x0966-#x096F] | [#x09E6-#x09EF] | [#x0A66-#x0A6F]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
508 ;; | [#x0AE6-#x0AEF] | [#x0B66-#x0B6F] | [#x0BE7-#x0BEF]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
509 ;; | [#x0C66-#x0C6F] | [#x0CE6-#x0CEF] | [#x0D66-#x0D6F]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
510 ;; | [#x0E50-#x0E59] | [#x0ED0-#x0ED9] | [#x0F20-#x0F29]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
511 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
512 ;; Extender ::= #x00B7 | #x02D0 | #x02D1 | #x0387 | #x0640 | #x0E46 | #x0EC6
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
513 ;; | #x3005 | [#x3031-#x3035] | [#x309D-#x309E] | [#x30FC-#x30FE]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
514 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
515 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
516 ;; NOTES
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
517 ;; -----
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
518 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
519 ;; At moment, only the `<!ELEMENT' generates a syntactic chart. The
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
520 ;; `<!ATTLIST', `<!NOTATION' and `<!ENTITY' are syntacticly checked but they
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
521 ;; don't generate a syntactic chart.
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
522 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
523 ;; Besides the syntax above, ebnf-dtd also accepts a `pure' dtd file. An
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
524 ;; example of a `pure' dtd file is:
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
525 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
526 ;; <?xml version="1.0" encoding="UTF-8"?>
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
527 ;; <!--
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
528 ;; The main element.
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
529 ;; -->
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
530 ;; <!ELEMENT workflow (registers?, trigger-functions?, initial-actions,
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
531 ;; steps, splits?, joins?)>
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
532 ;; <!--
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
533 ;; An action that can be executed (id must be unique among actions for
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
534 ;; the enclosing step).
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
535 ;; Used in: actions
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
536 ;; -->
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
537 ;; <!ELEMENT action (restrict-to, validators?, pre-functions?, results,
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
538 ;; post-functions?)>
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
539 ;; <!ATTLIST action
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
540 ;; id CDATA #REQUIRED
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
541 ;; name CDATA #REQUIRED
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
542 ;; >
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
543 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
544 ;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
545 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
546
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
547 ;;; Code:
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
548
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
549
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
550 (require 'ebnf-otz)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
551
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
552
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
553 (defvar ebnf-dtd-lex nil
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
554 "Value returned by `ebnf-dtd-lex' function.")
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
555
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
556
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
557 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
558 ;; Syntactic analyzer
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
559
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
560
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
561 ;;; document ::= prolog element Misc*
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
562 ;;; /* Note that *only* the prolog will be parsed */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
563
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
564 (defun ebnf-dtd-parser (start)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
565 "DTD parser."
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
566 (let ((total (+ (- ebnf-limit start) 1))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
567 (bias (1- start))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
568 (origin (point))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
569 rule-list token rule the-end)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
570 (goto-char start)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
571 (setq token (ebnf-dtd-lex))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
572 (and (eq token 'end-of-input)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
573 (error "Empty DTD file"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
574 (setq token (ebnf-dtd-prolog token))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
575 (unless (eq (car token) 'end-prolog)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
576 (setq the-end (cdr token)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
577 token (car token))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
578 (while (not (eq token the-end))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
579 (ebnf-message-float
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
580 "Parsing...%s%%"
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
581 (/ (* (- (point) bias) 100.0) total))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
582 (setq token (ebnf-dtd-intsubset token)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
583 rule (cdr token)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
584 token (car token))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
585 (or (null rule)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
586 (ebnf-add-empty-rule-list rule)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
587 (setq rule-list (cons rule rule-list))))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
588 (or (eq the-end 'end-of-input)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
589 (eq (ebnf-dtd-lex) 'end-decl)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
590 (error "Missing end of DOCTYPE"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
591 ;; adjust message, 'cause *only* prolog will be parsed
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
592 (ebnf-message-float "Parsing...%s%%" 100.0))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
593 (goto-char origin)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
594 rule-list))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
595
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
596
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
597 ;;; prolog ::= XMLDecl? Misc* (doctypedecl Misc*)?
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
598 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
599 ;;; XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
600 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
601 ;;; VersionInfo ::= S 'version' Eq ("'" VersionNum "'" | '"' VersionNum '"')
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
602 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
603 ;;; Eq ::= S? '=' S?
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
604 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
605 ;;; VersionNum ::= '1.0'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
606 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
607 ;;; Misc ::= Comment | PI | S
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
608 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
609 ;;; EncodingDecl ::= S 'encoding' Eq ('"' EncName '"' | "'" EncName "'" )
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
610 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
611 ;;; EncName ::= [A-Za-z] ([-A-Za-z0-9._])*
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
612 ;;; /* Encoding name contains only Latin characters */
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
613 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
614 ;;; SDDecl ::= S 'standalone' Eq
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
615 ;;; (("'" ('yes' | 'no') "'") | ('"' ('yes' | 'no') '"'))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
616 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
617 ;;; doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S?
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
618 ;;; ('[' intSubset ']' S?)? '>'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
619
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
620
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
621 (defun ebnf-dtd-prolog (token)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
622 (when (and (eq token 'begin-pi) (string= ebnf-dtd-lex "xml"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
623 ;; version = "1.0"
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
624 (setq token (ebnf-dtd-attribute (ebnf-dtd-lex) 'version-attr
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
625 "^1\\.0$" "XML version"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
626 ;; ( encoding = "encoding name" )?
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
627 (setq token (ebnf-dtd-attribute-optional
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
628 token 'encoding-attr
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
629 "^[A-Za-z][-A-Za-z0-9._]*$" "XML encoding"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
630 ;; ( standalone = ( "yes" | "no" ) )?
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
631 (setq token (ebnf-dtd-attribute-optional
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
632 token 'standalone-attr
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
633 "^yes|no$" "XML standalone"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
634 (or (eq token 'end-pi)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
635 (error "Missing end of XML processing instruction")))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
636 ;; processing instructions
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
637 (setq token (ebnf-dtd-pi (ebnf-dtd-lex)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
638 (cond
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
639 ;; DOCTYPE
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
640 ((eq token 'doctype-decl)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
641 (or (eq (ebnf-dtd-lex) 'name)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
642 (error "Document type name is missing"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
643 (cons (if (eq (ebnf-dtd-externalid) 'begin-subset)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
644 (ebnf-dtd-lex)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
645 'end-prolog)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
646 'end-subset))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
647 ((memq token '(element-decl attlist-decl entity-decl notation-decl))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
648 (cons token 'end-of-input))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
649 (t
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
650 '(end-prolog . end-subset))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
651 ))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
652
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
653
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
654 (defun ebnf-dtd-attribute (token attr match attr-name)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
655 (or (eq token attr)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
656 (error "%s attribute is missing" attr-name))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
657 (ebnf-dtd-attribute-optional token attr match attr-name))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
658
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
659
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
660 (defun ebnf-dtd-attribute-optional (token attr match attr-name)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
661 (when (eq token attr)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
662 (or (and (eq (ebnf-dtd-lex) 'equal)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
663 (eq (ebnf-dtd-lex) 'string)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
664 (string-match match ebnf-dtd-lex))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
665 (error "XML %s attribute is invalid" attr-name))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
666 (setq token (ebnf-dtd-lex)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
667 token)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
668
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
669
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
670 ;;; ExternalID ::= 'SYSTEM' S SystemLiteral
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
671 ;;; | 'PUBLIC' S PubidLiteral S SystemLiteral
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
672
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
673
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
674 (defun ebnf-dtd-externalid (&optional token)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
675 (let ((must-have token))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
676 (or token (setq token (ebnf-dtd-lex)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
677 (cond ((eq token 'system)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
678 (ebnf-dtd-systemliteral))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
679 ((eq token 'public)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
680 (ebnf-dtd-pubidliteral)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
681 (ebnf-dtd-systemliteral))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
682 (must-have
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
683 (error "Missing `SYSTEM' or `PUBLIC' in external id"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
684 (t
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
685 token))))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
686
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
687
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
688 ;;; SystemLiteral ::= ('"' [^"]* '"')
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
689 ;;; | ("'" [^']* "'")
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
690
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
691
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
692 (defun ebnf-dtd-systemliteral ()
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
693 (or (eq (ebnf-dtd-lex) 'string)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
694 (error "System identifier is invalid"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
695 (ebnf-dtd-lex))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
696
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
697
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
698 ;;; PubidLiteral ::= '"' PubidChar* '"'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
699 ;;; | "'" (PubidChar - "'")* "'"
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
700 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
701 ;;; PubidChar ::= [-'()+,./:=?;!*#@$_%\n\r a-zA-Z0-9]
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
702
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
703
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
704 (defun ebnf-dtd-pubidliteral ()
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
705 (or (and (eq (ebnf-dtd-lex) 'string)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
706 (string-match "^[-'()+,./:=?;!*#@$_%\n\r a-zA-Z0-9]*$"
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
707 ebnf-dtd-lex))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
708 (error "Public identifier is invalid")))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
709
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
710
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
711 ;;; PI ::= '<?' PITarget (S (Char* - (Char* '?>' Char*)))? '?>'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
712 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
713 ;;; PITarget ::= Name - (('X' | 'x') ('M' | 'm') ('L' | 'l'))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
714
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
715
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
716 (defun ebnf-dtd-pi (token)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
717 (while (eq token 'begin-pi)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
718 (and (string-match "^[xX][mM][lL]$" ebnf-dtd-lex)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
719 (error "Processing instruction name can not be `XML'"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
720 (while (not (eq (ebnf-dtd-lex) 'end-pi)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
721 (setq token (ebnf-dtd-lex)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
722 token)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
723
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
724
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
725 ;;; doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S?
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
726 ;;; ('[' intSubset ']' S?)? '>'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
727 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
728 ;;; intSubset ::= (markupdecl | DeclSep)*
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
729 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
730 ;;; DeclSep ::= PEReference | S
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
731 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
732 ;;; markupdecl ::= elementdecl | AttlistDecl | EntityDecl
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
733 ;;; | NotationDecl | PI | Comment
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
734
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
735
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
736 (defun ebnf-dtd-intsubset (token)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
737 ;; PI - Processing Instruction
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
738 (and (eq token 'begin-pi)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
739 (setq token (ebnf-dtd-pi token)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
740 (cond
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
741 ((memq token '(end-subset end-of-input))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
742 (cons token nil))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
743 ((eq token 'pe-ref)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
744 (cons (ebnf-dtd-lex) nil)) ; annotation
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
745 ((eq token 'element-decl)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
746 (ebnf-dtd-elementdecl)) ; rule
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
747 ((eq token 'attlist-decl)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
748 (ebnf-dtd-attlistdecl)) ; annotation
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
749 ((eq token 'entity-decl)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
750 (ebnf-dtd-entitydecl)) ; annotation
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
751 ((eq token 'notation-decl)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
752 (ebnf-dtd-notationdecl)) ; annotation
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
753 (t
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
754 (error "Invalid DOCTYPE element"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
755 ))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
756
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
757
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
758 ;;; elementdecl ::= '<!ELEMENT' S Name S contentspec S? '>'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
759 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
760 ;;; contentspec ::= 'EMPTY' | 'ANY' | Mixed | children
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
761 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
762 ;;; Mixed ::= '(' S? '#PCDATA' (S? '|' S? Name)* S? ')*'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
763 ;;; | '(' S? '#PCDATA' S? ')'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
764 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
765 ;;; children ::= (choice | seq) ('?' | '*' | '+')?
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
766 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
767 ;;; choice ::= '(' S? cp ( S? '|' S? cp )+ S? ')'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
768 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
769 ;;; seq ::= '(' S? cp ( S? ',' S? cp )* S? ')'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
770 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
771 ;;; cp ::= (Name | choice | seq) ('?' | '*' | '+')?
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
772
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
773
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
774 (defun ebnf-dtd-elementdecl ()
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
775 (let ((action ebnf-action)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
776 name token body)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
777 (setq ebnf-action nil)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
778 (or (eq (ebnf-dtd-lex) 'name)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
779 (error "Invalid ELEMENT name"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
780 (setq name ebnf-dtd-lex
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
781 token (ebnf-dtd-lex)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
782 body (cond ((memq token '(empty any))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
783 (let ((term (ebnf-make-terminal ebnf-dtd-lex)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
784 (cons (ebnf-dtd-lex) term)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
785 ((eq token 'begin-group)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
786 (setq token (ebnf-dtd-lex))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
787 (if (eq token 'pcdata)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
788 (ebnf-dtd-mixed)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
789 (ebnf-dtd-children token)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
790 (t
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
791 (error "Invalid ELEMENT content"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
792 ))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
793 (or (eq (car body) 'end-decl)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
794 (error "Missing `>' in ELEMENT declaration"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
795 (ebnf-eps-add-production name)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
796 (cons (ebnf-dtd-lex)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
797 (ebnf-make-production name (cdr body) action))))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
798
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
799
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
800 ;;; Mixed ::= '(' S? '#PCDATA' (S? '|' S? Name)* S? ')*'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
801 ;;; | '(' S? '#PCDATA' S? ')'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
802
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
803
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
804 (defun ebnf-dtd-mixed ()
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
805 (let* ((alt (cons (ebnf-make-terminal ebnf-dtd-lex) nil))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
806 (token (ebnf-dtd-lex))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
807 (has-alternative (eq token 'alternative)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
808 (while (eq token 'alternative)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
809 (or (eq (ebnf-dtd-lex) 'name)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
810 (error "Invalid name"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
811 (setq alt (cons ebnf-dtd-lex alt)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
812 token (ebnf-dtd-lex)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
813 (or (eq token 'end-group)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
814 (error "Missing `)'"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
815 (and has-alternative
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
816 (or (eq (ebnf-dtd-lex) 'zero-or-more)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
817 (error "Missing `*'")))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
818 (ebnf-token-alternative alt (cons (ebnf-dtd-lex) nil))))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
819
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
820
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
821 ;;; children ::= (choice | seq) ('?' | '*' | '+')?
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
822
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
823
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
824 (defun ebnf-dtd-children (token)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
825 (ebnf-dtd-operators (ebnf-dtd-choice-seq token)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
826
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
827
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
828 ;;; choice ::= '(' S? cp ( S? '|' S? cp )+ S? ')'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
829 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
830 ;;; seq ::= '(' S? cp ( S? ',' S? cp )* S? ')'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
831
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
832
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
833 (defun ebnf-dtd-choice-seq (token)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
834 (setq token (ebnf-dtd-cp token))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
835 (let (elist)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
836 (cond
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
837 ;; choice
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
838 ((eq (car token) 'alternative)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
839 (while (eq (car token) 'alternative)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
840 (setq elist (cons (cdr token) elist)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
841 token (ebnf-dtd-cp (ebnf-dtd-lex))))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
842 (setq elist (ebnf-token-alternative elist token)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
843 ;; seq
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
844 ((eq (car token) 'comma)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
845 (while (eq (car token) 'comma)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
846 (setq elist (cons (cdr token) elist)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
847 token (ebnf-dtd-cp (ebnf-dtd-lex))))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
848 (setq elist (ebnf-token-sequence (cons (cdr token) elist))))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
849 ;; only one element
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
850 (t
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
851 (setq elist (cdr token))))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
852 (or (eq (car token) 'end-group)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
853 (error "Missing `)' in ELEMENT content"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
854 elist))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
855
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
856
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
857 ;;; cp ::= (Name | choice | seq) ('?' | '*' | '+')?
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
858
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
859
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
860 (defun ebnf-dtd-cp (token)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
861 (ebnf-dtd-operators (cond ((eq token 'name)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
862 (ebnf-make-terminal ebnf-dtd-lex))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
863 ((eq token 'begin-group)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
864 (ebnf-dtd-choice-seq (ebnf-dtd-lex)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
865 (t
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
866 (error "Invalid element"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
867 )))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
868
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
869
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
870 ;;; elm ('?' | '*' | '+')?
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
871
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
872
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
873 (defun ebnf-dtd-operators (elm)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
874 (let ((token (ebnf-dtd-lex)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
875 (cond ((eq token 'optional) ; ? - optional
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
876 (cons (ebnf-dtd-lex) (ebnf-token-optional elm)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
877 ((eq token 'zero-or-more) ; * - zero or more
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
878 (cons (ebnf-dtd-lex) (ebnf-make-zero-or-more elm)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
879 ((eq token 'one-or-more) ; + - one or more
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
880 (cons (ebnf-dtd-lex) (ebnf-make-one-or-more elm)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
881 (t ; only element
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
882 (cons token elm))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
883 )))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
884
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
885
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
886 ;;; AttlistDecl ::= '<!ATTLIST' S Name AttDef* S? '>'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
887 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
888 ;;; AttDef ::= S Name S AttType S DefaultDecl
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
889 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
890 ;;; AttType ::= StringType | TokenizedType | EnumeratedType
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
891 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
892 ;;; StringType ::= 'CDATA'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
893 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
894 ;;; TokenizedType ::= 'ID'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
895 ;;; | 'IDREF'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
896 ;;; | 'IDREFS'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
897 ;;; | 'ENTITY'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
898 ;;; | 'ENTITIES'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
899 ;;; | 'NMTOKEN'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
900 ;;; | 'NMTOKENS'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
901 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
902 ;;; EnumeratedType ::= NotationType | Enumeration
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
903 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
904 ;;; NotationType ::= 'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
905 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
906 ;;; Enumeration ::= '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
907 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
908 ;;; DefaultDecl ::= '#REQUIRED'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
909 ;;; | '#IMPLIED'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
910 ;;; | (('#FIXED' S)? AttValue)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
911 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
912 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
913 ;;; AttValue ::= '"' ([^<&"] | Reference)* '"'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
914 ;;; | "'" ([^<&'] | Reference)* "'"
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
915 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
916 ;;; Reference ::= EntityRef | CharRef
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
917 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
918 ;;; EntityRef ::= '&' Name ';'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
919 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
920 ;;; CharRef ::= '&#' [0-9]+ ';'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
921 ;;; | '&#x' [0-9a-fA-F]+ ';'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
922
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
923 ;;; "^\\(&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[0-9a-fA-F]+\\|[0-9]+\\)\\);\\|[^<&]\\)*$"
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
924
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
925
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
926 (defun ebnf-dtd-attlistdecl ()
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
927 (or (eq (ebnf-dtd-lex) 'name)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
928 (error "Invalid ATTLIST name"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
929 (let (token)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
930 (while (eq (setq token (ebnf-dtd-lex)) 'name)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
931 ;; type
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
932 (setq token (ebnf-dtd-lex))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
933 (cond
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
934 ((eq token 'notation)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
935 (or (eq (ebnf-dtd-lex) 'begin-group)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
936 (error "Missing `(' in NOTATION type in ATTLIST declaration"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
937 (ebnf-dtd-namelist "NOTATION" '(name)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
938 ((eq token 'begin-group)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
939 (ebnf-dtd-namelist "enumeration" '(name name-char)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
940 ((memq token
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
941 '(cdata id idref idrefs entity entities nmtoken nmtokens)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
942 (t
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
943 (error "Invalid type in ATTLIST declaration")))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
944 ;; default value
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
945 (setq token (ebnf-dtd-lex))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
946 (unless (memq token '(required implied))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
947 (and (eq token 'fixed)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
948 (setq token (ebnf-dtd-lex)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
949 (or (and (eq token 'string)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
950 (string-match
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
951 "^\\(&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[0-9a-fA-F]+\\|[0-9]+\\)\\);\\|[^<&]\\)*$"
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
952 ebnf-dtd-lex))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
953 (error "Invalid default value in ATTLIST declaration"))))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
954 (or (eq token 'end-decl)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
955 (error "Missing `>' in end of ATTLIST"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
956 (cons (ebnf-dtd-lex) nil)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
957
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
958
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
959 (defun ebnf-dtd-namelist (type name-list)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
960 (let (token)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
961 (while (progn
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
962 (or (memq (ebnf-dtd-lex) name-list)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
963 (error "Invalid name in %s type in ATTLIST declaration" type))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
964 (eq (setq token (ebnf-dtd-lex)) 'alternative)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
965 (or (eq token 'end-group)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
966 (error "Missing `)' in %s type in ATTLIST declaration" type))))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
967
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
968
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
969 ;;; EntityDecl ::= GEDecl | PEDecl
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
970 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
971 ;;; GEDecl ::= '<!ENTITY' S Name S EntityDef S? '>'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
972 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
973 ;;; PEDecl ::= '<!ENTITY' S '%' S Name S PEDef S? '>'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
974 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
975 ;;; EntityDef ::= EntityValue | (ExternalID NDataDecl?)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
976 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
977 ;;; PEDef ::= EntityValue | ExternalID
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
978 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
979 ;;; NDataDecl ::= S 'NDATA' S Name
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
980 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
981 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
982 ;;; EntityValue ::= '"' ([^%&"] | PEReference | Reference)* '"'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
983 ;;; | "'" ([^%&'] | PEReference | Reference)* "'"
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
984 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
985 ;;; PEReference ::= '%' Name ';'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
986 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
987 ;;; Reference ::= EntityRef | CharRef
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
988 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
989 ;;; EntityRef ::= '&' Name ';'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
990 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
991 ;;; CharRef ::= '&#' [0-9]+ ';'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
992 ;;; | '&#x' [0-9a-fA-F]+ ';'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
993
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
994 ;;; "^\\(%[A-Za-z_:][-A-Za-z0-9._:]*;\\|&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[0-9a-fA-F]+\\|[0-9]+\\)\\);\\|[^%&]\\)*$"
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
995
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
996
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
997 (defun ebnf-dtd-entitydecl ()
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
998 (let* ((token (ebnf-dtd-lex))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
999 (pedecl (eq token 'percent)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1000 (and pedecl
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1001 (setq token (ebnf-dtd-lex)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1002 (or (eq token 'name)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1003 (error "Invalid name of ENTITY"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1004 (setq token (ebnf-dtd-lex))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1005 (if (eq token 'string)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1006 (if (string-match
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1007 "^\\(%[A-Za-z_:][-A-Za-z0-9._:]*;\\|&\\([A-Za-z_:][-A-Za-z0-9._:]*\\|#\\(x[0-9a-fA-F]+\\|[0-9]+\\)\\);\\|[^%&]\\)*$"
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1008 ebnf-dtd-lex)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1009 (setq token (ebnf-dtd-lex))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1010 (error "Invalid ENTITY definition"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1011 (setq token (ebnf-dtd-externalid token))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1012 (when (and (not pedecl) (eq token 'ndata))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1013 (or (eq (ebnf-dtd-lex) 'name)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1014 (error "Invalid NDATA name"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1015 (setq token (ebnf-dtd-lex))))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1016 (or (eq token 'end-decl)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1017 (error "Missing `>' in end of ENTITY"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1018 (cons (ebnf-dtd-lex) nil)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1019
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1020
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1021 ;;; NotationDecl ::= '<!NOTATION' S Name S (ExternalID | PublicID) S? '>'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1022 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1023 ;;; PublicID ::= 'PUBLIC' S PubidLiteral
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1024
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1025
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1026 (defun ebnf-dtd-notationdecl ()
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1027 (or (eq (ebnf-dtd-lex) 'name)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1028 (error "Invalid name NOTATION"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1029 (or (eq (ebnf-dtd-externalid-or-publicid) 'end-decl)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1030 (error "Missing `>' in end of NOTATION"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1031 (cons (ebnf-dtd-lex) nil))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1032
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1033
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1034 ;;; ExternalID ::= 'SYSTEM' S SystemLiteral
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1035 ;;; | 'PUBLIC' S PubidLiteral S SystemLiteral
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1036 ;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1037 ;;; PublicID ::= 'PUBLIC' S PubidLiteral
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1038
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1039
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1040 (defun ebnf-dtd-externalid-or-publicid ()
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1041 (let ((token (ebnf-dtd-lex)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1042 (cond ((eq token 'system)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1043 (ebnf-dtd-systemliteral))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1044 ((eq token 'public)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1045 (ebnf-dtd-pubidliteral)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1046 (and (eq (setq token (ebnf-dtd-lex)) 'string)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1047 (setq token (ebnf-dtd-lex)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1048 token)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1049 (t
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1050 (error "Missing `SYSTEM' or `PUBLIC'")))))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1051
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1052
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1053 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1054 ;; Lexical analyzer
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1055
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1056
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1057 (defconst ebnf-dtd-token-table (make-vector 256 'error)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1058 "Vector used to map characters to a lexical token.")
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1059
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1060
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1061 (defun ebnf-dtd-initialize ()
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1062 "Initialize EBNF token table."
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1063 ;; control character & control 8-bit character are set to `error'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1064 (let ((char ?\060))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1065 ;; digits: 0-9
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1066 (while (< char ?\072)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1067 (aset ebnf-dtd-token-table char 'name-char)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1068 (setq char (1+ char)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1069 ;; printable character: A-Z
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1070 (setq char ?\101)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1071 (while (< char ?\133)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1072 (aset ebnf-dtd-token-table char 'name)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1073 (setq char (1+ char)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1074 ;; printable character: a-z
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1075 (setq char ?\141)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1076 (while (< char ?\173)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1077 (aset ebnf-dtd-token-table char 'name)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1078 (setq char (1+ char)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1079 ;; European 8-bit accentuated characters:
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1080 (setq char ?\240)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1081 (while (< char ?\400)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1082 (aset ebnf-dtd-token-table char 'name)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1083 (setq char (1+ char)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1084 ;; Override name characters:
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1085 (aset ebnf-dtd-token-table ?_ 'name)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1086 (aset ebnf-dtd-token-table ?: 'name)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1087 (aset ebnf-dtd-token-table ?. 'name-char)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1088 (aset ebnf-dtd-token-table ?- 'name-char)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1089 ;; Override space characters:
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1090 (aset ebnf-dtd-token-table ?\n 'space) ; [NL] linefeed
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1091 (aset ebnf-dtd-token-table ?\r 'space) ; [CR] carriage return
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1092 (aset ebnf-dtd-token-table ?\t 'space) ; [HT] horizontal tab
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1093 (aset ebnf-dtd-token-table ?\ 'space) ; [SP] space
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1094 ;; Override other lexical characters:
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1095 (aset ebnf-dtd-token-table ?= 'equal)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1096 (aset ebnf-dtd-token-table ?, 'comma)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1097 (aset ebnf-dtd-token-table ?* 'zero-or-more)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1098 (aset ebnf-dtd-token-table ?+ 'one-or-more)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1099 (aset ebnf-dtd-token-table ?| 'alternative)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1100 (aset ebnf-dtd-token-table ?% 'percent)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1101 (aset ebnf-dtd-token-table ?& 'ampersand)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1102 (aset ebnf-dtd-token-table ?# 'hash)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1103 (aset ebnf-dtd-token-table ?\? 'interrogation)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1104 (aset ebnf-dtd-token-table ?\" 'double-quote)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1105 (aset ebnf-dtd-token-table ?\' 'single-quote)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1106 (aset ebnf-dtd-token-table ?< 'less-than)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1107 (aset ebnf-dtd-token-table ?> 'end-decl)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1108 (aset ebnf-dtd-token-table ?\( 'begin-group)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1109 (aset ebnf-dtd-token-table ?\) 'end-group)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1110 (aset ebnf-dtd-token-table ?\[ 'begin-subset)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1111 (aset ebnf-dtd-token-table ?\] 'end-subset)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1112
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1113
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1114 ;; replace the range "\240-\377" (see `ebnf-range-regexp').
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1115 (defconst ebnf-dtd-name-chars
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1116 (ebnf-range-regexp "-._:0-9A-Za-z" ?\240 ?\377))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1117
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1118
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1119 (defconst ebnf-dtd-decl-alist
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1120 '(("ATTLIST" . attlist-decl)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1121 ("DOCTYPE" . doctype-decl)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1122 ("ELEMENT" . element-decl)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1123 ("ENTITY" . entity-decl)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1124 ("NOTATION" . notation-decl)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1125
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1126
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1127 (defconst ebnf-dtd-element-alist
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1128 '(("#FIXED" . fixed)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1129 ("#IMPLIED" . implied)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1130 ("#PCDATA" . pcdata)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1131 ("#REQUIRED" . required)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1132
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1133
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1134 (defconst ebnf-dtd-name-alist
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1135 '(("ANY" . any)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1136 ("CDATA" . cdata)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1137 ("EMPTY" . empty)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1138 ("ENTITIES" . entities)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1139 ("ENTITY" . entity)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1140 ("ID" . id)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1141 ("IDREF" . idref)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1142 ("IDREFS" . idrefs)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1143 ("NDATA" . ndata)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1144 ("NMTOKEN" . nmtoken)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1145 ("NMTOKENS" . nmtokens)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1146 ("NOTATION" . notation)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1147 ("PUBLIC" . public)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1148 ("SYSTEM" . system)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1149 ("encoding" . encoding-attr)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1150 ("standalone" . standalone-attr)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1151 ("version" . version-attr)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1152
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1153
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1154 (defun ebnf-dtd-lex ()
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1155 "Lexical analyser for DTD.
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1156
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1157 Return a lexical token.
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1158
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1159 See documentation for variable `ebnf-dtd-lex'."
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1160 (if (>= (point) ebnf-limit)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1161 'end-of-input
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1162 (let (token)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1163 ;; skip spaces and comments
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1164 (while (if (> (following-char) 255)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1165 (progn
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1166 (setq token 'error)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1167 nil)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1168 (setq token (aref ebnf-dtd-token-table (following-char)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1169 (cond
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1170 ((eq token 'space)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1171 (skip-chars-forward " \n\r\t" ebnf-limit)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1172 (< (point) ebnf-limit))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1173 ((and (eq token 'less-than)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1174 (looking-at "<!--"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1175 (ebnf-dtd-skip-comment))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1176 (t nil)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1177 )))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1178 (cond
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1179 ;; end of input
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1180 ((>= (point) ebnf-limit)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1181 'end-of-input)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1182 ;; error
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1183 ((eq token 'error)
60917
87f9bb9d3718 * progmodes/ebnf-abn.el, progmodes/ebnf-bnf.el,
Werner LEMBERG <wl@gnu.org>
parents: 54713
diff changeset
1184 (error "Invalid character"))
54712
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1185 ;; beginning of declaration:
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1186 ;; <?name, <!ATTLIST, <!DOCTYPE, <!ELEMENT, <!ENTITY, <!NOTATION
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1187 ((eq token 'less-than)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1188 (forward-char)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1189 (let ((char (following-char)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1190 (cond ((= char ?\?) ; <?
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1191 (forward-char)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1192 (setq ebnf-dtd-lex (ebnf-buffer-substring ebnf-dtd-name-chars))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1193 'begin-pi)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1194 ((= char ?!) ; <!
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1195 (forward-char)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1196 (let ((decl (ebnf-buffer-substring ebnf-dtd-name-chars)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1197 (or (cdr (assoc decl ebnf-dtd-decl-alist))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1198 (error "Invalid declaration name `%s'" decl))))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1199 (t ; <x
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1200 (error "Invalid declaration `<%c'" char)))))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1201 ;; name, namechar
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1202 ((memq token '(name name-char))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1203 (setq ebnf-dtd-lex (ebnf-buffer-substring ebnf-dtd-name-chars))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1204 (or (cdr (assoc ebnf-dtd-lex ebnf-dtd-name-alist))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1205 token))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1206 ;; ?, ?>
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1207 ((eq token 'interrogation)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1208 (forward-char)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1209 (if (/= (following-char) ?>)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1210 'optional
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1211 (forward-char)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1212 'end-pi))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1213 ;; #FIXED, #IMPLIED, #PCDATA, #REQUIRED
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1214 ((eq token 'hash)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1215 (forward-char)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1216 (setq ebnf-dtd-lex
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1217 (concat "#" (ebnf-buffer-substring ebnf-dtd-name-chars)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1218 (or (cdr (assoc ebnf-dtd-lex ebnf-dtd-element-alist))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1219 (error "Invalid element `%s'" ebnf-dtd-lex)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1220 ;; "string"
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1221 ((eq token 'double-quote)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1222 (setq ebnf-dtd-lex (ebnf-dtd-string ?\"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1223 'string)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1224 ;; 'string'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1225 ((eq token 'single-quote)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1226 (setq ebnf-dtd-lex (ebnf-dtd-string ?\'))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1227 'string)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1228 ;; %, %name;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1229 ((eq token 'percent)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1230 (forward-char)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1231 (if (looking-at "[ \n\r\t]")
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1232 'percent
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1233 (setq ebnf-dtd-lex (ebnf-dtd-name-ref "%"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1234 'pe-ref))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1235 ;; &#...;, &#x...;, &name;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1236 ((eq token 'ampersand)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1237 (forward-char)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1238 (if (/= (following-char) ?#)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1239 (progn
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1240 ;; &name;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1241 (setq ebnf-dtd-lex (ebnf-dtd-name-ref "&"))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1242 'entity-ref)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1243 ;; &#...;, &#x...;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1244 (forward-char)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1245 (setq ebnf-dtd-lex (if (/= (following-char) ?x)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1246 (ebnf-dtd-char-ref "&#" "0-9")
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1247 (forward-char)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1248 (ebnf-dtd-char-ref "&#x" "0-9a-fA-F")))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1249 'char-ref))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1250 ;; miscellaneous: (, ), [, ], =, |, *, +, >, `,'
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1251 (t
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1252 (forward-char)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1253 token)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1254 ))))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1255
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1256
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1257 (defun ebnf-dtd-name-ref (start)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1258 (ebnf-dtd-char-ref start ebnf-dtd-name-chars))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1259
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1260
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1261 (defun ebnf-dtd-char-ref (start chars)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1262 (let ((char (ebnf-buffer-substring chars)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1263 (or (= (following-char) ?\;)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1264 (error "Invalid element `%s%s%c'" start char (following-char)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1265 (forward-char)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1266 (format "%s%s;" start char)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1267
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1268
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1269 ;; replace the range "\240-\377" (see `ebnf-range-regexp').
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1270 (defconst ebnf-dtd-double-string-chars
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1271 (ebnf-range-regexp "\t -!#-~" ?\240 ?\377))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1272 (defconst ebnf-dtd-single-string-chars
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1273 (ebnf-range-regexp "\t -&(-~" ?\240 ?\377))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1274
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1275
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1276 (defun ebnf-dtd-string (delim)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1277 (buffer-substring-no-properties
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1278 (progn
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1279 (forward-char)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1280 (point))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1281 (progn
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1282 (skip-chars-forward (if (= delim ?\")
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1283 ebnf-dtd-double-string-chars
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1284 ebnf-dtd-single-string-chars)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1285 ebnf-limit)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1286 (or (= (following-char) delim)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1287 (error "Missing string delimiter `%c'" delim))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1288 (prog1
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1289 (point)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1290 (forward-char)))))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1291
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1292
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1293 ;; replace the range "\177-\237" (see `ebnf-range-regexp').
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1294 (defconst ebnf-dtd-comment-chars
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1295 (ebnf-range-regexp "^-\000-\010\013\014\016-\037" ?\177 ?\237))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1296 (defconst ebnf-dtd-filename-chars
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1297 (ebnf-range-regexp "^-\000-\037" ?\177 ?\237))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1298
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1299
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1300 (defun ebnf-dtd-skip-comment ()
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1301 (forward-char 4) ; <!--
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1302 (cond
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1303 ;; open EPS file
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1304 ((and ebnf-eps-executing (= (following-char) ?\[))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1305 (ebnf-eps-add-context (ebnf-dtd-eps-filename)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1306 ;; close EPS file
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1307 ((and ebnf-eps-executing (= (following-char) ?\]))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1308 (ebnf-eps-remove-context (ebnf-dtd-eps-filename)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1309 ;; any other action in comment
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1310 (t
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1311 (setq ebnf-action (aref ebnf-comment-table (following-char))))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1312 )
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1313 (while (progn
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1314 (skip-chars-forward ebnf-dtd-comment-chars ebnf-limit)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1315 (and (< (point) ebnf-limit)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1316 (not (looking-at "-->"))))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1317 (skip-chars-forward "-" ebnf-limit))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1318 ;; check for a valid end of comment
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1319 (cond ((>= (point) ebnf-limit)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1320 nil)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1321 ((looking-at "-->")
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1322 (forward-char 3)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1323 t)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1324 (t
60917
87f9bb9d3718 * progmodes/ebnf-abn.el, progmodes/ebnf-bnf.el,
Werner LEMBERG <wl@gnu.org>
parents: 54713
diff changeset
1325 (error "Invalid character"))
54712
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1326 ))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1327
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1328
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1329 (defun ebnf-dtd-eps-filename ()
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1330 (forward-char)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1331 (let (fname)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1332 (while (progn
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1333 (setq fname
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1334 (concat fname
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1335 (ebnf-buffer-substring ebnf-dtd-filename-chars)))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1336 (and (< (point) ebnf-limit)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1337 (= (following-char) ?-) ; may be \n, \t, \r
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1338 (not (looking-at "-->"))))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1339 (setq fname (concat fname (ebnf-buffer-substring "-"))))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1340 fname))
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1341
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1342
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1343 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1344
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1345
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1346 (provide 'ebnf-dtd)
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1347
54713
d7ed72c5a5bc Changes from arch/CVS synchronization
Miles Bader <miles@gnu.org>
parents: 54712
diff changeset
1348 ;;; arch-tag: c21bb640-135f-4afa-8712-fa11d86301c4
54712
9b9f2e6accd0 Parser for DTD (Data Type Definition for XML).
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents:
diff changeset
1349 ;;; ebnf-dtd.el ends here