CXX = g++
CXXFLAGS = -g -Wall -std=c++17

%.o : %.cpp
	$(CXX) $(CXXFLAGS) -c $*.cpp -o $*.o

calc : parse.tab.o lex.yy.o
	$(CXX) -o $@ parse.tab.o lex.yy.o

parse.tab.o : parse.tab.cpp parse.tab.h

parse.tab.cpp parse.tab.h : parse.y
	bison --header=parse.tab.h -o parse.tab.cpp parse.y

lex.o : lex.yy.cpp parse.tab.h

lex.yy.cpp : lex.l
	flex --outfile=$@ lex.l

clean :
	rm -f *.o calc parse.tab.cpp parse.tab.h lex.yy.cpp
