diff --git a/src/Parser.cpp b/src/Parser.cpp index 07530ac..6c16192 100644 --- a/src/Parser.cpp +++ b/src/Parser.cpp @@ -3,13 +3,19 @@ Parser::Parser(vector tokens): tokens(tokens) { } -shared_ptr Parser::getExpression() { +/*shared_ptr Parser::getExpression() { shared_ptr expression = term(); if (!expression->isValid()) { cerr << "Unexpected token '" << expression->getToken().getLexme() << "' at " << expression->getToken().getLine() << ":" << expression->getToken().getColumn() << endl; return nullptr; } return expression; +}*/ + +vector> Parser::getStatements() { + vector> statements; + statements.push_back(make_shared(Statement::Kind::INVALID)); + return statements; } shared_ptr Parser::term() { diff --git a/src/Parser.h b/src/Parser.h index d8029eb..81d2c8b 100644 --- a/src/Parser.h +++ b/src/Parser.h @@ -4,6 +4,7 @@ #include #include "Token.h" #include "Expression.h" +#include "Statement.h" using namespace std; @@ -22,7 +23,8 @@ private: public: Parser(vector tokens); - shared_ptr getExpression(); + //shared_ptr getExpression(); + vector> getStatements(); }; #endif \ No newline at end of file diff --git a/src/Statement.cpp b/src/Statement.cpp new file mode 100644 index 0000000..197ba4b --- /dev/null +++ b/src/Statement.cpp @@ -0,0 +1,11 @@ +#include "Statement.h" + +Statement::Statement(Kind kind): kind(kind) { +} + +string Statement::toString() { + switch (kind) { + case INVALID: + return "INVALID"; + } +} \ No newline at end of file diff --git a/src/Statement.h b/src/Statement.h new file mode 100644 index 0000000..b536375 --- /dev/null +++ b/src/Statement.h @@ -0,0 +1,22 @@ +#ifndef STATEMENT_H +#define STATEMENT_H + +#include + +using namespace std; + +class Statement { +public: + enum Kind { + INVALID + }; + +private: + Kind kind; + +public: + Statement(Kind kind); + string toString(); +}; + +#endif \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 26febac..95e243d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -44,18 +44,26 @@ int main(int argc, char **argv) { std::cout << std::endl; Parser parser(tokens); - shared_ptr expression = parser.getExpression(); - if (!expression) { + vector> statements = parser.getStatements(); + if (statements.empty()) { exit(1); } - cout << expression->toString() << endl; + for (shared_ptr &statement : statements) { + cout << statement->toString(); + cout << endl; + } + //shared_ptr expression = parser.getExpression(); + //if (!expression) { + // exit(1); + //} + //cout << expression->toString() << endl; - ModuleBuilder moduleBuilder(expression); - shared_ptr module = moduleBuilder.getModule(); - module->print(llvm::outs(), nullptr); + //ModuleBuilder moduleBuilder(expression); + //shared_ptr module = moduleBuilder.getModule(); + //module->print(llvm::outs(), nullptr); - CodeGenerator codeGenerator(module);; - codeGenerator.generateObjectFile("dummy.s"); + //CodeGenerator codeGenerator(module);; + //codeGenerator.generateObjectFile("dummy.s"); return 0; } \ No newline at end of file