bcdice 3.0.0 → 3.2.0

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 (183) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +79 -2
  3. data/README.md +32 -0
  4. data/i18n/MonotoneMuseum/ja_jp.yml +3 -3
  5. data/i18n/StellarKnights/ja_jp.yml +496 -0
  6. data/lib/bcdice/common_command/add_dice.rb +1 -1
  7. data/lib/bcdice/common_command/calc.rb +1 -1
  8. data/lib/bcdice/dice_table.rb +2 -0
  9. data/lib/bcdice/dice_table/d66_half_grid_table.rb +33 -0
  10. data/lib/bcdice/dice_table/d66_one_third_table.rb +34 -0
  11. data/lib/bcdice/dice_table/sai_fic_skill_table.rb +1 -1
  12. data/lib/bcdice/game_system.rb +4 -0
  13. data/lib/bcdice/game_system/AceKillerGene.rb +1 -1
  14. data/lib/bcdice/game_system/Ainecadette.rb +68 -0
  15. data/lib/bcdice/game_system/Airgetlamh.rb +1 -1
  16. data/lib/bcdice/game_system/AlchemiaStruggle.rb +1 -1
  17. data/lib/bcdice/game_system/Alsetto.rb +1 -1
  18. data/lib/bcdice/game_system/Alshard.rb +1 -1
  19. data/lib/bcdice/game_system/AlterRaise.rb +2 -2
  20. data/lib/bcdice/game_system/AngelGear.rb +123 -0
  21. data/lib/bcdice/game_system/AnimaAnimus.rb +1 -1
  22. data/lib/bcdice/game_system/Arianrhod.rb +6 -8
  23. data/lib/bcdice/game_system/ArsMagica.rb +1 -1
  24. data/lib/bcdice/game_system/Avandner.rb +1 -1
  25. data/lib/bcdice/game_system/BBN.rb +1 -1
  26. data/lib/bcdice/game_system/BadLife.rb +1 -1
  27. data/lib/bcdice/game_system/BarnaKronika.rb +1 -1
  28. data/lib/bcdice/game_system/BattleTech.rb +1 -1
  29. data/lib/bcdice/game_system/BeastBindTrinity.rb +2 -2
  30. data/lib/bcdice/game_system/BeginningIdol.rb +5 -5
  31. data/lib/bcdice/game_system/BeginningIdol_Korean.rb +5 -5
  32. data/lib/bcdice/game_system/BladeOfArcana.rb +1 -1
  33. data/lib/bcdice/game_system/BlindMythos.rb +1 -1
  34. data/lib/bcdice/game_system/BloodCrusade.rb +48 -49
  35. data/lib/bcdice/game_system/BloodMoon.rb +50 -8
  36. data/lib/bcdice/game_system/CardRanker.rb +10 -9
  37. data/lib/bcdice/game_system/ChaosFlare.rb +21 -15
  38. data/lib/bcdice/game_system/Chill.rb +10 -10
  39. data/lib/bcdice/game_system/Chill3.rb +9 -9
  40. data/lib/bcdice/game_system/CodeLayerd.rb +1 -1
  41. data/lib/bcdice/game_system/CrashWorld.rb +1 -1
  42. data/lib/bcdice/game_system/Cthulhu.rb +8 -4
  43. data/lib/bcdice/game_system/Cthulhu7th.rb +86 -342
  44. data/lib/bcdice/game_system/Cthulhu7th_ChineseTraditional.rb +2 -2
  45. data/lib/bcdice/game_system/Cthulhu7th_Korean.rb +2 -2
  46. data/lib/bcdice/game_system/CthulhuTech.rb +1 -1
  47. data/lib/bcdice/game_system/Cthulhu_ChineseTraditional.rb +1 -1
  48. data/lib/bcdice/game_system/Cthulhu_Korean.rb +1 -1
  49. data/lib/bcdice/game_system/DarkBlaze.rb +1 -12
  50. data/lib/bcdice/game_system/DarkDaysDrive.rb +8 -7
  51. data/lib/bcdice/game_system/DeadlineHeroes.rb +2 -2
  52. data/lib/bcdice/game_system/DemonParasite.rb +5 -13
  53. data/lib/bcdice/game_system/DesperateRun.rb +1 -1
  54. data/lib/bcdice/game_system/DiceOfTheDead.rb +1 -1
  55. data/lib/bcdice/game_system/DoubleCross.rb +2 -2
  56. data/lib/bcdice/game_system/Dracurouge.rb +1 -1
  57. data/lib/bcdice/game_system/EarthDawn.rb +1 -1
  58. data/lib/bcdice/game_system/EarthDawn3.rb +1 -1
  59. data/lib/bcdice/game_system/EarthDawn4.rb +1 -1
  60. data/lib/bcdice/game_system/EclipsePhase.rb +14 -14
  61. data/lib/bcdice/game_system/Elric.rb +18 -14
  62. data/lib/bcdice/game_system/Elysion.rb +3 -3
  63. data/lib/bcdice/game_system/EmbryoMachine.rb +9 -8
  64. data/lib/bcdice/game_system/Emoklore.rb +3 -3
  65. data/lib/bcdice/game_system/EtrianOdysseySRS.rb +1 -1
  66. data/lib/bcdice/game_system/Fiasco.rb +1 -1
  67. data/lib/bcdice/game_system/FilledWith.rb +205 -1272
  68. data/lib/bcdice/game_system/FullMetalPanic.rb +1 -1
  69. data/lib/bcdice/game_system/GURPS.rb +17 -28
  70. data/lib/bcdice/game_system/Garako.rb +12 -4
  71. data/lib/bcdice/game_system/GardenOrder.rb +1 -1
  72. data/lib/bcdice/game_system/GehennaAn.rb +1 -1
  73. data/lib/bcdice/game_system/GeishaGirlwithKatana.rb +1 -1
  74. data/lib/bcdice/game_system/GoblinSlayer.rb +1 -1
  75. data/lib/bcdice/game_system/Gorilla.rb +3 -9
  76. data/lib/bcdice/game_system/GranCrest.rb +18 -11
  77. data/lib/bcdice/game_system/Gundog.rb +9 -8
  78. data/lib/bcdice/game_system/GundogRevised.rb +10 -9
  79. data/lib/bcdice/game_system/GundogZero.rb +1 -1
  80. data/lib/bcdice/game_system/GurpsFW.rb +16 -16
  81. data/lib/bcdice/game_system/HarnMaster.rb +19 -26
  82. data/lib/bcdice/game_system/HatsuneMiku.rb +1 -1
  83. data/lib/bcdice/game_system/Hieizan.rb +12 -21
  84. data/lib/bcdice/game_system/HouraiGakuen.rb +1 -1
  85. data/lib/bcdice/game_system/HuntersMoon.rb +5 -10
  86. data/lib/bcdice/game_system/Illusio.rb +25 -34
  87. data/lib/bcdice/game_system/InfiniteFantasia.rb +19 -17
  88. data/lib/bcdice/game_system/Insane.rb +13 -20
  89. data/lib/bcdice/game_system/IthaWenUa.rb +8 -15
  90. data/lib/bcdice/game_system/JamesBond.rb +10 -10
  91. data/lib/bcdice/game_system/JekyllAndHyde.rb +1 -1
  92. data/lib/bcdice/game_system/Kamigakari.rb +1 -1
  93. data/lib/bcdice/game_system/KanColle.rb +4 -9
  94. data/lib/bcdice/game_system/KemonoNoMori.rb +1 -1
  95. data/lib/bcdice/game_system/KillDeathBusiness.rb +7 -15
  96. data/lib/bcdice/game_system/KurayamiCrying.rb +55 -2
  97. data/lib/bcdice/game_system/LogHorizon.rb +3 -3
  98. data/lib/bcdice/game_system/LostRoyal.rb +1 -1
  99. data/lib/bcdice/game_system/MeikyuDays.rb +11 -9
  100. data/lib/bcdice/game_system/MeikyuKingdom.rb +28 -28
  101. data/lib/bcdice/game_system/MeikyuKingdomBasic.rb +5 -5
  102. data/lib/bcdice/game_system/MetalHead.rb +12 -22
  103. data/lib/bcdice/game_system/MetalHeadExtream.rb +5 -5
  104. data/lib/bcdice/game_system/MetallicGuardian.rb +1 -1
  105. data/lib/bcdice/game_system/MonotoneMuseum.rb +9 -7
  106. data/lib/bcdice/game_system/Nechronica.rb +28 -21
  107. data/lib/bcdice/game_system/NeverCloud.rb +540 -5
  108. data/lib/bcdice/game_system/NightWizard.rb +1 -1
  109. data/lib/bcdice/game_system/NightWizard3rd.rb +1 -1
  110. data/lib/bcdice/game_system/NinjaSlayer.rb +4 -13
  111. data/lib/bcdice/game_system/NjslyrBattle.rb +8 -11
  112. data/lib/bcdice/game_system/OneWayHeroics.rb +1 -1
  113. data/lib/bcdice/game_system/OracleEngine.rb +1 -1
  114. data/lib/bcdice/game_system/OrgaRain.rb +17 -25
  115. data/lib/bcdice/game_system/Paradiso.rb +3 -3
  116. data/lib/bcdice/game_system/ParanoiaRebooted.rb +1 -1
  117. data/lib/bcdice/game_system/ParasiteBlood.rb +1 -1
  118. data/lib/bcdice/game_system/Peekaboo.rb +4 -9
  119. data/lib/bcdice/game_system/Pendragon.rb +7 -7
  120. data/lib/bcdice/game_system/PhantasmAdventure.rb +8 -8
  121. data/lib/bcdice/game_system/Postman.rb +2 -2
  122. data/lib/bcdice/game_system/PulpCthulhu.rb +1 -1
  123. data/lib/bcdice/game_system/Raisondetre.rb +2 -2
  124. data/lib/bcdice/game_system/RecordOfLodossWar.rb +1 -1
  125. data/lib/bcdice/game_system/RecordOfSteam.rb +1 -1
  126. data/lib/bcdice/game_system/Revulture.rb +123 -0
  127. data/lib/bcdice/game_system/RokumonSekai2.rb +1 -1
  128. data/lib/bcdice/game_system/RuneQuest.rb +8 -8
  129. data/lib/bcdice/game_system/Ryutama.rb +1 -1
  130. data/lib/bcdice/game_system/SRS.rb +1 -1
  131. data/lib/bcdice/game_system/SamsaraBallad.rb +1 -1
  132. data/lib/bcdice/game_system/Satasupe.rb +79 -860
  133. data/lib/bcdice/game_system/ScreamHighSchool.rb +2 -2
  134. data/lib/bcdice/game_system/SevenFortressMobius.rb +1 -1
  135. data/lib/bcdice/game_system/SharedFantasia.rb +20 -24
  136. data/lib/bcdice/game_system/ShinkuuGakuen.rb +2 -2
  137. data/lib/bcdice/game_system/ShinobiGami.rb +17 -9
  138. data/lib/bcdice/game_system/Skynauts.rb +4 -4
  139. data/lib/bcdice/game_system/SkynautsBouken.rb +228 -0
  140. data/lib/bcdice/game_system/SteamPunkers.rb +1 -1
  141. data/lib/bcdice/game_system/StellarKnights.rb +59 -696
  142. data/lib/bcdice/game_system/SterileLife.rb +2 -3
  143. data/lib/bcdice/game_system/StrangerOfSwordCity.rb +2 -2
  144. data/lib/bcdice/game_system/StratoShout.rb +8 -16
  145. data/lib/bcdice/game_system/Strave.rb +1 -1
  146. data/lib/bcdice/game_system/SwordWorld.rb +58 -185
  147. data/lib/bcdice/game_system/SwordWorld2_0.rb +22 -150
  148. data/lib/bcdice/game_system/SwordWorld2_5.rb +127 -41
  149. data/lib/bcdice/game_system/TherapieSein.rb +1 -1
  150. data/lib/bcdice/game_system/TokyoGhostResearch.rb +1 -1
  151. data/lib/bcdice/game_system/Torg.rb +1 -1
  152. data/lib/bcdice/game_system/TorgEternity.rb +2 -2
  153. data/lib/bcdice/game_system/TrinitySeven.rb +4 -4
  154. data/lib/bcdice/game_system/TunnelsAndTrolls.rb +1 -1
  155. data/lib/bcdice/game_system/TwilightGunsmoke.rb +1 -1
  156. data/lib/bcdice/game_system/UnsungDuet.rb +1 -1
  157. data/lib/bcdice/game_system/Utakaze.rb +1 -1
  158. data/lib/bcdice/game_system/VampireTheMasquerade5th.rb +1 -1
  159. data/lib/bcdice/game_system/Villaciel.rb +1 -1
  160. data/lib/bcdice/game_system/WARPS.rb +11 -9
  161. data/lib/bcdice/game_system/WaresBlade.rb +4 -9
  162. data/lib/bcdice/game_system/Warhammer.rb +16 -7
  163. data/lib/bcdice/game_system/Warhammer4.rb +16 -12
  164. data/lib/bcdice/game_system/WitchQuest.rb +1 -1
  165. data/lib/bcdice/game_system/WorldOfDarkness.rb +1 -1
  166. data/lib/bcdice/game_system/YankeeYogSothoth.rb +4 -9
  167. data/lib/bcdice/game_system/YearZeroEngine.rb +1 -1
  168. data/lib/bcdice/game_system/ZettaiReido.rb +1 -1
  169. data/lib/bcdice/game_system/cthulhu7th/full_auto.rb +294 -0
  170. data/lib/bcdice/game_system/cthulhu7th/rollable.rb +41 -0
  171. data/lib/bcdice/game_system/filled_with/enemy_data_tables.rb +322 -0
  172. data/lib/bcdice/game_system/filled_with/event_tables.rb +392 -0
  173. data/lib/bcdice/game_system/filled_with/tresure_tables.rb +179 -0
  174. data/lib/bcdice/game_system/meikyu_kingdom_basic/kingdom_table.rb +1 -1
  175. data/lib/bcdice/game_system/satasupe/tables.rb +723 -0
  176. data/lib/bcdice/game_system/sword_world/rating_lexer.rb +47 -0
  177. data/lib/bcdice/game_system/sword_world/rating_parsed.rb +99 -0
  178. data/lib/bcdice/game_system/sword_world/rating_parser.rb +457 -0
  179. data/lib/bcdice/game_system/sword_world/transcendent_test.rb +122 -0
  180. data/lib/bcdice/repl.rb +1 -1
  181. data/lib/bcdice/result.rb +26 -0
  182. data/lib/bcdice/version.rb +1 -1
  183. metadata +20 -4
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "strscan"
4
+
5
+ module BCDice
6
+ module GameSystem
7
+ class SwordWorld < Base
8
+ class RatingLexer
9
+ SYMBOLS = {
10
+ "+" => :PLUS,
11
+ "-" => :MINUS,
12
+ "*" => :ASTERISK,
13
+ "/" => :SLASH,
14
+ "(" => :PARENL,
15
+ ")" => :PARENR,
16
+ "[" => :BRACKETL,
17
+ "]" => :BRACKETR,
18
+ "@" => :AT,
19
+ "#" => :SHARP,
20
+ "$" => :DOLLAR,
21
+ }.freeze
22
+
23
+ def initialize(source)
24
+ # sourceが空文字だとString#splitが空になる
25
+ source = source&.split(" ", 2)&.first || ""
26
+ @scanner = StringScanner.new(source)
27
+ end
28
+
29
+ def next_token
30
+ return [false, "$"] if @scanner.eos?
31
+
32
+ if (number = @scanner.scan(/\d+/))
33
+ [:NUMBER, number.to_i]
34
+ else
35
+ char = @scanner.getch.upcase
36
+ type = SYMBOLS[char] || char.to_sym
37
+ [type, char]
38
+ end
39
+ end
40
+
41
+ def source
42
+ @scanner.string
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,99 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BCDice
4
+ module GameSystem
5
+ class SwordWorld < Base
6
+ class RatingParsed
7
+ # @return [Integer]
8
+ attr_accessor :rate
9
+
10
+ # @return [Integer, nil]
11
+ attr_writer :critical
12
+
13
+ # @return [Integer, nil]
14
+ attr_writer :kept_modify
15
+
16
+ # @return [Integer, nil]
17
+ attr_writer :first_to
18
+
19
+ # @return [Integer, nil]
20
+ attr_writer :first_modify
21
+
22
+ # @return [Integer, nil]
23
+ attr_writer :rateup
24
+
25
+ # @return [Boolean]
26
+ attr_accessor :greatest_fortune
27
+
28
+ # @return [Integer]
29
+ attr_accessor :modifier
30
+
31
+ # @return [Integer, nil]
32
+ attr_writer :modifier_after_half
33
+
34
+ def initialize
35
+ @critical = nil
36
+ @kept_modify = nil
37
+ @first_to = nil
38
+ @first_modify = nil
39
+ @greatest_fortune = false
40
+ @rateup = nil
41
+ end
42
+
43
+ # @return [Boolean]
44
+ def half
45
+ return !@modifier_after_half.nil?
46
+ end
47
+
48
+ # @return [Integer]
49
+ def critical
50
+ crit = @critical || (half ? 13 : 10)
51
+ crit = 3 if crit < 3
52
+ return crit
53
+ end
54
+
55
+ # @return [Integer]
56
+ def first_modify
57
+ return @first_modify || 0
58
+ end
59
+
60
+ # @return [Integer]
61
+ def first_to
62
+ return @first_to || 0
63
+ end
64
+
65
+ # @return [Integer]
66
+ def rateup
67
+ return @rateup || 0
68
+ end
69
+
70
+ # @return [Integer]
71
+ def kept_modify
72
+ return @kept_modify || 0
73
+ end
74
+
75
+ # @return [Integer]
76
+ def modifier_after_half
77
+ return @modifier_after_half || 0
78
+ end
79
+
80
+ # @return [String]
81
+ def to_s()
82
+ output = "KeyNo.#{@rate}"
83
+
84
+ output += "c[#{critical}]" if critical < 13
85
+ output += "m[#{Format.modifier(first_modify)}]" if first_modify != 0
86
+ output += "m[#{first_to}]" if first_to != 0
87
+ output += "r[#{rateup}]" if rateup != 0
88
+ output += "gf" if @greatest_fortune
89
+ output += "a[#{Format.modifier(kept_modify)}]" if kept_modify != 0
90
+
91
+ if @modifier != 0
92
+ output += Format.modifier(@modifier)
93
+ end
94
+ return output
95
+ end
96
+ end
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,457 @@
1
+ #
2
+ # DO NOT MODIFY!!!!
3
+ # This file is automatically generated by Racc 1.5.1
4
+ # from Racc grammar file "".
5
+ #
6
+
7
+ require 'racc/parser.rb'
8
+
9
+
10
+ require "bcdice/arithmetic/node"
11
+ require "bcdice/enum"
12
+ require "bcdice/game_system/sword_world/rating_lexer"
13
+ require "bcdice/game_system/sword_world/rating_parsed"
14
+
15
+ module BCDice
16
+ module GameSystem
17
+ class SwordWorld < Base
18
+ # SwordWorldの威力表コマンドをパースするクラス
19
+
20
+ class RatingParser < Racc::Parser
21
+
22
+
23
+ # デフォルトの丸めを切り上げとしているが、SwordWorldには切り捨てもあるので決め切れない(四捨五入は現状ない)
24
+ def initialize(version: :v1_0, round_type: RoundType::CEIL)
25
+ super()
26
+ @version = version
27
+ @round_type = round_type
28
+ end
29
+
30
+ def set_debug
31
+ @yydebug = true
32
+ return self
33
+ end
34
+
35
+ # @param source [String]
36
+ # @return [BCDice::GameSystem::SwordWorld::RatingParsed, nil]
37
+ def parse(source)
38
+ @lexer = RatingLexer.new(source)
39
+ do_parse()
40
+ rescue ParseError, ZeroDivisionError
41
+ nil
42
+ end
43
+
44
+ private
45
+
46
+ def parsed(rate, modifier, option)
47
+ RatingParsed.new.tap do |p|
48
+ p.rate = rate
49
+ p.critical = option[:critical]&.eval(@round_type)
50
+ p.kept_modify = option[:kept_modify]&.eval(@round_type)
51
+ p.first_to = option[:first_to]
52
+ p.first_modify = option[:first_modify]
53
+ p.rateup = option[:rateup]&.eval(@round_type)
54
+ p.greatest_fortune = option.fetch(:greatest_fortune, false)
55
+ p.modifier = modifier.eval(@round_type)
56
+ p.modifier_after_half = option[:modifier_after_half]&.eval(@round_type)
57
+ end
58
+ end
59
+
60
+ def next_token
61
+ @lexer.next_token
62
+ end
63
+
64
+ ##### State transition tables begin ###
65
+
66
+ racc_action_table = [
67
+ 15, 14, 16, 5, 18, 19, 51, 52, 21, 22,
68
+ 11, 53, 12, 17, 13, 15, 14, 16, 4, 18,
69
+ 19, 4, 8, 3, 28, 11, 28, 12, 17, 13,
70
+ 24, 25, 24, 25, 27, 28, 27, 28, 49, 50,
71
+ 9, 24, 25, 24, 25, 27, 28, 27, 28, 49,
72
+ 50, 35, 24, 25, 24, 25, 27, 28, 27, 28,
73
+ 49, 50, 42, 24, 25, 24, 25, 27, 28, 27,
74
+ 28, 49, 50, 47, 24, 25, 24, 25, 27, 28,
75
+ 27, 28, 49, 50, 48, 24, 25, 24, 25, 27,
76
+ 28, 27, 28, 49, 50, nil, 24, 25, 24, 25,
77
+ 27, 28, 27, 28, 49, 50, nil, 24, 25, 24,
78
+ 25, 27, 30, 27, nil, nil, nil, nil, 31, 32 ]
79
+
80
+ racc_action_check = [
81
+ 6, 6, 6, 1, 6, 6, 45, 45, 10, 10,
82
+ 6, 45, 6, 6, 6, 20, 20, 20, 3, 20,
83
+ 20, 0, 4, 0, 11, 20, 12, 20, 20, 20,
84
+ 11, 11, 12, 12, 11, 14, 12, 15, 37, 37,
85
+ 5, 14, 14, 15, 15, 14, 17, 15, 18, 39,
86
+ 39, 16, 17, 17, 18, 18, 17, 19, 18, 21,
87
+ 40, 40, 23, 19, 19, 21, 21, 19, 22, 21,
88
+ 24, 41, 41, 31, 22, 22, 24, 24, 22, 25,
89
+ 24, 27, 46, 46, 32, 25, 25, 27, 27, 25,
90
+ 49, 27, 50, 56, 56, nil, 49, 49, 50, 50,
91
+ 49, 51, 50, 52, 57, 57, nil, 51, 51, 52,
92
+ 52, 51, 13, 52, nil, nil, nil, nil, 13, 13 ]
93
+
94
+ racc_action_pointer = [
95
+ 18, 3, nil, 15, 20, 40, -4, nil, nil, nil,
96
+ 0, 22, 24, 110, 33, 35, 44, 44, 46, 55,
97
+ 11, 57, 66, 47, 68, 77, nil, 79, nil, nil,
98
+ nil, 71, 82, nil, nil, nil, nil, 28, nil, 39,
99
+ 50, 61, nil, nil, nil, -2, 72, nil, nil, 88,
100
+ 90, 99, 101, nil, nil, nil, 83, 94 ]
101
+
102
+ racc_action_default = [
103
+ -31, -31, -4, -31, -31, -31, -1, -4, -3, 58,
104
+ -5, -31, -31, -31, -11, -31, -31, -31, -31, -31,
105
+ -2, -31, -31, -31, -31, -31, -28, -31, -30, -7,
106
+ -8, -31, -31, -12, -13, -14, -15, -16, -25, -17,
107
+ -18, -19, -6, -26, -27, -31, -22, -9, -10, -31,
108
+ -31, -31, -31, -29, -23, -24, -20, -21 ]
109
+
110
+ racc_goto_table = [
111
+ 23, 29, 2, 33, 34, 7, 36, 37, 39, 1,
112
+ 40, 41, 6, 43, 44, 45, 46, 20, nil, nil,
113
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
114
+ nil, nil, nil, nil, nil, nil, nil, nil, 54, 55,
115
+ 56, 57 ]
116
+
117
+ racc_goto_check = [
118
+ 5, 5, 2, 5, 5, 2, 5, 6, 6, 1,
119
+ 6, 6, 3, 5, 5, 7, 6, 3, nil, nil,
120
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
121
+ nil, nil, nil, nil, nil, nil, nil, nil, 5, 5,
122
+ 6, 6 ]
123
+
124
+ racc_goto_pointer = [
125
+ nil, 9, 2, 10, nil, -11, -11, -12, nil ]
126
+
127
+ racc_goto_default = [
128
+ nil, nil, nil, nil, 10, 38, nil, nil, 26 ]
129
+
130
+ racc_reduce_table = [
131
+ 0, 0, :racc_error,
132
+ 2, 20, :_reduce_1,
133
+ 3, 20, :_reduce_2,
134
+ 2, 21, :_reduce_3,
135
+ 0, 22, :_reduce_4,
136
+ 2, 22, :_reduce_5,
137
+ 4, 22, :_reduce_6,
138
+ 3, 22, :_reduce_7,
139
+ 3, 22, :_reduce_8,
140
+ 4, 22, :_reduce_9,
141
+ 4, 22, :_reduce_10,
142
+ 2, 22, :_reduce_11,
143
+ 3, 22, :_reduce_12,
144
+ 3, 22, :_reduce_13,
145
+ 3, 22, :_reduce_14,
146
+ 3, 22, :_reduce_15,
147
+ 2, 23, :_reduce_16,
148
+ 2, 23, :_reduce_17,
149
+ 3, 23, :_reduce_18,
150
+ 3, 23, :_reduce_19,
151
+ 3, 26, :_reduce_20,
152
+ 3, 26, :_reduce_21,
153
+ 1, 26, :_reduce_none,
154
+ 3, 25, :_reduce_23,
155
+ 3, 25, :_reduce_24,
156
+ 1, 25, :_reduce_none,
157
+ 2, 24, :_reduce_26,
158
+ 2, 24, :_reduce_27,
159
+ 1, 24, :_reduce_none,
160
+ 3, 27, :_reduce_29,
161
+ 1, 27, :_reduce_30 ]
162
+
163
+ racc_reduce_n = 31
164
+
165
+ racc_shift_n = 58
166
+
167
+ racc_token_table = {
168
+ false => 0,
169
+ :error => 1,
170
+ :NUMBER => 2,
171
+ :K => 3,
172
+ :R => 4,
173
+ :H => 5,
174
+ :G => 6,
175
+ :F => 7,
176
+ :PLUS => 8,
177
+ :MINUS => 9,
178
+ :ASTERISK => 10,
179
+ :SLASH => 11,
180
+ :PARENL => 12,
181
+ :PARENR => 13,
182
+ :BRACKETL => 14,
183
+ :BRACKETR => 15,
184
+ :AT => 16,
185
+ :SHARP => 17,
186
+ :DOLLAR => 18 }
187
+
188
+ racc_nt_base = 19
189
+
190
+ racc_use_result_var = true
191
+
192
+ Racc_arg = [
193
+ racc_action_table,
194
+ racc_action_check,
195
+ racc_action_default,
196
+ racc_action_pointer,
197
+ racc_goto_table,
198
+ racc_goto_check,
199
+ racc_goto_default,
200
+ racc_goto_pointer,
201
+ racc_nt_base,
202
+ racc_reduce_table,
203
+ racc_token_table,
204
+ racc_shift_n,
205
+ racc_reduce_n,
206
+ racc_use_result_var ]
207
+
208
+ Racc_token_to_s_table = [
209
+ "$end",
210
+ "error",
211
+ "NUMBER",
212
+ "K",
213
+ "R",
214
+ "H",
215
+ "G",
216
+ "F",
217
+ "PLUS",
218
+ "MINUS",
219
+ "ASTERISK",
220
+ "SLASH",
221
+ "PARENL",
222
+ "PARENR",
223
+ "BRACKETL",
224
+ "BRACKETR",
225
+ "AT",
226
+ "SHARP",
227
+ "DOLLAR",
228
+ "$start",
229
+ "expr",
230
+ "rate",
231
+ "option",
232
+ "modifier",
233
+ "unary",
234
+ "mul",
235
+ "add",
236
+ "term" ]
237
+
238
+ Racc_debug_parser = false
239
+
240
+ ##### State transition tables end #####
241
+
242
+ # reduce 0 omitted
243
+
244
+ def _reduce_1(val, _values, result)
245
+ rate, option = val
246
+ modifier = option[:modifier] || Arithmetic::Node::Number.new(0)
247
+ result = parsed(rate, modifier, option)
248
+
249
+ result
250
+ end
251
+
252
+ def _reduce_2(val, _values, result)
253
+ _, rate, option = val
254
+ option[:modifier_after_half] ||= Arithmetic::Node::Number.new(0)
255
+ modifier = option[:modifier] || Arithmetic::Node::Number.new(0)
256
+ result = parsed(rate, modifier, option)
257
+
258
+ result
259
+ end
260
+
261
+ def _reduce_3(val, _values, result)
262
+ result = val[1].to_i
263
+ result
264
+ end
265
+
266
+ def _reduce_4(val, _values, result)
267
+ result = {}
268
+
269
+ result
270
+ end
271
+
272
+ def _reduce_5(val, _values, result)
273
+ option, term = val
274
+ raise ParseError unless option[:modifier].nil?
275
+
276
+ option[:modifier] = term
277
+ result = option
278
+
279
+ result
280
+ end
281
+
282
+ def _reduce_6(val, _values, result)
283
+ option, _, term, _ = val
284
+ raise ParseError unless option[:critical].nil?
285
+
286
+ option[:critical] = term
287
+ result = option
288
+
289
+ result
290
+ end
291
+
292
+ def _reduce_7(val, _values, result)
293
+ option, _, term = val
294
+ raise ParseError unless option[:critical].nil?
295
+
296
+ option[:critical] = term
297
+ result = option
298
+
299
+ result
300
+ end
301
+
302
+ def _reduce_8(val, _values, result)
303
+ option, _, term = val
304
+ raise ParseError unless option[:first_to].nil? && option[:first_modify].nil?
305
+
306
+ option[:first_to] = term.to_i
307
+ result = option
308
+
309
+ result
310
+ end
311
+
312
+ def _reduce_9(val, _values, result)
313
+ option, _, _, term = val
314
+ raise ParseError unless option[:first_to].nil? && option[:first_modify].nil?
315
+
316
+ option[:first_modify] = term.to_i
317
+ result = option
318
+
319
+ result
320
+ end
321
+
322
+ def _reduce_10(val, _values, result)
323
+ option, _, _, term = val
324
+ raise ParseError unless option[:first_to].nil? && option[:first_modify].nil?
325
+
326
+ option[:first_modify] = -(term.to_i)
327
+ result = option
328
+
329
+ result
330
+ end
331
+
332
+ def _reduce_11(val, _values, result)
333
+ option, _ = val
334
+ raise ParseError unless option[:modifier_after_half].nil?
335
+
336
+ option[:modifier_after_half] = Arithmetic::Node::Number.new(0)
337
+ result = option
338
+
339
+ result
340
+ end
341
+
342
+ def _reduce_12(val, _values, result)
343
+ option, _, term = val
344
+ raise ParseError unless option[:modifier_after_half].nil?
345
+
346
+ option[:modifier_after_half] = term
347
+ result = option
348
+
349
+ result
350
+ end
351
+
352
+ def _reduce_13(val, _values, result)
353
+ option, _, term = val
354
+ raise ParseError unless [:v2_5, :v2_0].include?(@version) && option[:rateup].nil?
355
+
356
+ option[:rateup] = term
357
+ result = option
358
+
359
+ result
360
+ end
361
+
362
+ def _reduce_14(val, _values, result)
363
+ option, _, _ = val
364
+ raise ParseError unless [:v2_5, :v2_0].include?(@version) && option[:greatest_fortune].nil?
365
+
366
+ option[:greatest_fortune] = true
367
+ result = option
368
+
369
+ result
370
+ end
371
+
372
+ def _reduce_15(val, _values, result)
373
+ option, _, term = val
374
+ raise ParseError unless @version == :v2_5 && option[:kept_modify].nil?
375
+
376
+ option[:kept_modify] = term
377
+ result = option
378
+
379
+ result
380
+ end
381
+
382
+ def _reduce_16(val, _values, result)
383
+ result = val[1]
384
+ result
385
+ end
386
+
387
+ def _reduce_17(val, _values, result)
388
+ result = Arithmetic::Node::Negative.new(val[1])
389
+ result
390
+ end
391
+
392
+ def _reduce_18(val, _values, result)
393
+ result = Arithmetic::Node::BinaryOp.new(val[0], :+, val[2])
394
+ result
395
+ end
396
+
397
+ def _reduce_19(val, _values, result)
398
+ result = Arithmetic::Node::BinaryOp.new(val[0], :-, val[2])
399
+ result
400
+ end
401
+
402
+ def _reduce_20(val, _values, result)
403
+ result = Arithmetic::Node::BinaryOp.new(val[0], :+, val[2])
404
+ result
405
+ end
406
+
407
+ def _reduce_21(val, _values, result)
408
+ result = Arithmetic::Node::BinaryOp.new(val[0], :-, val[2])
409
+ result
410
+ end
411
+
412
+ # reduce 22 omitted
413
+
414
+ def _reduce_23(val, _values, result)
415
+ result = Arithmetic::Node::BinaryOp.new(val[0], :*, val[2])
416
+ result
417
+ end
418
+
419
+ def _reduce_24(val, _values, result)
420
+ result = Arithmetic::Node::DivideWithGameSystemDefault.new(val[0], val[2])
421
+
422
+ result
423
+ end
424
+
425
+ # reduce 25 omitted
426
+
427
+ def _reduce_26(val, _values, result)
428
+ result = val[1]
429
+ result
430
+ end
431
+
432
+ def _reduce_27(val, _values, result)
433
+ result = Arithmetic::Node::Negative.new(val[1])
434
+ result
435
+ end
436
+
437
+ # reduce 28 omitted
438
+
439
+ def _reduce_29(val, _values, result)
440
+ result = val[1]
441
+ result
442
+ end
443
+
444
+ def _reduce_30(val, _values, result)
445
+ result = Arithmetic::Node::Number.new(val[0])
446
+ result
447
+ end
448
+
449
+ def _reduce_none(val, _values, result)
450
+ val[0]
451
+ end
452
+
453
+ end # class RatingParser
454
+
455
+ end
456
+ end
457
+ end