Dragonstone::Parser
Constants
ASSIGNMENT_TOKENS = [:ASSIGN, :PLUS_ASSIGN, :MINUS_ASSIGN, :MULTIPLY_ASSIGN, :DIVIDE_ASSIGN, :MODULO_ASSIGN, :POWER_ASSIGN, :FLOOR_DIVIDE_ASSIGN, :WRAP_PLUS_ASSIGN, :WRAP_MINUS_ASSIGN, :WRAP_MULTIPLY_ASSIGN, :WRAP_POWER_ASSIGN, :BIT_AND_ASSIGN, :BIT_OR_ASSIGN, :BIT_XOR_ASSIGN, :SHIFT_LEFT_ASSIGN, :SHIFT_RIGHT_ASSIGN, :LOGICAL_OR_ASSIGN, :LOGICAL_AND_ASSIGN]
METHOD_NAME_KEYWORDS = [:SELECT, :BEGIN]
OPERATOR_PRECEDENCE = {:** => PRECEDENCE[:exponential], :&** => PRECEDENCE[:exponential], :* => PRECEDENCE[:multiplicative], :/ => PRECEDENCE[:multiplicative], :// => PRECEDENCE[:multiplicative], :% => PRECEDENCE[:multiplicative], :&* => PRECEDENCE[:multiplicative], :+ => PRECEDENCE[:additive], :&+ => PRECEDENCE[:additive], :- => PRECEDENCE[:additive], :&- => PRECEDENCE[:additive], :<< => PRECEDENCE[:shift], :>> => PRECEDENCE[:shift], :& => PRECEDENCE[:binary_and], :| => PRECEDENCE[:binary_or], :^ => PRECEDENCE[:binary_or], :== => PRECEDENCE[:equality], :!= => PRECEDENCE[:equality], :=~ => PRECEDENCE[:equality], :!~ => PRECEDENCE[:equality], :=== => PRECEDENCE[:equality], :< => PRECEDENCE[:comparison], :<= => PRECEDENCE[:comparison], :> => PRECEDENCE[:comparison], :>= => PRECEDENCE[:comparison], :<=> => PRECEDENCE[:comparison], :"&&" => PRECEDENCE[:logical_and], :"||" => PRECEDENCE[:logical_or], :".." => PRECEDENCE[:range], :"..." => PRECEDENCE[:range]}
OVERLOADABLE_OPERATORS = [:PLUS, :MINUS, :MULTIPLY, :DIVIDE, :FLOOR_DIVIDE, :MODULO, :POWER, :WRAP_PLUS, :WRAP_MINUS, :WRAP_MULTIPLY, :WRAP_POWER, :SHIFT_LEFT, :SHIFT_RIGHT, :BIT_AND, :BIT_OR, :BIT_XOR, :BIT_NOT, :EQUALS, :NOT_EQUALS, :LESS, :LESS_EQUAL, :GREATER, :GREATER_EQUAL, :SPACESHIP, :CASE_EQUALS]
PRECEDENCE = {
assignment: 10,
conditional: 20,
range: 30,
logical_or: 40,
logical_and: 50,
equality: 60,
comparison: 70,
binary_or: 80,
binary_and: 90,
shift: 100,
additive: 110,
multiplicative: 120,
exponential: 130,
}
RIGHT_ASSOCIATIVE = [:**, :&**, :"..", :"..."]
TERMINATOR_TOKENS = [:EOF, :END, :ELSIF, :ELSE, :WHEN, :RESCUE, :ENSURE, :RETURN, :QUIT, :BREAK, :NEXT, :REDO, :RETRY, :RAISE, :ABORT, :CON, :VAR, :LET, :FIX, :ABSTRACT, :DEF, :CLASS, :MODULE, :CASE, :SELECT, :IF, :UNLESS, :WHILE, :PUTS, :ECHO, :EECHO, :DEBUG_ECHO, :DEBUG_EECHO]
TOKEN_OPERATOR_MAP = {
PLUS: :+,
MINUS: :-,
WRAP_PLUS: :&+,
WRAP_MINUS: :&-,
MULTIPLY: :*,
WRAP_MULTIPLY: :&*,
DIVIDE: :/,
FLOOR_DIVIDE: ://,
MODULO: :%,
POWER: :**,
WRAP_POWER: :&**,
SHIFT_LEFT: :<<,
SHIFT_RIGHT: :>>,
BIT_AND: :&,
BIT_OR: :|,
BIT_XOR: :^,
EQUALS: :==,
NOT_EQUALS: :!=,
LESS: :<,
LESS_EQUAL: :<=,
GREATER: :>,
GREATER_EQUAL: :>=,
SPACESHIP: :<=>,
MATCH: :=~,
NOT_MATCH: :!~,
CASE_EQUALS: :===,
LOGICAL_AND: :"&&",
LOGICAL_OR: :"||",
RANGE_INCLUSIVE: :"..",
RANGE_EXCLUSIVE: :"...",
BIT_AND_ASSIGN: :&,
BIT_OR_ASSIGN: :|,
BIT_XOR_ASSIGN: :^,
LOGICAL_AND_ASSIGN: :"&&",
LOGICAL_OR_ASSIGN: :"||",
SHIFT_LEFT_ASSIGN: :<<,
SHIFT_RIGHT_ASSIGN: :>>,
PLUS_ASSIGN: :+,
MINUS_ASSIGN: :-,
MULTIPLY_ASSIGN: :*,
DIVIDE_ASSIGN: :/,
FLOOR_DIVIDE_ASSIGN: ://,
MODULO_ASSIGN: :%,
POWER_ASSIGN: :**,
WRAP_PLUS_ASSIGN: :&+,
WRAP_MINUS_ASSIGN: :&-,
WRAP_MULTIPLY_ASSIGN: :&*,
WRAP_POWER_ASSIGN: :&**,
}
Constructors
Class methods
Instance methods
parse
Sourceparse_expression_entry
Source