亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? soapcpp2.y

?? linux下開發(fā)的soap協(xié)議。建議大家學(xué)習(xí)學(xué)習(xí)!
?? Y
?? 第 1 頁 / 共 3 頁
字號:
/*	soapcpp2.y	Yacc/Bison grammarThe contents of this file are subject to the Mozilla Public License Version 1.1(the "License"); you may not use this file except in compliance with theLicense. You may obtain a copy of the License athttp://www.cs.fsu.edu/~engelen/gsoapcompilerlicense.htmlSoftware distributed under the License is distributed on an "AS IS" basis,WITHOUT WARRANTY OF ANY KIND, either express or implied. See the Licensefor the specific language governing rights and limitations under the License.The Original Code is ''gSOAP compiler'' consisting of:error2.c, error2.h, init2.c, soapcpp2.c, soapcpp2.h, soapcpp2.l, soapcpp2.y, symbol2.c.The Initial Developer of the Original Code is Robert A. van Engelen.Copyright (C) 2000-2002 Robert A. van Engelen. All Rights Reserved.*/%{#include "soapcpp2.h"#ifdef WIN32extern int soapcpp2lex();#endif#define MAXNEST 8	/* 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,	*uniontable = (Table*)0,	*enumtable = (Table*)0,	*typetable = (Table*)0,	*booltable = (Table*)0;Symbol	*namespaceid = NULL;int	transient = 0;int	custom_header = 1;int	custom_fault = 1;/* 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*), pointer(Tnode*);static void	add_header(Table*), add_fault(Table*), add_response(Entry*, Entry*);extern char	*c_storage(Storage), *c_type(Tnode*);/* temporaries used in semantic rules */int	i;char	*s, *s1, *s2;Symbol	*sym;Entry	*p, *q;Tnode	*t;Node	tmp, c;%}%union{	Symbol	*sym;	LONG64	i;	double	r;	char	c;	char	*s;	Tnode	*typ;	Storage	sto;	Node	rec;	Entry	*e;}/* pragmas */%token	<s> PRAGMA/* keywords */%token	<sym> AUTO     DOUBLE  INT       STRUCT%token	<sym> BREAK    ELSE    LONG      SWITCH%token	<sym> CASE     ENUM    REGISTER  TYPEDEF%token	<sym> CHAR     EXTERN  RETURN    UNION%token	<sym> CONST    FLOAT   SHORT     UNSIGNED%token	<sym> CONTINUE FOR     SIGNED    VOID%token	<sym> DEFAULT  GOTO    SIZEOF    VOLATILE%token	<sym> DO       IF      STATIC    WHILE%token	<sym> CLASS    PRIVATE PROTECTED PUBLIC%token	<sym> VIRTUAL  INLINE  OPERATOR  LLONG%token	<sym> BOOL     CFALSE  CTRUE	 WCHAR%token	<sym> TIME     USING   NAMESPACE ULLONG%token	<sym> MUSTUNDERSTAND   SIZE/* */%token	NONE/* identifiers (TYPE = typedef identifier) */%token	<sym> ID TYPE/* constants */%token	<i> LNG%token	<r> DBL%token	<c> CHR%token	<s> STR/* types and related */%type	<typ> type%type	<sto> store virtual constobj abstract%type	<e> fname class super%type	<sym> name/* expressions and statements */%type	<rec> expr cexp oexp obex aexp abex rexp lexp pexp init spec tspec ptrs array texp qexp occurs/* terminals */%left	','%right	'=' PA NA TA DA MA AA XA OA LA RA  /* += -= *= /= %= &= ^= |= <<= >>= */%right	'?'%right	':'%left	OR		/* || */%left	AN		/* && */%left	'|'%left	'^'%left	'&'%left	EQ NE		/* == != */%left	'<' LE '>' GE	/* <= >= */%left	LS RS		/* << >> */%left	'+' '-'%left	'*' '/' '%'%left	AR		/* -> */%token	PP NN		/* ++ -- */%%/******************************************************************************\	Program syntax\******************************************************************************/prog	: s1 exts	{ add_header(sp->table);			  add_fault(sp->table);			  compile(sp->table);			  freetable(classtable);			  freetable(uniontable);			  freetable(enumtable);			  freetable(typetable);			  freetable(booltable);			}	;s1	: /* empty */	{ classtable = mktable((Table*)0);			  uniontable = mktable((Table*)0);			  enumtable = mktable((Table*)0);			  typetable = mktable((Table*)0);			  booltable = mktable((Table*)0);			  p = enter(booltable, lookup("false"));			  p->info.typ = mkint();			  p->info.val.i = 0;			  p = enter(booltable, lookup("true"));			  p->info.typ = mkint();			  p->info.val.i = 1;			  mkscope(mktable(mktable((Table*)0)), 0);			}	;exts	: NAMESPACE ID '{' exts1 '}'	/* for future use */			{ namespaceid = $2; }	| exts1		{ namespaceid = NULL; }exts1	: /* empty */	| exts1 ext	;ext	: dclrs ';'	/* declaration */	| pragma	| error ';'	{ synerror("input before ; skipped");			  while (sp > stack)			  {	freetable(sp->table);			  	exitscope();			  }			  yyerrok;			}	| '['		{ transient++; }	| ']'		{ transient--;			  if (transient < 0)			  { semwarn("Too many ']'");			    transient = 0;			  }			}	;pragma	: PRAGMA	{ if (i = atoi($1+1) > 0)				yylineno = i;	/* doesn't work, why??? */			  else			  {	sprintf(errbuf, "ignoring pragma `%s'", $1);			  	semwarn(errbuf);			  }			}	;/******************************************************************************\	Declarations\******************************************************************************/decls	: /* empty */	| dclrs ';' decls	{ }	| PRIVATE   ':' decls	{ }	| PROTECTED ':' decls	{ }	| PUBLIC    ':' decls	{ }	| '[' t1 decls ']' t2 decls				{ }	;t1	: /* empty */		{ transient++; }	;t2	: /* empty */		{ transient--;				  if (transient < 0)				  { semwarn("Too many ']'");				    transient = 0;				  }				}	;dclrs	: spec fdclr func	{ }	| spec dclr		{ }	| spec			{ }	| dclrs ',' fdclr func	{ }	| dclrs ',' dclr	{ }	| constr func		{ }	| destr func		{ }	;dclr	: ptrs ID array occurs init			{ if ($3.sto & Stypedef)			  {	p = enter(typetable, $2);				p->info.typ = mksymtype($3.typ, $2);			  	if ($3.sto & Sextern)				  p->info.typ->transient = -1;			  	p->info.sto = $3.sto;				$2->token = TYPE;			  }			  else			  {	p = enter(sp->table, $2);			  	p->info.typ = $3.typ;			  	p->info.sto = $3.sto;				if ($5.hasval)				{	p->info.hasval = True;					switch ($3.typ->type)					{	case Tchar:						case Tuchar:						case Tshort:						case Tushort:						case Tint:						case Tuint:						case Tlong:						case Tulong:						case Tenum:						case Ttime:							if ($5.typ->type == Tint || $5.typ->type == Tchar)								sp->val = p->info.val.i = $5.val.i;							else								semerror("type error in initialization constant");							break;						case Tfloat:						case Tdouble:							if ($5.typ->type == Tfloat || $5.typ->type == Tdouble)								p->info.val.r = $5.val.r;							else								semerror("type error in initialization constant");							break;						default:							if ($5.typ->type == Tpointer && ((Tnode*)$5.typ->ref)->type == Tchar)								p->info.val.s = $5.val.s;							else								semerror("Initialization constant type error");							break;					}				}				else					p->info.val.i = sp->val;				p->info.minOccurs = $4.minOccurs;				p->info.maxOccurs = $4.maxOccurs;				if (sp->mask)				  sp->val <<= 1;				else				  sp->val++;			  	p->info.offset = sp->offset;				if ($3.sto & Sextern)					p->level = GLOBAL;			  	else if (sp->grow)					sp->offset += p->info.typ->width;				else if (p->info.typ->width > sp->offset)					sp->offset = p->info.typ->width;			  }			  sp->entry = p;			}	;fdclr	: ptrs name	{ if ($1.sto & Stypedef)			  {	p = enter(typetable, $2);				p->info.typ = mksymtype($1.typ, $2);			  	p->info.sto = $1.sto;				$2->token = TYPE;			  }			  else			  {	p = enter(sp->table, $2);			  	p->info.typ = $1.typ;			  	p->info.sto = $1.sto;				p->info.hasval = False;			  	p->info.offset = sp->offset;				/*				if ($1.sto & Sextern)					p->level = GLOBAL;			  	else				*/				if (sp->grow)					sp->offset += p->info.typ->width;				else if (p->info.typ->width > sp->offset)					sp->offset = p->info.typ->width;			  }			  sp->entry = p;			}	;name	: ID		{ $$ = $1; }	| OPERATOR '='	{ $$ = lookup("operator="); }	| OPERATOR PA	{ $$ = lookup("operator+="); }	| OPERATOR NA	{ $$ = lookup("operator-="); }	| OPERATOR TA	{ $$ = lookup("operator*="); }	| OPERATOR DA	{ $$ = lookup("operator/="); }	| OPERATOR MA	{ $$ = lookup("operator%="); }	| OPERATOR AA	{ $$ = lookup("operator&="); }	| OPERATOR XA	{ $$ = lookup("operator^="); }	| OPERATOR OA	{ $$ = lookup("operator|="); }	| OPERATOR LA	{ $$ = lookup("operator<<="); }	| OPERATOR RA	{ $$ = lookup("operator>>="); }	| OPERATOR OR	{ $$ = lookup("operator||"); }	| OPERATOR AN	{ $$ = lookup("operator&&"); }	| OPERATOR '|'	{ $$ = lookup("operator|"); }	| OPERATOR '^'	{ $$ = lookup("operator^"); }	| OPERATOR '&'	{ $$ = lookup("operator&"); }	| OPERATOR EQ	{ $$ = lookup("operator="); }	| OPERATOR NE	{ $$ = lookup("operator!="); }	| OPERATOR '<'	{ $$ = lookup("operator<"); }	| OPERATOR LE	{ $$ = lookup("operator<="); }	| OPERATOR '>'	{ $$ = lookup("operator>"); }	| OPERATOR GE	{ $$ = lookup("operator>="); }	| OPERATOR LS	{ $$ = lookup("operator<<"); }	| OPERATOR RS	{ $$ = lookup("operator>>"); }	| OPERATOR '+'	{ $$ = lookup("operator+"); }	| OPERATOR '-'	{ $$ = lookup("operator-"); }	| OPERATOR '*'	{ $$ = lookup("operator*"); }	| OPERATOR '/'	{ $$ = lookup("operator/"); }	| OPERATOR '%'	{ $$ = lookup("operator%"); }	| OPERATOR PP	{ $$ = lookup("operator++"); }	| OPERATOR NN	{ $$ = lookup("operator--"); }	| OPERATOR'['']'{ $$ = lookup("operator[]"); }	| OPERATOR'('')'{ $$ = lookup("operator()"); }	| OPERATOR texp { s1 = c_storage($2.sto);			  s2 = c_type($2.typ);			  s = (char*)emalloc(strlen(s1)+strlen(s2)+10);			  strcpy(s, "operator ");			  strcat(s, s1);			  strcat(s, s2);			  $$ = lookup(s);			  if (!$$)			    $$ = install(s, ID);			}	;constr	: TYPE		{ if ((p = entry(classtable, $1)) == (Entry*)0)			  	semerror("illegal constructor");			  sp->entry = enter(sp->table, $1);			  sp->entry->info.typ = mknone();			  sp->entry->info.sto = Snone;			  sp->entry->info.offset = sp->offset;			  sp->node.typ = mkvoid();			  sp->node.sto = Snone;			}destr	: virtual '~' TYPE			{ if ((p = entry(classtable, $3)) == (Entry*)0)			  	semerror("illegal destructor");			  s = (char*)emalloc(strlen($3->name)+2);			  strcpy(s, "~");			  strcat(s, $3->name);			  sym = lookup(s);			  if (!sym)			    sym = install(s, ID);			  sp->entry = enter(sp->table, sym);			  sp->entry->info.typ = mknone();			  sp->entry->info.sto = $1;			  sp->entry->info.offset = sp->offset;			  sp->node.typ = mkvoid();			  sp->node.sto = Snone;			}	;func	: fname '(' s2 fargso ')' constobj abstract			{ if ($1->level == GLOBAL)			  {	if (sp->entry && sp->entry->info.typ->type == Tpointer && ((Tnode*)sp->entry->info.typ->ref)->type == Tchar)			  	{	sprintf(errbuf, "last output parameter of remote method function prototype `%s' is a pointer to a char which will only return one byte: use char** instead to return a string", $1->sym->name);					semwarn(errbuf);				}			  	else if (sp->entry && (sp->entry->info.typ->type == Tpointer || sp->entry->info.typ->type == Treference || sp->entry->info.typ->type == Tarray || is_transient(sp->entry->info.typ)))					if ($1->info.typ->type == Tint)					{	$1->info.typ = mkfun(sp->entry);						if (!is_transient(sp->entry->info.typ) && !is_response(sp->entry->info.typ))							add_response($1, sp->entry);					}					else					{	sprintf(errbuf, "return type of remote method function prototype `%s' must be integer", $1->sym->name);						semerror(errbuf);					}			  	else			  	{	sprintf(errbuf, "last output parameter of remote method function prototype `%s' is a return parameter and must be a pointer or reference", $1->sym->name);					semerror(errbuf);			  	}			  	unlinklast(sp->table);			  	if ((p = entry(classtable, $1->sym)) != (Entry*) 0)					if ((Table*) p->info.typ->ref != (Table*) 0)					{	sprintf(errbuf, "remote method name clash: struct/class `%s' already defined (reference from line %d)", $1->sym->name, p->lineno);						semerror(errbuf);					}					else					{	p->info.typ->ref = sp->table;						p->info.typ->width = sp->offset;					}			  	else			  	{	p = enter(classtable, $1->sym);					p->info.typ = mkstruct(sp->table, sp->offset);					p->info.typ->id = $1->sym;			  	}			  }			  else if ($1->level == INTERNAL)			  {	$1->info.typ = mkmethod($1->info.typ, sp->table);				$1->info.sto |= $6 | $7;			  }			  exitscope();			}	;fname	:		{ $$ = sp->entry; }	;fargso	: /* empty */		{ }	| fargs			{ }	;fargs	: farg			{ }	| farg ',' fargs	{ }	;farg	: spec dclr		{ }	;/******************************************************************************\	Type specification\******************************************************************************//* texp : type expression (subset of C) */texp	: tspec ptrs array			{ $$ = $3; }	;spec	: /*empty */	{ $$.typ = mkint();

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成av人综合在线观看| 国产精品国产馆在线真实露脸 | 亚洲r级在线视频| 精品一区精品二区高清| av在线不卡网| 久久只精品国产| 一区二区三区四区亚洲| 精品亚洲国产成人av制服丝袜| 色综合天天综合网国产成人综合天| 69久久99精品久久久久婷婷| 一本色道**综合亚洲精品蜜桃冫| 一区二区三区在线免费视频| 丁香天五香天堂综合| 91精品久久久久久久久99蜜臂| **网站欧美大片在线观看| 韩国精品久久久| 国产精品高清亚洲| 久久精品视频在线免费观看 | 五月婷婷另类国产| 成人永久免费视频| 久久综合久久综合久久综合| 日韩成人免费在线| 777久久久精品| 亚洲国产日韩精品| 欧美中文字幕久久| 亚洲精品乱码久久久久久黑人| 成人h动漫精品| 国产亚洲成av人在线观看导航| 久久精品999| 日韩欧美一区在线观看| 免费在线欧美视频| 欧美一区二区黄| 免费观看一级欧美片| 欧美日韩你懂得| 日韩精品福利网| 日韩色视频在线观看| 国产成a人亚洲精品| 久久久国产精品麻豆| 视频一区视频二区中文字幕| 欧美日本精品一区二区三区| 五月婷婷色综合| 精品免费一区二区三区| 国产精品一区久久久久| 国产亚洲欧美日韩在线一区| 成人午夜大片免费观看| 亚洲欧美日韩一区二区| 欧美色图免费看| 久久99精品国产.久久久久| 久久亚洲私人国产精品va媚药| 丰满亚洲少妇av| 亚洲日本一区二区| 欧美日韩精品久久久| 美女视频黄久久| 国产亚洲va综合人人澡精品| www.视频一区| 亚洲第一电影网| 久久久久99精品一区| 99re成人在线| 亚洲一级在线观看| 欧美自拍丝袜亚洲| 欧美亚洲国产一区在线观看网站| 国产精品国产自产拍高清av| 91视视频在线观看入口直接观看www | 国产一区二区三区在线观看免费| 久久久.com| 欧美中文字幕不卡| 美国av一区二区| 国产精品亲子伦对白| 欧美性欧美巨大黑白大战| 日本欧美大码aⅴ在线播放| 欧美国产视频在线| 欧美日韩一级黄| 国产精品综合久久| 一区二区三区欧美日韩| 欧美久久久久久蜜桃| 国产揄拍国内精品对白| 亚洲三级在线看| 欧美大片国产精品| 91蜜桃网址入口| 亚洲一卡二卡三卡四卡无卡久久 | 日韩免费视频一区| 懂色av中文一区二区三区| 亚洲午夜羞羞片| 国产日韩影视精品| 9191精品国产综合久久久久久| 成人深夜视频在线观看| 日韩制服丝袜av| 久久青草欧美一区二区三区| 欧美日韩在线精品一区二区三区激情| 黑人巨大精品欧美黑白配亚洲| 亚洲一区二区三区不卡国产欧美| 国产一区二区三区免费播放| 亚洲午夜成aⅴ人片| 欧美激情在线看| 欧美成人乱码一区二区三区| 欧美一a一片一级一片| 成人爱爱电影网址| 韩国女主播成人在线| 日本在线不卡视频| 亚洲成人高清在线| 亚洲影视在线观看| 亚洲欧美电影一区二区| 国产精品看片你懂得| 国产日韩欧美激情| 久久精品视频一区| 26uuu亚洲| 久久综合色之久久综合| 欧美一区中文字幕| 欧美久久久一区| 欧美久久一二区| 欧美精品久久久久久久久老牛影院| 91精品办公室少妇高潮对白| 91欧美一区二区| 91视视频在线观看入口直接观看www| 99久久免费视频.com| 免费在线一区观看| 91精品国产91综合久久蜜臀| 日本久久一区二区| 色狠狠一区二区三区香蕉| 91美女在线视频| 色先锋资源久久综合| 欧洲av在线精品| 欧美日韩美少妇| 91麻豆精品国产自产在线观看一区| 欧美日韩国产中文| 7777精品伊人久久久大香线蕉超级流畅 | 91麻豆精品国产91久久久久久| 欧美视频在线播放| 欧美精品在线观看播放| 日韩一卡二卡三卡| 久久精品日产第一区二区三区高清版 | 欧美激情在线观看视频免费| 国产精品乱码人人做人人爱| 亚洲欧美日韩国产另类专区| 亚洲成人中文在线| 免费在线观看视频一区| 国产精品亚洲а∨天堂免在线| 成人免费高清视频| 色婷婷久久综合| 欧美一区二区性放荡片| 久久久久国产一区二区三区四区| 日韩一区中文字幕| 亚洲欧美视频在线观看视频| 午夜成人免费电影| 国模套图日韩精品一区二区 | 高清在线不卡av| 日本韩国一区二区| 日韩女优av电影| 欧美日韩国产精品自在自线| 日韩欧美一级特黄在线播放| 久久精品人人做人人爽97| 亚洲一区二区三区免费视频| 日韩福利视频导航| 成a人片国产精品| 欧美日韩国产一级| 国产三级精品视频| 偷拍日韩校园综合在线| 国产a视频精品免费观看| 欧美色图激情小说| 国产区在线观看成人精品| 亚洲成人精品一区| 国产伦精品一区二区三区免费 | 亚洲欧美电影院| 国产综合一区二区| 91老师片黄在线观看| 日韩欧美一二三| 亚洲国产你懂的| av电影天堂一区二区在线| 欧美xxxx在线观看| 亚洲国产aⅴ天堂久久| 亚洲国产成人私人影院tom| jiyouzz国产精品久久| 国产大片一区二区| 欧美一区二区三级| 亚洲综合图片区| 成人性视频网站| 精品精品国产高清一毛片一天堂| 亚洲成人免费视| 94-欧美-setu| 亚洲国产成人午夜在线一区 | 综合婷婷亚洲小说| 国产一区二区三区在线观看精品 | 91精品福利视频| 国产精品成人网| 国产成+人+日韩+欧美+亚洲| 欧美一区二区播放| 亚洲成人av在线电影| 欧美亚洲自拍偷拍| 一区二区三区.www| 91啪亚洲精品| 亚洲激情五月婷婷| 91日韩在线专区| 亚洲欧洲制服丝袜| 在线精品视频一区二区三四| 亚洲免费观看高清| 成人在线视频一区二区| 日韩在线播放一区二区| 免费观看一级欧美片| 99久久久免费精品国产一区二区| 久久精品人人爽人人爽|