.PHONY: clean distclean default

CC=gcc
CFLAGS=-Wall -std=c99

default: minibasic

parser.h parser.c: parser.y
	bison -dv -o parser.c parser.y

lexer.c: lexer.l
	flex -s -o lexer.c lexer.l

parser.o: parser.c parser.h ast.h

lexer.o: lexer.c parser.h

ast.o: ast.c ast.h

%.o: %.c
	$(CC) $(CFLAGS) -c $<

minibasic: lexer.o parser.o ast.o
	$(CC) $(CFLAGS) -o minibasic $^

clean:
	$(RM) lexer.c parser.c parser.h parser.output *.o *~

distclean: clean
	$(RM) minibasic