bcdice 3.0.0 → 3.2.0

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