####
# Makefile for project 5
#
# All classes are compiled into the ./classes directory
#
# The default is to make all .class files.
#
#    clean    -- removes all generated files
#
#    test     -- Tests proj5 by compiling test.csx using CSX.class
#                 which produces test.j which is assembled using jasmin
#                 The output, test.class, is run using the standard
#                      JVM interpreter, java.
#
# Note that javac is used to compile Java classes.
# To use jikes assign "jikes" rather than "javac" to variable J below
# The CLASSPATH  environment variable should be set to:
# ".:./classes:/s/java/jre/lib/rt.jar:/p/course/cs536-fischer/public/JAVA"
#
# Also we require VPATH be set to "./classes"

#
# The shell script jasim should also be accessible using your standard
#  Unix search path.
#
###


C	= ./classes

J       = javac

CSX.class: CSX.java Yylex.class Scanner.class parser.class csxLiteNode.class
	$(J) -g -d $(C)  CSX.java
	
test:   CSX.class Yylex.class test.csx parser.class
	cat test.csx
	java CSX test.csx
	cat test.j
	jasmin test.j
#	/s/java-1/bin/java test
	java test


sym.class: sym.java
	$(J) -g -d $(C) sym.java


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

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

parser.class: parser.java csxLiteNode.class SyntaxErrorException.class
	$(J) -g -d $(C) parser.java

lite.jlex.java: lite.jlex
	java JLex.Main lite.jlex

Yylex.class: lite.jlex.java sym.class 
	$(J) -g -d $(C) lite.jlex.java

Scanner.class: scanner.java Yylex.class
	$(J) -g -d $(C) scanner.java


csxLiteNode.class: ast.java sym.class SymbolInfo.class \
         Types.class Kinds.class SymbolTable.class
	$(J) -g -d $(C) ast.java

SymbolTable.class : SymbolTable.java EmptySTException.class \
                Symb.class DuplicateException.class
	$(J) -g -d $(C) SymbolTable.java

SymbolInfo.class : SymbolInfo.java Symb.class Types.class  Kinds.class
	$(J) -g -d $(C) SymbolInfo.java

Types.class: Types.java
	$(J) -g  -d $(C) Types.java


Kinds.class: Kinds.java
	$(J) -g  -d $(C) Kinds.java

Symb.class : Symb.java
	$(J) -g -d $(C) Symb.java


SyntaxErrorException.class: SyntaxErrorException.java
	$(J) -g -d $(C) SyntaxErrorException.java

DuplicateException.class : DuplicateException.java
	$(J) -g -d $(C) DuplicateException.java

EmptySTException.class : EmptySTException.java
	$(J) -g -d $(C) EmptySTException.java

clean: 
	rm -f $(C)/*.class sym.java  *.j lite.jlex.java parser.java

