Some stuff for PrintVisitor
This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
#define PRINTVISITOR_H
|
#define PRINTVISITOR_H
|
||||||
|
|
||||||
#include "ASTVisitor.h"
|
#include "ASTVisitor.h"
|
||||||
|
#include <string>
|
||||||
|
|
||||||
class PrintVisitor : public ASTVisitor {
|
class PrintVisitor : public ASTVisitor {
|
||||||
public:
|
public:
|
||||||
@@ -24,6 +25,11 @@ public:
|
|||||||
virtual void visit(StatementList* e);
|
virtual void visit(StatementList* e);
|
||||||
virtual void visit(ValueList* e);
|
virtual void visit(ValueList* e);
|
||||||
virtual void visit(VariableDefinition* e);
|
virtual void visit(VariableDefinition* e);
|
||||||
|
private:
|
||||||
|
int level_;
|
||||||
|
void indent();
|
||||||
|
void print(const std::string& s);
|
||||||
|
void println(const std::string& s);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // PRINTVISITOR_H
|
#endif // PRINTVISITOR_H
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
#include "AST/PrintVisitor.h"
|
#include "AST/PrintVisitor.h"
|
||||||
|
#include <iostream>
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
PrintVisitor::PrintVisitor() {
|
PrintVisitor::PrintVisitor() : level_(0) {
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -33,7 +35,17 @@ void PrintVisitor::visit(FunctionCallExpression* e) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PrintVisitor::visit(FunctionDefinition* e) {
|
void PrintVisitor::visit(FunctionDefinition* e) {
|
||||||
// TODO implement
|
println("FunctionDefinition");
|
||||||
|
level_++;
|
||||||
|
std::stringstream ss;
|
||||||
|
ss << e->getType()->getName() << " <- " << e->getName();
|
||||||
|
println(ss.str());
|
||||||
|
ParameterList* params = e->getParams();
|
||||||
|
if (params) {
|
||||||
|
params->accept(this);
|
||||||
|
}
|
||||||
|
e->getSl()->accept(this);
|
||||||
|
level_--;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrintVisitor::visit(IfStatement* e) {
|
void PrintVisitor::visit(IfStatement* e) {
|
||||||
@@ -61,6 +73,7 @@ void PrintVisitor::visit(Scope* e) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PrintVisitor::visit(StatementList* e) {
|
void PrintVisitor::visit(StatementList* e) {
|
||||||
|
println("StatementList");
|
||||||
// TODO implement
|
// TODO implement
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,3 +84,19 @@ void PrintVisitor::visit(ValueList* e) {
|
|||||||
void PrintVisitor::visit(VariableDefinition* e) {
|
void PrintVisitor::visit(VariableDefinition* e) {
|
||||||
// TODO implement
|
// TODO implement
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PrintVisitor::indent() {
|
||||||
|
for (int i = 0; i < level_; i++) {
|
||||||
|
std::cout << " ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintVisitor::print(const std::string& s) {
|
||||||
|
indent();
|
||||||
|
std::cout << s;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PrintVisitor::println(const std::string& s) {
|
||||||
|
print(s);
|
||||||
|
std::cout << std::endl;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user