# Makefile for Flex and Bison phrase example # programs C_COMPILER = gcc FLEX = flex BISON = bison # flags FLEX_LIB = -lfl HEADER_FLAG = -d # files GRAMMAR_ROOT = gram1 LEXER_ROOT = gram1 LEXICAL_SOURCE = $(LEXER_ROOT).l GRAMMAR_SOURCE = $(GRAMMAR_ROOT).y TOKEN_HEADER = $(GRAMMAR_ROOT).tab.h LEXER_C = $(LEXER_ROOT).yy.c PARSER_C = $(GRAMMAR_ROOT).tab.c PARSER = $(GRAMMAR_ROOT).out ############################################ #target: source/required files # command to create target from source # compile the parser/lexer combination # assumes parser has #include $(LEXER_C) $(PARSER) : $(PARSER_C) $(LEXER_C) $(TOKEN_HEADER) $(C_COMPILER) $(PARSER_C) $(FLEX_LIB) -o $(PARSER) # create the parser in C specified in $(GRAMMAR_SOURCE) $(PARSER_C) $(TOKEN_HEADER) : $(GRAMMAR_SOURCE) $(BISON) $(HEADER_FLAG) $(GRAMMAR_SOURCE) # create the lexical analyser in C specified in $(LEXICAL_SOURCE) $(LEXER_C) : $(LEXICAL_SOURCE) $(TOKEN_HEADER) $(FLEX) -o$(LEXER_C) $(LEXICAL_SOURCE) # tidy up the directory .PHONY: clean clean: -rm $(PARSER) $(LEXER_C) $(PARSER_C) $(TOKEN_HEADER)