

GCCPARAMS = -std=c++11 -O3 -Iinclude
OBJECTS = obj/automaton.o \
          obj/regular_expression.o \
          obj/RegExpLexer.o \
          obj/RegExpParser.o



test: test.cpp $(OBJECTS)
	g++ $(GCCPARAMS) -o $@ $(OBJECTS) $<

obj/%.o: src/%.cpp src/RegExpParser.hpp
	mkdir -p $(@D)
	g++ $(GCCPARAMS) -o $@ -c $<

src/%.cpp: src/%.l
	flex -o $@ $<

src/RegExpParser.cpp src/RegExpParser.hpp src/stack.hh: src/RegExpParser.y
	bison -o $@ $<



.PHONY: clean
clean:
	rm -rf test obj src/RegExpLexer.cpp \
	      src/RegExpParser.cpp src/RegExpParser.hpp src/stack.hh
