source: proto/parabix2/src/xml_error.h @ 1496

Last change on this file since 1496 was 1478, checked in by ksherdy, 8 years ago

Deleted .cpp files.

File size: 6.8 KB
RevLine 
[424]1/*  xml_error.h - Error codes for XML parsing/validation.
2    Copyright (c) 2008, Robert D. Cameron and Dan Lin.
3    Licensed to the public under the Open Software License 3.0.
4    Licensed to International Characters, Inc., under the Academic
5    Free License 3.0.
6
7   The following enum provides codes for the well-formedness (wfErr)
8   and validity (vErr) constraints of XML, based on the ids for those
9   constraints in the REC-xml-20060816.xml document.  The ids may be
10   recovered by stripping wfErr_ or vc_Err and substituting "-" for "_".
11*/
12#ifndef XML_ERROR_H
13#define XML_ERROR_H
14
15enum XML_Constraint {
16                wfErr_wfc_PEinInternalSubset,
17                wfErr_ExtSubset,
18                wfErr_PE_between_Decls,
19                wfErr_GIMatch,
20                wfErr_uniqattspec,
21                wfErr_NoExternalRefs,
22                wfErr_CleanAttrVals,
23                wfErr_wf_Legalchar,
24                wfErr_wf_entdeclared,
25                wfErr_textent,
26                wfErr_norecursion,
27                wfErr_indtd,
28                vErr_vc_roottype,
29                vErr_vc_PEinMarkupDecl,
30                vErr_vc_check_rmd,
31                vErr_elementvalid,
32                vErr_ValueType,
33                vErr_EDUnique,
34                vErr_vc_PEinGroup,
35                vErr_vc_MixedChildrenUnique,
36                vErr_id,
37                vErr_one_id_per_el,
38                vErr_id_default,
39                vErr_idref,
40                vErr_entname,
41                vErr_nmtok,
42                vErr_notatn,
43                vErr_OneNotationPer,
44                vErr_NoNotationEmpty,
45                vErr_NoDuplicateTokens,
46                vErr_enum,
47                vErr_RequiredAttr,
48                vErr_defattrvalid,
49                vErr_FixedAttr,
50                vErr_condsec_nesting,
51                vErr_vc_entdeclared,
52                vErr_not_declared,
53                vErr_UniqueNotationName};
54
55/* The following enum provides codes for XML nonterminals using
56   codes in the REC-xml-20060816.xml document.  The ids may be
57   recovered by substituting "-" for "_".
58*/
59
60enum XML_NonTerminal {
61                NT_document,
62                NT_Char,
63                NT_S,
64                NT_NameChar,
65                NT_Name,
66                NT_Names,
67                NT_Nmtoken,
68                NT_Nmtokens,
69                NT_EntityValue,
70                NT_AttValue,
71                NT_SystemLiteral,
72                NT_PubidLiteral,
73                NT_PubidChar,
74                NT_CharData,
75                NT_Comment,
76                NT_PI,
77                NT_PITarget,
78                NT_CDSect,
79                NT_CDStart,
80                NT_CData,
81                NT_CDEnd,
82                NT_prolog,
83                NT_XMLDecl,
84                NT_VersionInfo,
85                NT_Eq,
86                NT_VersionNum,
87                NT_Misc,
88                NT_doctypedecl,
89                NT_DeclSep,
90                NT_intSubset,
91                NT_markupdecl,
92                NT_extSubset,
93                NT_extSubsetDecl,
94                NT_SDDecl,
95                NT_element,
96                NT_STag,
97                NT_Attribute,
98                NT_ETag,
99                NT_content,
100                NT_EmptyElemTag,
101                NT_elementdecl,
102                NT_contentspec,
103                NT_children,
104                NT_cp,
105                NT_choice,
106                NT_seq,
107                NT_Mixed,
108                NT_AttlistDecl,
109                NT_AttDef,
110                NT_AttType,
111                NT_StringType,
112                NT_TokenizedType,
113                NT_EnumeratedType,
114                NT_NotationType,
115                NT_Enumeration,
116                NT_DefaultDecl,
117                NT_conditionalSect,
118                NT_includeSect,
119                NT_ignoreSect,
120                NT_ignoreSectContents,
121                NT_Ignore,
122                NT_CharRef,
123                NT_Reference,
124                NT_EntityRef,
125                NT_PEReference,
126                NT_EntityDecl,
127                NT_GEDecl,
128                NT_PEDecl,
129                NT_EntityDef,
130                NT_PEDef,
131                NT_ExternalID,
132                NT_NDataDecl,
133                NT_TextDecl,
134                NT_extParsedEnt,
135                NT_EncodingDecl,
136                NT_EncName,
137                NT_NotationDecl,
138                NT_PublicID,
139                NT_Letter,
140                NT_BaseChar,
141                NT_Ideographic,
142                NT_CombiningChar,
143                NT_Digit,
144                NT_Extender};
145
[1478]146const char * XML_Constraint_Strings[] = {
147                "wfc-PEinInternalSubset",
148                "ExtSubset",
149                "PE-between-Decls",
150                "GIMatch",
151                "uniqattspec",
152                "NoExternalRefs",
153                "CleanAttrVals",
154                "wf-Legalchar",
155                "wf-entdeclared",
156                "textent",
157                "norecursion",
158                "indtd",
159                "vc-roottype",
160                "vc-PEinMarkupDecl",
161                "vc-check-rmd",
162                "elementvalid",
163                "ValueType",
164                "EDUnique",
165                "vc-PEinGroup",
166                "vc-MixedChildrenUnique",
167                "id",
168                "one-id-per-el",
169                "id-default",
170                "idref",
171                "entname",
172                "nmtok",
173                "notatn",
174                "OneNotationPer",
175                "NoNotationEmpty",
176                "NoDuplicateTokens",
177                "enum",
178                "RequiredAttr",
179                "defattrvalid",
180                "FixedAttr",
181                "condsec-nesting",
182                "vc-entdeclared",
183                "not-declared",
184                "UniqueNotationName"};
[424]185
[1478]186const char * XML_NonTerminal_Names[] = {
187                "document  [1]",
188                "Char  [2]",
189                "S  [3]",
190                "NameChar  [4]",
191                "Name  [5]",
192                "Names  [6]",
193                "Nmtoken  [7]",
194                "Nmtokens  [8]",
195                "EntityValue  [9]",
196                "AttValue  [10]",
197                "SystemLiteral  [11]",
198                "PubidLiteral  [12]",
199                "PubidChar  [13]",
200                "CharData  [14]",
201                "Comment  [15]",
202                "PI  [16]",
203                "PITarget  [17]",
204                "CDSect  [18]",
205                "CDStart  [19]",
206                "CData  [20]",
207                "CDEnd  [21]",
208                "prolog  [22]",
209                "XMLDecl  [23]",
210                "VersionInfo  [24]",
211                "Eq  [25]",
212                "VersionNum  [26]",
213                "Misc  [27]",
214                "doctypedecl  [28]",
215                "DeclSep  [28a]",
216                "intSubset  [28b]",
217                "markupdecl  [29]",
218                "extSubset  [30]",
219                "extSubsetDecl  [31]",
220                "SDDecl  [32]",
221                "element  [39]",
222                "STag  [40]",
223                "Attribute  [41]",
224                "ETag  [42]",
225                "content  [43]",
226                "EmptyElemTag  [44]",
227                "elementdecl  [45]",
228                "contentspec  [46]",
229                "children  [47]",
230                "cp  [48]",
231                "choice  [49]",
232                "seq  [50]",
233                "Mixed  [51]",
234                "AttlistDecl  [52]",
235                "AttDef  [53]",
236                "AttType  [54]",
237                "StringType  [55]",
238                "TokenizedType  [56]",
239                "EnumeratedType  [57]",
240                "NotationType  [58]",
241                "Enumeration  [59]",
242                "DefaultDecl  [60]",
243                "conditionalSect  [61]",
244                "includeSect  [62]",
245                "ignoreSect  [63]",
246                "ignoreSectContents  [64]",
247                "Ignore  [65]",
248                "CharRef  [66]",
249                "Reference  [67]",
250                "EntityRef  [68]",
251                "PEReference  [69]",
252                "EntityDecl  [70]",
253                "GEDecl  [71]",
254                "PEDecl  [72]",
255                "EntityDef  [73]",
256                "PEDef  [74]",
257                "ExternalID  [75]",
258                "NDataDecl  [76]",
259                "TextDecl  [77]",
260                "extParsedEnt  [78]",
261                "EncodingDecl  [80]",
262                "EncName  [81]",
263                "NotationDecl  [82]",
264                "PublicID  [83]",
265                "Letter  [84]",
266                "BaseChar  [85]",
267                "Ideographic  [86]",
268                "CombiningChar  [87]",
269                "Digit  [88]",
270                "Extender  [89]"};
[424]271
272
[1478]273void ShowConstraintError(enum XML_Constraint errCode) {
274        if (errCode < vErr_vc_roottype) {
275                fprintf(stderr, "Violation of well-formedness constraint: %s\n", XML_Constraint_Strings[errCode]);
276                exit(-1);
277        }
278        else {
279                fprintf(stderr, "Violation of validity constraint: %s\n", XML_Constraint_Strings[errCode]);
280                exit(-1);
281        }
282}
[424]283
[1478]284void ShowSyntaxError(enum XML_NonTerminal errCode) {
285        fprintf(stderr, "Syntax error in production: %s\n", XML_NonTerminal_Names[errCode]);
286}
[424]287
288
[1478]289void NoEncodingError(char * msg) {
290        fprintf(stderr, "Error : %s\n", msg);
291        exit(-1);
292}
[424]293
[1478]294void EncodingError(char * msg, unsigned char * encoding, int lgth) {
295        fprintf(stderr, "Error : Illegal/unsupported %s encoding of length %i: \"", msg, lgth);
296        for (int i = 0; i < lgth; i++) fprintf(stderr, "%c", encoding[i]);
297        fprintf(stderr, "\"\n");
298        exit(-1);
299}
[424]300
[1478]301void CharSetValidationError(char * encoding, int err_pos) {
302        fprintf(stderr, "Error: Invalid %s character in input stream at position %i\n", encoding, err_pos);
303        exit(-1);
304}
[424]305
[1478]306void XMLCharacterError(int err_pos) {
307        fprintf(stderr, "Illegal control character in XML input stream at position %i\n", err_pos);
308        exit(-1);
309}
[424]310
[1478]311void IncompleteCodeUnitError() {
312        fprintf(stderr, "Error: Incomplete code unit at end of file.\n");
313        exit(-1);
314}
315
316void DeclarationError(int pos) {
317        fprintf(stderr, "Parsing error at position %i in XML or Text declaration.\n", pos);
318        exit(-1);
319}
320
321void ImplementationLimitError(char * msg) {
322        fprintf(stderr, "Fatal implementation limit - %s\n", msg);
323        exit(-1);
324}
325
326void ContentModelError() {
327        fprintf(stderr, "Error: nondeterminism in content model.\n");
328        exit(-1);
329}
330
[424]331#endif
Note: See TracBrowser for help on using the repository browser.