Added empty statement
This commit is contained in:
@@ -3,13 +3,19 @@
|
||||
Parser::Parser(vector<Token> tokens): tokens(tokens) {
|
||||
}
|
||||
|
||||
shared_ptr<Expression> Parser::getExpression() {
|
||||
/*shared_ptr<Expression> Parser::getExpression() {
|
||||
shared_ptr<Expression> expression = term();
|
||||
if (!expression->isValid()) {
|
||||
cerr << "Unexpected token '" << expression->getToken().getLexme() << "' at " << expression->getToken().getLine() << ":" << expression->getToken().getColumn() << endl;
|
||||
return nullptr;
|
||||
}
|
||||
return expression;
|
||||
}*/
|
||||
|
||||
vector<shared_ptr<Statement>> Parser::getStatements() {
|
||||
vector<shared_ptr<Statement>> statements;
|
||||
statements.push_back(make_shared<Statement>(Statement::Kind::INVALID));
|
||||
return statements;
|
||||
}
|
||||
|
||||
shared_ptr<Expression> Parser::term() {
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include <vector>
|
||||
#include "Token.h"
|
||||
#include "Expression.h"
|
||||
#include "Statement.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
@@ -22,7 +23,8 @@ private:
|
||||
|
||||
public:
|
||||
Parser(vector<Token> tokens);
|
||||
shared_ptr<Expression> getExpression();
|
||||
//shared_ptr<Expression> getExpression();
|
||||
vector<shared_ptr<Statement>> getStatements();
|
||||
};
|
||||
|
||||
#endif
|
||||
11
src/Statement.cpp
Normal file
11
src/Statement.cpp
Normal file
@@ -0,0 +1,11 @@
|
||||
#include "Statement.h"
|
||||
|
||||
Statement::Statement(Kind kind): kind(kind) {
|
||||
}
|
||||
|
||||
string Statement::toString() {
|
||||
switch (kind) {
|
||||
case INVALID:
|
||||
return "INVALID";
|
||||
}
|
||||
}
|
||||
22
src/Statement.h
Normal file
22
src/Statement.h
Normal file
@@ -0,0 +1,22 @@
|
||||
#ifndef STATEMENT_H
|
||||
#define STATEMENT_H
|
||||
|
||||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
class Statement {
|
||||
public:
|
||||
enum Kind {
|
||||
INVALID
|
||||
};
|
||||
|
||||
private:
|
||||
Kind kind;
|
||||
|
||||
public:
|
||||
Statement(Kind kind);
|
||||
string toString();
|
||||
};
|
||||
|
||||
#endif
|
||||
24
src/main.cpp
24
src/main.cpp
@@ -44,18 +44,26 @@ int main(int argc, char **argv) {
|
||||
std::cout << std::endl;
|
||||
|
||||
Parser parser(tokens);
|
||||
shared_ptr<Expression> expression = parser.getExpression();
|
||||
if (!expression) {
|
||||
vector<shared_ptr<Statement>> statements = parser.getStatements();
|
||||
if (statements.empty()) {
|
||||
exit(1);
|
||||
}
|
||||
cout << expression->toString() << endl;
|
||||
for (shared_ptr<Statement> &statement : statements) {
|
||||
cout << statement->toString();
|
||||
cout << endl;
|
||||
}
|
||||
//shared_ptr<Expression> expression = parser.getExpression();
|
||||
//if (!expression) {
|
||||
// exit(1);
|
||||
//}
|
||||
//cout << expression->toString() << endl;
|
||||
|
||||
ModuleBuilder moduleBuilder(expression);
|
||||
shared_ptr<llvm::Module> module = moduleBuilder.getModule();
|
||||
module->print(llvm::outs(), nullptr);
|
||||
//ModuleBuilder moduleBuilder(expression);
|
||||
//shared_ptr<llvm::Module> module = moduleBuilder.getModule();
|
||||
//module->print(llvm::outs(), nullptr);
|
||||
|
||||
CodeGenerator codeGenerator(module);;
|
||||
codeGenerator.generateObjectFile("dummy.s");
|
||||
//CodeGenerator codeGenerator(module);;
|
||||
//codeGenerator.generateObjectFile("dummy.s");
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user