CC=gcc
INCLUDE=-I.
CFLAGS=-O2 -Wall
LEX=flex -8 -p
YACC=bison -d
OBJ=lex.o gram.o

.SUFFIXES: .o.c

all: parser

parser: $(OBJ)
	$(CC) -o parser $(OBJ)

lex.o: gram.c

lex.c: lex.l
	$(LEX) -olex.c lex.l

gram.c: gram.y
	$(YACC) gram.y
	mv gram.tab.c gram.c
	mv gram.tab.h scan.h

.c.o:
	$(CC) $(CFLAGS) $(INCLUDE) -c -o $@ $<

test: all
	@echo Good test:
	echo -n 12 34.1234 ... | ./parser
	@echo Wrong:
	echo -n 12 34.1234. ... | ./parser
clean:
	rm -rf gram.tab.[ch] lex.c gram.c scan.h lex.yy.c parser *.o *core

