OCAMLC=ocamlc
OCAMLYACC=ocamlyacc
OCAMLLEX=ocamllex
OCAMLCFLAGS=

all: TestT i2p p2i

TestT:
	bnfc -ocaml T.cf
	$(OCAMLYACC) ParT.mly
	$(OCAMLLEX) LexT.mll
	$(OCAMLC) $(OCAMLCFLAGS) -o TestT BNFC_Util.ml AbsT.ml SkelT.ml ShowT.ml PrintT.ml ParT.mli ParT.ml LexT.ml TestT.ml

i2p: TestT
	$(OCAMLC) $(OCAMLCFLAGS) -o $@ BNFC_Util.ml \
	AbsT.ml SkelT.ml ShowT.ml PrintT.ml ParT.mli ParT.ml LexT.ml \
	Trans.ml Main.ml

p2i: TestT
	$(OCAMLC) $(OCAMLCFLAGS) -o $@ BNFC_Util.ml \
	AbsT.ml SkelT.ml ShowT.ml PrintT.ml ParT.mli ParT.ml LexT.ml \
	Trans.ml Main.ml

clean:
	-rm -f *.cmi *.cmo *.o

distclean: clean
	-rm -f LexT.* ParT.* LayoutT.* SkelT.* PrintT.* ShowT.* TestT.* AbsT.* TestT BNFC_Util.ml
	-rm i2p p2i

test: i2p p2i
	echo "(1 + 2 - 3) * ((4 - (5 - 6)) / 7)" | ./i2p
	echo "1 2 + 3 - 4 5 6 - - 7 / *" | ./p2i
