a.out: lex.yy.o y.tab.o symtab.o strlist.o
	g++ lex.yy.o y.tab.o symtab.o strlist.o

y.tab.o: y.tab.c
	gcc -c y.tab.c

lex.yy.o: lex.yy.c y.tab.h
	gcc -c lex.yy.c

strlist.o: strlist.c strlist.h
	gcc -c strlist.c

symtab.o: symtab.cpp symtab.h
	g++ -c symtab.cpp

lex.yy.c: expr.l y.tab.h
	flex --noyywrap expr.l

y.tab.h: expr.y
	bison -y -d expr.y

y.tab.c: expr.y 
	bison -y -d expr.y

clean:
	rm -f out.fs a.out lex.yy.? y.tab.? symtab.o strlist.o
