diff --git a/Sencha-lang/AST/AST.cpp b/Sencha-lang/AST/AST.cpp index d31be57..5fcf37e 100644 --- a/Sencha-lang/AST/AST.cpp +++ b/Sencha-lang/AST/AST.cpp @@ -8,7 +8,7 @@ #include "AllTypesOfASTNodes.h" AST::AST() { - root = new ASTProgram(); + root = new ProgramNode(); current_node = root; number_of_nodes = 1; level_of_depth = 0; diff --git a/Sencha-lang/AST/AllTypesOfASTNodes.h b/Sencha-lang/AST/AllTypesOfASTNodes.h index 61051e6..b5f30ee 100644 --- a/Sencha-lang/AST/AllTypesOfASTNodes.h +++ b/Sencha-lang/AST/AllTypesOfASTNodes.h @@ -9,7 +9,7 @@ #define ALLTYPESOFASTNODES_H_ #include "ASTNode.h" -#include "ASTProgram.h" +#include "ProgramNode.h" #include "ASTStatement.h" #include "ASTExpression.h" #include "ASTPrimary.h" diff --git a/Sencha-lang/AST/IfNode.cpp b/Sencha-lang/AST/IfNode.cpp new file mode 100644 index 0000000..ca63d1e --- /dev/null +++ b/Sencha-lang/AST/IfNode.cpp @@ -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); +} diff --git a/Sencha-lang/AST/IfNode.h b/Sencha-lang/AST/IfNode.h new file mode 100644 index 0000000..2884e5b --- /dev/null +++ b/Sencha-lang/AST/IfNode.h @@ -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_ */ diff --git a/Sencha-lang/AST/ProgramNode.cpp b/Sencha-lang/AST/ProgramNode.cpp new file mode 100644 index 0000000..3a7c316 --- /dev/null +++ b/Sencha-lang/AST/ProgramNode.cpp @@ -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"; +} diff --git a/Sencha-lang/AST/ProgramNode.h b/Sencha-lang/AST/ProgramNode.h new file mode 100644 index 0000000..dec8bff --- /dev/null +++ b/Sencha-lang/AST/ProgramNode.h @@ -0,0 +1,22 @@ +/* + * ASTProgram.h + * + * Created on: Nov 5, 2012 + * Author: attero + */ + +#ifndef PROGRAMNODE_H_ +#define PROGRAMNODE_H_ +#include +#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_ */ diff --git a/Sencha-lang/Debug/AST/AST.d b/Sencha-lang/Debug/AST/AST.d index 57bd8c6..bc99b45 100644 --- a/Sencha-lang/Debug/AST/AST.d +++ b/Sencha-lang/Debug/AST/AST.d @@ -1,5 +1,5 @@ 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/AST.h: @@ -8,7 +8,7 @@ AST/AST.d: ../AST/AST.cpp ../AST/AST.h ../AST/ASTNode.h \ ../AST/AllTypesOfASTNodes.h: -../AST/ASTProgram.h: +../AST/ProgramNode.h: ../AST/ASTStatement.h: diff --git a/Sencha-lang/Debug/AST/AST.o b/Sencha-lang/Debug/AST/AST.o index e00e729..6d77979 100644 Binary files a/Sencha-lang/Debug/AST/AST.o and b/Sencha-lang/Debug/AST/AST.o differ diff --git a/Sencha-lang/Debug/AST/IfNode.d b/Sencha-lang/Debug/AST/IfNode.d new file mode 100644 index 0000000..6fa223b --- /dev/null +++ b/Sencha-lang/Debug/AST/IfNode.d @@ -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: diff --git a/Sencha-lang/Debug/AST/IfNode.o b/Sencha-lang/Debug/AST/IfNode.o new file mode 100644 index 0000000..294a7bf Binary files /dev/null and b/Sencha-lang/Debug/AST/IfNode.o differ diff --git a/Sencha-lang/Debug/AST/ProgramNode.d b/Sencha-lang/Debug/AST/ProgramNode.d new file mode 100644 index 0000000..3fa589a --- /dev/null +++ b/Sencha-lang/Debug/AST/ProgramNode.d @@ -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: diff --git a/Sencha-lang/Debug/AST/ProgramNode.o b/Sencha-lang/Debug/AST/ProgramNode.o new file mode 100644 index 0000000..a0017ed Binary files /dev/null and b/Sencha-lang/Debug/AST/ProgramNode.o differ diff --git a/Sencha-lang/Debug/AST/subdir.mk b/Sencha-lang/Debug/AST/subdir.mk index 173fb11..0311c90 100644 --- a/Sencha-lang/Debug/AST/subdir.mk +++ b/Sencha-lang/Debug/AST/subdir.mk @@ -8,24 +8,27 @@ CPP_SRCS += \ ../AST/ASTExpression.cpp \ ../AST/ASTNode.cpp \ ../AST/ASTPrimary.cpp \ -../AST/ASTProgram.cpp \ -../AST/ASTStatement.cpp +../AST/ASTStatement.cpp \ +../AST/IfNode.cpp \ +../AST/ProgramNode.cpp OBJS += \ ./AST/AST.o \ ./AST/ASTExpression.o \ ./AST/ASTNode.o \ ./AST/ASTPrimary.o \ -./AST/ASTProgram.o \ -./AST/ASTStatement.o +./AST/ASTStatement.o \ +./AST/IfNode.o \ +./AST/ProgramNode.o CPP_DEPS += \ ./AST/AST.d \ ./AST/ASTExpression.d \ ./AST/ASTNode.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 diff --git a/Sencha-lang/Debug/Sencha-lang b/Sencha-lang/Debug/Sencha-lang index 2032273..aeacc48 100755 Binary files a/Sencha-lang/Debug/Sencha-lang and b/Sencha-lang/Debug/Sencha-lang differ diff --git a/Sencha-lang/Debug/main.o b/Sencha-lang/Debug/main.o index 2985399..c30e5d5 100644 Binary files a/Sencha-lang/Debug/main.o and b/Sencha-lang/Debug/main.o differ diff --git a/Sencha-lang/Parser.h b/Sencha-lang/Parser.h index 36d5070..944b053 100644 --- a/Sencha-lang/Parser.h +++ b/Sencha-lang/Parser.h @@ -3,9 +3,10 @@ #include #include #include "Token.h" - +#include "../AST/AllTypesOfASTNodes.h" using namespace std; + class Parser { public: @@ -16,7 +17,9 @@ class Parser string error_message; void add_tokens(vector tokens); string show_tokens(); + protected: + private: Token current_token; string tok_value; @@ -32,7 +35,8 @@ class Parser void error(string s); void report(string s); - + + //TODO change functions below to use AST nodes void statement(); void mul_expr();