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/
%{

extern char yytext[];
extern char copydat[];
char quad[64];

%}

%union {
	char	sval[256];
	char * sdata;
}

%token <sval> IDENTIFIER ALLOW_TYPE CLASSNAME
%token INT FLOAT VOID STRING
%token <sdata> COPYDATA
%token INTERFACE_KEYWORD

%start interface_def
%%


interface_def :
	INTERFACE_KEYWORD allowance_list
	type_dec funname '(' argument_list ')'
	COPYDATA
		{ printf($8);}
	;

allowance_list
	: /* empty */
	| allowance
	| allowance_list '|' allowance
		{}
	;

allowance
	: ALLOW_TYPE
		{}
	;

type_dec_no_void
	: INT
	| STRING
	| FLOAT
	| CLASSNAME
		{}
	;

type_dec
	: type_dec_no_void
	| VOID
		{}
	;

funname
	: IDENTIFIER
		{}
	;

argument_list
	: /* empty */
	| argument 
	| argument_list ',' argument
		{}
	;

argument
	: type_dec_no_void
	| type_dec_no_void IDENTIFIER
		{}
	;


%%
#include <stdio.h>

extern char yytext[];
extern int column;

int main()
{
	/* Load classnames from external file */
	printf( "Parsing.\n" );
	*quad = '\0';
	yyparse();
}

yyerror(s)
char *s;
{
        fflush(stdout);
        printf("%s\n", s);
}