tmlc: scanner.cmo parser.cmo analyzer.cmo generator.cmo tml.ml
	ocamlc -o tmlc scanner.cmo parser.cmo analyzer.cmo generator.cmo tml.ml
	cp tmlc ..

scanner_test: scanner.cmo parser.cmo scanner_test.ml
	ocamlc -o scanner_test scanner.cmo parser.cmo scanner_test.ml
	
analyzer_test: scanner.cmo parser.cmo analyzer.cmo analyzer_test.ml
	ocamlc -o analyzer_test scanner.cmo parser.cmo analyzer.cmo analyzer_test.ml
	
scanner.ml: scanner.mll
	ocamllex scanner.mll

parser.ml parser.mli: parser.mly ast.cmi
	ocamlyacc parser.mly

ast.cmi: type.cmi
sast.cmi: type.cmi
bytecode.cmi: type.cmi

scanner.cmo: parser.cmi
parser.cmo: parser.cmi ast.cmi
#compiler.cmo: ast.cmi bytecode.cmi
analyzer.cmo: ast.cmi sast.cmi
generator.cmo: sast.cmi bytecode.cmi

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

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

.PHONY: clean
clean:
	rm -f *.cmi *.cmo scanner.ml parser.mli parser.ml tmlc scanner_test analyzer_test
	-rm ../tmlc

# Generated by ocamldep
#compiler.cmo: scanner.cmo parser.cmi 
#compiler.cmx: scanner.cmx parser.cmx 
#parser.cmo: parser.cmi 
#parser.cmx: parser.cmi 
 
#scanner.cmx: parser.cmx 
#scanner_test.cmo: scanner.cmo parser.cmi 
#scanner_test.cmx: scanner.cmx parser.cmx 
#parser.cmi: 
