inital commit
This commit is contained in:
1 parent
e9773c9161
commit
e8b8565773
36 files changed
+40468
No files matched your search
@@ -0,0 +1,60 @@
|
||||
#ifndef DLANG_PARSER_HPP
|
||||
#define DLANG_PARSER_HPP
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "types/include.hpp"
|
||||
#include "program.hpp"
|
||||
|
||||
#include "parser/expressions.hpp"
|
||||
#include "parser/statements.hpp"
|
||||
|
||||
#include "language.hpp"
|
||||
|
||||
class Parser
|
||||
{
|
||||
private:
|
||||
std::vector<Token> _tokens;
|
||||
size_t _pos = 0;
|
||||
|
||||
private:
|
||||
Token& Current();
|
||||
Token& Consume();
|
||||
Token& Peek(size_t offset = 1);
|
||||
bool Match(TokenType type, const std::string& value);
|
||||
Token& ShouldBe(TokenType type, const std::string& value = "");
|
||||
bool Match(TokenType type, char value);
|
||||
Token& ShouldBe(TokenType type, char value);
|
||||
|
||||
public:
|
||||
Parser(const std::vector<Token>& tokens);
|
||||
Program ParseProgram();
|
||||
|
||||
private:
|
||||
std::unique_ptr<Statement> ParseStatement();
|
||||
std::unique_ptr<Statement> ParseVariableDeclaration();
|
||||
std::unique_ptr<Statement> ParseAssignment();
|
||||
std::unique_ptr<Statement> ParseWhileDeclaration();
|
||||
std::unique_ptr<Statement> ParseForDeclaration();
|
||||
std::unique_ptr<Statement> ParseForeachDeclaration();
|
||||
std::unique_ptr<Statement> ParseIfDeclaration();
|
||||
std::unique_ptr<Statement> ParseFunctionDeclaration();
|
||||
std::unique_ptr<Statement> ParseReturnStatement();
|
||||
std::unique_ptr<Statement> ParseIncludeStatement();
|
||||
|
||||
std::unique_ptr<Expression> ParseFunctionCall(std::unique_ptr<Expression> callee);
|
||||
std::unique_ptr<Expression> ParseExpression();
|
||||
std::unique_ptr<Expression> ParsePrimary();
|
||||
std::unique_ptr<Expression> ParseMultiplicative();
|
||||
std::unique_ptr<Expression> ParseAdditive();
|
||||
std::unique_ptr<Expression> ParseComparison();
|
||||
std::unique_ptr<Expression> ParseTableLiteral();
|
||||
std::unique_ptr<Expression> ParseListLiteral();
|
||||
std::unique_ptr<Expression> ParseLogicalAndOr();
|
||||
std::unique_ptr<Expression> ParseFunctionExpression();
|
||||
std::unique_ptr<Expression> ParseSizeExpression();
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in new issue
Block a user