Added empty statement
This commit is contained in:
@@ -3,13 +3,19 @@
|
|||||||
Parser::Parser(vector<Token> tokens): tokens(tokens) {
|
Parser::Parser(vector<Token> tokens): tokens(tokens) {
|
||||||
}
|
}
|
||||||
|
|
||||||
shared_ptr<Expression> Parser::getExpression() {
|
/*shared_ptr<Expression> Parser::getExpression() {
|
||||||
shared_ptr<Expression> expression = term();
|
shared_ptr<Expression> expression = term();
|
||||||
if (!expression->isValid()) {
|
if (!expression->isValid()) {
|
||||||
cerr << "Unexpected token '" << expression->getToken().getLexme() << "' at " << expression->getToken().getLine() << ":" << expression->getToken().getColumn() << endl;
|
cerr << "Unexpected token '" << expression->getToken().getLexme() << "' at " << expression->getToken().getLine() << ":" << expression->getToken().getColumn() << endl;
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
return expression;
|
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() {
|
shared_ptr<Expression> Parser::term() {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
#include "Token.h"
|
#include "Token.h"
|
||||||
#include "Expression.h"
|
#include "Expression.h"
|
||||||
|
#include "Statement.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
@@ -22,7 +23,8 @@ private:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
Parser(vector<Token> tokens);
|
Parser(vector<Token> tokens);
|
||||||
shared_ptr<Expression> getExpression();
|
//shared_ptr<Expression> getExpression();
|
||||||
|
vector<shared_ptr<Statement>> getStatements();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#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;
|
std::cout << std::endl;
|
||||||
|
|
||||||
Parser parser(tokens);
|
Parser parser(tokens);
|
||||||
shared_ptr<Expression> expression = parser.getExpression();
|
vector<shared_ptr<Statement>> statements = parser.getStatements();
|
||||||
if (!expression) {
|
if (statements.empty()) {
|
||||||
exit(1);
|
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);
|
//ModuleBuilder moduleBuilder(expression);
|
||||||
shared_ptr<llvm::Module> module = moduleBuilder.getModule();
|
//shared_ptr<llvm::Module> module = moduleBuilder.getModule();
|
||||||
module->print(llvm::outs(), nullptr);
|
//module->print(llvm::outs(), nullptr);
|
||||||
|
|
||||||
CodeGenerator codeGenerator(module);;
|
//CodeGenerator codeGenerator(module);;
|
||||||
codeGenerator.generateObjectFile("dummy.s");
|
//codeGenerator.generateObjectFile("dummy.s");
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user