diff GEMBASSY-1.0.3/gsoap/src/soapcpp2_lex.l @ 2:8947fca5f715 draft default tip

Uploaded
author ktnyt
date Fri, 26 Jun 2015 05:21:44 -0400
parents 84a17b3fad1f
children
line wrap: on
line diff
--- a/GEMBASSY-1.0.3/gsoap/src/soapcpp2_lex.l	Fri Jun 26 05:20:29 2015 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1064 +0,0 @@
-/*
-	soapcpp2_lex.l
-
-	Flex/Lex tokenizer.
-
---------------------------------------------------------------------------------
-gSOAP XML Web services tools
-Copyright (C) 2000-2013, Robert van Engelen, Genivia Inc. All Rights Reserved.
-This part of the software is released under ONE of the following licenses:
-GPL or Genivia's license for commercial use.
---------------------------------------------------------------------------------
-GPL license.
-
-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 of the License, 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., 59 Temple
-Place, Suite 330, Boston, MA 02111-1307 USA
-
-Author contact information:
-engelen@genivia.com / engelen@acm.org
-
-This program is released under the GPL with the additional exemption that
-compiling, linking, and/or using OpenSSL is allowed.
---------------------------------------------------------------------------------
-A commercial use license is available from Genivia, Inc., contact@genivia.com
---------------------------------------------------------------------------------
-*/
-
-%{
-#include "soapcpp2.h"
-
-#ifdef HAVE_CONFIG_H
-#include "soapcpp2_yacc.h"
-#else
-#include "soapcpp2_yacc.tab.h"
-#endif
-
-#ifdef WITH_BISON
-YYSTYPE yylval;
-#undef YY_INPUT
-#define YY_INPUT(buf, result, max_size) \
-	{ \
-	int c = getc(yyin); \
-	result = (c == EOF) ? YY_NULL : (buf[0] = c, 1); \
-	}
-#endif
-
-#ifndef WITH_LEX
-#define MAX_IMPORT_DEPTH 16
-static struct importlist { struct importlist *next; char name[1]; } *importlist = NULL;
-static char fnstk[MAX_IMPORT_DEPTH][1024];
-static int lnstk[MAX_IMPORT_DEPTH];
-static char *imstk[MAX_IMPORT_DEPTH];
-static YY_BUFFER_STATE instk[MAX_IMPORT_DEPTH];
-#endif
-int imports = 0;
-char *imported = NULL;
-static void check_id(const char*);
-static Token install_id(void);
-static Token install_tag(void);
-static Token install_int(void);
-static Token install_hex(void);
-static Token install_num(void);
-static Token install_chr(void);
-static Token install_str(void);
-static Token install_pragma(void);
-static void directive(void), option(void);
-static Token error_chr(void);
-static Token error_str(void);
-static int convchar(int*);
-static int hexchar(int*);
-static int octchar(int*);
-static void module(const char *name, const char *fullname);
-static void import(const char *file);
-static int magic(const char *name);
-%}
-ws		[ \t\v\r\f\n\x1A\xA0]
-digit		[0-9]
-alpha		[a-zA-Z_]
-id		({alpha}|:{alpha})({alpha}|{digit}|::|:{alpha})*
-tag		`[^`\t\v\r\f\n>]+`
-int		{digit}+
-hex		0[xX][0-9a-fA-F]+
-num		{int}(\.{int}([Ee][+-]?{int})?|(\.{int})?[Ee][+-]?{int})
-chr		'(\\'|[^'\n])*'
-str		L?\"(\\\"|\\\n|[^"])*\"
-module		#module{ws}+.*\n
-import		#import{ws}+.*\n
-%x MLCOMMENT
-%%
-{ws}			{ /* skip white space */ }
-"/*"			{ BEGIN(MLCOMMENT); }
-<MLCOMMENT>.|\n		{ }
-<MLCOMMENT>"*/"		{ BEGIN(INITIAL); }
-<MLCOMMENT><<EOF>>	{ execerror("Unclosed multiline comment at the end of file"); }
-"//"\/*"gsoapopt".*\n	{ option(); }
-"//"\/*"gsoap".*\n	{ directive(); }
-"//".*\n		{ /* skip single line comment */ }
-"+="			{ return PA; }
-"-="			{ return NA; }
-"*="			{ return TA; }
-"/="			{ return DA; }
-"%="			{ return MA; }
-"&="			{ return AA; }
-"^="			{ return XA; }
-"|="			{ return OA; }
-"<<="			{ return LA; }
-">>="			{ return RA; }
-"||"			{ return OR; }
-"&&"			{ return AN; }
-"=="			{ return EQ; }
-"!="			{ return NE; }
-"<="			{ return LE; }
-">="			{ return GE; }
-"<<"			{ return LS; }
-">>"			{ return RS; }
-"++"			{ return PP; }
-"--"			{ return NN; }
-"->"			{ return AR; }
-[;,:=|^&<>+\-*/%!?~(){}\[\].@$]	{ return yytext[0]; }
-{id}			{ return install_id(); }
-{tag}			{ return install_tag(); }
-{int}			{ return install_int(); }
-{hex}			{ return install_hex(); }
-{num}			{ return install_num(); }
-{chr}			{ return install_chr(); }
-{str}			{ return install_str(); }
-{module}		{ char *s, *t, buf[1024];
-			  s = strchr(yytext, '"');
-			  if (!s)
-			    t = yytext+7;
-			  else
-			  { strcpy(buf, s+1);
-			    s = strchr(buf, '"');
-			    *s = '\0';
-			    t = strchr(s+1, '"');
-			    if (t)
-			    { t++;
-			      s = strchr(t+1, '"');
-			      if (s)
-			        *s = '\0';
-			    }
-			  }
-			  module(buf, t);
-			}
-{import}		{ char *s, buf[1024];
-			  s = strchr(yytext, '"');
-			  if (s)
-			  { strcpy(buf, s+1);
-			    s = strchr(buf, '"');
-			    *s = '\0';
-			    import(buf);
-			  }
-			  else
-		            lexerror("Invalid import directive");
-			}
-#.*\n			{ return install_pragma(); }
-'[^'\n]*/\n		{ return error_chr(); }
-\"[^"\n]*/\n		{ return error_str(); }
-.			{ lexerror("Skipping unknown symbol"); }
-<<EOF>>			{ /* when Lex complains: remove this line and below */
-#ifndef WITH_LEX
-			  if (--imports < 0)
-			    yyterminate();
-			  else
-			  { yy_delete_buffer(YY_CURRENT_BUFFER);
-			    yy_switch_to_buffer(instk[imports]);
-			    strcpy(filename, fnstk[imports]);
-			    yylineno = lnstk[imports];
-			    imported = imstk[imports];
-			  }
-#endif
-			}
-%%
-
-/*
-	install_id - lookup identifier in symbol table. If found, return token
-	and symbol table entry. If not found, create entry in symbol table and
-	return ID token.
-*/ 
-static Token
-install_id()
-{	Symbol *p = lookup(yytext);
-	if (!p)
-	{	int i, flag = 0;
-		p = install(yytext, ID);
-		/* [_](x|X)(m|M)(l|L)__ is OK */
-		/* [_](x|X)(m|M)(l|L).* is not OK */
-		/* .*__(x|X)(m|M)(l|L) is not OK */
-		/* .*::(x|X)(m|M)(l|L) is not OK */
-		for (i = 0; i < yyleng; i++)
-		{	if ((yytext[i] == '_' && yytext[i+1] == '_')
-			 || (yytext[i] == ':' && yytext[i+1] == ':'))
-			{	flag = 1;
-				check_id(yytext + i + 2);
-			}
-		}
-		if (!flag && strcmp(yytext, "XML"))
-			check_id(yytext);
-	}
-	yylval.sym = p;
-	return p->token;
-}
-
-/*
-	install_tag - 
-	return TAG token.
-*/ 
-static Token
-install_tag()
-{	yylval.s = emalloc(yyleng-1);	/* yyleng = length(yytext) */
-	strcpy(yylval.s, yytext+1);
-	yylval.s[yyleng-2] = '\0';
-	return TAG;
-}
-
-/*
-	check_id - check for (x|X)(m|M)(l|L)
-*/
-static void
-check_id(const char *s)
-{	while (*s == '_')
-		s++;
-	if ((s[0] == 'x' || s[0] == 'X')
-	 && (s[1] == 'm' || s[1] == 'M')
-	 && (s[2] == 'l' || s[2] == 'L'))
-	{	sprintf(errbuf, "identifier '%s' starts with or embeds '%3.3s' character sequence exclusively reserved for the XML standard (for enum constants: please ignore this warning)", yytext, s);
-		semwarn(errbuf);
-	}
-}
-
-/*
-	install_int - convert digits to integer and return LNG token.
-*/
-static Token
-install_int(void)
-{
-	sscanf(yytext, SOAP_ULONG_FORMAT, &yylval.i);
-	return LNG;
-}
-
-/*
-	install_hex - convert hexadecimal digits to integer and return LNG
-*/
-static Token
-install_hex(void)
-{
-	sscanf(yytext, SOAP_XLONG_FORMAT, &yylval.i);
-	return LNG;
-}
-
-/*
-	install_num - convert digits to floating point number and return DBL
-*/
-static Token
-install_num(void)
-{	sscanf(yytext, "%lf", &yylval.r);
-	return DBL;
-}
-
-/*
-	install_chr - convert character constant and return CHR.
-*/
-static Token
-install_chr(void)
-{	int i = 2;
-	if (yytext[1] == '\\')
-		yylval.c = convchar(&i);
-	else	yylval.c = yytext[i-1];
-	if (yytext[i] != '\'')
-		lexerror("Illegal character constant");
-	return CHR;
-}
-
-/*
-	install_str - convert and store string in memory. Return STR.
-*/
-static Token
-install_str(void)
-{	int i, j = 0;
-	yylval.s = emalloc(yyleng-1);	/* yyleng = length(yytext) */
-	for (i = 1 + (yytext[0] == 'L'); i < yyleng-1; i++)
-		if (yytext[i] == '\\')
-		{	if (yytext[++i] != '\n')
-			{	yylval.s[j++] = convchar(&i);
-				i--;
-			}
-		}
-		else
-			yylval.s[j++] = yytext[i];
-	yylval.s[j] = '\0';
-	return STR;
-}
-
-/*
-	install_pragma - store pragma in string. Return PRAGMA.
-*/
-static Token
-install_pragma(void)
-{	yylval.s = emalloc(yyleng);	/* yyleng = length(yytext) */
-	strncpy(yylval.s, yytext, strlen(yytext)-1);
-	yylval.s[strlen(yytext)-1] = '\0';
-	return PRAGMA;
-}
-
-static void directive(void)
-{	int i, j, k;
-	char *s;
-	Service *sp;
-	Method *m;
-	Data *d;
-	int service;
-	for (i = 7; yytext[i]; i++)
-		if (yytext[i] > 32)
-			break;
-	for (j = i; yytext[j]; j++)
-		if (yytext[j] <= 32)
-			break;
-	if (i == j)
-		return;
-	s = (char*)emalloc(j-i+1);
-	for (k = 0; k < j-i; k++)
-	{ s[k] = yytext[k+i];
-	  if (s[k] == '_')
-	    s[k] = '-';
-	}
-	s[k] = '\0';
-	for (sp = services; sp; sp = sp->next)
-		if (!strcmp(sp->ns, s))
-			break;
-	if (!sp)
-	{	sp = (Service*)emalloc(sizeof(Service));
-		sp->next = services;
-		sp->ns = s;
-		sp->name = NULL;
-		sp->porttype = NULL;
-		sp->portname = NULL;
-		sp->binding = NULL;
-		sp->definitions = NULL;
-		sp->transport = NULL;
-		sp->URL = NULL;
-		sp->URI = NULL;
-		sp->URI2 = NULL;
-		sp->WSDL = NULL;
-		sp->style = NULL;
-		sp->encoding = NULL;
-		sp->protocol = NULL;
-		sp->xsi_type = 0;
-		sp->elementForm = NULL;
-		sp->attributeForm = NULL;
-		sp->executable = NULL;
-		sp->import = NULL;
-		sp->documentation = NULL;
-		sp->list = NULL;
-		sp->data = NULL;
-		services = sp;
-	}
-	for (i = j; yytext[i]; i++)
-		if (yytext[i] > 32)
-			break;
-	if (!strncmp(yytext+i, "service", 7) || !strncmp(yytext+i, "schema", 6))
-	{	service = strncmp(yytext+i, "schema", 6);
-		for (i += 7; yytext[i]; i++)
-			if (yytext[i] > 32)
-				break;
-		for (j = i; yytext[j]; j++)
-			if (yytext[j] <= 32)
-				break;
-		for (; yytext[j]; j++)
-			if (yytext[j] > 32)
-				break;
-		for (k = j; yytext[k]; k++)
-			if (yytext[k] <= 32)
-				break;
-		/*
-		if (j == k)
-			return;
-		*/
-		s = (char*)emalloc(k-j+1);
-		strncpy(s, yytext+j, k-j);
-		s[k-j] = '\0';
-		if (!strncmp(yytext+i, "name:", 5))
-		{	sp->name = s;
-			for (j = k; yytext[j]; j++)
-				if (yytext[j] > 32)
-					break;
-			for (k = j; yytext[k]; k++)
-				if (yytext[k] == 10 || yytext[k] == 13)
-					break;
-			if (j == k)
-				return;
-			s = (char*)emalloc(k-j+1);
-			strncpy(s, yytext+j, k-j);
-			s[k-j] = '\0';
-			sp->documentation = s;
-		}
-		else if (!strncmp(yytext+i, "type:", 5) || !strncmp(yytext+i, "portType:", 9) || !strncmp(yytext+i, "interface:", 10))
-			sp->porttype = s;
-		else if (!strncmp(yytext+i, "portName:", 9))
-			sp->portname = s;
-		else if (!strncmp(yytext+i, "binding:", 8))
-			sp->binding = s;
-		else if (!strncmp(yytext+i, "definitions:", 12))
-			sp->definitions = s;
-		else if (!strncmp(yytext+i, "documentation:", 14))
-		{	for (k = j; yytext[k]; k++)
-				if (yytext[k] == 10 || yytext[k] == 13)
-					break;
-			if (j == k)
-				return;
-			s = (char*)emalloc(k-j+1);
-			strncpy(s, yytext+j, k-j);
-			s[k-j] = '\0';
-			sp->documentation = s;
-		}
-		else if (!strncmp(yytext+i, "transport:", 10))
-			sp->transport = s;
-		else if (!strncmp(yytext+i, "location:", 9) || !strncmp(yytext+i, "endpoint:", 9) || !strncmp(yytext+i, "port:", 5))
-		{	if (sp->URL)
-			{	char *t = (char*)emalloc(strlen(sp->URL) + strlen(s) + 2);
-				strcpy(t, sp->URL);
-				strcat(t, " ");
-				strcat(t, s);
-				sp->URL = t;
-			}
-			else
-				sp->URL = s;
-			if (!service && !sp->import)
-				sp->import = s;
-		}
-		else if (!strncmp(yytext+i, "executable:", 11))
-			sp->executable = s;
-		else if (!strncmp(yytext+i, "namespace:", 10))
-		{	if (service)
-			{	if (!sp->URI)
-					sp->URI = s;
-				sp->WSDL = s;
-			}
-			else if (!strcmp(sp->ns, "SOAP-ENV"))
-			{	if (vflag > 0)
-					semwarn("option -1 or -2 overrides SOAP-ENV namespace");
-				else
-					envURI = s;
-				sp->URI = envURI;
-			}
-			else if (!strcmp(sp->ns, "SOAP-ENC"))
-			{	if (vflag > 0)
-					semwarn("option -1 or -2 overrides SOAP-ENC namespace");
-				else
-					encURI = s;
-				sp->URI = encURI;
-			}
-			else
-				sp->URI = s;
-		}
-		else if (!strncmp(yytext+i, "namespace2:", 11))
-		{	sp->URI2 = s;
-		}
-		else if (!strncmp(yytext+i, "typed:", 6))
-		{	sp->xsi_type = (*s == 'y');
-		}
-		else if (!strncmp(yytext+i, "form:", 5))
-		{	sp->elementForm = s;
-			sp->attributeForm = s;
-		}
-		else if (!strncmp(yytext+i, "elementForm:", 12))
-			sp->elementForm = s;
-		else if (!strncmp(yytext+i, "attributeForm:", 14))
-			sp->attributeForm = s;
-		else if (!strncmp(yytext+i, "import:", 7))
-		{	if (!sp->URI)
-				sp->URI = s;
-			sp->import = s;
-		}
-		else if (!strncmp(yytext+i, "encoding:", 9))
-		{	if (!strcmp(s, "encoded"))
-				sp->encoding = "";
-			else
-				sp->encoding = s;
-		}
-		else if (!strncmp(yytext+i, "style:", 6))
-			sp->style = s;
-		else if (!strncmp(yytext+i, "protocol:", 9))
-			sp->protocol = s;
-		else if (!strncmp(yytext+i, "method-protocol:", 16))
-		{	m = (Method*)emalloc(sizeof(Method));
-			m->name = s;
-			m->mess = PROTOCOL;
-			m->part = NULL;
-			m->next = sp->list;
-			sp->list = m;
-			for (j = k; yytext[j]; j++)
-				if (yytext[j] > 32)
-					break;
-			for (k = j; yytext[k]; k++)
-				if (yytext[k] == 10 || yytext[k] == 13)
-					break;
-			if (j == k)
-				return;
-			s = (char*)emalloc(k-j+1);
-			strncpy(s, yytext+j, k-j);
-			s[k-j] = '\0';
-			m->part = s;
-		}
-		else if (!strncmp(yytext+i, "method-style:", 13))
-		{	m = (Method*)emalloc(sizeof(Method));
-			m->name = s;
-			m->mess = STYLE;
-			m->part = NULL;
-			m->next = sp->list;
-			sp->list = m;
-			for (j = k; yytext[j]; j++)
-				if (yytext[j] > 32)
-					break;
-			for (k = j; yytext[k]; k++)
-				if (yytext[k] == 10 || yytext[k] == 13)
-					break;
-			if (j == k)
-				return;
-			s = (char*)emalloc(k-j+1);
-			strncpy(s, yytext+j, k-j);
-			s[k-j] = '\0';
-			m->part = s;
-		}
-		else if (!strncmp(yytext+i, "method-encoding:", 16))
-		{	m = (Method*)emalloc(sizeof(Method));
-			m->name = s;
-			m->mess = ENCODING;
-			m->part = NULL;
-			m->next = sp->list;
-			sp->list = m;
-			for (j = k; yytext[j]; j++)
-				if (yytext[j] > 32)
-					break;
-			for (k = j; yytext[k]; k++)
-				if (yytext[k] == 10 || yytext[k] == 13)
-					break;
-			if (j == k)
-				return;
-			s = (char*)emalloc(k-j+1);
-			strncpy(s, yytext+j, k-j);
-			s[k-j] = '\0';
-		 	if (strcmp(s, "encoded"))
-				m->part = s;
-			else
-				m->part = "";
-		}
-		else if (!strncmp(yytext+i, "method-response-encoding:", 25))
-		{	m = (Method*)emalloc(sizeof(Method));
-			m->name = s;
-			m->mess = RESPONSE_ENCODING;
-			m->part = NULL;
-			m->next = sp->list;
-			sp->list = m;
-			for (j = k; yytext[j]; j++)
-				if (yytext[j] > 32)
-					break;
-			for (k = j; yytext[k]; k++)
-				if (yytext[k] == 10 || yytext[k] == 13)
-					break;
-			if (j == k)
-				return;
-			s = (char*)emalloc(k-j+1);
-			strncpy(s, yytext+j, k-j);
-			s[k-j] = '\0';
-		 	if (strcmp(s, "encoded"))
-				m->part = s;
-			else
-				m->part = "";
-		}
-		else if (!strncmp(yytext+i, "method-documentation:", 21))
-		{	m = (Method*)emalloc(sizeof(Method));
-			m->name = s;
-			m->mess = COMMENT;
-			m->part = NULL;
-			m->next = sp->list;
-			sp->list = m;
-			for (j = k; yytext[j]; j++)
-				if (yytext[j] > 32)
-					break;
-			for (k = j; yytext[k]; k++)
-				if (yytext[k] == 10 || yytext[k] == 13)
-					break;
-			if (j == k)
-				return;
-			s = (char*)emalloc(k-j+1);
-			strncpy(s, yytext+j, k-j);
-			s[k-j] = '\0';
-			m->part = s;
-		}
-		else if (!strncmp(yytext+i, "method-action:", 14))
-		{	m = (Method*)emalloc(sizeof(Method));
-			m->name = s;
-			m->mess = ACTION;
-			m->part = NULL;
-			m->next = sp->list;
-			sp->list = m;
-			for (j = k; yytext[j]; j++)
-				if (yytext[j] > 32)
-					break;
-			for (k = j; yytext[k]; k++)
-				if (yytext[k] == 10 || yytext[k] == 13)
-					break;
-			if (j == k)
-				return;
-			s = (char*)emalloc(k-j+1);
-			strncpy(s, yytext+j, k-j);
-			s[k-j] = '\0';
-			m->part = s;
-		}
-		else if (!strncmp(yytext+i, "method-input-action:", 20))
-		{	m = (Method*)emalloc(sizeof(Method));
-			m->name = s;
-			m->mess = REQUEST_ACTION;
-			m->part = NULL;
-			m->next = sp->list;
-			sp->list = m;
-			for (j = k; yytext[j]; j++)
-				if (yytext[j] > 32)
-					break;
-			for (k = j; yytext[k]; k++)
-				if (yytext[k] == 10 || yytext[k] == 13)
-					break;
-			if (j == k)
-				return;
-			s = (char*)emalloc(k-j+1);
-			strncpy(s, yytext+j, k-j);
-			s[k-j] = '\0';
-			m->part = s;
-		}
-		else if (!strncmp(yytext+i, "method-output-action:", 21))
-		{	m = (Method*)emalloc(sizeof(Method));
-			m->name = s;
-			m->mess = RESPONSE_ACTION;
-			m->part = NULL;
-			m->next = sp->list;
-			sp->list = m;
-			for (j = k; yytext[j]; j++)
-				if (yytext[j] > 32)
-					break;
-			for (k = j; yytext[k]; k++)
-				if (yytext[k] == 10 || yytext[k] == 13)
-					break;
-			if (j == k)
-				return;
-			s = (char*)emalloc(k-j+1);
-			strncpy(s, yytext+j, k-j);
-			s[k-j] = '\0';
-			m->part = s;
-		}
-		else if (!strncmp(yytext+i, "method-fault-action:", 20))
-		{	m = (Method*)emalloc(sizeof(Method));
-			m->name = s;
-			m->mess = FAULT_ACTION;
-			m->part = NULL;
-			m->next = sp->list;
-			sp->list = m;
-			for (j = k; yytext[j]; j++)
-				if (yytext[j] > 32)
-					break;
-			for (k = j; yytext[k]; k++)
-				if (yytext[k] == 10 || yytext[k] == 13)
-					break;
-			if (j == k)
-				return;
-			s = (char*)emalloc(k-j+1);
-			strncpy(s, yytext+j, k-j);
-			s[k-j] = '\0';
-			m->part = s;
-		}
-		else if (!strncmp(yytext+i, "method-mime-type:", 17))
-		{	m = (Method*)emalloc(sizeof(Method));
-			m->name = s;
-			m->mess = MIMEIN | MIMEOUT;
-			m->part = NULL;
-			m->next = sp->list;
-			sp->list = m;
-			for (j = k; yytext[j]; j++)
-				if (yytext[j] > 32)
-					break;
-			for (k = j; yytext[k]; k++)
-				if (yytext[k] <= 32)
-					break;
-			if (j == k)
-				return;
-			s = (char*)emalloc(k-j+1);
-			strncpy(s, yytext+j, k-j);
-			s[k-j] = '\0';
-			m->part = s;
-		}
-		else if (!strncmp(yytext+i, "method-input-mime-type:", 23))
-		{	m = (Method*)emalloc(sizeof(Method));
-			m->name = s;
-			m->mess = MIMEIN;
-			m->part = NULL;
-			m->next = sp->list;
-			sp->list = m;
-			for (j = k; yytext[j]; j++)
-				if (yytext[j] > 32)
-					break;
-			for (k = j; yytext[k]; k++)
-				if (yytext[k] <= 32)
-					break;
-			if (j == k)
-				return;
-			s = (char*)emalloc(k-j+1);
-			strncpy(s, yytext+j, k-j);
-			s[k-j] = '\0';
-			m->part = s;
-		}
-		else if (!strncmp(yytext+i, "method-output-mime-type:", 24))
-		{	m = (Method*)emalloc(sizeof(Method));
-			m->name = s;
-			m->mess = MIMEOUT;
-			m->part = NULL;
-			m->next = sp->list;
-			sp->list = m;
-			for (j = k; yytext[j]; j++)
-				if (yytext[j] > 32)
-					break;
-			for (k = j; yytext[k]; k++)
-				if (yytext[k] <= 32)
-					break;
-			if (j == k)
-				return;
-			s = (char*)emalloc(k-j+1);
-			strncpy(s, yytext+j, k-j);
-			s[k-j] = '\0';
-			m->part = s;
-		}
-		else if (!strncmp(yytext+i, "method-header-part:", 19))
-		{	m = (Method*)emalloc(sizeof(Method));
-			m->name = s;
-			m->mess = HDRIN | HDROUT;
-			m->part = NULL;
-			m->next = sp->list;
-			sp->list = m;
-			for (j = k; yytext[j]; j++)
-				if (yytext[j] > 32)
-					break;
-			for (k = j; yytext[k]; k++)
-				if (yytext[k] <= 32)
-					break;
-			if (j == k)
-				return;
-			s = (char*)emalloc(k-j+1);
-			strncpy(s, yytext+j, k-j);
-			s[k-j] = '\0';
-			m->part = s;
-		}
-		else if (!strncmp(yytext+i, "method-input-header-part:", 25))
-		{	m = (Method*)emalloc(sizeof(Method));
-			m->name = s;
-			m->mess = HDRIN;
-			m->part = NULL;
-			m->next = sp->list;
-			sp->list = m;
-			for (j = k; yytext[j]; j++)
-				if (yytext[j] > 32)
-					break;
-			for (k = j; yytext[k]; k++)
-				if (yytext[k] <= 32)
-					break;
-			if (j == k)
-				return;
-			s = (char*)emalloc(k-j+1);
-			strncpy(s, yytext+j, k-j);
-			s[k-j] = '\0';
-			m->part = s;
-		}
-		else if (!strncmp(yytext+i, "method-output-header-part:", 26))
-		{	m = (Method*)emalloc(sizeof(Method));
-			m->name = s;
-			m->mess = HDROUT;
-			m->part = NULL;
-			m->next = sp->list;
-			sp->list = m;
-			for (j = k; yytext[j]; j++)
-				if (yytext[j] > 32)
-					break;
-			for (k = j; yytext[k]; k++)
-				if (yytext[k] <= 32)
-					break;
-			if (j == k)
-				return;
-			s = (char*)emalloc(k-j+1);
-			strncpy(s, yytext+j, k-j);
-			s[k-j] = '\0';
-			m->part = s;
-		}
-		else if (!strncmp(yytext+i, "method-fault:", 13))
-		{	m = (Method*)emalloc(sizeof(Method));
-			m->name = s;
-			m->mess = FAULT;
-			m->part = NULL;
-			m->next = sp->list;
-			sp->list = m;
-			for (j = k; yytext[j]; j++)
-				if (yytext[j] > 32)
-					break;
-			for (k = j; yytext[k]; k++)
-				if (yytext[k] <= 32)
-					break;
-			if (j == k)
-				return;
-			s = (char*)emalloc(k-j+1);
-			strncpy(s, yytext+j, k-j);
-			s[k-j] = '\0';
-			m->part = s;
-		}
-		else if (!strncmp(yytext+i, "type-documentation:", 19))
-		{	d = (Data*)emalloc(sizeof(Data));
-			d->name = s;
-			d->text = NULL;
-			d->next = sp->data;
-			sp->data = d;
-			for (j = k; yytext[j]; j++)
-				if (yytext[j] > 32)
-					break;
-			for (k = j; yytext[k]; k++)
-				if (yytext[k] == 10 || yytext[k] == 13)
-					break;
-			if (j == k)
-				return;
-			s = (char*)emalloc(k-j+1);
-			strncpy(s, yytext+j, k-j);
-			s[k-j] = '\0';
-			d->text = s;
-		}
-		else
-                {	sprintf(errbuf, "unrecognized gsoap directive: %s", yytext+i);
-			semwarn(errbuf);
-		}
-	}
-	else
-        {	sprintf(errbuf, "unrecognized gsoap directive: %s", yytext);
-		semwarn(errbuf);
-	}
-}
-
-static void option(void)
-{	int i;
-	if (imports)
-        {	sprintf(errbuf, "options directive: %s ignored in imported file(s)", yytext);
-		semwarn(errbuf);
-		return;
-	}
-	for (i = 10; yytext[i]; i++)
-		if (yytext[i] > 32)
-			break;
-	for (; yytext[i]; i++)
-		switch (yytext[i])
-		{	case 'a':
-				aflag = 1;
-				break;
-			case 'c':
-				cflag = 1;
-				break;
-		 	case 'e':
-				eflag = 1;
-				break;
-		 	case 'n':
-				nflag = 1;
-				break;
-		 	case 'l':
-				lflag = 1;
-				break;
-		 	case 't':
-				tflag = 1;
-				break;
-		 	case 'w':
-				wflag = 1;
-				break;
-			default:
-				if (yytext[i] <= 32)
-					return;
-		}
-}
-
-/*
-	error_chr - lexical error in character constant. Return character 0 to
-	allow parsing to continue
-*/
-static Token
-error_chr(void)
-{	lexerror("Ending-' missing in character constant");
-	yylval.c = '\0';
-	return CHR;
-}
-
-/*
-	error_str - lexical error in string. Return empty string to allow
-	parsing to continue
-*/
-static Token
-error_str(void)
-{	lexerror("Ending-\" missing in string");
-	yylval.s = "";
-	return STR;
-}
-
-/*
-	Character conversion functions
-*/
-static int
-convchar(int *p)
-{	switch (yytext[(*p)++])
-	{	case 'a':	return '\a';
-		case 'b':	return '\b';
-		case 'f':	return '\f';
-		case 'n':	return '\n';
-		case 'r':	return '\r';
-		case 't':	return '\t';
-		case 'v':	return '\v';
-		case 'x':	return hexchar(p);
-		case '0':
-		case '1':
-		case '2':
-		case '3':
-		case '4':
-		case '5':
-		case '6':
-		case '7':	(*p)--;
-				return octchar(p);
-		default:	return yytext[*p-1];
-	}
-}
-
-static int
-hexchar(int *p)
-{	int i, d, c = 0;
-	for (i = 0; isxdigit(d = yytext[*p]) && i < 2; i++)
-	{	c = (c << 4) + (d <= '9' ? d - '0' : toupper(d) - '7');
-		(*p)++;
-	}
-	return c;
-}
-
-static int
-octchar(int *p)
-{	int i, d, c = 0;
-	for (i = 0; (d = yytext[*p]) >= '0' && d <= '7' && i < 3; i++)
-	{	c = (c << 3) + d - '0';
-		(*p)++;
-	}
-	return c;
-}
-
-static void module(const char *name, const char *fullname)
-{ if (!fullname)
-    fullname = name;
-  if (imports)
-  { Pragma **pp;
-    char *s = emalloc(strlen(fullname)+15);
-    sprintf(s, "#include \"%sH.h\"", fullname);
-    for (pp = &pragmas; *pp; pp = &(*pp)->next)
-      if (!strcmp((*pp)->pragma, s))
-        break;
-    if (!*pp)
-    { *pp = (Pragma*)emalloc(sizeof(Pragma));
-      (*pp)->pragma = s;
-      (*pp)->next = NULL;
-    }
-    imported = (char*)emalloc(strlen(fullname)+1);
-    strcpy(imported, fullname);
-    fprintf(stderr, "Importing module '%s'\n\n", fullname);
-  }
-  else
-  { lflag = 1;
-    typeNO = magic(name);
-    prefix = (char*)emalloc(strlen(fullname)+1);
-    strcpy(prefix, fullname);
-    fprintf(stderr, "Compiling module '%s' (magic number = %d)\n\n", fullname, typeNO);
-  }
-}
-
-static int magic(const char *name)
-{ size_t i;
-  int n;
-  if (strlen(name) > 4)
-    semerror("#module name length must not exceed four characters");
-  n = 0;
-  for (i = 0; i < strlen(name); i++)
-    if (name[i] >= 'a' && name[i] <= 'z')
-      n = 26*n + name[i] - 'a';
-    else if (name[i] >= 'A' && name[i] <= 'Z')
-      n = 26*n + name[i] - 'A';
-    else
-      semerror("#module name must be alphabetic and the length must not exceed four characters.\nUse '#module name longname' for longer names.");
-  return 4699*n + 153424;
-}
-
-#ifdef WITH_LEX
-static void import(const char *file)
-{ execerror("Cannot #import: soapcpp2 not compiled with flex (replace lex with flex)");
-}
-#else
-static void import(const char *file)
-{ char buf[1024];
-  struct importlist *p;
-  for (p = importlist; p; p = p->next)
-    if (!strcmp(p->name, file))
-      return;
-  if (imports >= MAX_IMPORT_DEPTH)
-    execerror("Imports nested too deep");
-  instk[imports] = YY_CURRENT_BUFFER;
-  strcpy(fnstk[imports], filename);
-  lnstk[imports] = yylineno;
-  imstk[imports] = imported;
-  yylineno = 1;
-  /* imported = NULL; this is useful to change the semantics of #import to NOT consider non-module imports to be part of the current module */
-  imports++;
-  if (!(yyin = fopen(file, "r")))
-  { if (importpath)
-    { char *s, *t;
-      s = importpath;
-      do
-      { size_t n;
-        t = strstr(s, SOAP_PATHSEP);
-        if (t)
-        { if (t - s >= sizeof(buf))
-	    t = s + sizeof(buf) - 1;
-	  strncpy(buf, s, t - s);
-	  buf[t - s] = '\0';
-	  s = t + sizeof(SOAP_PATHSEP) - 1;
-	}
-	else
-        { strcpy(buf, s);
-          s = NULL;
-	}
-        n = strlen(buf) - 1;
-#ifdef __VMS
-        if (buf[n] != ']' && buf[n] != ':')
-          strcat(buf, ":");
-#else
-        if (buf[n] != SOAP_PATHCAT[0])
-	  strcat(buf, SOAP_PATHCAT);
-#endif
-        strcat(buf, file);
-        yyin = fopen(buf, "r");
-      }
-      while (s && !yyin);
-    }
-    if (!yyin)
-    { sprintf(errbuf, "#import: Cannot open file \"%s\" for reading.\nHint: use option -I<path> (for example -Igsoap/import"SOAP_PATHSEP"gsoap/custom:.)", file);
-      execerror(errbuf);
-    }
-  }
-  p = (struct importlist*)malloc(sizeof(struct importlist) + strlen(file)); /* has already + 1 byte size */
-  strcpy(p->name, file);
-  p->next = importlist;
-  importlist = p;
-  strcpy(filename, file);
-  yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE));
-}
-#endif