Phasor 3.1.1
Stack VM based Programming Language
Loading...
Searching...
No Matches
pulsar::Parser Class Reference

Parser. More...

#include <Parser.hpp>

Public Member Functions

 Parser (const std::vector< Token > &tokens)
std::unique_ptr< Programparse ()

Private Member Functions

Token peek ()
Token previous ()
Token advance ()
bool isAtEnd ()
bool check (Phasor::TokenType type)
Token peekNext ()
bool match (Phasor::TokenType type)
bool match (Phasor::TokenType type, std::string lexeme)
Token consume (Phasor::TokenType type, std::string message)
Token consume (Phasor::TokenType type, std::string lexeme, std::string message)
Token expect (Phasor::TokenType type, const std::string &message)
std::unique_ptr< Statementdeclaration ()
std::unique_ptr< StatementvarDeclaration ()
std::unique_ptr< StatementfunctionDeclaration ()
std::unique_ptr< Statementstatement ()
std::unique_ptr< StatementprintStatement ()
std::unique_ptr< StatementifStatement ()
std::unique_ptr< StatementwhileStatement ()
std::unique_ptr< StatementforStatement ()
std::unique_ptr< StatementswitchStatement ()
std::unique_ptr< StatementreturnStatement ()
std::unique_ptr< BlockStmtblock ()
std::unique_ptr< StatementexpressionStatement ()
std::unique_ptr< TypeNodeparseType ()
std::unique_ptr< Expressionexpression ()
std::unique_ptr< Expressionassignment ()
std::unique_ptr< ExpressionlogicalOr ()
std::unique_ptr< ExpressionlogicalAnd ()
std::unique_ptr< Expressionequality ()
std::unique_ptr< Expressioncomparison ()
std::unique_ptr< Expressionterm ()
std::unique_ptr< Expressionfactor ()
std::unique_ptr< Expressionunary ()
std::unique_ptr< Expressioncall ()
std::unique_ptr< ExpressionfinishCall (std::unique_ptr< Expression > callee)
std::unique_ptr< Expressionprimary ()

Private Attributes

std::vector< Tokentokens
int current = 0
std::string currentFunction = ""

Detailed Description

Parser.

Definition at line 13 of file Parser.hpp.

Constructor & Destructor Documentation

◆ Parser()

pulsar::Parser::Parser ( const std::vector< Token > & tokens)

Member Function Documentation

◆ advance()

Token pulsar::Parser::advance ( )
private

◆ assignment()

std::unique_ptr< Expression > pulsar::Parser::assignment ( )
private

◆ block()

std::unique_ptr< BlockStmt > pulsar::Parser::block ( )
private

◆ call()

std::unique_ptr< Expression > pulsar::Parser::call ( )
private

◆ check()

bool pulsar::Parser::check ( Phasor::TokenType type)
private

◆ comparison()

std::unique_ptr< Expression > pulsar::Parser::comparison ( )
private

◆ consume() [1/2]

Token pulsar::Parser::consume ( Phasor::TokenType type,
std::string lexeme,
std::string message )
private

◆ consume() [2/2]

Token pulsar::Parser::consume ( Phasor::TokenType type,
std::string message )
private

◆ declaration()

std::unique_ptr< Statement > pulsar::Parser::declaration ( )
private

◆ equality()

std::unique_ptr< Expression > pulsar::Parser::equality ( )
private

◆ expect()

Token pulsar::Parser::expect ( Phasor::TokenType type,
const std::string & message )
private

◆ expression()

std::unique_ptr< Expression > pulsar::Parser::expression ( )
private

◆ expressionStatement()

std::unique_ptr< Statement > pulsar::Parser::expressionStatement ( )
private

◆ factor()

std::unique_ptr< Expression > pulsar::Parser::factor ( )
private

◆ finishCall()

std::unique_ptr< Expression > pulsar::Parser::finishCall ( std::unique_ptr< Expression > callee)
private

Definition at line 752 of file Parser.cpp.

Here is the call graph for this function:

◆ forStatement()

std::unique_ptr< Statement > pulsar::Parser::forStatement ( )
private

◆ functionDeclaration()

std::unique_ptr< Statement > pulsar::Parser::functionDeclaration ( )
private

◆ ifStatement()

std::unique_ptr< Statement > pulsar::Parser::ifStatement ( )
private

◆ isAtEnd()

bool pulsar::Parser::isAtEnd ( )
private

◆ logicalAnd()

std::unique_ptr< Expression > pulsar::Parser::logicalAnd ( )
private

◆ logicalOr()

std::unique_ptr< Expression > pulsar::Parser::logicalOr ( )
private

◆ match() [1/2]

bool pulsar::Parser::match ( Phasor::TokenType type)
private

◆ match() [2/2]

bool pulsar::Parser::match ( Phasor::TokenType type,
std::string lexeme )
private

◆ parse()

std::unique_ptr< Program > pulsar::Parser::parse ( )

◆ parseType()

std::unique_ptr< TypeNode > pulsar::Parser::parseType ( )
private

◆ peek()

Token pulsar::Parser::peek ( )
private

◆ peekNext()

Token pulsar::Parser::peekNext ( )
private

◆ previous()

Token pulsar::Parser::previous ( )
private

◆ primary()

std::unique_ptr< Expression > pulsar::Parser::primary ( )
private

◆ printStatement()

std::unique_ptr< Statement > pulsar::Parser::printStatement ( )
private

◆ returnStatement()

std::unique_ptr< Statement > pulsar::Parser::returnStatement ( )
private

◆ statement()

std::unique_ptr< Statement > pulsar::Parser::statement ( )
private

◆ switchStatement()

std::unique_ptr< Statement > pulsar::Parser::switchStatement ( )
private

◆ term()

std::unique_ptr< Expression > pulsar::Parser::term ( )
private

◆ unary()

std::unique_ptr< Expression > pulsar::Parser::unary ( )
private

◆ varDeclaration()

std::unique_ptr< Statement > pulsar::Parser::varDeclaration ( )
private

◆ whileStatement()

std::unique_ptr< Statement > pulsar::Parser::whileStatement ( )
private

Member Data Documentation

◆ current

int pulsar::Parser::current = 0
private

Definition at line 21 of file Parser.hpp.

◆ currentFunction

std::string pulsar::Parser::currentFunction = ""
private

Definition at line 22 of file Parser.hpp.

◆ tokens

std::vector<Token> pulsar::Parser::tokens
private

Definition at line 20 of file Parser.hpp.


The documentation for this class was generated from the following files: