###
# This Makefile can be used to make a parser for the CMM language
# (parser.class) and to make a program (P3.class) that tests the parser and
# the unparse methods in ast.java.
#
# make clean removes all generated files.
#
###

JC = javac

P3.class: P3.java parser.class Yylex.class ASTnode.class
	$(JC) -g P3.java

parser.class: parser.java ASTnode.class Yylex.class ErrMsg.class
	$(JC) parser.java

parser.java: CMM.cup
	java java_cup.Main < CMM.cup

Yylex.class: CMM.jlex.java sym.class ErrMsg.class
	$(JC) CMM.jlex.java

ASTnode.class: ast.java
	$(JC) -g ast.java

CMM.jlex.java: CMM.jlex sym.class
	java JLex.Main CMM.jlex

sym.class: sym.java
	$(JC) -g sym.java

sym.java: CMM.cup
	java java_cup.Main < CMM.cup

ErrMsg.class: ErrMsg.java
	$(JC) ErrMsg.java

###
# clean
###
clean:
	rm -f *~ *.class parser.java CMM.jlex.java sym.java
