Class: BCDice::Command::Parser
- Inherits:
-
Racc::Parser
- Object
- Racc::Parser
- BCDice::Command::Parser
- Defined in:
- lib/bcdice/command/parser.rb,
lib/bcdice/command/parser.rb
Overview
よくある形式のコマンドのパースを補助するクラス
Instance Method Summary collapse
-
#disable_modifier ⇒ BCDice::Command::Parser
修正値は受け付けないようにする.
-
#enable_critical ⇒ BCDice::Command::Parser
@によるクリティカル値の指定を許可する.
-
#enable_dollar ⇒ BCDice::Command::Parser
$による値の指定を許可する.
-
#enable_fumble ⇒ BCDice::Command::Parser
#によるファンブル値の指定を許可する.
-
#enable_prefix_number ⇒ BCDice::Command::Parser
リテラルの前に数値を許可する.
-
#enable_question_target ⇒ BCDice::Command::Parser
目標値“?”の指定を許可する.
-
#enable_suffix_number ⇒ BCDice::Command::Parser
リテラルの後ろに数値を許可する.
-
#has_prefix_number ⇒ BCDice::Command::Parser
リテラルの前に数値が必要であると設定する.
-
#has_suffix_number ⇒ BCDice::Command::Parser
リテラルの後ろに数値が必要であると設定する.
-
#initialize(*notations, round_type:) ⇒ Parser
constructor
A new instance of Parser.
- #parse(source) ⇒ BCDice::Command::Parsed?
-
#restrict_cmp_op_to(*ops) ⇒ BCDice::Command::Parser
使用できる比較演算子を制限する。 目標値未入力を許可する場合には
nil
を指定する。.
Constructor Details
#initialize(*notations, round_type:) ⇒ Parser
Returns a new instance of Parser.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/bcdice/command/parser.rb', line 42 def initialize(*notations, round_type:) super() @notations = notations @round_type = round_type @prefix_number = false @suffix_number = false @need_prefix_number = false @need_suffix_number = false @modifier = true @critical = false @fumble = false @dollar = false @allowed_cmp_op = [nil, :>=, :>, :<=, :<, :==, :!=] @question_target = false end |
Instance Method Details
#disable_modifier ⇒ BCDice::Command::Parser
修正値は受け付けないようにする
60 61 62 63 |
# File 'lib/bcdice/command/parser.rb', line 60 def disable_modifier @modifier = false self end |
#enable_critical ⇒ BCDice::Command::Parser
@によるクリティカル値の指定を許可する
97 98 99 100 |
# File 'lib/bcdice/command/parser.rb', line 97 def enable_critical @critical = true self end |
#enable_dollar ⇒ BCDice::Command::Parser
$による値の指定を許可する
111 112 113 114 |
# File 'lib/bcdice/command/parser.rb', line 111 def enable_dollar @dollar = true self end |
#enable_fumble ⇒ BCDice::Command::Parser
#によるファンブル値の指定を許可する
104 105 106 107 |
# File 'lib/bcdice/command/parser.rb', line 104 def enable_fumble @fumble = true self end |
#enable_prefix_number ⇒ BCDice::Command::Parser
リテラルの前に数値を許可する
67 68 69 70 |
# File 'lib/bcdice/command/parser.rb', line 67 def enable_prefix_number @prefix_number = true self end |
#enable_question_target ⇒ BCDice::Command::Parser
目標値“?”の指定を許可する
127 128 129 130 |
# File 'lib/bcdice/command/parser.rb', line 127 def enable_question_target @question_target = true self end |
#enable_suffix_number ⇒ BCDice::Command::Parser
リテラルの後ろに数値を許可する
74 75 76 77 |
# File 'lib/bcdice/command/parser.rb', line 74 def enable_suffix_number @suffix_number = true self end |
#has_prefix_number ⇒ BCDice::Command::Parser
リテラルの前に数値が必要であると設定する
81 82 83 84 85 |
# File 'lib/bcdice/command/parser.rb', line 81 def has_prefix_number @prefix_number = true @need_prefix_number = true self end |
#has_suffix_number ⇒ BCDice::Command::Parser
リテラルの後ろに数値が必要であると設定する
89 90 91 92 93 |
# File 'lib/bcdice/command/parser.rb', line 89 def has_suffix_number @suffix_number = true @need_suffix_number = true self end |
#parse(source) ⇒ BCDice::Command::Parsed?
134 135 136 137 138 139 |
# File 'lib/bcdice/command/parser.rb', line 134 def parse(source) @lexer = Lexer.new(source, @notations) do_parse() rescue ParseError, ZeroDivisionError nil end |
#restrict_cmp_op_to(*ops) ⇒ BCDice::Command::Parser
使用できる比較演算子を制限する。目標値未入力を許可する場合にはnil
を指定する。
120 121 122 123 |
# File 'lib/bcdice/command/parser.rb', line 120 def restrict_cmp_op_to(*ops) @allowed_cmp_op = ops self end |