 
CCOMP     = gcc
CFLAGS    = -g 
 
# YACC and lex
#
YACC     = yacc 
YFLAGS   = -vd -t
#
#YACC     = bison
#YFLAGS   = -d -t -y -v
 
LEX      = lex
LEXFLAGS = 
 
#-----------------------------------------------------------------------
# Default target 
#-----------------------------------------------------------------------
 
babyjava_parse: babyjava_parse.tab.o babyjava_scan.o 
	$(CCOMP) $(CCFLAGS) -o babyjava_parse babyjava_parse.tab.o babyjava_scan.o
 
#-----------------------------------------------------------------------
# Source file dependencies 
#-----------------------------------------------------------------------
 
babyjava_parse.tab.o: babyjava_parse.tab.h babyjava_parse.tab.c 
	$(CCOMP) $(CCFLAGS) -c babyjava_parse.tab.c
 
babyjava_scan.o: babyjava_scan.c
	$(CCOMP) $(CCFLAGS) -c babyjava_scan.c
 
#-----------------------------------------------------------------------
# YACC and LEX related files 
#-----------------------------------------------------------------------
 
babyjava_parse.tab.c babyjava_parse.tab.h: babyjava_parse.y
	$(YACC) $(YFLAGS) babyjava_parse.y
	mv y.tab.c babyjava_parse.tab.c
	mv y.tab.h babyjava_parse.tab.h
 
babyjava_scan.c: babyjava_scan.l babyjava_parse.tab.h 
	$(LEX) $(LEXFLAGS) babyjava_scan.l
	mv lex.yy.c babyjava_scan.c
 
#-----------------------------------------------------------------------
# Cleanup
#-----------------------------------------------------------------------
 
clean:
	rm -f *.o xxx core a.out babyjava_parse.tab.* y.tab.c y.output lex.yy.c babyjava_scan.c
 
#-----------------------------------------------------------------------
