rubic 0.2.0 → 0.3.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.
@@ -19,6 +19,16 @@ module Rubic
19
19
  end
20
20
  end
21
21
 
22
+ def assign(name, value)
23
+ if @table.key? name
24
+ @table[name] = value
25
+ elsif @outer
26
+ @outer.assign(name, value)
27
+ else
28
+ raise Rubic::NameError, "undefined variable `#{name}'"
29
+ end
30
+ end
31
+
22
32
  def bind(params, args)
23
33
  if params.size != args.size
24
34
  raise Rubic::ArgumentError, "wrong number of arguments (#{args.size} for #{params.size})"
@@ -31,7 +31,7 @@ module Rubic
31
31
  def execute(list_or_atom, env)
32
32
  # Atom
33
33
  case list_or_atom
34
- when Float, Integer, String
34
+ when Numeric, String
35
35
  atom = list_or_atom
36
36
  when Symbol
37
37
  atom = env[list_or_atom]
@@ -107,6 +107,15 @@ module Rubic
107
107
  _, expr = list
108
108
  return quote(expr)
109
109
 
110
+ when :set!
111
+ _, name, expr = list
112
+ env.assign(name, execute(expr, env))
113
+ return
114
+
115
+ when :begin
116
+ _, *seq = list
117
+ return execute_sequence(seq, env)
118
+
110
119
  else
111
120
  # fallthrough
112
121
  end
@@ -0,0 +1,117 @@
1
+ require 'strscan'
2
+
3
+ module Rubic
4
+ class Lexer
5
+ EOT = [false, nil] # end of token
6
+ SYM_CHARS = Regexp.escape("+-*/<>=!?")
7
+ KEYWORD_TABLE = {
8
+ 'define' => :KW_DEFINE,
9
+ 'cond' => :KW_COND,
10
+ 'else' => :KW_ELSE,
11
+ 'if' => :KW_IF,
12
+ 'and' => :KW_AND,
13
+ 'or' => :KW_OR,
14
+ 'lambda' => :KW_LAMBDA,
15
+ 'let' => :KW_LET,
16
+ 'quote' => :KW_QUOTE,
17
+ 'set!' => :KW_SET_BANG,
18
+ 'begin' => :KW_BEGIN,
19
+ }
20
+
21
+ def initialize(str)
22
+ @s = StringScanner.new(str)
23
+ @state = :start
24
+ end
25
+
26
+ def next_token
27
+ case @state
28
+ when :start
29
+ @s.skip(/\s+/)
30
+ return EOT if @s.eos?
31
+
32
+ case
33
+ when @s.check(/[+-]?[.0-9]|[+-]i/)
34
+ @state = :num_char
35
+ next_token
36
+
37
+ when @s.check(/#/)
38
+ @state = :num_prefix
39
+ next_token
40
+
41
+ when @s.scan(/[()']/)
42
+ [@s[0], nil]
43
+
44
+ when @s.scan(/[A-Za-z_#{SYM_CHARS}][A-Za-z0-9_#{SYM_CHARS}]*/o)
45
+ if KEYWORD_TABLE.key? @s[0]
46
+ [KEYWORD_TABLE.fetch(@s[0]), nil]
47
+ else
48
+ [:IDENT, @s[0].to_sym]
49
+ end
50
+
51
+ when @s.scan(/"([^"]*)"/)
52
+ [:STRING, @s[1]]
53
+
54
+ else
55
+ raise Rubic::ParseError, "unknown character #{@s.getch}"
56
+
57
+ end
58
+
59
+ when :num_prefix
60
+ case
61
+ when @s.scan(/#[eibodx]/)
62
+ {
63
+ '#e' => [:NUM_PREFIX_E, true],
64
+ '#i' => [:NUM_PREFIX_I, false],
65
+ '#b' => [:NUM_PREFIX_B, nil],
66
+ '#o' => [:NUM_PREFIX_O, nil],
67
+ '#d' => [:NUM_PREFIX_D, nil],
68
+ '#x' => [:NUM_PREFIX_X, nil],
69
+ }.fetch(@s[0])
70
+ else
71
+ @state = :num_char
72
+ next_token
73
+ end
74
+
75
+ when :num_char
76
+ case
77
+ when @s.check(/[+-]?[.0-9a-f\/]*i/i) # complex
78
+ @state = :num_char_complex
79
+ next_token
80
+ when @s.scan(/\+/)
81
+ [:U_PLUS, '+']
82
+ when @s.scan(/-/)
83
+ [:U_MINUS, '-']
84
+ when @s.scan(/[@.0-9a-f\/]/i)
85
+ [@s[0].downcase, @s[0].downcase]
86
+ else
87
+ @state = :num_wrapup
88
+ next_token
89
+ end
90
+
91
+ when :num_char_complex
92
+ case
93
+ when @s.scan(/[-+@.0-9a-fi\/]/i)
94
+ [@s[0].downcase, @s[0].downcase]
95
+ else
96
+ @state = :num_wrapup
97
+ next_token
98
+ end
99
+
100
+ when :num_wrapup
101
+ case
102
+ when @s.eos? || @s.check(/[\s()";]/) # separator characters
103
+ @state = :start
104
+ [:NUM_END, nil]
105
+ else
106
+ @state = :start
107
+ next_token
108
+ end
109
+
110
+ else # NOT REACHED
111
+ raise "unknown state: #{@state}"
112
+
113
+ end
114
+ end
115
+
116
+ end
117
+ end
@@ -6,58 +6,25 @@
6
6
 
7
7
  require 'racc/parser.rb'
8
8
 
9
- require 'strscan'
9
+ require 'rubic/lexer'
10
+ require 'rubic/util'
10
11
 
11
12
  module Rubic
12
13
 
13
14
  class Parser < Racc::Parser
14
15
 
15
- module_eval(<<'...end parser.y/module_eval...', 'parser.y', 134)
16
- EOT = [false, nil] # end of token
17
- SYM_CHARS = Regexp.escape("+-*/<>=?")
16
+ module_eval(<<'...end parser.y/module_eval...', 'parser.y', 258)
17
+ include Rubic::Util
18
18
 
19
19
  def parse(str)
20
- @s = StringScanner.new(str)
20
+ @lexer = Rubic::Lexer.new(str)
21
21
  do_parse
22
22
  end
23
23
 
24
+ private
25
+
24
26
  def next_token
25
- @s.skip(/\s+/)
26
- return EOT if @s.eos?
27
-
28
- case
29
- when @s.scan(/[0-9]+(\.[0-9]+)?/)
30
- [:NUMBER, @s[0].include?('.') ? @s[0].to_f : @s[0].to_i]
31
- when @s.scan(/[()']/)
32
- [@s[0], nil]
33
- when @s.scan(/[A-Za-z_#{SYM_CHARS}][A-Za-z0-9_#{SYM_CHARS}]*/o)
34
- case @s[0] # keyword check
35
- when 'define'
36
- [:KW_DEFINE, nil]
37
- when 'cond'
38
- [:KW_COND, nil]
39
- when 'else'
40
- [:KW_ELSE, nil]
41
- when 'if'
42
- [:KW_IF, nil]
43
- when 'and'
44
- [:KW_AND, nil]
45
- when 'or'
46
- [:KW_OR, nil]
47
- when 'lambda'
48
- [:KW_LAMBDA, nil]
49
- when 'let'
50
- [:KW_LET, nil]
51
- when 'quote'
52
- [:KW_QUOTE, nil]
53
- else
54
- [:IDENT, @s[0].to_sym]
55
- end
56
- when @s.scan(/"([^"]*)"/)
57
- [:STRING, @s[1]]
58
- else
59
- raise Rubic::ParseError, "unknown character #{@s.getch}"
60
- end
27
+ @lexer.next_token
61
28
  end
62
29
 
63
30
  def on_error(t, val, vstack)
@@ -68,141 +35,506 @@ end
68
35
  ##### State transition tables begin ###
69
36
 
70
37
  racc_action_table = [
71
- 3, 64, 67, 60, 4, 5, 6, 3, 37, 75,
72
- 47, 4, 5, 6, 15, 34, 63, 55, 62, 33,
73
- 65, 15, 3, 17, 20, 18, 4, 5, 6, 21,
74
- 22, 66, 23, 24, 25, 26, 15, 3, 46, 44,
75
- 3, 4, 5, 6, 4, 5, 6, 61, 40, 60,
76
- 70, 15, 3, 39, 15, 3, 4, 5, 6, 4,
77
- 5, 6, 37, 54, 29, 16, 15, 3, 76, 15,
78
- 3, 4, 5, 6, 4, 5, 6, nil, nil, nil,
79
- nil, 15, nil, 3, 15, 73, nil, 4, 5, 6,
80
- 3, nil, 72, nil, 4, 5, 6, 15, nil, nil,
81
- nil, 3, nil, nil, 15, 4, 5, 6, 3, nil,
82
- nil, nil, 4, 5, 6, 15, nil, nil, nil, 3,
83
- nil, nil, 15, 4, 5, 6, 3, nil, nil, nil,
84
- 4, 5, 6, 15, nil, nil, nil, 3, nil, 42,
85
- 15, 4, 5, 6, 3, nil, 43, nil, 4, 5,
86
- 6, 15, nil, nil, nil, 3, nil, nil, 15, 4,
87
- 5, 6, 3, nil, nil, nil, 4, 5, 6, 15,
88
- nil, nil, nil, 3, nil, nil, 15, 4, 5, 6,
89
- 3, nil, nil, nil, 4, 5, 6, 15, nil, nil,
90
- nil, 3, nil, nil, 15, 4, 5, 6, 3, nil,
91
- nil, nil, 4, 5, 6, 15, nil, nil, nil, 3,
92
- nil, nil, 15, 4, 5, 6, nil, nil, 50, nil,
93
- nil, nil, nil, 15 ]
38
+ -19, 218, 3, 66, 87, 67, 4, 6, 86, 235,
39
+ 110, 111, -20, 112, 3, 17, -20, 234, 4, 6,
40
+ 221, 198, 105, 106, 105, 106, 23, 17, 57, 58,
41
+ 3, 31, 32, 26, 4, 6, 196, 28, 23, 105,
42
+ 106, 57, 58, 17, 30, 26, 232, 31, 32, 28,
43
+ 90, 231, 184, 3, 23, 275, 30, 4, 6, 31,
44
+ 32, 26, 57, 58, 108, 28, 17, 105, 106, 3,
45
+ 57, 58, 30, 4, 6, 31, 32, 23, 262, 225,
46
+ 240, 3, 17, 217, 26, 4, 6, 101, 28, 244,
47
+ 105, 106, 245, 23, 17, 30, 246, 3, 31, 32,
48
+ 26, 4, 6, 211, 28, 23, 129, 130, 248, 131,
49
+ 17, 30, 26, 249, 31, 32, 28, 241, 209, 240,
50
+ 3, 23, 273, 30, 4, 6, 31, 32, 26, 243,
51
+ 251, 242, 28, 17, 97, 98, 3, 99, 272, 30,
52
+ 4, 6, 31, 32, 23, 57, 58, 252, 3, 17,
53
+ 179, 26, 4, 6, 208, 28, 152, 153, 202, 154,
54
+ 23, 17, 30, 200, 3, 31, 32, 26, 4, 6,
55
+ 199, 28, 23, 31, 32, 57, 58, 17, 30, 26,
56
+ 259, 31, 32, 28, 31, 32, 260, 3, 23, 180,
57
+ 30, 4, 6, 31, 32, 26, 105, 106, 191, 28,
58
+ 17, 31, 32, 3, 105, 106, 30, 4, 6, 31,
59
+ 32, 23, 183, 60, 263, 78, 17, 79, 26, 264,
60
+ 61, 54, 28, 55, 62, 265, 181, 23, 95, 30,
61
+ 268, 63, 31, 32, 26, 93, 92, 90, 28, 82,
62
+ 57, 58, 51, 50, 49, 30, 57, 58, 31, 32,
63
+ 3, 34, 37, 35, 4, 6, 38, 39, 48, 40,
64
+ 41, 42, 43, 17, 44, 45, 33, 3, 72, 276,
65
+ 73, 4, 6, 3, 23, 187, nil, 4, 6, nil,
66
+ 17, 26, nil, nil, nil, 28, 17, nil, nil, nil,
67
+ nil, 23, 30, 57, 58, 31, 32, 23, 26, nil,
68
+ nil, 3, 28, nil, 26, 4, 6, nil, 28, 30,
69
+ nil, nil, 31, 32, 17, 30, nil, 3, 31, 32,
70
+ nil, 4, 6, nil, nil, 23, nil, nil, nil, 3,
71
+ 17, nil, 26, 4, 6, nil, 28, nil, nil, nil,
72
+ nil, 23, 17, 30, nil, 3, 31, 32, 26, 4,
73
+ 6, nil, 28, 23, nil, nil, nil, nil, 17, 30,
74
+ 26, nil, 31, 32, 28, nil, nil, nil, 3, 23,
75
+ nil, 30, 4, 6, 31, 32, 26, nil, nil, nil,
76
+ 28, 17, nil, nil, 3, nil, -19, 30, 4, 6,
77
+ 31, 32, 23, nil, nil, nil, 3, 17, 193, 26,
78
+ 4, 6, nil, 28, nil, nil, nil, nil, 23, 17,
79
+ 30, nil, 3, 31, 32, 26, 4, 6, nil, 28,
80
+ 23, nil, nil, nil, nil, 17, 30, 26, nil, 31,
81
+ 32, 28, nil, nil, nil, 3, 23, nil, 30, 4,
82
+ 6, 31, 32, 26, nil, nil, nil, 28, 17, nil,
83
+ nil, 3, nil, nil, 30, 4, 6, 31, 32, 23,
84
+ nil, nil, nil, 3, 17, nil, 26, 4, 6, nil,
85
+ 28, nil, nil, nil, nil, 23, 17, 30, nil, nil,
86
+ 31, 32, 26, nil, nil, nil, 28, 23, nil, nil,
87
+ nil, nil, nil, 30, 26, nil, 31, 32, 28, nil,
88
+ nil, nil, nil, nil, nil, 30, nil, 228, 31, 32,
89
+ 160, 161, nil, 162, 163, 164, 165, 166, 167, nil,
90
+ nil, 168, 169, nil, 170, 171, 172, 173, 174, 175,
91
+ 177, nil, nil, 160, 161, nil, 162, 163, 164, 165,
92
+ 166, 167, nil, nil, 168, 169, nil, 170, 171, 172,
93
+ 173, 174, 175, 230, nil, nil, 160, 161, nil, 162,
94
+ 163, 164, 165, 166, 167, nil, nil, 168, 169, nil,
95
+ 170, 171, 172, 173, 174, 175, 156, nil, nil, 160,
96
+ 161, nil, 162, 163, 164, 165, 166, 167, nil, nil,
97
+ 168, 169, nil, 170, 171, 172, 173, 174, 175, 160,
98
+ 161, nil, 162, 163, 164, 165, 166, 167, nil, nil,
99
+ 168, 169, nil, 170, 171, 172, 173, 174, 175, 160,
100
+ 161, nil, 162, 163, 164, 165, 166, 167, nil, nil,
101
+ 168, 169, nil, 170, 171, 172, 173, 174, 175, 160,
102
+ 161, nil, 162, 163, 164, 165, 166, 167, nil, nil,
103
+ 168, 169, nil, 170, 171, 172, 173, 174, 175, 139,
104
+ 140, nil, 141, 142, 143, 144, 145, 146, nil, nil,
105
+ 147, 148, nil, nil, nil, 139, 140, 221, 141, 142,
106
+ 143, 144, 145, 146, nil, nil, 147, 148, nil, nil,
107
+ nil, 139, 140, 221, 141, 142, 143, 144, 145, 146,
108
+ nil, nil, 147, 148, 133, nil, nil, 139, 140, 221,
109
+ 141, 142, 143, 144, 145, 146, nil, 136, 147, 148,
110
+ 216, nil, nil, 139, 140, nil, 141, 142, 143, 144,
111
+ 145, 146, nil, 136, 147, 148, 150, nil, nil, 139,
112
+ 140, nil, 141, 142, 143, 144, 145, 146, nil, 136,
113
+ 147, 148, 214, nil, nil, 139, 140, nil, 141, 142,
114
+ 143, 144, 145, 146, nil, 136, 147, 148, 139, 140,
115
+ nil, 141, 142, 143, 144, 145, 146, nil, nil, 147,
116
+ 148, 139, 140, nil, 141, 142, 143, 144, 145, 146,
117
+ nil, nil, 147, 148, 139, 140, nil, 141, 142, 143,
118
+ 144, 145, 146, nil, 136, 147, 148, 139, 140, nil,
119
+ 141, 142, 143, 144, 145, 146, nil, nil, 147, 148,
120
+ 139, 140, nil, 141, 142, 143, 144, 145, 146, nil,
121
+ 223, 147, 148, 139, 140, nil, 141, 142, 143, 144,
122
+ 145, 146, nil, nil, 147, 148, 139, 140, nil, 141,
123
+ 142, 143, 144, 145, 146, nil, 114, 147, 148, 118,
124
+ 119, nil, 120, 121, 122, 123, 124, 125, 207, nil,
125
+ nil, 118, 119, nil, 120, 121, 122, 123, 124, 125,
126
+ 205, nil, nil, 118, 119, nil, 120, 121, 122, 123,
127
+ 124, 125, 127, nil, nil, 118, 119, nil, 120, 121,
128
+ 122, 123, 124, 125, 118, 119, nil, 120, 121, 122,
129
+ 123, 124, 125, 118, 119, nil, 120, 121, 122, 123,
130
+ 124, 125, 118, 119, nil, 120, 121, 122, 123, 124,
131
+ 125 ]
94
132
 
95
133
  racc_action_check = [
96
- 0, 56, 59, 56, 0, 0, 0, 71, 35, 71,
97
- 35, 71, 71, 71, 0, 21, 53, 45, 53, 21,
98
- 57, 71, 3, 3, 3, 3, 3, 3, 3, 3,
99
- 3, 58, 3, 3, 3, 3, 3, 14, 34, 32,
100
- 15, 14, 14, 14, 15, 15, 15, 52, 25, 52,
101
- 63, 14, 70, 24, 15, 17, 70, 70, 70, 17,
102
- 17, 17, 22, 41, 16, 1, 70, 18, 74, 17,
103
- 19, 18, 18, 18, 19, 19, 19, nil, nil, nil,
104
- nil, 18, nil, 69, 19, 69, nil, 69, 69, 69,
105
- 68, nil, 68, nil, 68, 68, 68, 69, nil, nil,
106
- nil, 23, nil, nil, 68, 23, 23, 23, 64, nil,
107
- nil, nil, 64, 64, 64, 23, nil, nil, nil, 62,
108
- nil, nil, 64, 62, 62, 62, 26, nil, nil, nil,
109
- 26, 26, 26, 62, nil, nil, nil, 30, nil, 30,
110
- 26, 30, 30, 30, 31, nil, 31, nil, 31, 31,
111
- 31, 30, nil, nil, nil, 61, nil, nil, 31, 61,
112
- 61, 61, 33, nil, nil, nil, 33, 33, 33, 61,
113
- nil, nil, nil, 51, nil, nil, 33, 51, 51, 51,
114
- 50, nil, nil, nil, 50, 50, 50, 51, nil, nil,
115
- nil, 49, nil, nil, 50, 49, 49, 49, 38, nil,
116
- nil, nil, 38, 38, 38, 49, nil, nil, nil, 37,
117
- nil, nil, 38, 37, 37, 37, nil, nil, 37, nil,
118
- nil, nil, nil, 37 ]
134
+ 0, 134, 0, 25, 38, 25, 0, 0, 38, 182,
135
+ 65, 65, 16, 65, 16, 0, 16, 176, 16, 16,
136
+ 134, 99, 200, 200, 99, 99, 0, 16, 25, 25,
137
+ 86, 28, 28, 0, 86, 86, 98, 0, 16, 98,
138
+ 98, 97, 97, 86, 0, 16, 157, 0, 0, 16,
139
+ 88, 155, 88, 271, 86, 271, 16, 271, 271, 16,
140
+ 16, 86, 220, 220, 55, 86, 271, 55, 55, 17,
141
+ 110, 110, 86, 17, 17, 86, 86, 271, 236, 149,
142
+ 236, 187, 17, 132, 271, 187, 187, 54, 271, 192,
143
+ 54, 54, 195, 17, 187, 271, 197, 268, 271, 271,
144
+ 17, 268, 268, 126, 17, 187, 71, 71, 204, 71,
145
+ 268, 17, 187, 206, 17, 17, 187, 189, 115, 189,
146
+ 267, 268, 267, 187, 267, 267, 187, 187, 268, 190,
147
+ 213, 190, 268, 267, 53, 53, 266, 53, 266, 268,
148
+ 266, 266, 268, 268, 267, 152, 152, 215, 83, 266,
149
+ 83, 267, 83, 83, 113, 267, 77, 77, 107, 77,
150
+ 266, 83, 267, 102, 188, 267, 267, 266, 188, 188,
151
+ 100, 266, 83, 26, 26, 129, 129, 188, 266, 83,
152
+ 227, 266, 266, 83, 23, 23, 229, 84, 188, 84,
153
+ 83, 84, 84, 83, 83, 188, 56, 56, 94, 188,
154
+ 84, 30, 30, 241, 103, 103, 188, 241, 241, 188,
155
+ 188, 84, 87, 24, 237, 29, 241, 29, 84, 238,
156
+ 24, 22, 84, 22, 24, 239, 85, 241, 44, 84,
157
+ 243, 24, 84, 84, 241, 42, 41, 39, 241, 33,
158
+ 29, 29, 21, 20, 19, 241, 22, 22, 241, 241,
159
+ 3, 3, 3, 3, 3, 3, 3, 3, 18, 3,
160
+ 3, 3, 3, 3, 3, 3, 1, 90, 27, 274,
161
+ 27, 90, 90, 45, 3, 90, nil, 45, 45, nil,
162
+ 90, 3, nil, nil, nil, 3, 45, nil, nil, nil,
163
+ nil, 90, 3, 27, 27, 3, 3, 45, 90, nil,
164
+ nil, 242, 90, nil, 45, 242, 242, nil, 45, 90,
165
+ nil, nil, 90, 90, 242, 45, nil, 186, 45, 45,
166
+ nil, 186, 186, nil, nil, 242, nil, nil, nil, 262,
167
+ 186, nil, 242, 262, 262, nil, 242, nil, nil, nil,
168
+ nil, 186, 262, 242, nil, 91, 242, 242, 186, 91,
169
+ 91, nil, 186, 262, nil, nil, nil, nil, 91, 186,
170
+ 262, nil, 186, 186, 262, nil, nil, nil, 35, 91,
171
+ nil, 262, 35, 35, 262, 262, 91, nil, nil, nil,
172
+ 91, 35, nil, nil, 36, nil, 36, 91, 36, 36,
173
+ 91, 91, 35, nil, nil, nil, 96, 36, 96, 35,
174
+ 96, 96, nil, 35, nil, nil, nil, nil, 36, 96,
175
+ 35, nil, 95, 35, 35, 36, 95, 95, nil, 36,
176
+ 96, nil, nil, nil, nil, 95, 36, 96, nil, 36,
177
+ 36, 96, nil, nil, nil, 40, 95, nil, 96, 40,
178
+ 40, 96, 96, 95, nil, nil, nil, 95, 40, nil,
179
+ nil, 43, nil, nil, 95, 43, 43, 95, 95, 40,
180
+ nil, nil, nil, 34, 43, nil, 40, 34, 34, nil,
181
+ 40, nil, nil, nil, nil, 43, 34, 40, nil, nil,
182
+ 40, 40, 43, nil, nil, nil, 43, 34, nil, nil,
183
+ nil, nil, nil, 43, 34, nil, 43, 43, 34, nil,
184
+ nil, nil, nil, nil, nil, 34, nil, 153, 34, 34,
185
+ 153, 153, nil, 153, 153, 153, 153, 153, 153, nil,
186
+ nil, 153, 153, nil, 153, 153, 153, 153, 153, 153,
187
+ 79, nil, nil, 79, 79, nil, 79, 79, 79, 79,
188
+ 79, 79, nil, nil, 79, 79, nil, 79, 79, 79,
189
+ 79, 79, 79, 154, nil, nil, 154, 154, nil, 154,
190
+ 154, 154, 154, 154, 154, nil, nil, 154, 154, nil,
191
+ 154, 154, 154, 154, 154, 154, 78, nil, nil, 78,
192
+ 78, nil, 78, 78, 78, 78, 78, 78, nil, nil,
193
+ 78, 78, nil, 78, 78, 78, 78, 78, 78, 80,
194
+ 80, nil, 80, 80, 80, 80, 80, 80, nil, nil,
195
+ 80, 80, nil, 80, 80, 80, 80, 80, 80, 232,
196
+ 232, nil, 232, 232, 232, 232, 232, 232, nil, nil,
197
+ 232, 232, nil, 232, 232, 232, 232, 232, 232, 158,
198
+ 158, nil, 158, 158, 158, 158, 158, 158, nil, nil,
199
+ 158, 158, nil, 158, 158, 158, 158, 158, 158, 223,
200
+ 223, nil, 223, 223, 223, 223, 223, 223, nil, nil,
201
+ 223, 223, nil, nil, nil, 257, 257, 223, 257, 257,
202
+ 257, 257, 257, 257, nil, nil, 257, 257, nil, nil,
203
+ nil, 222, 222, 257, 222, 222, 222, 222, 222, 222,
204
+ nil, nil, 222, 222, 72, nil, nil, 72, 72, 222,
205
+ 72, 72, 72, 72, 72, 72, nil, 72, 72, 72,
206
+ 131, nil, nil, 131, 131, nil, 131, 131, 131, 131,
207
+ 131, 131, nil, 131, 131, 131, 73, nil, nil, 73,
208
+ 73, nil, 73, 73, 73, 73, 73, 73, nil, 73,
209
+ 73, 73, 130, nil, nil, 130, 130, nil, 130, 130,
210
+ 130, 130, 130, 130, nil, 130, 130, 130, 136, 136,
211
+ nil, 136, 136, 136, 136, 136, 136, nil, nil, 136,
212
+ 136, 269, 269, nil, 269, 269, 269, 269, 269, 269,
213
+ nil, nil, 269, 269, 74, 74, nil, 74, 74, 74,
214
+ 74, 74, 74, nil, 74, 74, 74, 218, 218, nil,
215
+ 218, 218, 218, 218, 218, 218, nil, nil, 218, 218,
216
+ 137, 137, nil, 137, 137, 137, 137, 137, 137, nil,
217
+ 137, 137, 137, 254, 254, nil, 254, 254, 254, 254,
218
+ 254, 254, nil, nil, 254, 254, 255, 255, nil, 255,
219
+ 255, 255, 255, 255, 255, nil, 66, 255, 255, 66,
220
+ 66, nil, 66, 66, 66, 66, 66, 66, 112, nil,
221
+ nil, 112, 112, nil, 112, 112, 112, 112, 112, 112,
222
+ 111, nil, nil, 111, 111, nil, 111, 111, 111, 111,
223
+ 111, 111, 67, nil, nil, 67, 67, nil, 67, 67,
224
+ 67, 67, 67, 67, 68, 68, nil, 68, 68, 68,
225
+ 68, 68, 68, 116, 116, nil, 116, 116, 116, 116,
226
+ 116, 116, 209, 209, nil, 209, 209, 209, 209, 209,
227
+ 209 ]
119
228
 
120
229
  racc_action_pointer = [
121
- -2, 65, nil, 20, nil, nil, nil, nil, nil, nil,
122
- nil, nil, nil, nil, 35, 38, 64, 53, 65, 68,
123
- nil, 13, 60, 99, 51, 46, 124, nil, nil, nil,
124
- 135, 142, 35, 160, 32, 6, nil, 207, 196, nil,
125
- nil, 59, nil, nil, nil, 13, nil, nil, nil, 189,
126
- 178, 171, 43, 14, nil, nil, -3, 16, 27, -2,
127
- nil, 153, 117, 44, 106, nil, nil, nil, 88, 81,
128
- 50, 5, nil, nil, 64, nil, nil ]
230
+ 0, 266, nil, 248, nil, nil, nil, nil, nil, nil,
231
+ nil, nil, nil, nil, nil, nil, 12, 67, 240, 226,
232
+ 225, 224, 201, 137, 187, -17, 126, 248, -16, 195,
233
+ 154, nil, nil, 239, 461, 366, 382, nil, 2, 235,
234
+ 433, 234, 233, 449, 222, 271, nil, nil, nil, nil,
235
+ nil, nil, nil, 115, 66, 43, 172, nil, nil, nil,
236
+ nil, nil, nil, nil, nil, -9, 835, 871, 880, nil,
237
+ nil, 87, 683, 715, 770, nil, nil, 137, 555, 509,
238
+ 575, nil, nil, 146, 185, 222, 28, 206, 48, nil,
239
+ 265, 343, nil, nil, 194, 410, 394, -4, 15, 0,
240
+ 149, nil, 140, 180, nil, nil, nil, 137, nil, nil,
241
+ 25, 859, 847, 133, nil, 95, 889, nil, nil, nil,
242
+ nil, nil, nil, nil, nil, nil, 82, nil, nil, 130,
243
+ 731, 699, 62, nil, -22, nil, 744, 796, nil, nil,
244
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 58,
245
+ nil, nil, 100, 486, 532, 30, nil, 23, 615, nil,
246
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
247
+ nil, nil, nil, nil, nil, nil, -4, nil, nil, nil,
248
+ nil, nil, 5, nil, nil, nil, 315, 79, 162, 113,
249
+ 127, nil, 85, nil, nil, 71, nil, 75, nil, nil,
250
+ -2, nil, nil, nil, 87, nil, 92, nil, nil, 898,
251
+ nil, nil, nil, 109, nil, 126, nil, nil, 783, nil,
252
+ 17, nil, 667, 635, nil, nil, nil, 159, nil, 165,
253
+ nil, nil, 595, nil, nil, nil, 74, 210, 215, 221,
254
+ nil, 201, 299, 224, nil, nil, nil, nil, nil, nil,
255
+ nil, nil, nil, nil, 809, 822, nil, 651, nil, nil,
256
+ nil, nil, 327, nil, nil, nil, 134, 118, 95, 757,
257
+ nil, 51, nil, nil, 265, nil, nil ]
129
258
 
130
259
  racc_action_default = [
131
- -17, -35, -1, -35, -6, -7, -8, -9, -10, -11,
132
- -12, -13, -14, -15, -18, -35, -35, -35, -35, -17,
133
- -5, -35, -35, -35, -35, -35, -35, -16, -34, 77,
134
- -35, -35, -35, -35, -35, -35, -24, -35, -35, -21,
135
- -31, -35, -2, -3, -4, -35, -21, -23, -25, -35,
136
- -35, -35, -35, -35, -33, -19, -35, -35, -35, -35,
137
- -22, -35, -35, -35, -35, -26, -27, -28, -35, -35,
138
- -35, -35, -29, -30, -35, -20, -32 ]
260
+ -167, -170, -1, -167, -6, -7, -8, -9, -10, -11,
261
+ -12, -13, -14, -15, -16, -17, -167, -167, -170, -170,
262
+ -170, -170, -164, -167, -125, -164, -167, -164, -167, -164,
263
+ -167, -168, -169, -170, -167, -167, -167, -5, -170, -170,
264
+ -167, -170, -170, -167, -170, -167, -18, -36, -39, -40,
265
+ -41, -42, -43, -44, -170, -170, -170, -165, -166, -62,
266
+ -63, -90, -124, -160, -64, -65, -170, -170, -170, -89,
267
+ -91, -92, -170, -170, -170, -123, -126, -127, -170, -170,
268
+ -170, -159, 277, -167, -167, -170, -167, -170, -170, -26,
269
+ -167, -167, -23, -33, -170, -167, -167, -164, -170, -170,
270
+ -170, -52, -55, -57, -58, -60, -61, -170, -53, -54,
271
+ -164, -170, -170, -170, -73, -76, -78, -79, -81, -82,
272
+ -83, -84, -85, -86, -87, -88, -170, -74, -75, -164,
273
+ -170, -170, -170, -100, -103, -105, -170, -110, -111, -113,
274
+ -114, -115, -116, -117, -118, -119, -120, -121, -122, -170,
275
+ -101, -102, -164, -170, -170, -170, -135, -138, -140, -141,
276
+ -143, -144, -145, -146, -147, -148, -149, -150, -151, -152,
277
+ -153, -154, -155, -156, -157, -158, -170, -136, -137, -2,
278
+ -3, -4, -170, -23, -25, -27, -167, -167, -167, -170,
279
+ -170, -35, -170, -38, -45, -170, -48, -170, -49, -50,
280
+ -170, -59, -51, -66, -170, -69, -170, -70, -71, -170,
281
+ -80, -72, -93, -170, -96, -170, -97, -98, -170, -106,
282
+ -164, -163, -161, -161, -112, -99, -128, -170, -131, -170,
283
+ -132, -133, -170, -142, -134, -21, -170, -170, -170, -170,
284
+ -24, -167, -167, -170, -37, -46, -47, -56, -67, -68,
285
+ -77, -94, -95, -104, -110, -170, -107, -161, -109, -129,
286
+ -130, -139, -167, -28, -29, -30, -167, -167, -167, -162,
287
+ -108, -167, -31, -32, -170, -22, -34 ]
139
288
 
140
289
  racc_goto_table = [
141
- 19, 36, 2, 52, 1, 30, 31, 35, 53, nil,
142
- 56, 27, 28, nil, 48, nil, nil, nil, nil, nil,
143
- 38, 32, nil, 41, nil, nil, nil, 27, 27, nil,
144
- 45, nil, nil, nil, 49, 51, nil, nil, nil, nil,
145
- nil, nil, nil, nil, nil, nil, 57, 58, 59, 68,
146
- 69, nil, 71, nil, nil, nil, nil, nil, nil, nil,
147
- nil, nil, nil, nil, nil, 27, 27, 74, 27 ]
290
+ 36, 83, 84, 77, 68, 224, 74, 219, 80, 71,
291
+ 189, 53, 96, 46, 47, 222, 89, 2, 65, 132,
292
+ 149, 151, 1, 155, 176, 178, 113, 126, 128, 100,
293
+ 107, 109, 210, 70, 250, 64, 59, 91, 253, 69,
294
+ 94, 75, 201, 81, 247, 52, 76, 190, 88, 261,
295
+ 233, nil, nil, 85, nil, nil, nil, nil, nil, nil,
296
+ nil, nil, nil, nil, nil, 185, nil, nil, nil, nil,
297
+ nil, 204, 206, 195, 197, nil, nil, 213, 215, nil,
298
+ 46, 46, nil, 182, nil, nil, 194, 186, 188, 68,
299
+ 224, nil, 192, 46, nil, 256, 258, 254, 227, 229,
300
+ nil, 236, 257, 203, nil, nil, nil, nil, 74, nil,
301
+ nil, 212, nil, nil, nil, nil, nil, nil, nil, nil,
302
+ nil, nil, 224, nil, nil, 224, 226, nil, nil, nil,
303
+ 270, 80, nil, nil, 269, nil, nil, 224, nil, nil,
304
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
305
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
306
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
307
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
308
+ nil, nil, nil, 237, 238, 239, nil, nil, nil, nil,
309
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 255,
310
+ nil, nil, nil, nil, nil, nil, nil, nil, 266, 267,
311
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
312
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 271,
313
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
314
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
315
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
316
+ nil, nil, nil, 46, 46, 274, nil, nil, 46 ]
148
317
 
149
318
  racc_goto_check = [
150
- 3, 13, 2, 11, 1, 4, 4, 12, 14, nil,
151
- 11, 3, 3, nil, 13, nil, nil, nil, nil, nil,
152
- 3, 2, nil, 3, nil, nil, nil, 3, 3, nil,
153
- 3, nil, nil, nil, 3, 3, nil, nil, nil, nil,
154
- nil, nil, nil, nil, nil, nil, 3, 3, 3, 4,
155
- 4, nil, 4, nil, nil, nil, nil, nil, nil, nil,
156
- nil, nil, nil, nil, nil, 3, 3, 3, 3 ]
319
+ 3, 4, 4, 49, 26, 46, 26, 44, 26, 40,
320
+ 14, 24, 4, 3, 3, 45, 16, 2, 33, 41,
321
+ 41, 41, 1, 50, 50, 50, 34, 34, 34, 25,
322
+ 25, 25, 37, 39, 35, 32, 30, 3, 42, 30,
323
+ 3, 30, 29, 30, 27, 23, 48, 17, 15, 51,
324
+ 53, nil, nil, 2, nil, nil, nil, nil, nil, nil,
325
+ nil, nil, nil, nil, nil, 16, nil, nil, nil, nil,
326
+ nil, 34, 34, 25, 25, nil, nil, 41, 41, nil,
327
+ 3, 3, nil, 3, nil, nil, 24, 3, 3, 26,
328
+ 46, nil, 3, 3, nil, 44, 44, 45, 50, 50,
329
+ nil, 14, 45, 33, nil, nil, nil, nil, 26, nil,
330
+ nil, 40, nil, nil, nil, nil, nil, nil, nil, nil,
331
+ nil, nil, 46, nil, nil, 46, 49, nil, nil, nil,
332
+ 44, 26, nil, nil, 45, nil, nil, 46, nil, nil,
333
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
334
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
335
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
336
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
337
+ nil, nil, nil, 3, 3, 3, nil, nil, nil, nil,
338
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 26,
339
+ nil, nil, nil, nil, nil, nil, nil, nil, 4, 4,
340
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
341
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, 4,
342
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
343
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
344
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
345
+ nil, nil, nil, 3, 3, 3, nil, nil, 3 ]
157
346
 
158
347
  racc_goto_pointer = [
159
- nil, 4, 2, -3, -12, nil, nil, nil, nil, nil,
160
- nil, -36, -15, -21, -32 ]
348
+ nil, 22, 17, -3, -33, nil, nil, nil, nil, nil,
349
+ nil, nil, nil, nil, -82, 9, -23, -46, nil, nil,
350
+ nil, nil, nil, 23, -11, -25, -21, -156, nil, -61,
351
+ 13, nil, 10, -7, -40, -175, nil, -84, nil, 6,
352
+ -18, -53, -180, nil, -127, -121, -132, nil, 17, -26,
353
+ -55, -183, nil, -108, nil ]
161
354
 
162
355
  racc_goto_default = [
163
- nil, nil, nil, 13, 14, 7, 8, 9, 10, 11,
164
- 12, nil, nil, nil, nil ]
356
+ nil, nil, nil, 15, 16, 5, 7, 8, 9, 10,
357
+ 11, 12, 13, 14, nil, nil, nil, nil, 18, 19,
358
+ 20, 21, 22, nil, nil, nil, 56, 102, 103, 104,
359
+ 24, 25, nil, nil, nil, 115, 116, 117, 27, nil,
360
+ nil, nil, 134, 135, nil, 137, 138, 29, nil, nil,
361
+ nil, 157, 158, 159, 220 ]
165
362
 
166
363
  racc_reduce_table = [
167
364
  0, 0, :racc_error,
168
- 1, 18, :_reduce_none,
169
- 4, 20, :_reduce_2,
170
- 4, 20, :_reduce_3,
171
- 4, 20, :_reduce_4,
172
- 2, 20, :_reduce_5,
173
- 1, 20, :_reduce_none,
174
- 1, 20, :_reduce_none,
175
- 1, 20, :_reduce_none,
176
- 1, 20, :_reduce_none,
177
- 1, 20, :_reduce_none,
178
- 1, 20, :_reduce_none,
179
- 1, 20, :_reduce_none,
180
- 1, 20, :_reduce_none,
181
- 1, 20, :_reduce_none,
182
- 1, 21, :_reduce_15,
183
- 2, 21, :_reduce_16,
184
- 0, 19, :_reduce_17,
185
- 1, 19, :_reduce_none,
186
- 5, 22, :_reduce_19,
187
- 8, 22, :_reduce_20,
188
- 0, 28, :_reduce_21,
189
- 2, 28, :_reduce_22,
190
- 4, 23, :_reduce_23,
191
- 1, 29, :_reduce_24,
192
- 2, 29, :_reduce_25,
193
- 4, 30, :_reduce_26,
194
- 4, 30, :_reduce_27,
195
- 6, 24, :_reduce_28,
196
- 7, 25, :_reduce_29,
197
- 7, 26, :_reduce_30,
198
- 0, 31, :_reduce_31,
199
- 5, 31, :_reduce_32,
200
- 4, 27, :_reduce_33,
201
- 2, 27, :_reduce_34 ]
202
-
203
- racc_reduce_n = 35
204
-
205
- racc_shift_n = 77
365
+ 1, 50, :_reduce_none,
366
+ 4, 52, :_reduce_2,
367
+ 4, 52, :_reduce_3,
368
+ 4, 52, :_reduce_4,
369
+ 2, 52, :_reduce_5,
370
+ 1, 52, :_reduce_none,
371
+ 1, 52, :_reduce_none,
372
+ 1, 52, :_reduce_none,
373
+ 1, 52, :_reduce_none,
374
+ 1, 52, :_reduce_none,
375
+ 1, 52, :_reduce_none,
376
+ 1, 52, :_reduce_none,
377
+ 1, 52, :_reduce_none,
378
+ 1, 52, :_reduce_none,
379
+ 1, 52, :_reduce_none,
380
+ 1, 52, :_reduce_none,
381
+ 1, 53, :_reduce_17,
382
+ 2, 53, :_reduce_18,
383
+ 0, 51, :_reduce_19,
384
+ 1, 51, :_reduce_none,
385
+ 5, 55, :_reduce_21,
386
+ 8, 55, :_reduce_22,
387
+ 0, 63, :_reduce_23,
388
+ 2, 63, :_reduce_24,
389
+ 4, 56, :_reduce_25,
390
+ 1, 64, :_reduce_26,
391
+ 2, 64, :_reduce_27,
392
+ 4, 65, :_reduce_28,
393
+ 4, 65, :_reduce_29,
394
+ 6, 57, :_reduce_30,
395
+ 7, 58, :_reduce_31,
396
+ 7, 59, :_reduce_32,
397
+ 0, 66, :_reduce_33,
398
+ 5, 66, :_reduce_34,
399
+ 4, 60, :_reduce_35,
400
+ 2, 60, :_reduce_36,
401
+ 5, 61, :_reduce_37,
402
+ 4, 62, :_reduce_38,
403
+ 2, 54, :_reduce_39,
404
+ 2, 54, :_reduce_40,
405
+ 2, 54, :_reduce_41,
406
+ 2, 54, :_reduce_42,
407
+ 2, 67, :_reduce_43,
408
+ 1, 72, :_reduce_none,
409
+ 3, 72, :_reduce_45,
410
+ 4, 72, :_reduce_46,
411
+ 4, 72, :_reduce_47,
412
+ 3, 72, :_reduce_48,
413
+ 3, 72, :_reduce_49,
414
+ 3, 72, :_reduce_50,
415
+ 3, 72, :_reduce_51,
416
+ 2, 72, :_reduce_52,
417
+ 2, 72, :_reduce_53,
418
+ 2, 73, :_reduce_54,
419
+ 1, 74, :_reduce_none,
420
+ 3, 74, :_reduce_56,
421
+ 1, 76, :_reduce_57,
422
+ 1, 77, :_reduce_none,
423
+ 2, 77, :_reduce_59,
424
+ 1, 78, :_reduce_none,
425
+ 1, 78, :_reduce_none,
426
+ 2, 71, :_reduce_62,
427
+ 2, 71, :_reduce_63,
428
+ 2, 68, :_reduce_64,
429
+ 1, 81, :_reduce_none,
430
+ 3, 81, :_reduce_66,
431
+ 4, 81, :_reduce_67,
432
+ 4, 81, :_reduce_68,
433
+ 3, 81, :_reduce_69,
434
+ 3, 81, :_reduce_70,
435
+ 3, 81, :_reduce_71,
436
+ 3, 81, :_reduce_72,
437
+ 2, 81, :_reduce_73,
438
+ 2, 81, :_reduce_74,
439
+ 2, 82, :_reduce_75,
440
+ 1, 83, :_reduce_none,
441
+ 3, 83, :_reduce_77,
442
+ 1, 84, :_reduce_78,
443
+ 1, 85, :_reduce_none,
444
+ 2, 85, :_reduce_80,
445
+ 1, 86, :_reduce_none,
446
+ 1, 86, :_reduce_none,
447
+ 1, 86, :_reduce_none,
448
+ 1, 86, :_reduce_none,
449
+ 1, 86, :_reduce_none,
450
+ 1, 86, :_reduce_none,
451
+ 1, 86, :_reduce_none,
452
+ 1, 86, :_reduce_none,
453
+ 2, 80, :_reduce_89,
454
+ 2, 80, :_reduce_90,
455
+ 2, 69, :_reduce_91,
456
+ 1, 88, :_reduce_none,
457
+ 3, 88, :_reduce_93,
458
+ 4, 88, :_reduce_94,
459
+ 4, 88, :_reduce_95,
460
+ 3, 88, :_reduce_96,
461
+ 3, 88, :_reduce_97,
462
+ 3, 88, :_reduce_98,
463
+ 3, 88, :_reduce_99,
464
+ 2, 88, :_reduce_100,
465
+ 2, 88, :_reduce_101,
466
+ 2, 89, :_reduce_102,
467
+ 1, 90, :_reduce_none,
468
+ 3, 90, :_reduce_104,
469
+ 1, 90, :_reduce_none,
470
+ 2, 92, :_reduce_106,
471
+ 3, 92, :_reduce_107,
472
+ 4, 92, :_reduce_108,
473
+ 3, 92, :_reduce_109,
474
+ 1, 91, :_reduce_110,
475
+ 1, 94, :_reduce_none,
476
+ 2, 94, :_reduce_112,
477
+ 1, 95, :_reduce_none,
478
+ 1, 95, :_reduce_none,
479
+ 1, 95, :_reduce_none,
480
+ 1, 95, :_reduce_none,
481
+ 1, 95, :_reduce_none,
482
+ 1, 95, :_reduce_none,
483
+ 1, 95, :_reduce_none,
484
+ 1, 95, :_reduce_none,
485
+ 1, 95, :_reduce_none,
486
+ 1, 95, :_reduce_none,
487
+ 2, 87, :_reduce_123,
488
+ 2, 87, :_reduce_124,
489
+ 1, 87, :_reduce_none,
490
+ 2, 70, :_reduce_126,
491
+ 1, 97, :_reduce_none,
492
+ 3, 97, :_reduce_128,
493
+ 4, 97, :_reduce_129,
494
+ 4, 97, :_reduce_130,
495
+ 3, 97, :_reduce_131,
496
+ 3, 97, :_reduce_132,
497
+ 3, 97, :_reduce_133,
498
+ 3, 97, :_reduce_134,
499
+ 2, 97, :_reduce_135,
500
+ 2, 97, :_reduce_136,
501
+ 2, 98, :_reduce_137,
502
+ 1, 99, :_reduce_none,
503
+ 3, 99, :_reduce_139,
504
+ 1, 100, :_reduce_140,
505
+ 1, 101, :_reduce_none,
506
+ 2, 101, :_reduce_142,
507
+ 1, 102, :_reduce_none,
508
+ 1, 102, :_reduce_none,
509
+ 1, 102, :_reduce_none,
510
+ 1, 102, :_reduce_none,
511
+ 1, 102, :_reduce_none,
512
+ 1, 102, :_reduce_none,
513
+ 1, 102, :_reduce_none,
514
+ 1, 102, :_reduce_none,
515
+ 1, 102, :_reduce_none,
516
+ 1, 102, :_reduce_none,
517
+ 1, 102, :_reduce_none,
518
+ 1, 102, :_reduce_none,
519
+ 1, 102, :_reduce_none,
520
+ 1, 102, :_reduce_none,
521
+ 1, 102, :_reduce_none,
522
+ 1, 102, :_reduce_none,
523
+ 2, 96, :_reduce_159,
524
+ 2, 96, :_reduce_160,
525
+ 0, 93, :_reduce_161,
526
+ 3, 93, :_reduce_162,
527
+ 1, 103, :_reduce_none,
528
+ 0, 75, :_reduce_none,
529
+ 1, 75, :_reduce_none,
530
+ 1, 75, :_reduce_none,
531
+ 0, 79, :_reduce_none,
532
+ 1, 79, :_reduce_none,
533
+ 1, 79, :_reduce_none ]
534
+
535
+ racc_reduce_n = 170
536
+
537
+ racc_shift_n = 277
206
538
 
207
539
  racc_token_table = {
208
540
  false => 0,
@@ -212,18 +544,50 @@ racc_token_table = {
212
544
  ")" => 4,
213
545
  :KW_OR => 5,
214
546
  :IDENT => 6,
215
- :NUMBER => 7,
216
- :STRING => 8,
217
- :KW_DEFINE => 9,
218
- :KW_COND => 10,
219
- :KW_ELSE => 11,
220
- :KW_IF => 12,
221
- :KW_LAMBDA => 13,
222
- :KW_LET => 14,
223
- :KW_QUOTE => 15,
224
- "'" => 16 }
225
-
226
- racc_nt_base = 17
547
+ :STRING => 7,
548
+ :KW_DEFINE => 8,
549
+ :KW_COND => 9,
550
+ :KW_ELSE => 10,
551
+ :KW_IF => 11,
552
+ :KW_LAMBDA => 12,
553
+ :KW_LET => 13,
554
+ :KW_QUOTE => 14,
555
+ "'" => 15,
556
+ :KW_SET_BANG => 16,
557
+ :KW_BEGIN => 17,
558
+ :NUM_END => 18,
559
+ "@" => 19,
560
+ "+" => 20,
561
+ "i" => 21,
562
+ "-" => 22,
563
+ "/" => 23,
564
+ "0" => 24,
565
+ "1" => 25,
566
+ :NUM_PREFIX_B => 26,
567
+ "2" => 27,
568
+ "3" => 28,
569
+ "4" => 29,
570
+ "5" => 30,
571
+ "6" => 31,
572
+ "7" => 32,
573
+ :NUM_PREFIX_O => 33,
574
+ "." => 34,
575
+ "8" => 35,
576
+ "9" => 36,
577
+ :NUM_PREFIX_D => 37,
578
+ "a" => 38,
579
+ "b" => 39,
580
+ "c" => 40,
581
+ "d" => 41,
582
+ "e" => 42,
583
+ "f" => 43,
584
+ :NUM_PREFIX_X => 44,
585
+ :U_PLUS => 45,
586
+ :U_MINUS => 46,
587
+ :NUM_PREFIX_E => 47,
588
+ :NUM_PREFIX_I => 48 }
589
+
590
+ racc_nt_base = 49
227
591
 
228
592
  racc_use_result_var = false
229
593
 
@@ -251,7 +615,6 @@ Racc_token_to_s_table = [
251
615
  "\")\"",
252
616
  "KW_OR",
253
617
  "IDENT",
254
- "NUMBER",
255
618
  "STRING",
256
619
  "KW_DEFINE",
257
620
  "KW_COND",
@@ -261,21 +624,94 @@ Racc_token_to_s_table = [
261
624
  "KW_LET",
262
625
  "KW_QUOTE",
263
626
  "\"'\"",
627
+ "KW_SET_BANG",
628
+ "KW_BEGIN",
629
+ "NUM_END",
630
+ "\"@\"",
631
+ "\"+\"",
632
+ "\"i\"",
633
+ "\"-\"",
634
+ "\"/\"",
635
+ "\"0\"",
636
+ "\"1\"",
637
+ "NUM_PREFIX_B",
638
+ "\"2\"",
639
+ "\"3\"",
640
+ "\"4\"",
641
+ "\"5\"",
642
+ "\"6\"",
643
+ "\"7\"",
644
+ "NUM_PREFIX_O",
645
+ "\".\"",
646
+ "\"8\"",
647
+ "\"9\"",
648
+ "NUM_PREFIX_D",
649
+ "\"a\"",
650
+ "\"b\"",
651
+ "\"c\"",
652
+ "\"d\"",
653
+ "\"e\"",
654
+ "\"f\"",
655
+ "NUM_PREFIX_X",
656
+ "U_PLUS",
657
+ "U_MINUS",
658
+ "NUM_PREFIX_E",
659
+ "NUM_PREFIX_I",
264
660
  "$start",
265
661
  "program",
266
662
  "opt_seq",
267
663
  "expr",
268
664
  "seq",
665
+ "number",
269
666
  "define",
270
667
  "cond",
271
668
  "if",
272
669
  "lambda",
273
670
  "let",
274
671
  "quote",
672
+ "set",
673
+ "begin",
275
674
  "params",
276
675
  "clauses",
277
676
  "clause",
278
- "defs" ]
677
+ "defs",
678
+ "binary",
679
+ "octal",
680
+ "decimal",
681
+ "hexadecimal",
682
+ "b_prefix",
683
+ "b_complex",
684
+ "b_real",
685
+ "b_ureal",
686
+ "sign",
687
+ "b_uint",
688
+ "b_chars",
689
+ "b_char",
690
+ "exactness",
691
+ "o_prefix",
692
+ "o_complex",
693
+ "o_real",
694
+ "o_ureal",
695
+ "o_uint",
696
+ "o_chars",
697
+ "o_char",
698
+ "d_prefix",
699
+ "d_complex",
700
+ "d_real",
701
+ "d_ureal",
702
+ "d_uint",
703
+ "d_decimal",
704
+ "suffix",
705
+ "d_chars",
706
+ "d_char",
707
+ "h_prefix",
708
+ "h_complex",
709
+ "h_real",
710
+ "h_ureal",
711
+ "h_uint",
712
+ "h_chars",
713
+ "h_char",
714
+ "exponent_marker" ]
279
715
 
280
716
  Racc_debug_parser = false
281
717
 
@@ -331,141 +767,717 @@ module_eval(<<'.,.,', 'parser.y', 20)
331
767
 
332
768
  # reduce 14 omitted
333
769
 
334
- module_eval(<<'.,.,', 'parser.y', 34)
335
- def _reduce_15(val, _values)
770
+ # reduce 15 omitted
771
+
772
+ # reduce 16 omitted
773
+
774
+ module_eval(<<'.,.,', 'parser.y', 36)
775
+ def _reduce_17(val, _values)
336
776
  [val[0]]
337
777
 
338
778
  end
339
779
  .,.,
340
780
 
341
- module_eval(<<'.,.,', 'parser.y', 38)
342
- def _reduce_16(val, _values)
781
+ module_eval(<<'.,.,', 'parser.y', 40)
782
+ def _reduce_18(val, _values)
343
783
  val[0].push(val[1])
344
784
 
345
785
  end
346
786
  .,.,
347
787
 
348
- module_eval(<<'.,.,', 'parser.y', 43)
349
- def _reduce_17(val, _values)
788
+ module_eval(<<'.,.,', 'parser.y', 45)
789
+ def _reduce_19(val, _values)
350
790
  []
351
791
 
352
792
  end
353
793
  .,.,
354
794
 
355
- # reduce 18 omitted
795
+ # reduce 20 omitted
356
796
 
357
- module_eval(<<'.,.,', 'parser.y', 50)
358
- def _reduce_19(val, _values)
797
+ module_eval(<<'.,.,', 'parser.y', 52)
798
+ def _reduce_21(val, _values)
359
799
  [:define, val[2], val[3]]
360
800
 
361
801
  end
362
802
  .,.,
363
803
 
364
- module_eval(<<'.,.,', 'parser.y', 54)
365
- def _reduce_20(val, _values)
804
+ module_eval(<<'.,.,', 'parser.y', 56)
805
+ def _reduce_22(val, _values)
366
806
  [:define, [val[3], *val[4]], *val[6]]
367
807
 
368
808
  end
369
809
  .,.,
370
810
 
371
- module_eval(<<'.,.,', 'parser.y', 59)
372
- def _reduce_21(val, _values)
811
+ module_eval(<<'.,.,', 'parser.y', 61)
812
+ def _reduce_23(val, _values)
373
813
  []
374
814
 
375
815
  end
376
816
  .,.,
377
817
 
378
- module_eval(<<'.,.,', 'parser.y', 63)
379
- def _reduce_22(val, _values)
818
+ module_eval(<<'.,.,', 'parser.y', 65)
819
+ def _reduce_24(val, _values)
380
820
  val[0].push(val[1])
381
821
 
382
822
  end
383
823
  .,.,
384
824
 
385
- module_eval(<<'.,.,', 'parser.y', 69)
386
- def _reduce_23(val, _values)
825
+ module_eval(<<'.,.,', 'parser.y', 71)
826
+ def _reduce_25(val, _values)
387
827
  [:cond, *val[2]]
388
828
 
389
829
  end
390
830
  .,.,
391
831
 
392
- module_eval(<<'.,.,', 'parser.y', 74)
393
- def _reduce_24(val, _values)
832
+ module_eval(<<'.,.,', 'parser.y', 76)
833
+ def _reduce_26(val, _values)
394
834
  [val[0]]
395
835
 
396
836
  end
397
837
  .,.,
398
838
 
399
- module_eval(<<'.,.,', 'parser.y', 78)
400
- def _reduce_25(val, _values)
839
+ module_eval(<<'.,.,', 'parser.y', 80)
840
+ def _reduce_27(val, _values)
401
841
  val[0].push(val[1])
402
842
 
403
843
  end
404
844
  .,.,
405
845
 
406
- module_eval(<<'.,.,', 'parser.y', 83)
407
- def _reduce_26(val, _values)
846
+ module_eval(<<'.,.,', 'parser.y', 85)
847
+ def _reduce_28(val, _values)
408
848
  [val[1], val[2]]
409
849
 
410
850
  end
411
851
  .,.,
412
852
 
413
- module_eval(<<'.,.,', 'parser.y', 87)
414
- def _reduce_27(val, _values)
853
+ module_eval(<<'.,.,', 'parser.y', 89)
854
+ def _reduce_29(val, _values)
415
855
  [:else, val[2]]
416
856
 
417
857
  end
418
858
  .,.,
419
859
 
420
- module_eval(<<'.,.,', 'parser.y', 93)
421
- def _reduce_28(val, _values)
860
+ module_eval(<<'.,.,', 'parser.y', 95)
861
+ def _reduce_30(val, _values)
422
862
  [:if, val[2], val[3], val[4]]
423
863
 
424
864
  end
425
865
  .,.,
426
866
 
427
- module_eval(<<'.,.,', 'parser.y', 99)
428
- def _reduce_29(val, _values)
867
+ module_eval(<<'.,.,', 'parser.y', 101)
868
+ def _reduce_31(val, _values)
429
869
  [:lambda, val[3], *val[5]]
430
870
 
431
871
  end
432
872
  .,.,
433
873
 
434
- module_eval(<<'.,.,', 'parser.y', 105)
435
- def _reduce_30(val, _values)
874
+ module_eval(<<'.,.,', 'parser.y', 107)
875
+ def _reduce_32(val, _values)
436
876
  [:let, val[3], *val[5]]
437
877
 
438
878
  end
439
879
  .,.,
440
880
 
441
- module_eval(<<'.,.,', 'parser.y', 109)
442
- def _reduce_31(val, _values)
881
+ module_eval(<<'.,.,', 'parser.y', 111)
882
+ def _reduce_33(val, _values)
443
883
  []
444
884
 
445
885
  end
446
886
  .,.,
447
887
 
448
- module_eval(<<'.,.,', 'parser.y', 113)
449
- def _reduce_32(val, _values)
888
+ module_eval(<<'.,.,', 'parser.y', 115)
889
+ def _reduce_34(val, _values)
450
890
  val[0].push([val[2], val[3]])
451
891
 
452
892
  end
453
893
  .,.,
454
894
 
455
- module_eval(<<'.,.,', 'parser.y', 119)
456
- def _reduce_33(val, _values)
895
+ module_eval(<<'.,.,', 'parser.y', 121)
896
+ def _reduce_35(val, _values)
457
897
  [:quote, val[2]]
458
898
 
459
899
  end
460
900
  .,.,
461
901
 
462
- module_eval(<<'.,.,', 'parser.y', 123)
463
- def _reduce_34(val, _values)
902
+ module_eval(<<'.,.,', 'parser.y', 125)
903
+ def _reduce_36(val, _values)
464
904
  [:quote, val[1]]
465
905
 
466
906
  end
467
907
  .,.,
468
908
 
909
+ module_eval(<<'.,.,', 'parser.y', 131)
910
+ def _reduce_37(val, _values)
911
+ [:set!, val[2], val[3]]
912
+
913
+ end
914
+ .,.,
915
+
916
+ module_eval(<<'.,.,', 'parser.y', 137)
917
+ def _reduce_38(val, _values)
918
+ [:begin, *val[2]]
919
+
920
+ end
921
+ .,.,
922
+
923
+ module_eval(<<'.,.,', 'parser.y', 140)
924
+ def _reduce_39(val, _values)
925
+ val[0]
926
+ end
927
+ .,.,
928
+
929
+ module_eval(<<'.,.,', 'parser.y', 141)
930
+ def _reduce_40(val, _values)
931
+ val[0]
932
+ end
933
+ .,.,
934
+
935
+ module_eval(<<'.,.,', 'parser.y', 142)
936
+ def _reduce_41(val, _values)
937
+ val[0]
938
+ end
939
+ .,.,
940
+
941
+ module_eval(<<'.,.,', 'parser.y', 143)
942
+ def _reduce_42(val, _values)
943
+ val[0]
944
+ end
945
+ .,.,
946
+
947
+ module_eval(<<'.,.,', 'parser.y', 146)
948
+ def _reduce_43(val, _values)
949
+ val[0].nil? ? val[1] : (val[0] ? inexact_to_exact(val[1]) : exact_to_inexact(val[1]))
950
+ end
951
+ .,.,
952
+
953
+ # reduce 44 omitted
954
+
955
+ module_eval(<<'.,.,', 'parser.y', 148)
956
+ def _reduce_45(val, _values)
957
+ normalize_number Complex.polar(val[0], val[2])
958
+ end
959
+ .,.,
960
+
961
+ module_eval(<<'.,.,', 'parser.y', 149)
962
+ def _reduce_46(val, _values)
963
+ normalize_number Complex(val[0], val[2])
964
+ end
965
+ .,.,
966
+
967
+ module_eval(<<'.,.,', 'parser.y', 150)
968
+ def _reduce_47(val, _values)
969
+ normalize_number Complex(val[0], -val[2])
970
+ end
971
+ .,.,
972
+
973
+ module_eval(<<'.,.,', 'parser.y', 151)
974
+ def _reduce_48(val, _values)
975
+ Complex(val[0], 1)
976
+ end
977
+ .,.,
978
+
979
+ module_eval(<<'.,.,', 'parser.y', 152)
980
+ def _reduce_49(val, _values)
981
+ Complex(val[0], -1)
982
+ end
983
+ .,.,
984
+
985
+ module_eval(<<'.,.,', 'parser.y', 153)
986
+ def _reduce_50(val, _values)
987
+ normalize_number Complex(0, val[1])
988
+ end
989
+ .,.,
990
+
991
+ module_eval(<<'.,.,', 'parser.y', 154)
992
+ def _reduce_51(val, _values)
993
+ normalize_number Complex(0, -val[1])
994
+ end
995
+ .,.,
996
+
997
+ module_eval(<<'.,.,', 'parser.y', 155)
998
+ def _reduce_52(val, _values)
999
+ Complex(0, 1)
1000
+ end
1001
+ .,.,
1002
+
1003
+ module_eval(<<'.,.,', 'parser.y', 156)
1004
+ def _reduce_53(val, _values)
1005
+ Complex(0, -1)
1006
+ end
1007
+ .,.,
1008
+
1009
+ module_eval(<<'.,.,', 'parser.y', 157)
1010
+ def _reduce_54(val, _values)
1011
+ val[0] == '-' ? -val[1] : val[1]
1012
+ end
1013
+ .,.,
1014
+
1015
+ # reduce 55 omitted
1016
+
1017
+ module_eval(<<'.,.,', 'parser.y', 159)
1018
+ def _reduce_56(val, _values)
1019
+ normalize_number Rational(val[0], val[2])
1020
+ end
1021
+ .,.,
1022
+
1023
+ module_eval(<<'.,.,', 'parser.y', 160)
1024
+ def _reduce_57(val, _values)
1025
+ val[0].to_i(2)
1026
+ end
1027
+ .,.,
1028
+
1029
+ # reduce 58 omitted
1030
+
1031
+ module_eval(<<'.,.,', 'parser.y', 162)
1032
+ def _reduce_59(val, _values)
1033
+ val[0] << val[1]
1034
+ end
1035
+ .,.,
1036
+
1037
+ # reduce 60 omitted
1038
+
1039
+ # reduce 61 omitted
1040
+
1041
+ module_eval(<<'.,.,', 'parser.y', 164)
1042
+ def _reduce_62(val, _values)
1043
+ val[1]
1044
+ end
1045
+ .,.,
1046
+
1047
+ module_eval(<<'.,.,', 'parser.y', 165)
1048
+ def _reduce_63(val, _values)
1049
+ val[0]
1050
+ end
1051
+ .,.,
1052
+
1053
+ module_eval(<<'.,.,', 'parser.y', 168)
1054
+ def _reduce_64(val, _values)
1055
+ val[0].nil? ? val[1] : (val[0] ? inexact_to_exact(val[1]) : exact_to_inexact(val[1]))
1056
+ end
1057
+ .,.,
1058
+
1059
+ # reduce 65 omitted
1060
+
1061
+ module_eval(<<'.,.,', 'parser.y', 170)
1062
+ def _reduce_66(val, _values)
1063
+ normalize_number Complex.polar(val[0], val[2])
1064
+ end
1065
+ .,.,
1066
+
1067
+ module_eval(<<'.,.,', 'parser.y', 171)
1068
+ def _reduce_67(val, _values)
1069
+ normalize_number Complex(val[0], val[2])
1070
+ end
1071
+ .,.,
1072
+
1073
+ module_eval(<<'.,.,', 'parser.y', 172)
1074
+ def _reduce_68(val, _values)
1075
+ normalize_number Complex(val[0], -val[2])
1076
+ end
1077
+ .,.,
1078
+
1079
+ module_eval(<<'.,.,', 'parser.y', 173)
1080
+ def _reduce_69(val, _values)
1081
+ Complex(val[0], 1)
1082
+ end
1083
+ .,.,
1084
+
1085
+ module_eval(<<'.,.,', 'parser.y', 174)
1086
+ def _reduce_70(val, _values)
1087
+ Complex(val[0], -1)
1088
+ end
1089
+ .,.,
1090
+
1091
+ module_eval(<<'.,.,', 'parser.y', 175)
1092
+ def _reduce_71(val, _values)
1093
+ normalize_number Complex(0, val[1])
1094
+ end
1095
+ .,.,
1096
+
1097
+ module_eval(<<'.,.,', 'parser.y', 176)
1098
+ def _reduce_72(val, _values)
1099
+ normalize_number Complex(0, -val[1])
1100
+ end
1101
+ .,.,
1102
+
1103
+ module_eval(<<'.,.,', 'parser.y', 177)
1104
+ def _reduce_73(val, _values)
1105
+ Complex(0, 1)
1106
+ end
1107
+ .,.,
1108
+
1109
+ module_eval(<<'.,.,', 'parser.y', 178)
1110
+ def _reduce_74(val, _values)
1111
+ Complex(0, -1)
1112
+ end
1113
+ .,.,
1114
+
1115
+ module_eval(<<'.,.,', 'parser.y', 179)
1116
+ def _reduce_75(val, _values)
1117
+ val[0] == '-' ? -val[1] : val[1]
1118
+ end
1119
+ .,.,
1120
+
1121
+ # reduce 76 omitted
1122
+
1123
+ module_eval(<<'.,.,', 'parser.y', 181)
1124
+ def _reduce_77(val, _values)
1125
+ normalize_number Rational(val[0], val[2])
1126
+ end
1127
+ .,.,
1128
+
1129
+ module_eval(<<'.,.,', 'parser.y', 182)
1130
+ def _reduce_78(val, _values)
1131
+ val[0].to_i(8)
1132
+ end
1133
+ .,.,
1134
+
1135
+ # reduce 79 omitted
1136
+
1137
+ module_eval(<<'.,.,', 'parser.y', 184)
1138
+ def _reduce_80(val, _values)
1139
+ val[0] << val[1]
1140
+ end
1141
+ .,.,
1142
+
1143
+ # reduce 81 omitted
1144
+
1145
+ # reduce 82 omitted
1146
+
1147
+ # reduce 83 omitted
1148
+
1149
+ # reduce 84 omitted
1150
+
1151
+ # reduce 85 omitted
1152
+
1153
+ # reduce 86 omitted
1154
+
1155
+ # reduce 87 omitted
1156
+
1157
+ # reduce 88 omitted
1158
+
1159
+ module_eval(<<'.,.,', 'parser.y', 186)
1160
+ def _reduce_89(val, _values)
1161
+ val[1]
1162
+ end
1163
+ .,.,
1164
+
1165
+ module_eval(<<'.,.,', 'parser.y', 187)
1166
+ def _reduce_90(val, _values)
1167
+ val[0]
1168
+ end
1169
+ .,.,
1170
+
1171
+ module_eval(<<'.,.,', 'parser.y', 190)
1172
+ def _reduce_91(val, _values)
1173
+ val[0].nil? ? val[1] : (val[0] ? inexact_to_exact(val[1]) : exact_to_inexact(val[1]))
1174
+ end
1175
+ .,.,
1176
+
1177
+ # reduce 92 omitted
1178
+
1179
+ module_eval(<<'.,.,', 'parser.y', 192)
1180
+ def _reduce_93(val, _values)
1181
+ normalize_number Complex.polar(val[0], val[2])
1182
+ end
1183
+ .,.,
1184
+
1185
+ module_eval(<<'.,.,', 'parser.y', 193)
1186
+ def _reduce_94(val, _values)
1187
+ normalize_number Complex(val[0], val[2])
1188
+ end
1189
+ .,.,
1190
+
1191
+ module_eval(<<'.,.,', 'parser.y', 194)
1192
+ def _reduce_95(val, _values)
1193
+ normalize_number Complex(val[0], -val[2])
1194
+ end
1195
+ .,.,
1196
+
1197
+ module_eval(<<'.,.,', 'parser.y', 195)
1198
+ def _reduce_96(val, _values)
1199
+ Complex(val[0], 1)
1200
+ end
1201
+ .,.,
1202
+
1203
+ module_eval(<<'.,.,', 'parser.y', 196)
1204
+ def _reduce_97(val, _values)
1205
+ Complex(val[0], -1)
1206
+ end
1207
+ .,.,
1208
+
1209
+ module_eval(<<'.,.,', 'parser.y', 197)
1210
+ def _reduce_98(val, _values)
1211
+ normalize_number Complex(0, val[1])
1212
+ end
1213
+ .,.,
1214
+
1215
+ module_eval(<<'.,.,', 'parser.y', 198)
1216
+ def _reduce_99(val, _values)
1217
+ normalize_number Complex(0, -val[1])
1218
+ end
1219
+ .,.,
1220
+
1221
+ module_eval(<<'.,.,', 'parser.y', 199)
1222
+ def _reduce_100(val, _values)
1223
+ Complex(0, 1)
1224
+ end
1225
+ .,.,
1226
+
1227
+ module_eval(<<'.,.,', 'parser.y', 200)
1228
+ def _reduce_101(val, _values)
1229
+ Complex(0, -1)
1230
+ end
1231
+ .,.,
1232
+
1233
+ module_eval(<<'.,.,', 'parser.y', 201)
1234
+ def _reduce_102(val, _values)
1235
+ val[0] == '-' ? -val[1] : val[1]
1236
+ end
1237
+ .,.,
1238
+
1239
+ # reduce 103 omitted
1240
+
1241
+ module_eval(<<'.,.,', 'parser.y', 203)
1242
+ def _reduce_104(val, _values)
1243
+ normalize_number Rational(val[0], val[2])
1244
+ end
1245
+ .,.,
1246
+
1247
+ # reduce 105 omitted
1248
+
1249
+ module_eval(<<'.,.,', 'parser.y', 205)
1250
+ def _reduce_106(val, _values)
1251
+ val[0].to_f * (10 ** val[1])
1252
+ end
1253
+ .,.,
1254
+
1255
+ module_eval(<<'.,.,', 'parser.y', 206)
1256
+ def _reduce_107(val, _values)
1257
+ "0.#{val[1]}".to_f * (10 ** val[2])
1258
+ end
1259
+ .,.,
1260
+
1261
+ module_eval(<<'.,.,', 'parser.y', 208)
1262
+ def _reduce_108(val, _values)
1263
+ "#{val[0]}.#{val[2]}".to_f * (10 ** val[3])
1264
+ end
1265
+ .,.,
1266
+
1267
+ module_eval(<<'.,.,', 'parser.y', 209)
1268
+ def _reduce_109(val, _values)
1269
+ val[0].to_f * (10 ** val[2])
1270
+ end
1271
+ .,.,
1272
+
1273
+ module_eval(<<'.,.,', 'parser.y', 210)
1274
+ def _reduce_110(val, _values)
1275
+ val[0].to_i(10)
1276
+ end
1277
+ .,.,
1278
+
1279
+ # reduce 111 omitted
1280
+
1281
+ module_eval(<<'.,.,', 'parser.y', 212)
1282
+ def _reduce_112(val, _values)
1283
+ val[0] << val[1]
1284
+ end
1285
+ .,.,
1286
+
1287
+ # reduce 113 omitted
1288
+
1289
+ # reduce 114 omitted
1290
+
1291
+ # reduce 115 omitted
1292
+
1293
+ # reduce 116 omitted
1294
+
1295
+ # reduce 117 omitted
1296
+
1297
+ # reduce 118 omitted
1298
+
1299
+ # reduce 119 omitted
1300
+
1301
+ # reduce 120 omitted
1302
+
1303
+ # reduce 121 omitted
1304
+
1305
+ # reduce 122 omitted
1306
+
1307
+ module_eval(<<'.,.,', 'parser.y', 214)
1308
+ def _reduce_123(val, _values)
1309
+ val[1]
1310
+ end
1311
+ .,.,
1312
+
1313
+ module_eval(<<'.,.,', 'parser.y', 215)
1314
+ def _reduce_124(val, _values)
1315
+ val[0]
1316
+ end
1317
+ .,.,
1318
+
1319
+ # reduce 125 omitted
1320
+
1321
+ module_eval(<<'.,.,', 'parser.y', 219)
1322
+ def _reduce_126(val, _values)
1323
+ val[0].nil? ? val[1] : (val[0] ? to_exact(val[1]) : exact_to_inexact(val[1]))
1324
+ end
1325
+ .,.,
1326
+
1327
+ # reduce 127 omitted
1328
+
1329
+ module_eval(<<'.,.,', 'parser.y', 221)
1330
+ def _reduce_128(val, _values)
1331
+ normalize_number Complex.polar(val[0], val[2])
1332
+ end
1333
+ .,.,
1334
+
1335
+ module_eval(<<'.,.,', 'parser.y', 222)
1336
+ def _reduce_129(val, _values)
1337
+ normalize_number Complex(val[0], val[2])
1338
+ end
1339
+ .,.,
1340
+
1341
+ module_eval(<<'.,.,', 'parser.y', 223)
1342
+ def _reduce_130(val, _values)
1343
+ normalize_number Complex(val[0], -val[2])
1344
+ end
1345
+ .,.,
1346
+
1347
+ module_eval(<<'.,.,', 'parser.y', 224)
1348
+ def _reduce_131(val, _values)
1349
+ Complex(val[0], 1)
1350
+ end
1351
+ .,.,
1352
+
1353
+ module_eval(<<'.,.,', 'parser.y', 225)
1354
+ def _reduce_132(val, _values)
1355
+ Complex(val[0], -1)
1356
+ end
1357
+ .,.,
1358
+
1359
+ module_eval(<<'.,.,', 'parser.y', 226)
1360
+ def _reduce_133(val, _values)
1361
+ normalize_number Complex(0, val[1])
1362
+ end
1363
+ .,.,
1364
+
1365
+ module_eval(<<'.,.,', 'parser.y', 227)
1366
+ def _reduce_134(val, _values)
1367
+ normalize_number Complex(0, -val[1])
1368
+ end
1369
+ .,.,
1370
+
1371
+ module_eval(<<'.,.,', 'parser.y', 228)
1372
+ def _reduce_135(val, _values)
1373
+ Complex(0, 1)
1374
+ end
1375
+ .,.,
1376
+
1377
+ module_eval(<<'.,.,', 'parser.y', 229)
1378
+ def _reduce_136(val, _values)
1379
+ Complex(0, -1)
1380
+ end
1381
+ .,.,
1382
+
1383
+ module_eval(<<'.,.,', 'parser.y', 230)
1384
+ def _reduce_137(val, _values)
1385
+ val[0] == '-' ? -val[1] : val[1]
1386
+ end
1387
+ .,.,
1388
+
1389
+ # reduce 138 omitted
1390
+
1391
+ module_eval(<<'.,.,', 'parser.y', 232)
1392
+ def _reduce_139(val, _values)
1393
+ normalize_number Rational(val[0], val[2])
1394
+ end
1395
+ .,.,
1396
+
1397
+ module_eval(<<'.,.,', 'parser.y', 233)
1398
+ def _reduce_140(val, _values)
1399
+ val[0].to_i(16)
1400
+ end
1401
+ .,.,
1402
+
1403
+ # reduce 141 omitted
1404
+
1405
+ module_eval(<<'.,.,', 'parser.y', 235)
1406
+ def _reduce_142(val, _values)
1407
+ val[0] << val[1]
1408
+ end
1409
+ .,.,
1410
+
1411
+ # reduce 143 omitted
1412
+
1413
+ # reduce 144 omitted
1414
+
1415
+ # reduce 145 omitted
1416
+
1417
+ # reduce 146 omitted
1418
+
1419
+ # reduce 147 omitted
1420
+
1421
+ # reduce 148 omitted
1422
+
1423
+ # reduce 149 omitted
1424
+
1425
+ # reduce 150 omitted
1426
+
1427
+ # reduce 151 omitted
1428
+
1429
+ # reduce 152 omitted
1430
+
1431
+ # reduce 153 omitted
1432
+
1433
+ # reduce 154 omitted
1434
+
1435
+ # reduce 155 omitted
1436
+
1437
+ # reduce 156 omitted
1438
+
1439
+ # reduce 157 omitted
1440
+
1441
+ # reduce 158 omitted
1442
+
1443
+ module_eval(<<'.,.,', 'parser.y', 238)
1444
+ def _reduce_159(val, _values)
1445
+ val[1]
1446
+ end
1447
+ .,.,
1448
+
1449
+ module_eval(<<'.,.,', 'parser.y', 239)
1450
+ def _reduce_160(val, _values)
1451
+ val[0]
1452
+ end
1453
+ .,.,
1454
+
1455
+ module_eval(<<'.,.,', 'parser.y', 242)
1456
+ def _reduce_161(val, _values)
1457
+ 0
1458
+ end
1459
+ .,.,
1460
+
1461
+ module_eval(<<'.,.,', 'parser.y', 244)
1462
+ def _reduce_162(val, _values)
1463
+ val[1] == '-' ? -val[2].to_i : val[2].to_i
1464
+ end
1465
+ .,.,
1466
+
1467
+ # reduce 163 omitted
1468
+
1469
+ # reduce 164 omitted
1470
+
1471
+ # reduce 165 omitted
1472
+
1473
+ # reduce 166 omitted
1474
+
1475
+ # reduce 167 omitted
1476
+
1477
+ # reduce 168 omitted
1478
+
1479
+ # reduce 169 omitted
1480
+
469
1481
  def _reduce_none(val, _values)
470
1482
  val[0]
471
1483
  end