class

Axal::Parser

Inherits Reference < Object

Constants

BINARY_OPERATORS = [TokenKind::PLUS, TokenKind::HYPHEN, TokenKind::ASTERISK, TokenKind::FORWARD_SLASH, TokenKind::DOUBLE_EQUALS, TokenKind::NOT_EQUAL, TokenKind::GREATER_THAN, TokenKind::LESS_THAN, TokenKind::GREATER_THAN_OR_EQUAL, TokenKind::LESS_THAN_OR_EQUAL]
LOGICAL_OPERATORS = [TokenKind::OR, TokenKind::AND]
LOWEST_PRECEDENCE = 0
OPERATOR_PRECEDENCE = {TokenKind::OR => 1, TokenKind::AND => 2, TokenKind::DOUBLE_EQUALS => 3, TokenKind::NOT_EQUAL => 3, TokenKind::GREATER_THAN => 4, TokenKind::LESS_THAN => 4, TokenKind::GREATER_THAN_OR_EQUAL => 4, TokenKind::LESS_THAN_OR_EQUAL => 4, TokenKind::PLUS => 5, TokenKind::HYPHEN => 5, TokenKind::ASTERISK => 6, TokenKind::FORWARD_SLASH => 6, TokenKind::LEFT_PAREN => 8}
PREFIX_PRECEDENCE = 7
UNARY_OPERATORS = [TokenKind::EXCLAMATION, TokenKind::HYPHEN]

Constructors

new(tokens : Array(Axal::Token))
Source

Instance methods

build_token(kind : TokenKind, lexeme, location)
Source
chain
Source
check_syntax_compliance(ast_node)
Source
consume(offset = 1)
Source
consume_if_nxt_is(expected_kind)
Source
current
Source
current_precedence
Source
errors
Source
lookahead(offset = 1)
Source
next_p
Source
nxt_not_terminator?
Source
nxt_precedence
Source
parse
Source
parse_array
Source
parse_array_content
Source
parse_binary_operator(left)
Source
parse_block
Source
parse_boolean
Source
parse_conditional
Source
parse_describe
Source
parse_expr_recursively(precedence = LOWEST_PRECEDENCE)

ameba:disable Metrics/CyclomaticComplexity

Source
parse_external_code
Source
parse_fget
Source
parse_function_call(identifier)
Source
parse_function_call_args
Source
parse_function_definition
Source
parse_function_params
Source
parse_grouped_expr
Source
parse_identifier
Source
parse_it
Source
parse_json
Source
parse_json_content
Source
parse_json_pair
Source
parse_module_definition
Source
parse_nil
Source
parse_number
Source
parse_qualified_identifier
Source
parse_repetition
Source
parse_return
Source
parse_string
Source
parse_terminator
Source
parse_unary_operator
Source
parse_var_binding
Source
pending_tokens?
Source
previous
Source
tokens
Source
unexpected_token_error(expected_kind = nil)
Source
unrecognized_token_error
Source