# Makefile for SL lexer and parser # --------------------------------------------------------------------------- # Useful targets: # make ... same as make parser # make lexer ... build lexer with top file TestLex.class # make parser ... build parser with top file Test.class # make test ... run parser on all example prgs, and on their pretty printed outputs # # --------------------------------------------------------------------------- # --------------------------------------------------------------------------- # tunable thingies # these are searched for java-cup-v11a.jar MYPATH=/soft/TCS/lang/java-cup:/soft/IFI/lang/java-cup:$(HOME):$(JAVACUP_PATH) # dir with tools needed for running compiler; not part of the compiler proper TOOLDIR=../../Tools # dir with example programs SLPATH=../../StraightLine:StraightLine:$(HOME) # --------------------------------------------------------------------------- SLDIR=$(dir $(firstword $(wildcard $(addsuffix /*.sl,$(subst :, ,$(SLPATH)))))) DATAGEN=$(TOOLDIR)/dataGen/dataGen DATAGEN_OPTS=--defaultVisitor # JAR=/soft/TCS/lang/java-cup/java-cup-v11a.jar JAR = $(firstword $(wildcard $(addsuffix /java-cup-v11a.jar,$(subst :, ,$(MYPATH))))) .PRECIOUS: SLAbsSyn.java SLParse_parse.java SLParse_sym.java all : parser lexer : errorMsg/ErrorMsg.class SLParse_sym.class SLLex.java TestLex.class parser : errorMsg/ErrorMsg.class SLParse_sym.class SLLex.class SLAbsSyn.class List.class Utils.class SLParse_parse.class PPVis.class Test.class %.java : %.dtg $(DATAGEN) $(DATAGEN_OPTS) $< >$@ %.java : %.x jflex $< %_parse.java %_sym.java : %.y java -jar $(JAR) -expect 0 -parser $(subst .y,,$<)_parse -symbols $(subst .y,,$<)_sym $< # expect 0 conflicts %.class : %.java javac -classpath $(JAR):. $< run-all: lexer @for i in $(SLDIR)/*.sl; do echo $$i ; java TestLex $$i ; done test: parser @for i in $(SLDIR)/*.sl ; do echo "-- $$i" ; java -classpath $(JAR):. Test $$i >q.sl; java -classpath $(JAR):. Test q.sl >/dev/null; echo "=================" ; done tools: make -C $(TOOLDIR) distrib: tar cvfz SLParse.tgz Makefile errorMsg/ErrorMsg.java SLLex.x SLParse.y SLAbsSyn.dtg SLAbsSyn.java List.java Utils.java PPVis.java TestLex.java Test.java clean : rm *.class SLLex.java SLAbsSyn.java SLParse_sym.* SLParse_parse.* # EOF