OCAMLC=ocamlc
OCAMLYACC=ocamlyacc
OCAMLLEX=ocamllex
OCAMLCFLAGS=

all: BNFC_Util.ml ParA.mly LexA.ml TestA Top

TestA: BNFC_Util.ml AbsA.ml SkelA.ml ShowA.ml PrintA.ml ParA.mli ParA.ml LexA.ml TestA.ml
	$(OCAMLC) $(OCAMLCFLAGS) -o $@ $^

Top:   BNFC_Util.ml AbsA.ml SkelA.ml ShowA.ml PrintA.ml ParA.mli ParA.ml LexA.ml Top.ml
	$(OCAMLC) $(OCAMLCFLAGS) -o $@ $^

ParA.mli ParA.ml: ParA.mly
	$(OCAMLYACC) $^

LexA.ml: LexA.mll
	$(OCAMLLEX) $^

BNFC_Util.ml:
	bnfc --ocaml A.cf

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

distclean: clean
	-rm -f LexA.* ParA.* LayoutA.* SkelA.* PrintA.* ShowA.* TestA.* AbsA.* TestA BNFC_Util.ml
