Mercurial > repos > ktnyt > gembassy
comparison GEMBASSY-1.0.3/gsoap/src/error2.c @ 2:8947fca5f715 draft default tip
Uploaded
author | ktnyt |
---|---|
date | Fri, 26 Jun 2015 05:21:44 -0400 |
parents | 84a17b3fad1f |
children |
comparison
equal
deleted
inserted
replaced
1:84a17b3fad1f | 2:8947fca5f715 |
---|---|
1 /* | |
2 error2.c | |
3 | |
4 Error handling. | |
5 | |
6 gSOAP XML Web services tools | |
7 Copyright (C) 2000-2008, Robert van Engelen, Genivia Inc. All Rights Reserved. | |
8 This part of the software is released under one of the following licenses: | |
9 GPL or Genivia's license for commercial use. | |
10 -------------------------------------------------------------------------------- | |
11 GPL license. | |
12 | |
13 This program is free software; you can redistribute it and/or modify it under | |
14 the terms of the GNU General Public License as published by the Free Software | |
15 Foundation; either version 2 of the License, or (at your option) any later | |
16 version. | |
17 | |
18 This program is distributed in the hope that it will be useful, but WITHOUT ANY | |
19 WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A | |
20 PARTICULAR PURPOSE. See the GNU General Public License for more details. | |
21 | |
22 You should have received a copy of the GNU General Public License along with | |
23 this program; if not, write to the Free Software Foundation, Inc., 59 Temple | |
24 Place, Suite 330, Boston, MA 02111-1307 USA | |
25 | |
26 Author contact information: | |
27 engelen@genivia.com / engelen@acm.org | |
28 | |
29 This program is released under the GPL with the additional exemption that | |
30 compiling, linking, and/or using OpenSSL is allowed. | |
31 -------------------------------------------------------------------------------- | |
32 A commercial use license is available from Genivia, Inc., contact@genivia.com | |
33 -------------------------------------------------------------------------------- | |
34 */ | |
35 | |
36 #include "soapcpp2.h" | |
37 | |
38 #ifdef HAVE_CONFIG_H | |
39 #include "soapcpp2_yacc.h" | |
40 #else | |
41 #include "soapcpp2_yacc.tab.h" | |
42 #endif | |
43 | |
44 #define MAXERR 10 | |
45 | |
46 extern char yytext[]; /* lexeme found by the lexical analyzer */ | |
47 | |
48 static int lexerrno = 0; | |
49 static int synerrno = 0; | |
50 static int semerrno = 0; | |
51 static int semwarno = 0; | |
52 | |
53 char errbuf[1024]; /* to hold error messages */ | |
54 | |
55 /* | |
56 yyerror - called by parser from an error production with nonterminal `error' | |
57 */ | |
58 void yyerror(char *s) | |
59 { fprintf(stderr, "%s(%d): %s\n", filename, yylineno, s); | |
60 } | |
61 | |
62 /* | |
63 lexerror - called by lexical analyzer upon failure to recognize a token | |
64 */ | |
65 void lexerror(const char *s) | |
66 { fprintf(stderr, "%s(%d): %s: %s\n", filename, yylineno, s, yytext); | |
67 if (lexerrno++ >= MAXERR) | |
68 execerror("too many syntactic errors, bailing out"); | |
69 } | |
70 | |
71 /* | |
72 synerror - called by a semantic action in the yacc grammar | |
73 */ | |
74 void synerror(const char *s) | |
75 { fprintf(stderr, "%s(%d): Syntax error: %s\n", filename, yylineno-1, s); | |
76 if (synerrno++ >= MAXERR) | |
77 execerror("too many syntactic errors, bailing out"); | |
78 } | |
79 | |
80 /* | |
81 semerror - report semantic error from static checking | |
82 */ | |
83 void semerror(const char *s) | |
84 { fprintf(stderr, "\n%s(%d): **ERROR**: %s\n\n", filename, yylineno, s); | |
85 if (semerrno++ >= MAXERR) | |
86 execerror("too many semantic errors, bailing out"); | |
87 } | |
88 | |
89 /* | |
90 semwarn - report semantic warning from static checking | |
91 */ | |
92 void semwarn(const char *s) | |
93 { fprintf(stderr, "\n%s(%d): *WARNING*: %s\n\n", filename, yylineno, s); | |
94 semwarno++; | |
95 } | |
96 | |
97 /* | |
98 compliancewarn - report compliance warning | |
99 */ | |
100 void compliancewarn(const char *s) | |
101 { fprintf(stderr, "Compliance warning: %s\n", s); | |
102 } | |
103 | |
104 /* | |
105 typerror - report type error (a semantic error) | |
106 */ | |
107 void typerror(const char *s) | |
108 { fprintf(stderr, "%s(%d): Type error: %s\n", filename, yylineno, s); | |
109 if (semerrno++ >= MAXERR) | |
110 execerror("too many semantic errors, bailing out"); | |
111 } | |
112 | |
113 /* | |
114 execerror - print error message and terminate execution | |
115 */ | |
116 void execerror(const char *s) | |
117 { fprintf(stderr, "Critical error: %s\n", s); | |
118 exit(1); | |
119 } | |
120 | |
121 /* | |
122 progerror - called when check(expr) failed, i.e. upon programming error | |
123 */ | |
124 void progerror(const char *s, const char *f, int l) | |
125 { fprintf(stderr, "Program failure: %s in file %s line %d\n", s, f, l); | |
126 exit(1); | |
127 } | |
128 | |
129 /* | |
130 errstat - show error statistics | |
131 */ | |
132 int errstat(void) | |
133 { if (!lexerrno && !synerrno && !semerrno) | |
134 { fprintf(stderr, "\nCompilation successful "); | |
135 if (semwarno) | |
136 fprintf(stderr, "(%d warning%s)\n\n", semwarno, semwarno>1?"s":""); | |
137 else | |
138 fprintf(stderr, "\n\n"); | |
139 return 0; | |
140 } | |
141 fprintf(stderr, "\nThere were errors:\n"); | |
142 if (lexerrno) | |
143 fprintf(stderr, "%d lexical error%s\n", lexerrno, lexerrno>1?"s":""); | |
144 if (synerrno) | |
145 fprintf(stderr, "%d syntax error%s\n", synerrno, synerrno>1?"s":""); | |
146 if (semerrno) | |
147 fprintf(stderr, "%d semantic error%s\n", semerrno, semerrno>1?"s":""); | |
148 if (semwarno) | |
149 fprintf(stderr, "%d warning%s\n", semwarno, semwarno>1?"s":""); | |
150 fprintf(stderr, "\n"); | |
151 return -1; | |
152 } |