mud++0.35/etc/
mud++0.35/etc/guilds/
mud++0.35/help/propert/
mud++0.35/mudC/
mud++0.35/player/
mud++0.35/src/interface/
mud++0.35/src/os/cygwin32/
mud++0.35/src/os/win32/
mud++0.35/src/os/win32/bcppbuilder/
mud++0.35/src/osaddon/
mud++0.35/src/util/
%{
/*
....[@@@..[@@@..............[@.................. MUD++ is a written from
....[@..[@..[@..[@..[@..[@@@@@....[@......[@.... scratch multi-user swords and
....[@..[@..[@..[@..[@..[@..[@..[@@@@@..[@@@@@.. sorcery game written in C++.
....[@......[@..[@..[@..[@..[@....[@......[@.... This server is an ongoing
....[@......[@..[@@@@@..[@@@@@.................. development project.  All 
................................................ contributions are welcome. 
....Copyright(C).1995.Melvin.Smith.............. Enjoy. 
------------------------------------------------------------------------------
Melvin Smith (aka Fusion)         msmith@hom.net
MUD++ development mailing list    mudpp-list@mailhost.net
------------------------------------------------------------------------------
lex.l
Lexical analyzer for MUD++ Online Language (to be named)
*/

#include <stdio.h>
#include "sym.h"
#include "parse.h"
#include "yacc.tab.h"

extern char id[];
extern long line;
%}

D		[0-9]
L		[a-zA-Z_]
SC		\"[^\"\n]*[\"\n]
%%
"void"				{	return(VOID);	}
"int"				{	return(INT);	}
"string"			{	return(STRING);	}
"return"			{	return(RETURN);	}
{L}({L}|{D})*		{
						yylval.sym_ptr = sym_lookup( yytext );
						if( !yylval.sym_ptr )
							yylval.sym_ptr = sym_add_id( yytext );
						return(ID);
					}
{D}+				{	yylval.lval = atoi( yytext ); return(CONSTANT_INT); }
{SC}				{	if( yytext[yyleng-1] != '"' )
							yyerror( "unterminated string" );
						yytext[yyleng-1] = '\0';
						yylval.sym_ptr = sym_add_const_str( yytext+1 );
						return(STRING_LITERAL);
					}
","					{	return(',');	}
":"					{	return(':');	}
";"					{	return(';');	}
"("					{	return('(');	}
")"					{	return(')');	}
"{"					{	return('{');	}
"}"					{	return('}');	}
"="					{	return('=');	}
"+"					{	return('+');	}
"-"					{	return('-');	}
"/"					{	return('/');	}
"*"					{	return('*');	}
"++"				{	return(INC_OP); }
"--"				{	return(DEC_OP); }
[\t\f ]+			;
[\n]				line++;
.					{ /* ignore */		}
%%


#ifdef yywrap
#undef yywrap
#endif

int yywrap()
{
	/* Add code here to open next source file and start scanning
	   yywrap returns 0 if scanning is to continue
	*/
	return 1;
}