OBJS = parser.cmo scanner.cmo ast_printer.cmo gast_printer.cmo sast_printer.cmo translate.cmo symbol_table.cmo type_checking.cmo semantic_check.cmo wasp.cmo

YACC = ocamlyacc
# YACC = menhir --explain

wasp: $(OBJS)
	ocamlc -o wasp $(OBJS)

.PHONY : test
test : wasp test_all.sh
	./test_all.sh

scanner.ml: scanner.mll
	ocamllex scanner.mll

parser.ml parser.mli: parser.mly
	$(YACC) parser.mly

%.cmo: %.ml
	ocamlc -c $<

%.cmi: %.mli
	ocamlc -c $<

.PHONY: clean
clean:
	rm -f wasp parser.ml parser.mli scanner.ml \
		*.cmo *.cmi *.out

# Generated by ocamldep *.mll *.mli *.ml
ast.cmi :
gast.cmi :
parser.cmi : ast.cmi
sast.cmi :
ast_printer.cmo : ast.cmi
ast_printer.cmx : ast.cmi
gast_printer.cmo : gast.cmi
gast_printer.cmx : gast.cmi
parser.cmo : ast.cmi parser.cmi
parser.cmx : ast.cmi parser.cmi
sast_printer.cmo : sast.cmi
sast_printer.cmx : sast.cmi
scanner.cmo : parser.cmi
scanner.cmx : parser.cmx
semantic_check.cmo : symbol_table.cmo type_checking.cmo sast.cmi ast.cmi
semantic_check.cmx : symbol_table.cmx type_checking.cmx sast.cmi ast.cmi
symbol_table.cmo : sast_printer.cmo sast.cmi
symbol_table.cmx : sast_printer.cmx sast.cmi
translate.cmo : gast.cmi ast.cmi
translate.cmx : gast.cmi ast.cmi
type_checking.cmo : sast_printer.cmo
type_checking.cmx : sast_printer.cmx
wasp.cmo : translate.cmo semantic_check.cmo scanner.cmo sast_printer.cmo \
    parser.cmi gast_printer.cmo ast_printer.cmo
wasp.cmx : translate.cmx semantic_check.cmx scanner.cmx sast_printer.cmx \
    parser.cmx gast_printer.cmx ast_printer.cmx
