Implements expression parsing

This commit is contained in:
2019-05-20 17:45:03 +02:00
parent 7edd51d5e3
commit 37e770f1cb
10 changed files with 519 additions and 4 deletions

38
src/Parser/Parser.hpp Normal file
View File

@@ -0,0 +1,38 @@
#include <utility>
#ifndef PORYGONLANG_PARSER_HPP
#define PORYGONLANG_PARSER_HPP
#include "ParsedStatements/ParsedStatement.hpp"
enum class OperatorPrecedence {
No,
LogicalOr,
LogicalAnd,
Equality,
Additive,
Multiplication,
Unary,
};
class Parser {
vector<IToken*> _tokens;
unsigned int _position;
IToken* Peek();
IToken* Next();
ParsedStatement* ParseStatement(IToken* current);
ParsedExpression* ParseExpression(IToken* current);
ParsedExpression* ParseBinaryExpression(IToken* current, OperatorPrecedence parentPrecedence);
ParsedExpression* ParsePrimaryExpression(IToken* current);
public:
ParsedScriptStatement* Parse();
explicit Parser(vector<IToken*> tokens){
_tokens = std::move(tokens);
_position = 0;
}
};
#endif //PORYGONLANG_PARSER_HPP