class Monkey::Parser::Parser

Defined in:

monkey/parser.cr

Constant Summary

PRECEDENCES = {Token::EQ => Priority::EQUALS, Token::NOT_EQ => Priority::EQUALS, Token::LT => Priority::LESSGREATER, Token::GT => Priority::LESSGREATER, Token::PLUS => Priority::SUM, Token::MINUS => Priority::SUM, Token::SLASH => Priority::PRODUCT, Token::ASTERISK => Priority::PRODUCT, Token::LPAREN => Priority::CALL, Token::LBRACKET => Priority::INDEX}

Constructors

Instance Method Summary

Constructor Detail

def self.new(lexer : Monkey::Lexer::Lexer, errors : Array(String) = [] of String) #

[View source]

Instance Method Detail

def cur_precedence #

[View source]
def cur_token : Token::Token #

[View source]
def cur_token_is?(token : Token::TokenType) : Bool #

[View source]
def errors : Array(String) #

[View source]
def expect_peek?(token : Token::TokenType) : Bool #

[View source]
def infix_parse_fns(key : Token::TokenType) #

[View source]
def lexer : Lexer::Lexer #

[View source]
def next_token #

[View source]
def no_prefix_parse_fn_error(t : Token::TokenType) #

[View source]
def parse_array_literal : AST::ArrayLiteral | Nil #

[View source]
def parse_block_statement : AST::BlockStatement #

[View source]
def parse_bool_literal : AST::Boolean | Nil #

[View source]
def parse_call_expression(function : AST::Expression) : AST::CallExpression | Nil #

[View source]
def parse_expression(precedende : Priority) : AST::Expression | Nil #

[View source]
def parse_expression_list(end_token : Token::TokenType) : Array(AST::Expression) | Nil #

[View source]
def parse_expression_statement : AST::ExpressionStatement | Nil #

[View source]
def parse_function_literal : AST::FunctionLiteral | Nil #

[View source]
def parse_function_parameters : Array(AST::Identifier) | Nil #

[View source]
def parse_grouped_expression : AST::Expression | Nil #

[View source]
def parse_hash_literal : AST::HashLiteral | Nil #

[View source]
def parse_identifier : AST::Identifier #

[View source]
def parse_if_expression : AST::IfExpression | Nil #

[View source]
def parse_index_expression(left : AST::Expression) : AST::IndexExpression | Nil #

[View source]
def parse_infix_expression(left : AST::Expression) : AST::InfixExpression | Nil #

[View source]
def parse_integer_literal : AST::IntegerLiteral | Nil #

[View source]
def parse_let_statement : AST::LetStatement | Nil #

[View source]
def parse_prefix_expression : AST::PrefixExpression | Nil #

[View source]
def parse_program : AST::Program #

[View source]
def parse_return_statement : AST::ReturnStatement | Nil #

[View source]
def parse_statement : AST::Statement | Nil #

[View source]
def parse_string_literal : AST::StringLiteral #

[View source]
def peek_error(token : Token::TokenType) #

[View source]
def peek_precedence #

[View source]
def peek_token : Token::Token #

[View source]
def peek_token_is?(token : Token::TokenType) : Bool #

[View source]
def prefix_parse_fns(key : Token::TokenType) #

[View source]