/*
 * Copyright 1993, 2000 Christopher Seiwald.
 *
 * This file is part of Jam - see jam.c for Copyright information.
 */

/*
 * parse.h - make and destroy parse trees as driven by the parser
 *
 * 10/22/02 (seiwald) - working return/break/continue statements
 * 11/04/02 (seiwald) - const-ing for string literals
 */

/*
 * parse tree node
 */

typedef struct _PARSE PARSE;

struct _PARSE {
	LIST		*(*func)( PARSE *p, LOL *args, int *jmp );
	PARSE	*left;
	PARSE	*right;
	PARSE	*third;
	const char	*string;
	const char	*string1;
	int	num;
	int	refs;
} ;

void 	parse_file( const char *f );
void 	parse_save( PARSE *p );

PARSE * parse_make( 
	LIST 		*(*func)( PARSE *p, LOL *args, int *jmp ),
	PARSE	*left,
	PARSE	*right,
	PARSE	*third,
	const char	*string,
	const char	*string1,
	int	num );

void 	parse_refer( PARSE *p );
void 	parse_free( PARSE *p );
