# CDEFINE : Any symbols used for debugging # RULES_DEBUG : if defined prints the rules reduced # RULES_ERROR_DEBUG : if defined prints the error rules reduced # TOKENS_DEBUG : if defined prints the tokens read in the input # CXX=gcc LDFLAGS= -lm -lg++ CDEFINE= YACC=bison -y YFLAGS=-d -v CXXFLAGS= $(CDEFINE) $(CFLAGS) DIST= syntax.y lex.l \ SymTable.cc SymTable.h \ Objects.cc Objects.h \ Expr.cc Expr.h \ Instr.cc Instr.h \ tstSymbt.cc tstObj.cc tstExpr.cc\ Makefile \ test.log test1.log test2.log test3.log test4.log SYNTAXOBJ=syntax.o lex.o Objects.o Expr.o Instr.o .l.cc: $(LEX) -t $(LFLAGS) $< > $@ all: syntax check: test test: all ./syntax < test.log 2>&1 > result.out syntax: $(SYNTAXOBJ) $(CXX) -o syntax $(CXXFLAGS) $(SYNTAXOBJ) $(LDFLAGS) lex.o: lex.cc syntax.h tstSyntax.o: syntax.cc $(CXX) $(CXXFLAGS) -DSYNTAX_ONLY -DRULES_DEBUG -c syntax.cc -o tstSyntax.o tstLex.o: lex.cc $(CXX) $(CXXFLAGS) -DSYNTAX_ONLY -DTOKENS_DEBUG -c lex.cc -o tstLex.o tstObj: tstObj.o Objects.o $(CXX) -o tstOBJ $(CXXFLAGS) $(LDFLAGS) tstObj.o Objects.o tstSymbt: tstSymbt.o SymTable.o $(CXX) -o tstSymbt tstSymbt.o SymTable.o $(CXXFLAGS) $(LDFLAGS) tstExpr: tstExpr.o Expr.o $(CXX) -o tstExpr tstExpr.o Expr.o $(CXXFLAGS) $(LDFLAGS) tstInstr: tstInstr.o Instr.o Objects.o Expr.o $(CXX) -o tstInstr tstInstr.o Instr.o Expr.o Objects.o $(CXXFLAGS) $(LDFLAGS) tstSyntax: tstSyntax.o tstLex.o $(CXX) -o tstSyntax tstSyntax.o tstLex.o $(CXXFLAGS) $(LDFLAGS) syntax.cc syntax.h: syntax.y $(YACC) $(YFLAGS) syntax.y mv y.tab.c syntax.cc mv y.tab.h syntax.h mv y.output syntax.out clean: rm -f syntax.[ch] lex.c *.o syntax.output rm -f result.out tst*.o realclean: clean rm -f syntax tst* dist: tar cvf loglan.tar $(DIST)