TARGET = translator
SCANNER = scanner
PARSER = parser
TYPECHECKER = typechecker
OBJS = $(PARSER).cmo $(SCANNER).cmo $(TYPECHECKER).cmo $(TARGET).cmo

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

$(SCANNER).ml : $(SCANNER).mll
	ocamllex $(SCANNER).mll

$(PARSER).ml $(PARSER).mli : $(PARSER).mly
	ocamlyacc $(PARSER).mly

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

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


.PHONY : clean
clean :
	rm -f $(TARGET) $(PARSER).ml $(PARSER).mli $(SCANNER).ml *.cmo *.cmi

# Generated by ocamldep *.ml *.mli
parser.cmo: ast.cmi parser.cmi
parser.cmx: ast.cmi parser.cmi
scanner.cmo: parser.cmi
scanner.cmx: parser.cmx
translator.cmo: typechecker.cmi scanner.cmo parser.cmi ast.cmi
translator.cmx: typechecker.cmx scanner.cmx parser.cmx ast.cmi
typechecker.cmo: ast.cmi typechecker.cmi
typechecker.cmx: ast.cmi typechecker.cmi
ast.cmi:
parser.cmi: ast.cmi
typechecker.cmi: ast.cmi
