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

Sign up to get free protection for your applications and to get access to all the features.
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