AST small changes
parent
5a0fbd6434
commit
98c33d3ec1
|
@ -8,7 +8,7 @@
|
||||||
#include "AllTypesOfASTNodes.h"
|
#include "AllTypesOfASTNodes.h"
|
||||||
|
|
||||||
AST::AST() {
|
AST::AST() {
|
||||||
root = new ASTProgram();
|
root = new ProgramNode();
|
||||||
current_node = root;
|
current_node = root;
|
||||||
number_of_nodes = 1;
|
number_of_nodes = 1;
|
||||||
level_of_depth = 0;
|
level_of_depth = 0;
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
#define ALLTYPESOFASTNODES_H_
|
#define ALLTYPESOFASTNODES_H_
|
||||||
|
|
||||||
#include "ASTNode.h"
|
#include "ASTNode.h"
|
||||||
#include "ASTProgram.h"
|
#include "ProgramNode.h"
|
||||||
#include "ASTStatement.h"
|
#include "ASTStatement.h"
|
||||||
#include "ASTExpression.h"
|
#include "ASTExpression.h"
|
||||||
#include "ASTPrimary.h"
|
#include "ASTPrimary.h"
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
/*
|
||||||
|
* IfNode.cpp
|
||||||
|
*
|
||||||
|
* Created on: Nov 18, 2012
|
||||||
|
* Author: attero
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "IfNode.h"
|
||||||
|
|
||||||
|
|
||||||
|
IfNode::IfNode(ASTNode * parent) {
|
||||||
|
this->parent = parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
IfNode::~IfNode() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void IfNode::add_condition(ASTExpression * expression)
|
||||||
|
{
|
||||||
|
children.push_back(expression);
|
||||||
|
}
|
||||||
|
|
||||||
|
void IfNode::add_body(ASTStatement * statement)
|
||||||
|
{
|
||||||
|
children.push_back(statement);
|
||||||
|
}
|
||||||
|
|
||||||
|
void IfNode::add_else_block(ASTStatement * statement)
|
||||||
|
{
|
||||||
|
children.push_back(statement);
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
/*
|
||||||
|
* IfNode.h
|
||||||
|
*
|
||||||
|
* Created on: Nov 18, 2012
|
||||||
|
* Author: attero
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef IFNODE_H_
|
||||||
|
#define IFNODE_H_
|
||||||
|
|
||||||
|
#include "ASTStatement.h"
|
||||||
|
#include "ASTExpression.h"
|
||||||
|
|
||||||
|
class IfNode : public ASTStatement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void add_condition(ASTExpression * expression);
|
||||||
|
void add_body(ASTStatement * statement);
|
||||||
|
void add_else_block(ASTStatement * statement);
|
||||||
|
IfNode(ASTNode * parent);
|
||||||
|
virtual ~IfNode();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* IFNODE_H_ */
|
|
@ -0,0 +1,21 @@
|
||||||
|
/*
|
||||||
|
* ProgramNode.cpp
|
||||||
|
*
|
||||||
|
* Created on: Nov 5, 2012
|
||||||
|
* Author: attero
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "ProgramNode.h"
|
||||||
|
|
||||||
|
ProgramNode::ProgramNode() {
|
||||||
|
// TODO Auto-generated constructor stub
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
ProgramNode::~ProgramNode() {
|
||||||
|
// TODO Auto-generated destructor stub
|
||||||
|
}
|
||||||
|
|
||||||
|
void ProgramNode::execute() {
|
||||||
|
std::cout << "Program started!\n";
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
/*
|
||||||
|
* ASTProgram.h
|
||||||
|
*
|
||||||
|
* Created on: Nov 5, 2012
|
||||||
|
* Author: attero
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef PROGRAMNODE_H_
|
||||||
|
#define PROGRAMNODE_H_
|
||||||
|
#include <iostream>
|
||||||
|
#include "ASTNode.h"
|
||||||
|
#include "ASTStatement.h"
|
||||||
|
|
||||||
|
class ProgramNode : public ASTNode {
|
||||||
|
public:
|
||||||
|
ProgramNode();
|
||||||
|
ASTStatement * add_child(ASTStatement * node);
|
||||||
|
virtual ~ProgramNode();
|
||||||
|
virtual void execute();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* PROGRAMNODE_H_ */
|
|
@ -1,5 +1,5 @@
|
||||||
AST/AST.d: ../AST/AST.cpp ../AST/AST.h ../AST/ASTNode.h \
|
AST/AST.d: ../AST/AST.cpp ../AST/AST.h ../AST/ASTNode.h \
|
||||||
../AST/AllTypesOfASTNodes.h ../AST/ASTProgram.h ../AST/ASTStatement.h \
|
../AST/AllTypesOfASTNodes.h ../AST/ProgramNode.h ../AST/ASTStatement.h \
|
||||||
../AST/ASTExpression.h ../AST/ASTPrimary.h
|
../AST/ASTExpression.h ../AST/ASTPrimary.h
|
||||||
|
|
||||||
../AST/AST.h:
|
../AST/AST.h:
|
||||||
|
@ -8,7 +8,7 @@ AST/AST.d: ../AST/AST.cpp ../AST/AST.h ../AST/ASTNode.h \
|
||||||
|
|
||||||
../AST/AllTypesOfASTNodes.h:
|
../AST/AllTypesOfASTNodes.h:
|
||||||
|
|
||||||
../AST/ASTProgram.h:
|
../AST/ProgramNode.h:
|
||||||
|
|
||||||
../AST/ASTStatement.h:
|
../AST/ASTStatement.h:
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1,10 @@
|
||||||
|
AST/IfNode.d: ../AST/IfNode.cpp ../AST/IfNode.h ../AST/ASTStatement.h \
|
||||||
|
../AST/ASTNode.h ../AST/ASTExpression.h
|
||||||
|
|
||||||
|
../AST/IfNode.h:
|
||||||
|
|
||||||
|
../AST/ASTStatement.h:
|
||||||
|
|
||||||
|
../AST/ASTNode.h:
|
||||||
|
|
||||||
|
../AST/ASTExpression.h:
|
Binary file not shown.
|
@ -0,0 +1,8 @@
|
||||||
|
AST/ProgramNode.d: ../AST/ProgramNode.cpp ../AST/ProgramNode.h \
|
||||||
|
../AST/ASTNode.h ../AST/ASTStatement.h
|
||||||
|
|
||||||
|
../AST/ProgramNode.h:
|
||||||
|
|
||||||
|
../AST/ASTNode.h:
|
||||||
|
|
||||||
|
../AST/ASTStatement.h:
|
Binary file not shown.
|
@ -8,24 +8,27 @@ CPP_SRCS += \
|
||||||
../AST/ASTExpression.cpp \
|
../AST/ASTExpression.cpp \
|
||||||
../AST/ASTNode.cpp \
|
../AST/ASTNode.cpp \
|
||||||
../AST/ASTPrimary.cpp \
|
../AST/ASTPrimary.cpp \
|
||||||
../AST/ASTProgram.cpp \
|
../AST/ASTStatement.cpp \
|
||||||
../AST/ASTStatement.cpp
|
../AST/IfNode.cpp \
|
||||||
|
../AST/ProgramNode.cpp
|
||||||
|
|
||||||
OBJS += \
|
OBJS += \
|
||||||
./AST/AST.o \
|
./AST/AST.o \
|
||||||
./AST/ASTExpression.o \
|
./AST/ASTExpression.o \
|
||||||
./AST/ASTNode.o \
|
./AST/ASTNode.o \
|
||||||
./AST/ASTPrimary.o \
|
./AST/ASTPrimary.o \
|
||||||
./AST/ASTProgram.o \
|
./AST/ASTStatement.o \
|
||||||
./AST/ASTStatement.o
|
./AST/IfNode.o \
|
||||||
|
./AST/ProgramNode.o
|
||||||
|
|
||||||
CPP_DEPS += \
|
CPP_DEPS += \
|
||||||
./AST/AST.d \
|
./AST/AST.d \
|
||||||
./AST/ASTExpression.d \
|
./AST/ASTExpression.d \
|
||||||
./AST/ASTNode.d \
|
./AST/ASTNode.d \
|
||||||
./AST/ASTPrimary.d \
|
./AST/ASTPrimary.d \
|
||||||
./AST/ASTProgram.d \
|
./AST/ASTStatement.d \
|
||||||
./AST/ASTStatement.d
|
./AST/IfNode.d \
|
||||||
|
./AST/ProgramNode.d
|
||||||
|
|
||||||
|
|
||||||
# Each subdirectory must supply rules for building sources it contributes
|
# Each subdirectory must supply rules for building sources it contributes
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -3,9 +3,10 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include "Token.h"
|
#include "Token.h"
|
||||||
|
#include "../AST/AllTypesOfASTNodes.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
class Parser
|
class Parser
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -16,7 +17,9 @@ class Parser
|
||||||
string error_message;
|
string error_message;
|
||||||
void add_tokens(vector<Token> tokens);
|
void add_tokens(vector<Token> tokens);
|
||||||
string show_tokens();
|
string show_tokens();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Token current_token;
|
Token current_token;
|
||||||
string tok_value;
|
string tok_value;
|
||||||
|
@ -33,6 +36,7 @@ class Parser
|
||||||
void error(string s);
|
void error(string s);
|
||||||
void report(string s);
|
void report(string s);
|
||||||
|
|
||||||
|
//TODO change functions below to use AST nodes
|
||||||
void statement();
|
void statement();
|
||||||
|
|
||||||
void mul_expr();
|
void mul_expr();
|
||||||
|
|
Loading…
Reference in New Issue