bcdice 3.0.0.pre.alpha.2 → 3.0.0.pre.rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (151) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/README.md +1 -0
  4. data/i18n/KillDeathBusiness/ja_jp.yml +4 -4
  5. data/i18n/KillDeathBusiness/ko_kr.yml +5 -4
  6. data/i18n/MagicaLogia/ko_kr.yml +564 -0
  7. data/i18n/MonotoneMuseum/ja_jp.yml +37 -1
  8. data/i18n/StratoShout/ja_jp.yml +4 -4
  9. data/i18n/StratoShout/ko_kr.yml +4 -4
  10. data/lib/bcdice.rb +2 -1
  11. data/lib/bcdice/arithmetic.rb +22 -0
  12. data/lib/bcdice/arithmetic/node.rb +112 -43
  13. data/lib/bcdice/arithmetic/parser.rb +240 -0
  14. data/lib/bcdice/arithmetic_evaluator.rb +5 -156
  15. data/lib/bcdice/base.rb +8 -1
  16. data/lib/bcdice/command/lexer.rb +57 -0
  17. data/lib/bcdice/command/parsed.rb +65 -0
  18. data/lib/bcdice/command/parser.rb +489 -0
  19. data/lib/bcdice/common_command/add_dice.rb +1 -1
  20. data/lib/bcdice/common_command/add_dice/node.rb +142 -69
  21. data/lib/bcdice/common_command/add_dice/parser.rb +100 -83
  22. data/lib/bcdice/common_command/barabara_dice/node.rb +7 -1
  23. data/lib/bcdice/common_command/barabara_dice/result.rb +22 -0
  24. data/lib/bcdice/common_command/calc/node.rb +10 -1
  25. data/lib/bcdice/common_command/calc/parser.rb +1 -1
  26. data/lib/bcdice/common_command/d66_dice.rb +3 -1
  27. data/lib/bcdice/common_command/lexer.rb +2 -1
  28. data/lib/bcdice/common_command/upper_dice/parser.rb +118 -97
  29. data/lib/bcdice/common_command/version.rb +1 -1
  30. data/lib/bcdice/deprecated/checker.rb +6 -6
  31. data/lib/bcdice/dice_table.rb +1 -0
  32. data/lib/bcdice/dice_table/d66_parity_table.rb +34 -0
  33. data/lib/bcdice/game_system.rb +3 -0
  34. data/lib/bcdice/game_system/AceKillerGene.rb +1 -1
  35. data/lib/bcdice/game_system/AlchemiaStruggle.rb +312 -0
  36. data/lib/bcdice/game_system/Alshard.rb +0 -1
  37. data/lib/bcdice/game_system/Amadeus.rb +1 -1
  38. data/lib/bcdice/game_system/AnimaAnimus.rb +1 -5
  39. data/lib/bcdice/game_system/BadLife.rb +1 -1
  40. data/lib/bcdice/game_system/BeastBindTrinity.rb +1 -10
  41. data/lib/bcdice/game_system/BeginningIdol.rb +4 -4
  42. data/lib/bcdice/game_system/BeginningIdol_Korean.rb +4 -4
  43. data/lib/bcdice/game_system/BladeOfArcana.rb +4 -4
  44. data/lib/bcdice/game_system/BlindMythos.rb +12 -9
  45. data/lib/bcdice/game_system/BloodCrusade.rb +12 -38
  46. data/lib/bcdice/game_system/BloodMoon.rb +2 -2
  47. data/lib/bcdice/game_system/CardRanker.rb +23 -63
  48. data/lib/bcdice/game_system/ChaosFlare.rb +3 -3
  49. data/lib/bcdice/game_system/CodeLayerd.rb +1 -1
  50. data/lib/bcdice/game_system/ColossalHunter.rb +2 -2
  51. data/lib/bcdice/game_system/Cthulhu7th.rb +2 -2
  52. data/lib/bcdice/game_system/CthulhuTech.rb +0 -1
  53. data/lib/bcdice/game_system/DarkBlaze.rb +4 -4
  54. data/lib/bcdice/game_system/DeadlineHeroes.rb +1 -1
  55. data/lib/bcdice/game_system/DoubleCross.rb +60 -93
  56. data/lib/bcdice/game_system/EmbryoMachine.rb +5 -5
  57. data/lib/bcdice/game_system/EtrianOdysseySRS.rb +0 -1
  58. data/lib/bcdice/game_system/FilledWith.rb +3 -3
  59. data/lib/bcdice/game_system/FullMetalPanic.rb +0 -1
  60. data/lib/bcdice/game_system/GURPS.rb +1 -1
  61. data/lib/bcdice/game_system/Garako.rb +3 -2
  62. data/lib/bcdice/game_system/GardenOrder.rb +1 -1
  63. data/lib/bcdice/game_system/GehennaAn.rb +3 -3
  64. data/lib/bcdice/game_system/Gundog.rb +1 -1
  65. data/lib/bcdice/game_system/GundogRevised.rb +3 -3
  66. data/lib/bcdice/game_system/GundogZero.rb +2 -2
  67. data/lib/bcdice/game_system/GurpsFW.rb +2 -5
  68. data/lib/bcdice/game_system/HatsuneMiku.rb +1 -1
  69. data/lib/bcdice/game_system/HuntersMoon.rb +17 -110
  70. data/lib/bcdice/game_system/JuinKansen.rb +251 -0
  71. data/lib/bcdice/game_system/KanColle.rb +17 -166
  72. data/lib/bcdice/game_system/KillDeathBusiness.rb +35 -44
  73. data/lib/bcdice/game_system/KillDeathBusiness_Korean.rb +2 -1
  74. data/lib/bcdice/game_system/LogHorizon.rb +8 -8
  75. data/lib/bcdice/game_system/LostRoyal.rb +1 -3
  76. data/lib/bcdice/game_system/MagicaLogia.rb +3 -3
  77. data/lib/bcdice/game_system/MagicaLogia_Korean.rb +66 -0
  78. data/lib/bcdice/game_system/MeikyuDays.rb +1 -1
  79. data/lib/bcdice/game_system/MeikyuKingdom.rb +1 -1
  80. data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +1 -1
  81. data/lib/bcdice/game_system/MetalHeadExtream.rb +4 -4
  82. data/lib/bcdice/game_system/MetallicGuardian.rb +0 -1
  83. data/lib/bcdice/game_system/MonotoneMuseum.rb +3 -2
  84. data/lib/bcdice/game_system/MonotoneMuseum_Korean.rb +1 -1
  85. data/lib/bcdice/game_system/NSSQ.rb +2 -2
  86. data/lib/bcdice/game_system/Nechronica.rb +3 -3
  87. data/lib/bcdice/game_system/NightWizard.rb +1 -1
  88. data/lib/bcdice/game_system/NightmareHunterDeep.rb +3 -4
  89. data/lib/bcdice/game_system/NinjaSlayer.rb +26 -28
  90. data/lib/bcdice/game_system/OracleEngine.rb +13 -17
  91. data/lib/bcdice/game_system/Paradiso.rb +2 -2
  92. data/lib/bcdice/game_system/PhantasmAdventure.rb +0 -4
  93. data/lib/bcdice/game_system/Raisondetre.rb +1 -1
  94. data/lib/bcdice/game_system/RecordOfLodossWar.rb +2 -3
  95. data/lib/bcdice/game_system/RokumonSekai2.rb +2 -2
  96. data/lib/bcdice/game_system/RuinBreakers.rb +1 -1
  97. data/lib/bcdice/game_system/Ryutama.rb +1 -1
  98. data/lib/bcdice/game_system/SRS.rb +0 -5
  99. data/lib/bcdice/game_system/SamsaraBallad.rb +4 -3
  100. data/lib/bcdice/game_system/Satasupe.rb +22 -14
  101. data/lib/bcdice/game_system/ScreamHighSchool.rb +2 -2
  102. data/lib/bcdice/game_system/ShinkuuGakuen.rb +1 -1
  103. data/lib/bcdice/game_system/ShinobiGami.rb +75 -39
  104. data/lib/bcdice/game_system/StellarKnights.rb +1 -3
  105. data/lib/bcdice/game_system/SterileLife.rb +1 -1
  106. data/lib/bcdice/game_system/StrangerOfSwordCity.rb +1 -1
  107. data/lib/bcdice/game_system/StratoShout.rb +10 -36
  108. data/lib/bcdice/game_system/StratoShout_Korean.rb +2 -1
  109. data/lib/bcdice/game_system/SwordWorld.rb +5 -5
  110. data/lib/bcdice/game_system/SwordWorld2_5.rb +1 -1
  111. data/lib/bcdice/game_system/TherapieSein.rb +2 -2
  112. data/lib/bcdice/game_system/TokumeiTenkousei.rb +2 -2
  113. data/lib/bcdice/game_system/Torg.rb +1 -1
  114. data/lib/bcdice/game_system/TorgEternity.rb +4 -7
  115. data/lib/bcdice/game_system/TrinitySeven.rb +2 -2
  116. data/lib/bcdice/game_system/TunnelsAndTrolls.rb +6 -6
  117. data/lib/bcdice/game_system/TwilightGunsmoke.rb +1 -1
  118. data/lib/bcdice/game_system/Utakaze.rb +1 -1
  119. data/lib/bcdice/game_system/Warhammer.rb +6 -6
  120. data/lib/bcdice/game_system/Warhammer4.rb +9 -12
  121. data/lib/bcdice/game_system/ZettaiReido.rb +1 -1
  122. data/lib/bcdice/normalize.rb +1 -1
  123. data/lib/bcdice/preprocessor.rb +12 -8
  124. data/lib/bcdice/randomizer.rb +12 -0
  125. data/lib/bcdice/repl.rb +1 -1
  126. data/lib/bcdice/result.rb +2 -0
  127. data/lib/bcdice/user_defined_dice_table.rb +26 -15
  128. data/lib/bcdice/version.rb +1 -1
  129. metadata +14 -25
  130. data/.editorconfig +0 -21
  131. data/.github/.codecov.yaml +0 -10
  132. data/.github/workflows/coverage.yaml +0 -21
  133. data/.github/workflows/lint.yaml +0 -13
  134. data/.github/workflows/test.yml +0 -20
  135. data/.gitignore +0 -14
  136. data/.rubocop.yml +0 -108
  137. data/.rubocop_todo.yml +0 -114
  138. data/Gemfile +0 -14
  139. data/ROADMAP.md +0 -30
  140. data/Rakefile +0 -152
  141. data/bcdice.gemspec +0 -29
  142. data/bin/repl.rb +0 -21
  143. data/docs/README.txt +0 -2028
  144. data/docs/dicebot_sort_key.md +0 -72
  145. data/docs/how_to_make_dicebot.md +0 -453
  146. data/lib/bcdice/command_parser.rb +0 -242
  147. data/lib/bcdice/common_command/add_dice/parser.y +0 -153
  148. data/lib/bcdice/common_command/barabara_dice/parser.y +0 -107
  149. data/lib/bcdice/common_command/calc/parser.y +0 -79
  150. data/lib/bcdice/common_command/reroll_dice/parser.y +0 -158
  151. data/lib/bcdice/common_command/upper_dice/parser.y +0 -143
@@ -1,4 +1,5 @@
1
1
  require "bcdice/format"
2
+ require "bcdice/common_command/barabara_dice/result"
2
3
 
3
4
  module BCDice
4
5
  module CommonCommand
@@ -12,7 +13,9 @@ module BCDice
12
13
  @target_number = target_number
13
14
  end
14
15
 
15
- # @return [String, nil]
16
+ # @param game_system [Base] ゲームシステム
17
+ # @param randomizer [Randomizer] ランダマイザ
18
+ # @return [Result]
16
19
  def eval(game_system, randomizer)
17
20
  round_type = game_system.round_type
18
21
  notations = @notations.map { |n| n.to_dice(round_type) }
@@ -38,6 +41,9 @@ module BCDice
38
41
  Result.new.tap do |r|
39
42
  r.secret = @secret
40
43
  r.text = sequence.join(" > ")
44
+ r.rands = randomizer.rand_results
45
+ r.detailed_rands = randomizer.detailed_rand_results
46
+ r.success_num = success_num
41
47
  end
42
48
  end
43
49
  end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bcdice/result"
4
+
5
+ module BCDice
6
+ module CommonCommand
7
+ module BarabaraDice
8
+ # バラバラロールの結果を表すクラス
9
+ class Result < ::BCDice::Result
10
+ # @return [Integer] 成功数
11
+ attr_accessor :success_num
12
+
13
+ # @param text [String, nil] 結果の文章
14
+ def initialize(text = nil)
15
+ super(text)
16
+
17
+ @success_num = 0
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "bcdice/arithmetic/node"
4
+
3
5
  module BCDice
4
6
  module CommonCommand
5
7
  module Calc
@@ -18,9 +20,16 @@ module BCDice
18
20
  "ゼロ除算が発生したため計算できませんでした"
19
21
  end
20
22
 
23
+ output =
24
+ if @expr.is_a?(Arithmetic::Node::Parenthesis)
25
+ @expr.output
26
+ else
27
+ "(#{@expr.output})"
28
+ end
29
+
21
30
  Result.new.tap do |r|
22
31
  r.secret = @secret
23
- r.text = "計算結果 > #{value}"
32
+ r.text = "c#{output} > #{value}"
24
33
  end
25
34
  end
26
35
  end
@@ -252,7 +252,7 @@ end
252
252
  # reduce 17 omitted
253
253
 
254
254
  def _reduce_18(val, _values, result)
255
- result = val[1]
255
+ result = Arithmetic::Node::Parenthesis.new(val[1])
256
256
  result
257
257
  end
258
258
 
@@ -18,7 +18,7 @@ module BCDice
18
18
  def parse(command, game_system)
19
19
  command = command.split(" ", 2).first
20
20
 
21
- m = /^(S)?D66([ANS])?$/i.match(command)
21
+ m = /^(S)?D66([ANSD])?$/i.match(command)
22
22
  return nil unless m
23
23
 
24
24
  new(
@@ -32,6 +32,8 @@ module BCDice
32
32
  case suffix
33
33
  when "A", "S"
34
34
  D66SortType::ASC
35
+ when "D"
36
+ D66SortType::DESC
35
37
  when "N"
36
38
  D66SortType::NO_SORT
37
39
  end
@@ -20,7 +20,8 @@ module BCDice
20
20
  }.freeze
21
21
 
22
22
  def initialize(source)
23
- source = source.split(" ", 2).first
23
+ # sourceが空文字だとString#splitが空になる
24
+ source = source.split(" ", 2).first || ""
24
25
  @scanner = StringScanner.new(source)
25
26
  end
26
27
 
@@ -36,64 +36,66 @@ end
36
36
  ##### State transition tables begin ###
37
37
 
38
38
  racc_action_table = [
39
- 9, 9, 33, 34, 3, 9, 9, 20, 21, 44,
40
- 8, 8, 20, 21, 9, 8, 8, 13, 14, 9,
41
- 20, 21, 4, 15, 8, 20, 21, 9, 10, 8,
42
- 33, 34, 9, 20, 21, 35, 16, 8, 20, 21,
43
- 9, 24, 8, 26, 14, 9, 20, 21, 36, 37,
44
- 8, 20, 21, 9, 41, 8, 33, 34, 9, 20,
45
- 21, 33, 34, 8, 20, 21, 9, 24, 8, 33,
46
- 34, 9, 20, 21, 36, 37, 8, 20, 21, 9,
47
- 16, 8, 36, 37, nil, 20, 21, 33, 34, 8,
48
- 53, 51, 52, 54 ]
39
+ 9, 9, 36, 37, 3, 9, 9, 21, 22, 49,
40
+ 8, 8, 21, 22, 9, 8, 8, 14, 15, 9,
41
+ 21, 22, 4, 16, 8, 21, 22, 9, 10, 8,
42
+ 36, 37, 9, 21, 22, 38, 17, 8, 21, 22,
43
+ 9, 25, 8, 27, 15, 9, 21, 22, 28, 29,
44
+ 8, 21, 22, 9, 44, 8, 39, 40, 9, 21,
45
+ 22, 39, 40, 8, 21, 22, 9, 25, 8, 39,
46
+ 40, 9, 21, 22, 36, 37, 8, 21, 22, 9,
47
+ 17, 8, 39, 40, 9, 21, 22, 39, 40, 8,
48
+ 21, 22, 9, nil, 8, 39, 40, nil, 21, 22,
49
+ 39, 40, 8, 58, 56, 57, 59, 36, 37 ]
49
50
 
50
51
  racc_action_check = [
51
- 2, 8, 31, 31, 0, 16, 13, 8, 8, 31,
52
- 2, 8, 13, 13, 14, 16, 13, 5, 5, 15,
53
- 14, 14, 1, 5, 14, 15, 15, 20, 4, 15,
54
- 17, 17, 21, 20, 20, 17, 7, 20, 21, 21,
55
- 24, 11, 21, 12, 12, 26, 24, 24, 18, 18,
56
- 24, 26, 26, 33, 23, 26, 27, 27, 34, 33,
57
- 33, 30, 30, 33, 34, 34, 36, 25, 34, 42,
58
- 42, 37, 36, 36, 45, 45, 36, 37, 37, 41,
59
- 29, 37, 46, 46, nil, 41, 41, 49, 49, 41,
60
- 48, 48, 48, 48 ]
52
+ 2, 8, 34, 34, 0, 17, 14, 8, 8, 34,
53
+ 2, 8, 14, 14, 15, 17, 14, 5, 5, 16,
54
+ 15, 15, 1, 5, 15, 16, 16, 21, 4, 16,
55
+ 18, 18, 22, 21, 21, 18, 7, 21, 22, 22,
56
+ 25, 11, 22, 12, 12, 27, 25, 25, 13, 13,
57
+ 25, 27, 27, 28, 24, 27, 19, 19, 29, 28,
58
+ 28, 30, 30, 28, 29, 29, 36, 26, 29, 33,
59
+ 33, 37, 36, 36, 45, 45, 36, 37, 37, 39,
60
+ 32, 37, 47, 47, 40, 39, 39, 48, 48, 39,
61
+ 40, 40, 44, nil, 40, 50, 50, nil, 44, 44,
62
+ 51, 51, 44, 53, 53, 53, 53, 54, 54 ]
61
63
 
62
64
  racc_action_pointer = [
63
65
  -3, 22, -2, nil, 28, 9, nil, 32, -1, nil,
64
- nil, 20, 35, 4, 12, 17, 3, 22, 38, nil,
65
- 25, 30, nil, 34, 38, 46, 43, 48, nil, 76,
66
- 53, -6, nil, 51, 56, nil, 64, 69, nil, nil,
67
- nil, 77, 61, nil, nil, 64, 72, nil, 87, 79,
68
- nil, nil, nil, nil, nil ]
66
+ nil, 20, 35, 40, 4, 12, 17, 3, 22, 46,
67
+ nil, 25, 30, nil, 34, 38, 46, 43, 51, 56,
68
+ 51, nil, 76, 59, -6, nil, 64, 69, nil, 77,
69
+ 82, nil, nil, nil, 90, 66, nil, 72, 77, nil,
70
+ 85, 90, nil, 100, 99, nil, nil, nil, nil, nil ]
69
71
 
70
72
  racc_action_default = [
71
- -4, -32, -32, -5, -32, -6, -14, -32, -32, -31,
72
- 55, -9, -6, -32, -32, -32, -32, -32, -18, -21,
73
- -32, -32, -29, -1, -32, -9, -32, -7, -13, -29,
74
- -8, -32, -15, -32, -32, -30, -32, -32, -27, -28,
75
- -3, -32, -10, -2, -11, -16, -17, -19, -22, -12,
76
- -20, -23, -24, -25, -26 ]
73
+ -4, -35, -35, -5, -35, -6, -17, -35, -35, -34,
74
+ 60, -12, -6, -7, -35, -35, -35, -35, -35, -21,
75
+ -24, -35, -35, -32, -1, -35, -12, -35, -35, -35,
76
+ -8, -16, -32, -9, -35, -18, -35, -35, -33, -35,
77
+ -35, -30, -31, -3, -35, -13, -2, -10, -11, -14,
78
+ -19, -20, -22, -25, -15, -23, -26, -27, -28, -29 ]
77
79
 
78
80
  racc_goto_table = [
79
- 17, 38, 39, 6, 11, 23, 30, 31, 1, 7,
80
- 2, 25, 45, 46, 28, 5, 42, 47, 48, 43,
81
- 29, 12, 40, 32, 50, nil, nil, nil, nil, nil,
82
- nil, nil, nil, 49 ]
81
+ 18, 30, 33, 41, 42, 24, 6, 1, 34, 2,
82
+ 5, 12, 11, 7, 30, 47, 48, 45, 31, 26,
83
+ 46, 52, 53, 50, 51, 32, 43, 55, 35, nil,
84
+ nil, nil, nil, nil, nil, nil, 54 ]
83
85
 
84
86
  racc_goto_check = [
85
- 8, 12, 12, 9, 4, 5, 8, 8, 1, 10,
86
- 2, 4, 11, 11, 9, 3, 8, 12, 12, 5,
87
- 10, 6, 7, 10, 13, nil, nil, nil, nil, nil,
88
- nil, nil, nil, 8 ]
87
+ 10, 9, 9, 13, 13, 5, 11, 1, 10, 2,
88
+ 3, 6, 4, 12, 9, 9, 9, 10, 11, 4,
89
+ 5, 13, 13, 9, 9, 12, 7, 14, 12, nil,
90
+ nil, nil, nil, nil, nil, nil, 10 ]
89
91
 
90
92
  racc_goto_pointer = [
91
- nil, 8, 10, 13, -1, -6, 16, -1, -8, 1,
92
- 7, -21, -19, -24 ]
93
+ nil, 7, 9, 8, 7, -6, 6, 2, nil, -13,
94
+ -8, 4, 11, -18, -26 ]
93
95
 
94
96
  racc_goto_default = [
95
- nil, nil, nil, nil, nil, nil, nil, nil, 27, nil,
96
- 22, 18, 19, nil ]
97
+ nil, nil, nil, nil, nil, nil, nil, nil, 13, 19,
98
+ nil, nil, 23, 20, nil ]
97
99
 
98
100
  racc_reduce_table = [
99
101
  0, 0, :racc_error,
@@ -103,35 +105,38 @@ racc_reduce_table = [
103
105
  0, 24, :_reduce_4,
104
106
  1, 24, :_reduce_5,
105
107
  0, 26, :_reduce_6,
106
- 2, 26, :_reduce_7,
107
- 2, 26, :_reduce_8,
108
- 0, 27, :_reduce_9,
109
- 2, 27, :_reduce_10,
110
- 3, 28, :_reduce_11,
111
- 2, 29, :_reduce_12,
112
- 3, 25, :_reduce_13,
113
- 1, 25, :_reduce_14,
114
- 3, 31, :_reduce_15,
115
- 3, 30, :_reduce_16,
116
- 3, 30, :_reduce_17,
117
- 1, 30, :_reduce_none,
118
- 3, 33, :_reduce_19,
119
- 4, 33, :_reduce_20,
120
- 1, 33, :_reduce_none,
121
- 0, 35, :_reduce_22,
122
- 1, 35, :_reduce_23,
123
- 1, 35, :_reduce_24,
124
- 1, 35, :_reduce_25,
125
- 1, 35, :_reduce_26,
126
- 2, 34, :_reduce_27,
127
- 2, 34, :_reduce_28,
128
- 1, 34, :_reduce_none,
129
- 3, 32, :_reduce_30,
130
- 1, 32, :_reduce_31 ]
131
-
132
- racc_reduce_n = 32
133
-
134
- racc_shift_n = 55
108
+ 1, 26, :_reduce_7,
109
+ 2, 30, :_reduce_8,
110
+ 2, 30, :_reduce_9,
111
+ 3, 30, :_reduce_10,
112
+ 3, 30, :_reduce_11,
113
+ 0, 27, :_reduce_12,
114
+ 2, 27, :_reduce_13,
115
+ 3, 28, :_reduce_14,
116
+ 2, 29, :_reduce_15,
117
+ 3, 25, :_reduce_16,
118
+ 1, 25, :_reduce_17,
119
+ 3, 33, :_reduce_18,
120
+ 3, 32, :_reduce_19,
121
+ 3, 32, :_reduce_20,
122
+ 1, 32, :_reduce_none,
123
+ 3, 31, :_reduce_22,
124
+ 4, 31, :_reduce_23,
125
+ 1, 31, :_reduce_none,
126
+ 0, 36, :_reduce_25,
127
+ 1, 36, :_reduce_26,
128
+ 1, 36, :_reduce_27,
129
+ 1, 36, :_reduce_28,
130
+ 1, 36, :_reduce_29,
131
+ 2, 35, :_reduce_30,
132
+ 2, 35, :_reduce_31,
133
+ 1, 35, :_reduce_none,
134
+ 3, 34, :_reduce_33,
135
+ 1, 34, :_reduce_34 ]
136
+
137
+ racc_reduce_n = 35
138
+
139
+ racc_shift_n = 60
135
140
 
136
141
  racc_token_table = {
137
142
  false => 0,
@@ -208,10 +213,11 @@ Racc_token_to_s_table = [
208
213
  "target",
209
214
  "bracket",
210
215
  "at",
216
+ "modifier_expr",
217
+ "mul",
211
218
  "add",
212
219
  "dice",
213
220
  "term",
214
- "mul",
215
221
  "unary",
216
222
  "round_type" ]
217
223
 
@@ -275,21 +281,36 @@ def _reduce_6(val, _values, result)
275
281
  end
276
282
 
277
283
  def _reduce_7(val, _values, result)
278
- result = val[1]
284
+ result = val[0]
279
285
  result
280
286
  end
281
287
 
282
288
  def _reduce_8(val, _values, result)
283
- result = Arithmetic::Node::Negative.new(val[1])
289
+ result = val[1]
284
290
  result
285
291
  end
286
292
 
287
293
  def _reduce_9(val, _values, result)
288
- result = {}
294
+ result = Arithmetic::Node::Negative.new(val[1])
289
295
  result
290
296
  end
291
297
 
292
298
  def _reduce_10(val, _values, result)
299
+ result = Arithmetic::Node::BinaryOp.new(val[0], :+, val[2])
300
+ result
301
+ end
302
+
303
+ def _reduce_11(val, _values, result)
304
+ result = Arithmetic::Node::BinaryOp.new(val[0], :-, val[2])
305
+ result
306
+ end
307
+
308
+ def _reduce_12(val, _values, result)
309
+ result = {}
310
+ result
311
+ end
312
+
313
+ def _reduce_13(val, _values, result)
293
314
  cmp_op, target = val
294
315
  raise ParseError unless cmp_op
295
316
 
@@ -298,17 +319,17 @@ def _reduce_10(val, _values, result)
298
319
  result
299
320
  end
300
321
 
301
- def _reduce_11(val, _values, result)
322
+ def _reduce_14(val, _values, result)
302
323
  result = val[1]
303
324
  result
304
325
  end
305
326
 
306
- def _reduce_12(val, _values, result)
327
+ def _reduce_15(val, _values, result)
307
328
  result = val[1]
308
329
  result
309
330
  end
310
331
 
311
- def _reduce_13(val, _values, result)
332
+ def _reduce_16(val, _values, result)
312
333
  notations = val[0]
313
334
  notations.push(val[2])
314
335
  result = notations
@@ -316,12 +337,12 @@ def _reduce_13(val, _values, result)
316
337
  result
317
338
  end
318
339
 
319
- def _reduce_14(val, _values, result)
340
+ def _reduce_17(val, _values, result)
320
341
  result = [val[0]]
321
342
  result
322
343
  end
323
344
 
324
- def _reduce_15(val, _values, result)
345
+ def _reduce_18(val, _values, result)
325
346
  times = val[0]
326
347
  sides = val[2]
327
348
  result = UpperDice::Node::Notation.new(times, sides)
@@ -329,75 +350,75 @@ def _reduce_15(val, _values, result)
329
350
  result
330
351
  end
331
352
 
332
- def _reduce_16(val, _values, result)
353
+ def _reduce_19(val, _values, result)
333
354
  result = Arithmetic::Node::BinaryOp.new(val[0], :+, val[2])
334
355
  result
335
356
  end
336
357
 
337
- def _reduce_17(val, _values, result)
358
+ def _reduce_20(val, _values, result)
338
359
  result = Arithmetic::Node::BinaryOp.new(val[0], :-, val[2])
339
360
  result
340
361
  end
341
362
 
342
- # reduce 18 omitted
363
+ # reduce 21 omitted
343
364
 
344
- def _reduce_19(val, _values, result)
365
+ def _reduce_22(val, _values, result)
345
366
  result = Arithmetic::Node::BinaryOp.new(val[0], :*, val[2])
346
367
  result
347
368
  end
348
369
 
349
- def _reduce_20(val, _values, result)
370
+ def _reduce_23(val, _values, result)
350
371
  divied_class = val[3]
351
372
  result = divied_class.new(val[0], val[2])
352
373
 
353
374
  result
354
375
  end
355
376
 
356
- # reduce 21 omitted
377
+ # reduce 24 omitted
357
378
 
358
- def _reduce_22(val, _values, result)
379
+ def _reduce_25(val, _values, result)
359
380
  result = Arithmetic::Node::DivideWithGameSystemDefault
360
381
  result
361
382
  end
362
383
 
363
- def _reduce_23(val, _values, result)
384
+ def _reduce_26(val, _values, result)
364
385
  result = Arithmetic::Node::DivideWithCeil
365
386
  result
366
387
  end
367
388
 
368
- def _reduce_24(val, _values, result)
389
+ def _reduce_27(val, _values, result)
369
390
  result = Arithmetic::Node::DivideWithCeil
370
391
  result
371
392
  end
372
393
 
373
- def _reduce_25(val, _values, result)
394
+ def _reduce_28(val, _values, result)
374
395
  result = Arithmetic::Node::DivideWithRound
375
396
  result
376
397
  end
377
398
 
378
- def _reduce_26(val, _values, result)
399
+ def _reduce_29(val, _values, result)
379
400
  result = Arithmetic::Node::DivideWithFloor
380
401
  result
381
402
  end
382
403
 
383
- def _reduce_27(val, _values, result)
404
+ def _reduce_30(val, _values, result)
384
405
  result = val[1]
385
406
  result
386
407
  end
387
408
 
388
- def _reduce_28(val, _values, result)
409
+ def _reduce_31(val, _values, result)
389
410
  result = Arithmetic::Node::Negative.new(val[1])
390
411
  result
391
412
  end
392
413
 
393
- # reduce 29 omitted
414
+ # reduce 32 omitted
394
415
 
395
- def _reduce_30(val, _values, result)
416
+ def _reduce_33(val, _values, result)
396
417
  result = val[1]
397
418
  result
398
419
  end
399
420
 
400
- def _reduce_31(val, _values, result)
421
+ def _reduce_34(val, _values, result)
401
422
  result = Arithmetic::Node::Number.new(val[0])
402
423
  result
403
424
  end