Implements expression parsing
This commit is contained in:
38
src/Parser/Parser.hpp
Normal file
38
src/Parser/Parser.hpp
Normal 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
|
||||
Reference in New Issue
Block a user