Files
bits-runner-builder/src/Parser.h
Rafał Grodziński 2cecb456bb Return statement
2025-06-01 23:39:45 +09:00

39 lines
992 B
C++

#ifndef PARSER_H
#define PARSER_H
#include <vector>
#include "Token.h"
#include "Expression.h"
#include "Statement.h"
using namespace std;
class Parser {
private:
vector<Token> tokens;
int currentIndex = 0;
shared_ptr<Statement> nextStatement();
shared_ptr<Statement> matchFunctionDeclarationStatement();
shared_ptr<Statement> matchBlockStatement();
shared_ptr<Statement> matchReturnStatement();
shared_ptr<Statement> matchInvalidStatement();
shared_ptr<Statement> matchExpressionStatement();
shared_ptr<Expression> term(); // +, -
shared_ptr<Expression> factor(); // *, /, %
shared_ptr<Expression> primary(); // integer, ()
shared_ptr<Expression> matchInteger();
shared_ptr<Expression> matchGrouping();
shared_ptr<Expression> matchBinary(shared_ptr<Expression> left);
bool matchesTokenKinds(vector<Token::Kind> kinds);
public:
Parser(vector<Token> tokens);
vector<shared_ptr<Statement>> getStatements();
};
#endif