📄 soapcpp2_yacc.tab.c
字号:
/* A Bison parser, made by GNU Bison 2.1. */
/* Skeleton parser for Yacc-like parsing with Bison,
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA. */
/* As a special exception, when this file is copied by Bison into a
Bison output file, you may use that output file without restriction.
This special exception was added by the Free Software Foundation
in version 1.24 of Bison. */
/* Written by Richard Stallman by simplifying the original so called
``semantic'' parser. */
/* All symbols defined below should begin with yy or YY, to avoid
infringing on user name space. This should be done even for local
variables, as they might otherwise be expanded by user macros.
There are some unavoidable exceptions within include files to
define necessary library symbols; they are noted "INFRINGES ON
USER NAME SPACE" below. */
/* Identify Bison output. */
#define YYBISON 1
/* Bison version. */
#define YYBISON_VERSION "2.1"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
/* Pure parsers. */
#define YYPURE 0
/* Using locations. */
#define YYLSP_NEEDED 0
/* Tokens. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
/* Put the tokens into the symbol table, so that GDB and other debuggers
know about them. */
enum yytokentype {
PRAGMA = 258,
AUTO = 259,
DOUBLE = 260,
INT = 261,
STRUCT = 262,
BREAK = 263,
ELSE = 264,
LONG = 265,
SWITCH = 266,
CASE = 267,
ENUM = 268,
REGISTER = 269,
TYPEDEF = 270,
CHAR = 271,
EXTERN = 272,
RETURN = 273,
UNION = 274,
CONST = 275,
FLOAT = 276,
SHORT = 277,
UNSIGNED = 278,
CONTINUE = 279,
FOR = 280,
SIGNED = 281,
VOID = 282,
DEFAULT = 283,
GOTO = 284,
SIZEOF = 285,
VOLATILE = 286,
DO = 287,
IF = 288,
STATIC = 289,
WHILE = 290,
CLASS = 291,
PRIVATE = 292,
PROTECTED = 293,
PUBLIC = 294,
VIRTUAL = 295,
INLINE = 296,
OPERATOR = 297,
LLONG = 298,
BOOL = 299,
CFALSE = 300,
CTRUE = 301,
WCHAR = 302,
TIME = 303,
USING = 304,
NAMESPACE = 305,
ULLONG = 306,
MUSTUNDERSTAND = 307,
SIZE = 308,
FRIEND = 309,
TEMPLATE = 310,
EXPLICIT = 311,
TYPENAME = 312,
RESTRICT = 313,
null = 314,
NONE = 315,
ID = 316,
LAB = 317,
TYPE = 318,
LNG = 319,
DBL = 320,
CHR = 321,
STR = 322,
RA = 323,
LA = 324,
OA = 325,
XA = 326,
AA = 327,
MA = 328,
DA = 329,
TA = 330,
NA = 331,
PA = 332,
OR = 333,
AN = 334,
NE = 335,
EQ = 336,
GE = 337,
LE = 338,
RS = 339,
LS = 340,
AR = 341,
PP = 342,
NN = 343
};
#endif
/* Tokens. */
#define PRAGMA 258
#define AUTO 259
#define DOUBLE 260
#define INT 261
#define STRUCT 262
#define BREAK 263
#define ELSE 264
#define LONG 265
#define SWITCH 266
#define CASE 267
#define ENUM 268
#define REGISTER 269
#define TYPEDEF 270
#define CHAR 271
#define EXTERN 272
#define RETURN 273
#define UNION 274
#define CONST 275
#define FLOAT 276
#define SHORT 277
#define UNSIGNED 278
#define CONTINUE 279
#define FOR 280
#define SIGNED 281
#define VOID 282
#define DEFAULT 283
#define GOTO 284
#define SIZEOF 285
#define VOLATILE 286
#define DO 287
#define IF 288
#define STATIC 289
#define WHILE 290
#define CLASS 291
#define PRIVATE 292
#define PROTECTED 293
#define PUBLIC 294
#define VIRTUAL 295
#define INLINE 296
#define OPERATOR 297
#define LLONG 298
#define BOOL 299
#define CFALSE 300
#define CTRUE 301
#define WCHAR 302
#define TIME 303
#define USING 304
#define NAMESPACE 305
#define ULLONG 306
#define MUSTUNDERSTAND 307
#define SIZE 308
#define FRIEND 309
#define TEMPLATE 310
#define EXPLICIT 311
#define TYPENAME 312
#define RESTRICT 313
#define null 314
#define NONE 315
#define ID 316
#define LAB 317
#define TYPE 318
#define LNG 319
#define DBL 320
#define CHR 321
#define STR 322
#define RA 323
#define LA 324
#define OA 325
#define XA 326
#define AA 327
#define MA 328
#define DA 329
#define TA 330
#define NA 331
#define PA 332
#define OR 333
#define AN 334
#define NE 335
#define EQ 336
#define GE 337
#define LE 338
#define RS 339
#define LS 340
#define AR 341
#define PP 342
#define NN 343
/* Copy the first part of user declarations. */
#line 58 ".\\soapcpp2_yacc.y"
#include "soapcpp2.h"
#ifdef WIN32
#ifndef __STDC__
#define __STDC__
#endif
#define YYINCLUDED_STDLIB_H
#ifdef WIN32_WITHOUT_SOLARIS_FLEX
extern int soapcpp2lex();
#else
extern int yylex();
#endif
#else
extern int yylex();
#endif
extern int is_XML(Tnode*);
#define MAXNEST 16 /* max. nesting depth of scopes */
struct Scope
{ Table *table;
Entry *entry;
Node node;
LONG64 val;
int offset;
Bool grow; /* true if offset grows with declarations */
Bool mask; /* true if enum is mask */
} stack[MAXNEST], /* stack of tables and offsets */
*sp; /* current scope stack pointer */
Table *classtable = (Table*)0,
*enumtable = (Table*)0,
*typetable = (Table*)0,
*booltable = (Table*)0,
*templatetable = (Table*)0;
char *namespaceid = NULL;
int transient = 0;
int permission = 0;
int custom_header = 1;
int custom_fault = 1;
Pragma *pragmas = NULL;
Tnode *qname = NULL;
Tnode *xml = NULL;
/* function prototypes for support routine section */
static Entry *undefined(Symbol*);
static Tnode *mgtype(Tnode*, Tnode*);
static Node op(const char*, Node, Node), iop(const char*, Node, Node), relop(const char*, Node, Node);
static void mkscope(Table*, int), enterscope(Table*, int), exitscope();
static int integer(Tnode*), real(Tnode*), numeric(Tnode*);
static void add_XML(), add_qname(), add_header(Table*), add_fault(Table*), add_response(Entry*, Entry*), add_result(Tnode*);
extern char *c_storage(Storage), *c_type(Tnode*), *c_ident(Tnode*);
extern int is_primitive_or_string(Tnode*), is_stdstr(Tnode*), is_binary(Tnode*);
/* temporaries used in semantic rules */
int i;
char *s, *s1, *s2;
Symbol *sym;
Entry *p, *q;
Tnode *t;
Node tmp, c;
Pragma **pp;
/* Enabling traces. */
#ifndef YYDEBUG
# define YYDEBUG 0
#endif
/* Enabling verbose error messages. */
#ifdef YYERROR_VERBOSE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -