rubic 0.2.0 → 0.3.0

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