source: u8u16/trunk/src/xml_error.c @ 5877

Last change on this file since 5877 was 5877, checked in by cameron, 14 months ago

Adding old u8u16 for Teradata

File size: 4.2 KB
Line 
1/*  xml_error.c - Error reporting 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
8#include "xml_error.h"
9char * XML_Constraint_Strings[] = {
10                "wfc-PEinInternalSubset",
11                "ExtSubset",
12                "PE-between-Decls",
13                "GIMatch",
14                "uniqattspec",
15                "NoExternalRefs",
16                "CleanAttrVals",
17                "wf-Legalchar",
18                "wf-entdeclared",
19                "textent",
20                "norecursion",
21                "indtd",
22                "vc-roottype",
23                "vc-PEinMarkupDecl",
24                "vc-check-rmd",
25                "elementvalid",
26                "ValueType",
27                "EDUnique",
28                "vc-PEinGroup",
29                "vc-MixedChildrenUnique",
30                "id",
31                "one-id-per-el",
32                "id-default",
33                "idref",
34                "entname",
35                "nmtok",
36                "notatn",
37                "OneNotationPer",
38                "NoNotationEmpty",
39                "NoDuplicateTokens",
40                "enum",
41                "RequiredAttr",
42                "defattrvalid",
43                "FixedAttr",
44                "condsec-nesting",
45                "vc-entdeclared",
46                "not-declared",
47                "UniqueNotationName"};
48
49char * XML_NonTerminal_Names[] = {
50                "document  [1]",
51                "Char  [2]",
52                "S  [3]",
53                "NameChar  [4]",
54                "Name  [5]",
55                "Names  [6]",
56                "Nmtoken  [7]",
57                "Nmtokens  [8]",
58                "EntityValue  [9]",
59                "AttValue  [10]",
60                "SystemLiteral  [11]",
61                "PubidLiteral  [12]",
62                "PubidChar  [13]",
63                "CharData  [14]",
64                "Comment  [15]",
65                "PI  [16]",
66                "PITarget  [17]",
67                "CDSect  [18]",
68                "CDStart  [19]",
69                "CData  [20]",
70                "CDEnd  [21]",
71                "prolog  [22]",
72                "XMLDecl  [23]",
73                "VersionInfo  [24]",
74                "Eq  [25]",
75                "VersionNum  [26]",
76                "Misc  [27]",
77                "doctypedecl  [28]",
78                "DeclSep  [28a]",
79                "intSubset  [28b]",
80                "markupdecl  [29]",
81                "extSubset  [30]",
82                "extSubsetDecl  [31]",
83                "SDDecl  [32]",
84                "element  [39]",
85                "STag  [40]",
86                "Attribute  [41]",
87                "ETag  [42]",
88                "content  [43]",
89                "EmptyElemTag  [44]",
90                "elementdecl  [45]",
91                "contentspec  [46]",
92                "children  [47]",
93                "cp  [48]",
94                "choice  [49]",
95                "seq  [50]",
96                "Mixed  [51]",
97                "AttlistDecl  [52]",
98                "AttDef  [53]",
99                "AttType  [54]",
100                "StringType  [55]",
101                "TokenizedType  [56]",
102                "EnumeratedType  [57]",
103                "NotationType  [58]",
104                "Enumeration  [59]",
105                "DefaultDecl  [60]",
106                "conditionalSect  [61]",
107                "includeSect  [62]",
108                "ignoreSect  [63]",
109                "ignoreSectContents  [64]",
110                "Ignore  [65]",
111                "CharRef  [66]",
112                "Reference  [67]",
113                "EntityRef  [68]",
114                "PEReference  [69]",
115                "EntityDecl  [70]",
116                "GEDecl  [71]",
117                "PEDecl  [72]",
118                "EntityDef  [73]",
119                "PEDef  [74]",
120                "ExternalID  [75]",
121                "NDataDecl  [76]",
122                "TextDecl  [77]",
123                "extParsedEnt  [78]",
124                "EncodingDecl  [80]",
125                "EncName  [81]",
126                "NotationDecl  [82]",
127                "PublicID  [83]",
128                "Letter  [84]",
129                "BaseChar  [85]",
130                "Ideographic  [86]",
131                "CombiningChar  [87]",
132                "Digit  [88]",
133                "Extender  [89]"};
134
135
136void ShowConstraintError(XML_Constraint errCode) {
137        if (errCode < vErr_vc_roottype) {
138                fprintf(stderr, "Violation of well-formedness constraint: %s\n", XML_Constraint_Strings[errCode]);
139                exit(-1);
140        }
141        else {
142                fprintf(stderr, "Violation of validity constraint: %s\n", XML_Constraint_Strings[errCode]);
143                exit(-1);
144        }
145}
146
147void ShowSyntaxError(XML_NonTerminal errCode) {
148        fprintf(stderr, "Syntax error in production: %s\n", XML_NonTerminal_Names[errCode]);
149}
150
151
152void NoEncodingError(char * msg) {
153        fprintf(stderr, "Error : %s\n", msg);
154        exit(-1);
155}
156
157void EncodingError(char * msg, unsigned char * encoding, int lgth) {
158        fprintf(stderr, "Error : Illegal/unsupported %s encoding of length %i: \"", msg, lgth);
159        for (int i = 0; i < lgth; i++) fprintf(stderr, "%c", encoding[i]);
160        fprintf(stderr, "\"\n"); 
161        exit(-1);
162}
163
164void CharSetValidationError(char * encoding, int err_pos) {
165        fprintf(stderr, "Error: Invalid %s character in input stream at position %i\n", encoding, err_pos);
166        exit(-1);
167}
168
169void XMLCharacterError(int err_pos) {
170        fprintf(stderr, "Illegal control character in XML input stream at position %i\n", err_pos);
171        exit(-1);
172}
173
174void IncompleteCodeUnitError() {
175        fprintf(stderr, "Error: Incomplete code unit at end of file.\n");
176        exit(-1);
177}
178
179void DeclarationError(int pos) {
180        fprintf(stderr, "Parsing error at position %i in XML or Text declaration.\n", pos);
181        exit(-1);
182}
183
184void ImplementationLimitError(char * msg) {
185        fprintf(stderr, "Fatal implementation limit - %s\n", msg);
186        exit(-1);
187}
188
189void ContentModelError() {
190        fprintf(stderr, "Error: nondeterminism in content model.\n");
191        exit(-1);
192}
193
Note: See TracBrowser for help on using the repository browser.