SRC = Makefile Main.java expr.cup expr.flex stmt.cup
DERIVED = parser.java sym.java Yylex.java bin/* example.zip

default: parser

evaluator: bin/Evaluator.class
	java -cp java_cup.jar:bin Evaluator

parser: bin/Main.class
	java -cp java_cup.jar:bin Main

bin/Evaluator.class: Evaluator.java parser.java sym.java Yylex.java
	javac -cp java_cup.jar -d bin Evaluator.java parser.java sym.java Yylex.java

parser: bin/Main.class

bin/Main.class: Main.java ExampleParser.java sym.java Yylex.java ast/Binary.java     \
                ast/Expr.java ast/Plus.java ast/Times.java ast/Num.java
	javac -cp java_cup.jar -d bin -sourcepath . Main.java ExampleParser.java sym.java Yylex.java

parser.java sym.java: expr.cup
	 java -jar java_cup.jar expr.cup

ExampleParser.java: expr-ast.cup
	 java -jar java_cup.jar expr-ast.cup

Yylex.java: expr.flex
	java -jar jflex.jar expr.flex

example.zip: $(SRC)
	zip example.zip $(SRC) ../../project/lib/java_cup.jar ../../project/lib/jflex.jar

clean:
	-rm -f $(DERIVED)

run:
	java -cp bin:java_cup.jar Main
