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

Parser. More...

#include <Parser.hpp>

Collaboration diagram for pulsar::Parser:
[legend]

Public Member Functions

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

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, const std::string &lexeme)
Token consume (Phasor::TokenType type, const std::string &message)
Token consume (Phasor::TokenType type, const std::string &lexeme, const std::string &message)
Token expect (Phasor::TokenType type, const std::string &message)
std::unique_ptr< Statement > declaration ()
std::unique_ptr< Statement > varDeclaration ()
std::unique_ptr< Statement > functionDeclaration ()
std::unique_ptr< Statement > statement ()
std::unique_ptr< Statement > printStatement ()
std::unique_ptr< Statement > ifStatement ()
std::unique_ptr< Statement > whileStatement ()
std::unique_ptr< Statement > forStatement ()
std::unique_ptr< Statement > switchStatement ()
std::unique_ptr< Statement > returnStatement ()
std::unique_ptr< BlockStmt > block ()
std::unique_ptr< Statement > expressionStatement ()
std::unique_ptr< TypeNode > parseType ()
std::unique_ptr< Expression > expression ()
std::unique_ptr< Expression > assignment ()
std::unique_ptr< Expression > logicalOr ()
std::unique_ptr< Expression > logicalAnd ()
std::unique_ptr< Expression > equality ()
std::unique_ptr< Expression > comparison ()
std::unique_ptr< Expression > term ()
std::unique_ptr< Expression > factor ()
std::unique_ptr< Expression > unary ()
std::unique_ptr< Expression > call ()
std::unique_ptr< Expression > finishCall (std::unique_ptr< Expression > callee)
std::unique_ptr< Expression > primary ()

Private Attributes

std::vector< Token > tokens
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,
const std::string & lexeme,
const std::string & message )
private

◆ consume() [2/2]

Token pulsar::Parser::consume ( Phasor::TokenType type,
const 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

◆ 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,
const 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 file: