aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--c_compiler/src/parser_main.cpp4
-rw-r--r--makefile33
2 files changed, 33 insertions, 4 deletions
diff --git a/c_compiler/src/parser_main.cpp b/c_compiler/src/parser_main.cpp
index 9626334..02dcfeb 100644
--- a/c_compiler/src/parser_main.cpp
+++ b/c_compiler/src/parser_main.cpp
@@ -5,11 +5,7 @@
int main(int argc, char *argv[]) {
ast_Top *ast = parseAST();
- std::cout << "<?xml version=\"1.0\"?>" << std::endl << "<Program>" << std::endl;
-
ast->print();
-
- std::cout << "</Program>" << std::endl;
return 0;
}
diff --git a/makefile b/makefile
index 66f6695..9cef91e 100644
--- a/makefile
+++ b/makefile
@@ -11,6 +11,10 @@ PARINC := -Ic_parser/include
PARBUILDDIR := c_parser/build
PARSRCDIR := c_parser/src
+COMPINC := -Ic_compiler/include
+COMPBUILDDIR := c_compiler/build
+COMPSRCDIR := c_compiler/src
+
all : bin/c_lexer bin/c_parser
# Make the c_lexer
@@ -62,6 +66,35 @@ $(PARSRCDIR)/c_parser.tab.cpp $(PARSRCDIR)/c_parser.tab.hpp : $(PARSRCDIR)/c_par
@echo "Creating yacc..."
@echo " bison -v -d $< -o $(PARSRCDIR)/c_parser.tab.cpp"; bison -v -d $< -o $(PARSRCDIR)/c_parser.tab.cpp
+# Make the c_parser
+bin/c_compiler : $(COMPBUILDDIR)/parser_main.o $(COMPBUILDDIR)/c_parser.tab.o $(COMPBUILDDIR)/c_lexer.yy.o
+ @echo "Linking..."
+ @echo " mkdir -p bin"; mkdir -p bin
+ @echo " $(CC) $^ -o bin/c_parser"; $(CC) $^ -o bin/c_parser
+
+$(COMPBUILDDIR)/%.o : $(COMPSRCDIR)/%.cpp
+ @echo "Building sources..."
+ @echo " mkdir -p $(COMPBUILDDIR)"; mkdir -p $(COMPBUILDDIR)
+ @echo " $(CC) $(CFLAGS) $(COMPINC) -c -o $@ $<"; $(CC) $(CFLAGS) $(COMPINC) -c -o $@ $<
+
+$(COMPBUILDDIR)/%.yy.o : $(COMPSRCDIR)/%.yy.cpp
+ @echo "Building lex..."
+ @echo " mkdir -p $(COMPBUILDDIR)"; mkdir -p $(COMPBUILDDIR)
+ @echo " $(CC) $(CFLAGS) $(COMPINC) -c -o $@ $<"; $(CC) $(CFLAGS) $(COMPINC) -c -o $@ $<
+
+$(COMPBUILDDIR)/c_parser.tab.o : $(COMPSRCDIR)/c_parser.tab.cpp
+ @echo "Building yacc..."
+ @echo " mkdir -p $(COMPBUILDDIR)"; mkdir -p $(COMPBUILDDIR)
+ @echo " $(CC) $(CFLAGS) $(COMPINC) -c -o $@ $<"; $(CC) $(CFLAGS) $(COMPINC) -c -o $@ $<
+
+$(COMPSRCDIR)/c_lexer.yy.cpp : $(COMPSRCDIR)/c_lexer.flex
+ @echo "Creating lex..."
+ @echo " flex -o $@ $<"; flex -o $@ $<
+
+$(COMPSRCDIR)/c_parser.tab.cpp $(COMPSRCDIR)/c_parser.tab.hpp : $(COMPSRCDIR)/c_parser.y
+ @echo "Creating yacc..."
+ @echo " bison -v -d $< -o $(COMPSRCDIR)/c_parser.tab.cpp"; bison -v -d $< -o $(COMPSRCDIR)/c_parser.tab.cpp
+
clean :
@echo "Cleaning..."
@echo " rm -r $(LEXBUILDDIR) bin $(LEXSRCDIR)/c_lexer.yy.cpp"; rm -r bin $(LEXBUILDDIR) $(LEXSRCDIR)/c_lexer.yy.cpp $(PARBUILDDIR) $(PARSRCDIR)/c_lexer.yy.cpp $(PARSRCDIR)/c_parser.tab.cpp $(PARSRCDIR)/c_parser.tab.hpp $(PARSRCDIR)/c_parser.output