all:	codeb

scanner.c: oxout.l parser.c
	flex -oscanner.c oxout.l

scanner.o: scanner.c
	gcc -g -ansi -c scanner.c

codeb: scanner.o parser.o symbol_table.o tree.o code.o code_gen.o
	gcc -o codeb parser.o scanner.o symbol_table.o tree.o code.o code_gen.o -lfl 

code_gen.o: code_gen.c
	gcc -g -ansi -c code_gen.c

symbol_table.o: symbol_table.c
	gcc -g -ansi -c symbol_table.c

parser.o: parser.c
	gcc -g -ansi -c parser.c

parser.c: oxout.y
	yacc -d oxout.y -o parser.c

tree.o: tree.c
	gcc -g -ansi -c tree.c

oxout.y oxout.l: parser.y scanner.lex 
	ox parser.y scanner.lex

code.o: code.c
	gcc -g -ansi -c code.c

code.c: code.bfe
	bfe < code.bfe | iburg > code.c

clean:
	rm -f codeb symbol_table.o scanner.o scanner.c parser.o parser.c oxout.y oxout.l tree.o testcodebout*.s code.c code.o code_gen.o a.out

