diff --git a/jlc/Makefile b/jlc/Makefile index 276abd6..0fcf129 100644 --- a/jlc/Makefile +++ b/jlc/Makefile @@ -3,17 +3,24 @@ FLEX := flex BISON := bison TARGET := jlc +LDFLAGS := -lfl all: $(TARGET) -$(TARGET): lex.yy.c $(TARGET).tab.c - $(CC) -o $@ $^ +$(TARGET): lex.yy.o $(TARGET).tab.o + $(CXX) -o $@ $^ $(LDFLAGS) -$(TARGET).tab.c $(TARGET).tab.h: $(TARGET).y +lex.yy.o: lex.yy.c $(TARGET).tab.hh + $(CC) -c -o $@ $< + +$(TARGET).tab.o: $(TARGET).tab.cc + $(CXX) -c -o $@ $< + +$(TARGET).tab.cc $(TARGET).tab.hh: $(TARGET).yy $(BISON) -d $< lex.yy.c: $(TARGET).lex $(FLEX) $< clean: - -rm -f lex.yy.c $(TARGET).tab.c $(TARGET).tab.h *~ *.o $(TARGET) + -rm -f lex.yy.c $(TARGET).tab.cc $(TARGET).tab.hh *~ *.o $(TARGET) diff --git a/jlc/jlc.lex b/jlc/jlc.lex index c1fcdcd..74df85f 100644 --- a/jlc/jlc.lex +++ b/jlc/jlc.lex @@ -1,6 +1,6 @@ %{ -#include "jlc.tab.h" +#include "jlc.tab.hh" %} %% diff --git a/jlc/jlc.y b/jlc/jlc.yy similarity index 98% rename from jlc/jlc.y rename to jlc/jlc.yy index c18a6f8..92833d3 100644 --- a/jlc/jlc.y +++ b/jlc/jlc.yy @@ -2,6 +2,10 @@ %{ #include +extern "C" { + int yylex(void); +} + extern FILE * yyin; void yyerror(const char * str) @@ -14,15 +18,6 @@ int yywrap() return 1; } -int main(int argc, char * argv[]) -{ - if (argc > 0) - { - yyin = fopen(argv[1], "r"); - } - yyparse(); -} - %} %token ASSIGN; @@ -150,3 +145,15 @@ number: BIN_NUMBER ; assignment: ID ASSIGN number SEMICOLON ; + +%% + +int main(int argc, char * argv[]) +{ + if (argc > 0) + { + yyin = fopen(argv[1], "r"); + } + yyparse(); +} +