diff options
Diffstat (limited to 'include/parser')
| -rw-r--r-- | include/parser/ast_node.hpp | 70 | ||||
| -rw-r--r-- | include/parser/node_type.hpp | 10 | ||||
| -rw-r--r-- | include/parser/parser.hpp | 31 |
3 files changed, 0 insertions, 111 deletions
diff --git a/include/parser/ast_node.hpp b/include/parser/ast_node.hpp deleted file mode 100644 index 6539cf6..0000000 --- a/include/parser/ast_node.hpp +++ /dev/null @@ -1,70 +0,0 @@ -#ifndef AST_NODE_H -#define AST_NODE_H - -#include "node_type.hpp" - -#include <string> -#include <vector> -#include <memory> - -class ASTNode { -public: - int line; - int column; - - virtual ~ASTNode() = default; -}; - -class Program : public ASTNode { -public: - std::vector<std::unique_ptr<ASTNode>> declarations; -}; - -class Declaration : public ASTNode { -public: - std::string type; - std::string var_name; - std::unique_ptr<ASTNode> value; - - Declaration(std::string type, std::string var_name, std::unique_ptr<ASTNode> value = nullptr) : type(type), var_name(var_name), value(std::move(value)) {} -}; - -class Assignment : public ASTNode { -public: - std::string variable_name; - std::unique_ptr<ASTNode> value; - - Assignment(std::string var, std::unique_ptr<ASTNode> val) : variable_name(var), value(std::move(val)) {} -}; - -class NumberLiteral : public ASTNode { -public: - double value; - - NumberLiteral(double val) : value(val) {} -}; - -class StringLiteral : public ASTNode { -public: - std::string value; - - StringLiteral(std::string val) : value(val) {} -}; - -class Identifier : public ASTNode { -public: - std::string name; - - Identifier(std::string name) : name(name) {} -}; - -class BinaryOp : public ASTNode { -public: - std::unique_ptr<ASTNode> left; - std::string value; - std::unique_ptr<ASTNode> right; - - BinaryOp(std::unique_ptr<ASTNode> left, std::string value, std::unique_ptr<ASTNode> right) : left(std::move(left)), value(std::move(value)), right(std::move(right)) {} -}; - -#endif diff --git a/include/parser/node_type.hpp b/include/parser/node_type.hpp deleted file mode 100644 index 1766b19..0000000 --- a/include/parser/node_type.hpp +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef NODE_TYPE_H -#define NODE_TYPE_H - -enum class NodeType { - PROGRAM, - VARIABLE_DECLARATION, - ASSIGNMENT, -}; - -#endif diff --git a/include/parser/parser.hpp b/include/parser/parser.hpp deleted file mode 100644 index 438b8fe..0000000 --- a/include/parser/parser.hpp +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef PARSER_H -#define PARSER_H - -#include "lexer/token.hpp" -#include "parser/ast_node.hpp" - -#include <vector> - -class Parser { -public: - explicit Parser(const std::vector<Token>& tokens); - std::unique_ptr<Program> parse(); - -private: - std::vector<Token> tokens_; - int position_; - - std::unique_ptr<ASTNode> parseStatement(); - std::unique_ptr<ASTNode> parseExpression(); - std::unique_ptr<ASTNode> parseAddSub(); - std::unique_ptr<ASTNode> parseMulDiv(); - std::unique_ptr<ASTNode> parsePrimary(); - std::unique_ptr<ASTNode> parseDeclaration(); - std::unique_ptr<ASTNode> parseAssignment(); - Token advance(); - Token peek(); - bool isAtEnd(); - void error(std::string s); -}; - -#endif |
