class BCDice::CommonCommand::AddDice::Parser
Constants
- Racc_arg
- Racc_debug_parser
- Racc_token_to_s_table
Public Class Methods
parse(source)
click to toggle source
# File lib/bcdice/common_command/add_dice/parser.rb, line 19 def self.parse(source) new.parse(source) end
Public Instance Methods
parse(source)
click to toggle source
# File lib/bcdice/common_command/add_dice/parser.rb, line 23 def parse(source) @lexer = Lexer.new(source) do_parse() rescue ParseError nil end
Private Instance Methods
_reduce_1(val, _values, result)
click to toggle source
reduce 0 omitted
# File lib/bcdice/common_command/add_dice/parser.rb, line 218 def _reduce_1(val, _values, result) secret, lhs = val raise ParseError unless lhs.include_dice? result = Node::Command.new(secret, lhs) result end
_reduce_10(val, _values, result)
click to toggle source
reduce 9 omitted
# File lib/bcdice/common_command/add_dice/parser.rb, line 271 def _reduce_10(val, _values, result) lhs = val[0] rhs = val[2] result = Node::BinaryOp.new(lhs, :*, rhs) result end
_reduce_11(val, _values, result)
click to toggle source
# File lib/bcdice/common_command/add_dice/parser.rb, line 279 def _reduce_11(val, _values, result) lhs = val[0] rhs = val[2] divied_class = val[3] result = divied_class.new(lhs, rhs) result end
_reduce_13(val, _values, result)
click to toggle source
reduce 12 omitted
# File lib/bcdice/common_command/add_dice/parser.rb, line 290 def _reduce_13(val, _values, result) result = Node::DivideWithGameSystemDefault result end
_reduce_14(val, _values, result)
click to toggle source
# File lib/bcdice/common_command/add_dice/parser.rb, line 295 def _reduce_14(val, _values, result) result = Node::DivideWithRoundingDown result end
_reduce_15(val, _values, result)
click to toggle source
# File lib/bcdice/common_command/add_dice/parser.rb, line 300 def _reduce_15(val, _values, result) result = Node::DivideWithRoundingUp result end
_reduce_16(val, _values, result)
click to toggle source
# File lib/bcdice/common_command/add_dice/parser.rb, line 305 def _reduce_16(val, _values, result) result = Node::DivideWithRoundingUp result end
_reduce_17(val, _values, result)
click to toggle source
# File lib/bcdice/common_command/add_dice/parser.rb, line 310 def _reduce_17(val, _values, result) result = Node::DivideWithRoundingOff result end
_reduce_18(val, _values, result)
click to toggle source
# File lib/bcdice/common_command/add_dice/parser.rb, line 315 def _reduce_18(val, _values, result) result = val[1] result end
_reduce_19(val, _values, result)
click to toggle source
# File lib/bcdice/common_command/add_dice/parser.rb, line 320 def _reduce_19(val, _values, result) body = val[1] result = body.is_a?(Node::Negate) ? body.body : Node::Negate.new(body) result end
_reduce_2(val, _values, result)
click to toggle source
# File lib/bcdice/common_command/add_dice/parser.rb, line 227 def _reduce_2(val, _values, result) secret, lhs, cmp_op, rhs = val raise ParseError if !lhs.include_dice? || rhs.include_dice? || cmp_op.nil? result = Node::Command.new(secret, lhs, cmp_op, rhs) result end
_reduce_21(val, _values, result)
click to toggle source
reduce 20 omitted
# File lib/bcdice/common_command/add_dice/parser.rb, line 329 def _reduce_21(val, _values, result) times = val[0] sides = val[2] raise ParseError if times.include_dice? || sides.include_dice? result = Node::DiceRoll.new(times, sides) result end
_reduce_22(val, _values, result)
click to toggle source
# File lib/bcdice/common_command/add_dice/parser.rb, line 339 def _reduce_22(val, _values, result) times = val[0] raise ParseError if times.include_dice? result = Node::ImplicitSidesDiceRoll.new(times) result end
_reduce_23(val, _values, result)
click to toggle source
# File lib/bcdice/common_command/add_dice/parser.rb, line 348 def _reduce_23(val, _values, result) times = val[0] sides = val[2] filter = val[3] n_filtering = val[4] raise ParseError if times.include_dice? || sides.include_dice? || n_filtering.include_dice? result = Node::DiceRollWithFilter.new(times, sides, n_filtering, filter) result end
_reduce_25(val, _values, result)
click to toggle source
reduce 24 omitted
# File lib/bcdice/common_command/add_dice/parser.rb, line 362 def _reduce_25(val, _values, result) result = Node::DiceRollWithFilter::KEEP_HIGHEST result end
_reduce_26(val, _values, result)
click to toggle source
# File lib/bcdice/common_command/add_dice/parser.rb, line 367 def _reduce_26(val, _values, result) result = Node::DiceRollWithFilter::KEEP_LOWEST result end
_reduce_27(val, _values, result)
click to toggle source
# File lib/bcdice/common_command/add_dice/parser.rb, line 372 def _reduce_27(val, _values, result) result = Node::DiceRollWithFilter::DROP_HIGHEST result end
_reduce_28(val, _values, result)
click to toggle source
# File lib/bcdice/common_command/add_dice/parser.rb, line 377 def _reduce_28(val, _values, result) result = Node::DiceRollWithFilter::DROP_LOWEST result end
_reduce_29(val, _values, result)
click to toggle source
# File lib/bcdice/common_command/add_dice/parser.rb, line 382 def _reduce_29(val, _values, result) result = Node::Parenthesis.new(val[1]) result end
_reduce_3(val, _values, result)
click to toggle source
# File lib/bcdice/common_command/add_dice/parser.rb, line 236 def _reduce_3(val, _values, result) result = false result end
_reduce_30(val, _values, result)
click to toggle source
# File lib/bcdice/common_command/add_dice/parser.rb, line 387 def _reduce_30(val, _values, result) result = Node::Number.new(val[0]) result end
_reduce_4(val, _values, result)
click to toggle source
# File lib/bcdice/common_command/add_dice/parser.rb, line 241 def _reduce_4(val, _values, result) result = true result end
_reduce_6(val, _values, result)
click to toggle source
reduce 5 omitted
# File lib/bcdice/common_command/add_dice/parser.rb, line 248 def _reduce_6(val, _values, result) result = Node::UndecidedTarget.instance result end
_reduce_7(val, _values, result)
click to toggle source
# File lib/bcdice/common_command/add_dice/parser.rb, line 253 def _reduce_7(val, _values, result) lhs = val[0] op, rhs = expand_negate(:+, val[2]) result = Node::BinaryOp.new(lhs, op, rhs) result end
_reduce_8(val, _values, result)
click to toggle source
# File lib/bcdice/common_command/add_dice/parser.rb, line 261 def _reduce_8(val, _values, result) lhs = val[0] op, rhs = expand_negate(:-, val[2]) result = Node::BinaryOp.new(lhs, op, rhs) result end
_reduce_none(val, _values, result)
click to toggle source
# File lib/bcdice/common_command/add_dice/parser.rb, line 392 def _reduce_none(val, _values, result) val[0] end
expand_negate(op, rhs)
click to toggle source
加減算の右辺が負数である場合に加減算を逆転させる
# File lib/bcdice/common_command/add_dice/parser.rb, line 37 def expand_negate(op, rhs) if rhs.is_a?(Node::Negate) if op == :+ return [:-, rhs.body] elsif op == :- return [:+, rhs.body] end end [op, rhs] end
next_token()
click to toggle source
# File lib/bcdice/common_command/add_dice/parser.rb, line 32 def next_token @lexer.next_token end