From 66da7838571540c212ef9767dd54d40f7f3ff024 Mon Sep 17 00:00:00 2001 From: Stefano Sanfilippo Date: Fri, 28 Nov 2014 19:01:34 +0100 Subject: [PATCH] Plugged parser and lexer into main, updated Makefile. --- Makefile | 18 ++++++++++++------ main.cpp | 52 +++++++++------------------------------------------- 2 files changed, 21 insertions(+), 49 deletions(-) diff --git a/Makefile b/Makefile index c8a10b8..799d83c 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,17 @@ +default: compile cleanautogen + compile: - bison --verbose -d Monicelli.ypp - flex -P mc Monicelli.lpp - g++ -Wall -Wno-deprecated-register -std=c++11 -DYYDEBUG=0 Monicelli.tab.cpp lex.mc.c Nodes.cpp main.cpp -o mcc - rm Monicelli.tab.* lex.* + bison Monicelli.ypp + flex Monicelli.lpp + g++ \ + -Wall -Wno-deprecated-register -std=c++11 -DYYDEBUG=0 \ + Parser.cpp lex.yy.cc Nodes.cpp main.cpp -o mcc graph: bison --graph Monicelli.y -clean: - rm -f Monicelli.dot Monicelli.tab.* lex.* Monicelli.output location.hh position.hh stack.hh +cleanautogen: + rm -f Parser.?pp lex.* location.hh position.hh stack.hh + +clean: cleanautogen + rm -f Monicelli.dot Monicelli.output diff --git a/main.cpp b/main.cpp index 49443c0..a1f4b94 100644 --- a/main.cpp +++ b/main.cpp @@ -1,57 +1,23 @@ -#include "Monicelli.tab.hpp" +#include "Scanner.hpp" +#include "Parser.hpp" #include #include -#include -#include - using namespace monicelli; -int lineNumber = 1; -Program *program; - -extern FILE *mcin; - - -void mcerror(const char *message) { - std::cerr << "At line " << lineNumber << ": " << message << std::endl; - std::exit(1); -} - -void mcmeta(const char *text) { - while (*text != '\0' && *text == ' ') { - text += 1; - } - std::cerr << "META: " << text << std::endl; -} - int main(int argc, char **argv) { + Program program; + Scanner scanner(std::cin); + Parser parser(scanner, program); + #if YYDEBUG - mcdebug = 1; + parser.set_debug_level(1); #endif - bool fromFile = argc > 1; - bool toFile = argc > 2; + parser.parse(); + program.emit(std::cout); - program = new Program(); - - if (fromFile) { - mcin = fopen(argv[1], "r"); - } - mcparse(); - if (fromFile) { - fclose(mcin); - } - if (toFile) { - std::ofstream out(argv[2]); - program->emit(out); - out.close(); - } - else { - program->emit(std::cout); - } - return 0; }