statsailr 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.travis.yml +6 -0
  4. data/Gemfile +7 -0
  5. data/HISTORY.md +15 -0
  6. data/LICENSE.txt +675 -0
  7. data/README.md +287 -0
  8. data/Rakefile +10 -0
  9. data/bin/console +14 -0
  10. data/bin/setup +8 -0
  11. data/example/blank.slr +3 -0
  12. data/example/category.slr +5 -0
  13. data/example/example_read.slr +10 -0
  14. data/example/iris.csv +151 -0
  15. data/example/mtcars.rda +0 -0
  16. data/example/new_mtcars.csv +33 -0
  17. data/example/new_mtcars.rda +0 -0
  18. data/example/plot_reg_example.slr +55 -0
  19. data/example/scatter.png +0 -0
  20. data/exe/sailr +54 -0
  21. data/exe/sailrREPL +75 -0
  22. data/lib/statsailr.rb +7 -0
  23. data/lib/statsailr/block_builder/sts_block.rb +167 -0
  24. data/lib/statsailr/block_builder/sts_block_parse_proc_opts.rb +168 -0
  25. data/lib/statsailr/block_to_r/proc_setting_support/proc_opt_validator.rb +52 -0
  26. data/lib/statsailr/block_to_r/proc_setting_support/proc_setting_manager.rb +49 -0
  27. data/lib/statsailr/block_to_r/proc_setting_support/proc_setting_module.rb +44 -0
  28. data/lib/statsailr/block_to_r/sts_block_to_r.rb +98 -0
  29. data/lib/statsailr/block_to_r/sts_lazy_func_gen.rb +236 -0
  30. data/lib/statsailr/block_to_r/top_stmt/top_stmt_to_r_func.rb +182 -0
  31. data/lib/statsailr/parser/sts_gram_node.rb +9 -0
  32. data/lib/statsailr/parser/sts_parse.output +831 -0
  33. data/lib/statsailr/parser/sts_parse.ry +132 -0
  34. data/lib/statsailr/parser/sts_parse.tab.rb +682 -0
  35. data/lib/statsailr/scanner/sample1.sts +37 -0
  36. data/lib/statsailr/scanner/sts_scanner.rb +433 -0
  37. data/lib/statsailr/scanner/test_sample1.rb +8 -0
  38. data/lib/statsailr/sts_build_exec.rb +304 -0
  39. data/lib/statsailr/sts_controller.rb +66 -0
  40. data/lib/statsailr/sts_output/output_manager.rb +192 -0
  41. data/lib/statsailr/sts_runner.rb +17 -0
  42. data/lib/statsailr/sts_server.rb +85 -0
  43. data/lib/statsailr/version.rb +3 -0
  44. data/statsailr.gemspec +32 -0
  45. metadata +133 -0
@@ -0,0 +1,132 @@
1
+ class STSParser
2
+
3
+ token TOP_INST TOP_INST_END DATA_START DATA_SCRIPT DATA_END PROC_START PROC_INST PROC_END TERMIN IDENT ASSIGN COLON NUMBER STRING P_EQ P_MULT P_PLUS P_MINUS P_HAT P_IN P_PERC P_TILDA P_COLON P_LPAR P_RPAR P_LSQBR P_RSQBR P_COMMA SEP_SLASH
4
+
5
+ rule
6
+
7
+ program : opt_termins blocks opt_termins {result = val[1]}
8
+
9
+ blocks: blocks TERMIN block { val[0] << val[2] ; result = val[0]}
10
+ | block { result = Array.new(1, val[0] )}
11
+
12
+ block: top_stmt { result = val[0] }
13
+ | data_block { result = val[0] }
14
+ | proc_block { result = val[0] }
15
+
16
+ top_stmt: TOP_INST top_options TOP_INST_END {result = GramNode.new( :TOP_BLOCK, val[0], val[1] ) }
17
+
18
+ data_block: DATA_START data_engine_option IDENT data_options TERMIN DATA_SCRIPT DATA_END { val[1] ; result = GramNode.new( :DATA_BLOCK, GramNode.new(:ident, val[2]), val[3], GramNode.new( :string, val[5])) }
19
+
20
+ proc_block: PROC_START IDENT proc_options TERMIN proc_stmts TERMIN PROC_END { result = GramNode.new( :PROC_BLOCK, GramNode.new(:ident, val[1]), val[2], val[4]) }
21
+
22
+ top_options : { result = nil }
23
+ | value_or_kv { result = Array.new(1, val[0]) }
24
+ | top_options value_or_kv { val[0] << val[1]; result = val[0]}
25
+
26
+ value_or_kv: opt_primary {result = val[0]}
27
+ | kv {result = val[0]}
28
+
29
+ data_engine_option : { result = nil }
30
+ | COLON IDENT { result = val[1]}
31
+
32
+ data_options : {result = nil}
33
+ | options {result = val[0]}
34
+
35
+ proc_options : {result = nil}
36
+ | options {result = val[0]}
37
+
38
+ options: options key_or_kv { val[0] << val[1]; result = val[0]}
39
+ | key_or_kv { result = Array.new(1, val[0]) }
40
+
41
+ key_or_kv: key {result = val[0] }
42
+ | kv {result = val[0] }
43
+
44
+ key: IDENT { result = GramNode.new(:option, val[0], true ) }
45
+
46
+ kv : IDENT ASSIGN opt_primary { result = GramNode.new(:option, val[0], val[2]) }
47
+
48
+ opt_primary : NUMBER { result = GramNode.new(:num , val[0]) }
49
+ | STRING { result = GramNode.new(:string, val[0]) }
50
+ | IDENT { result = GramNode.new(:ident , val[0]) }
51
+
52
+ proc_stmts : proc_stmts TERMIN proc_stmt { val[0] << val[2]; result = val[0] }
53
+ | proc_stmt { result = Array.new(1, val[0]) }
54
+
55
+ proc_stmt : PROC_INST optional_proc_stmt_options { result = GramNode.new( :proc_stmt , GramNode.new(:ident, val[0]) , val[1]) }
56
+
57
+ optional_proc_stmt_options : {result = nil }
58
+ | proc_stmt_options {result = val[0] }
59
+
60
+ proc_stmt_options : proc_stmt_options proc_primary { val[0] << val[1] ; result = val[0] }
61
+ | proc_primary { result = Array.new(1, val[0] ) }
62
+
63
+ proc_primary : IDENT { result = GramNode.new(:ident , val[0]) }
64
+ | NUMBER { result = GramNode.new(:num , val[0]) }
65
+ | STRING { result = GramNode.new(:string, val[0]) }
66
+ | P_EQ { result = GramNode.new(:sign, val[0]) }
67
+ | P_MULT { result = GramNode.new(:sign, val[0]) }
68
+ | P_PLUS { result = GramNode.new(:sign, val[0]) }
69
+ | P_MINUS { result = GramNode.new(:sign, val[0]) }
70
+ | P_HAT { result = GramNode.new(:sign, val[0]) }
71
+ | P_IN { result = GramNode.new(:sign, val[0]) }
72
+ | P_PERC { result = GramNode.new(:sign, val[0]) }
73
+ | P_TILDA { result = GramNode.new(:sign, val[0]) }
74
+ | P_COLON { result = GramNode.new(:sign, val[0]) }
75
+ | P_LPAR { result = GramNode.new(:sign, val[0]) }
76
+ | P_RPAR { result = GramNode.new(:sign, val[0]) }
77
+ | P_LSQBR { result = GramNode.new(:sign, val[0]) }
78
+ | P_RSQBR { result = GramNode.new(:sign, val[0]) }
79
+ | P_COMMA { result = GramNode.new(:sign, val[0]) }
80
+ | SEP_SLASH { result = GramNode.new(:sign, val[0]) }
81
+
82
+ opt_termins : # empty
83
+ | termins
84
+
85
+ termins : termins TERMIN
86
+ | TERMIN
87
+
88
+ end
89
+
90
+ ---- inner
91
+
92
+ def parse( tokens )
93
+ @tokens = tokens
94
+
95
+ @yydebug = true
96
+ do_parse()
97
+ end
98
+
99
+ def next_token
100
+ @tokens.shift
101
+ end
102
+
103
+ def on_error(t, val, vstack)
104
+ raise Racc::ParseError, sprintf(
105
+ "Parse error on value %s (%s)\n",
106
+ val.inspect, token_to_str(t) || '?' )
107
+ end
108
+
109
+ ---- footer
110
+
111
+ require_relative("sts_gram_node.rb")
112
+
113
+ module STSParserDriver
114
+ def self.run( tokens )
115
+ parser = STSParser.new
116
+
117
+ begin
118
+ gram_tree = parser.parse( tokens )
119
+ rescue Racc::ParseError => e
120
+ puts "Parser error detected"
121
+ puts e.message
122
+ runtime_error = RuntimeError.new( e.message );
123
+ runtime_error.set_backtrace( e.backtrace ); e.set_backtrace([])
124
+ raise runtime_error
125
+ end
126
+ end
127
+ end
128
+
129
+
130
+
131
+
132
+
@@ -0,0 +1,682 @@
1
+ #
2
+ # DO NOT MODIFY!!!!
3
+ # This file is automatically generated by Racc 1.5.1
4
+ # from Racc grammar file "".
5
+ #
6
+
7
+ require 'racc/parser.rb'
8
+ class STSParser < Racc::Parser
9
+
10
+ module_eval(<<'...end sts_parse.ry/module_eval...', 'sts_parse.ry', 91)
11
+
12
+ def parse( tokens )
13
+ @tokens = tokens
14
+
15
+ @yydebug = true
16
+ do_parse()
17
+ end
18
+
19
+ def next_token
20
+ @tokens.shift
21
+ end
22
+
23
+ def on_error(t, val, vstack)
24
+ raise Racc::ParseError, sprintf(
25
+ "Parse error on value %s (%s)\n",
26
+ val.inspect, token_to_str(t) || '?' )
27
+ end
28
+
29
+ ...end sts_parse.ry/module_eval...
30
+ ##### State transition tables begin ###
31
+
32
+ racc_action_table = [
33
+ 55, 49, 74, 56, 57, 58, 59, 60, 61, 62,
34
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
35
+ 55, 4, 5, 56, 57, 58, 59, 60, 61, 62,
36
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
37
+ 29, 11, 11, 12, 12, 14, 13, 13, 22, 15,
38
+ 22, 23, 24, 23, 24, 41, 17, 26, 23, 24,
39
+ 27, 31, 32, 33, 39, 39, 44, 39, 31, 46,
40
+ 39, 49, 50, 51, 73 ]
41
+
42
+ racc_action_check = [
43
+ 49, 51, 51, 49, 49, 49, 49, 49, 49, 49,
44
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
45
+ 53, 0, 1, 53, 53, 53, 53, 53, 53, 53,
46
+ 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
47
+ 18, 2, 17, 2, 17, 3, 2, 17, 18, 5,
48
+ 11, 18, 18, 11, 11, 31, 6, 12, 31, 31,
49
+ 13, 22, 25, 26, 27, 32, 34, 35, 39, 42,
50
+ 43, 44, 46, 47, 50 ]
51
+
52
+ racc_action_pointer = [
53
+ 11, 22, 39, 35, nil, 49, 46, nil, nil, nil,
54
+ nil, 39, 44, 49, nil, nil, nil, 40, 37, nil,
55
+ nil, nil, 49, nil, nil, 51, 52, 53, nil, nil,
56
+ nil, 44, 54, nil, 56, 56, nil, nil, nil, 56,
57
+ nil, nil, 59, 59, 63, nil, 67, 63, nil, -11,
58
+ 68, -7, nil, 9, nil, nil, nil, nil, nil, nil,
59
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
60
+ nil, nil, nil, nil, nil, nil, nil ]
61
+
62
+ racc_action_default = [
63
+ -55, -59, -59, -56, -58, -59, -55, -3, -4, -5,
64
+ -6, -10, -15, -59, -57, 77, -1, -58, -59, -11,
65
+ -13, -14, -29, -27, -28, -59, -59, -19, -2, -7,
66
+ -12, -59, -17, -16, -59, -20, -22, -23, -24, -25,
67
+ -26, -29, -59, -18, -59, -21, -59, -59, -31, -33,
68
+ -59, -59, -32, -34, -36, -37, -38, -39, -40, -41,
69
+ -42, -43, -44, -45, -46, -47, -48, -49, -50, -51,
70
+ -52, -53, -54, -8, -9, -30, -35 ]
71
+
72
+ racc_goto_table = [
73
+ 7, 45, 2, 19, 21, 48, 1, 6, 16, 45,
74
+ 30, 21, 75, 35, 18, 28, 54, 25, 43, 42,
75
+ 76, 34, 47, 40, 52, 53 ]
76
+
77
+ racc_goto_check = [
78
+ 4, 17, 2, 13, 15, 19, 1, 3, 2, 17,
79
+ 13, 15, 19, 16, 8, 4, 22, 9, 16, 10,
80
+ 22, 11, 12, 14, 20, 21 ]
81
+
82
+ racc_goto_pointer = [
83
+ nil, 6, 2, 5, -2, nil, nil, nil, 3, 5,
84
+ -13, -6, -22, -8, -8, -7, -14, -34, nil, -39,
85
+ -25, -24, -33, nil ]
86
+
87
+ racc_goto_default = [
88
+ nil, nil, nil, nil, nil, 8, 9, 10, nil, nil,
89
+ nil, nil, nil, nil, 20, 38, nil, 36, 37, nil,
90
+ nil, nil, nil, 3 ]
91
+
92
+ racc_reduce_table = [
93
+ 0, 0, :racc_error,
94
+ 3, 32, :_reduce_1,
95
+ 3, 34, :_reduce_2,
96
+ 1, 34, :_reduce_3,
97
+ 1, 35, :_reduce_4,
98
+ 1, 35, :_reduce_5,
99
+ 1, 35, :_reduce_6,
100
+ 3, 36, :_reduce_7,
101
+ 7, 37, :_reduce_8,
102
+ 7, 38, :_reduce_9,
103
+ 0, 39, :_reduce_10,
104
+ 1, 39, :_reduce_11,
105
+ 2, 39, :_reduce_12,
106
+ 1, 44, :_reduce_13,
107
+ 1, 44, :_reduce_14,
108
+ 0, 40, :_reduce_15,
109
+ 2, 40, :_reduce_16,
110
+ 0, 41, :_reduce_17,
111
+ 1, 41, :_reduce_18,
112
+ 0, 42, :_reduce_19,
113
+ 1, 42, :_reduce_20,
114
+ 2, 47, :_reduce_21,
115
+ 1, 47, :_reduce_22,
116
+ 1, 48, :_reduce_23,
117
+ 1, 48, :_reduce_24,
118
+ 1, 49, :_reduce_25,
119
+ 3, 46, :_reduce_26,
120
+ 1, 45, :_reduce_27,
121
+ 1, 45, :_reduce_28,
122
+ 1, 45, :_reduce_29,
123
+ 3, 43, :_reduce_30,
124
+ 1, 43, :_reduce_31,
125
+ 2, 50, :_reduce_32,
126
+ 0, 51, :_reduce_33,
127
+ 1, 51, :_reduce_34,
128
+ 2, 52, :_reduce_35,
129
+ 1, 52, :_reduce_36,
130
+ 1, 53, :_reduce_37,
131
+ 1, 53, :_reduce_38,
132
+ 1, 53, :_reduce_39,
133
+ 1, 53, :_reduce_40,
134
+ 1, 53, :_reduce_41,
135
+ 1, 53, :_reduce_42,
136
+ 1, 53, :_reduce_43,
137
+ 1, 53, :_reduce_44,
138
+ 1, 53, :_reduce_45,
139
+ 1, 53, :_reduce_46,
140
+ 1, 53, :_reduce_47,
141
+ 1, 53, :_reduce_48,
142
+ 1, 53, :_reduce_49,
143
+ 1, 53, :_reduce_50,
144
+ 1, 53, :_reduce_51,
145
+ 1, 53, :_reduce_52,
146
+ 1, 53, :_reduce_53,
147
+ 1, 53, :_reduce_54,
148
+ 0, 33, :_reduce_none,
149
+ 1, 33, :_reduce_none,
150
+ 2, 54, :_reduce_none,
151
+ 1, 54, :_reduce_none ]
152
+
153
+ racc_reduce_n = 59
154
+
155
+ racc_shift_n = 77
156
+
157
+ racc_token_table = {
158
+ false => 0,
159
+ :error => 1,
160
+ :TOP_INST => 2,
161
+ :TOP_INST_END => 3,
162
+ :DATA_START => 4,
163
+ :DATA_SCRIPT => 5,
164
+ :DATA_END => 6,
165
+ :PROC_START => 7,
166
+ :PROC_INST => 8,
167
+ :PROC_END => 9,
168
+ :TERMIN => 10,
169
+ :IDENT => 11,
170
+ :ASSIGN => 12,
171
+ :COLON => 13,
172
+ :NUMBER => 14,
173
+ :STRING => 15,
174
+ :P_EQ => 16,
175
+ :P_MULT => 17,
176
+ :P_PLUS => 18,
177
+ :P_MINUS => 19,
178
+ :P_HAT => 20,
179
+ :P_IN => 21,
180
+ :P_PERC => 22,
181
+ :P_TILDA => 23,
182
+ :P_COLON => 24,
183
+ :P_LPAR => 25,
184
+ :P_RPAR => 26,
185
+ :P_LSQBR => 27,
186
+ :P_RSQBR => 28,
187
+ :P_COMMA => 29,
188
+ :SEP_SLASH => 30 }
189
+
190
+ racc_nt_base = 31
191
+
192
+ racc_use_result_var = true
193
+
194
+ Racc_arg = [
195
+ racc_action_table,
196
+ racc_action_check,
197
+ racc_action_default,
198
+ racc_action_pointer,
199
+ racc_goto_table,
200
+ racc_goto_check,
201
+ racc_goto_default,
202
+ racc_goto_pointer,
203
+ racc_nt_base,
204
+ racc_reduce_table,
205
+ racc_token_table,
206
+ racc_shift_n,
207
+ racc_reduce_n,
208
+ racc_use_result_var ]
209
+
210
+ Racc_token_to_s_table = [
211
+ "$end",
212
+ "error",
213
+ "TOP_INST",
214
+ "TOP_INST_END",
215
+ "DATA_START",
216
+ "DATA_SCRIPT",
217
+ "DATA_END",
218
+ "PROC_START",
219
+ "PROC_INST",
220
+ "PROC_END",
221
+ "TERMIN",
222
+ "IDENT",
223
+ "ASSIGN",
224
+ "COLON",
225
+ "NUMBER",
226
+ "STRING",
227
+ "P_EQ",
228
+ "P_MULT",
229
+ "P_PLUS",
230
+ "P_MINUS",
231
+ "P_HAT",
232
+ "P_IN",
233
+ "P_PERC",
234
+ "P_TILDA",
235
+ "P_COLON",
236
+ "P_LPAR",
237
+ "P_RPAR",
238
+ "P_LSQBR",
239
+ "P_RSQBR",
240
+ "P_COMMA",
241
+ "SEP_SLASH",
242
+ "$start",
243
+ "program",
244
+ "opt_termins",
245
+ "blocks",
246
+ "block",
247
+ "top_stmt",
248
+ "data_block",
249
+ "proc_block",
250
+ "top_options",
251
+ "data_engine_option",
252
+ "data_options",
253
+ "proc_options",
254
+ "proc_stmts",
255
+ "value_or_kv",
256
+ "opt_primary",
257
+ "kv",
258
+ "options",
259
+ "key_or_kv",
260
+ "key",
261
+ "proc_stmt",
262
+ "optional_proc_stmt_options",
263
+ "proc_stmt_options",
264
+ "proc_primary",
265
+ "termins" ]
266
+
267
+ Racc_debug_parser = false
268
+
269
+ ##### State transition tables end #####
270
+
271
+ # reduce 0 omitted
272
+
273
+ module_eval(<<'.,.,', 'sts_parse.ry', 6)
274
+ def _reduce_1(val, _values, result)
275
+ result = val[1]
276
+ result
277
+ end
278
+ .,.,
279
+
280
+ module_eval(<<'.,.,', 'sts_parse.ry', 8)
281
+ def _reduce_2(val, _values, result)
282
+ val[0] << val[2] ; result = val[0]
283
+ result
284
+ end
285
+ .,.,
286
+
287
+ module_eval(<<'.,.,', 'sts_parse.ry', 9)
288
+ def _reduce_3(val, _values, result)
289
+ result = Array.new(1, val[0] )
290
+ result
291
+ end
292
+ .,.,
293
+
294
+ module_eval(<<'.,.,', 'sts_parse.ry', 11)
295
+ def _reduce_4(val, _values, result)
296
+ result = val[0]
297
+ result
298
+ end
299
+ .,.,
300
+
301
+ module_eval(<<'.,.,', 'sts_parse.ry', 12)
302
+ def _reduce_5(val, _values, result)
303
+ result = val[0]
304
+ result
305
+ end
306
+ .,.,
307
+
308
+ module_eval(<<'.,.,', 'sts_parse.ry', 13)
309
+ def _reduce_6(val, _values, result)
310
+ result = val[0]
311
+ result
312
+ end
313
+ .,.,
314
+
315
+ module_eval(<<'.,.,', 'sts_parse.ry', 15)
316
+ def _reduce_7(val, _values, result)
317
+ result = GramNode.new( :TOP_BLOCK, val[0], val[1] )
318
+ result
319
+ end
320
+ .,.,
321
+
322
+ module_eval(<<'.,.,', 'sts_parse.ry', 17)
323
+ def _reduce_8(val, _values, result)
324
+ val[1] ; result = GramNode.new( :DATA_BLOCK, GramNode.new(:ident, val[2]), val[3], GramNode.new( :string, val[5]))
325
+ result
326
+ end
327
+ .,.,
328
+
329
+ module_eval(<<'.,.,', 'sts_parse.ry', 19)
330
+ def _reduce_9(val, _values, result)
331
+ result = GramNode.new( :PROC_BLOCK, GramNode.new(:ident, val[1]), val[2], val[4])
332
+ result
333
+ end
334
+ .,.,
335
+
336
+ module_eval(<<'.,.,', 'sts_parse.ry', 21)
337
+ def _reduce_10(val, _values, result)
338
+ result = nil
339
+ result
340
+ end
341
+ .,.,
342
+
343
+ module_eval(<<'.,.,', 'sts_parse.ry', 22)
344
+ def _reduce_11(val, _values, result)
345
+ result = Array.new(1, val[0])
346
+ result
347
+ end
348
+ .,.,
349
+
350
+ module_eval(<<'.,.,', 'sts_parse.ry', 23)
351
+ def _reduce_12(val, _values, result)
352
+ val[0] << val[1]; result = val[0]
353
+ result
354
+ end
355
+ .,.,
356
+
357
+ module_eval(<<'.,.,', 'sts_parse.ry', 25)
358
+ def _reduce_13(val, _values, result)
359
+ result = val[0]
360
+ result
361
+ end
362
+ .,.,
363
+
364
+ module_eval(<<'.,.,', 'sts_parse.ry', 26)
365
+ def _reduce_14(val, _values, result)
366
+ result = val[0]
367
+ result
368
+ end
369
+ .,.,
370
+
371
+ module_eval(<<'.,.,', 'sts_parse.ry', 28)
372
+ def _reduce_15(val, _values, result)
373
+ result = nil
374
+ result
375
+ end
376
+ .,.,
377
+
378
+ module_eval(<<'.,.,', 'sts_parse.ry', 29)
379
+ def _reduce_16(val, _values, result)
380
+ result = val[1]
381
+ result
382
+ end
383
+ .,.,
384
+
385
+ module_eval(<<'.,.,', 'sts_parse.ry', 31)
386
+ def _reduce_17(val, _values, result)
387
+ result = nil
388
+ result
389
+ end
390
+ .,.,
391
+
392
+ module_eval(<<'.,.,', 'sts_parse.ry', 32)
393
+ def _reduce_18(val, _values, result)
394
+ result = val[0]
395
+ result
396
+ end
397
+ .,.,
398
+
399
+ module_eval(<<'.,.,', 'sts_parse.ry', 34)
400
+ def _reduce_19(val, _values, result)
401
+ result = nil
402
+ result
403
+ end
404
+ .,.,
405
+
406
+ module_eval(<<'.,.,', 'sts_parse.ry', 35)
407
+ def _reduce_20(val, _values, result)
408
+ result = val[0]
409
+ result
410
+ end
411
+ .,.,
412
+
413
+ module_eval(<<'.,.,', 'sts_parse.ry', 37)
414
+ def _reduce_21(val, _values, result)
415
+ val[0] << val[1]; result = val[0]
416
+ result
417
+ end
418
+ .,.,
419
+
420
+ module_eval(<<'.,.,', 'sts_parse.ry', 38)
421
+ def _reduce_22(val, _values, result)
422
+ result = Array.new(1, val[0])
423
+ result
424
+ end
425
+ .,.,
426
+
427
+ module_eval(<<'.,.,', 'sts_parse.ry', 40)
428
+ def _reduce_23(val, _values, result)
429
+ result = val[0]
430
+ result
431
+ end
432
+ .,.,
433
+
434
+ module_eval(<<'.,.,', 'sts_parse.ry', 41)
435
+ def _reduce_24(val, _values, result)
436
+ result = val[0]
437
+ result
438
+ end
439
+ .,.,
440
+
441
+ module_eval(<<'.,.,', 'sts_parse.ry', 43)
442
+ def _reduce_25(val, _values, result)
443
+ result = GramNode.new(:option, val[0], true )
444
+ result
445
+ end
446
+ .,.,
447
+
448
+ module_eval(<<'.,.,', 'sts_parse.ry', 45)
449
+ def _reduce_26(val, _values, result)
450
+ result = GramNode.new(:option, val[0], val[2])
451
+ result
452
+ end
453
+ .,.,
454
+
455
+ module_eval(<<'.,.,', 'sts_parse.ry', 47)
456
+ def _reduce_27(val, _values, result)
457
+ result = GramNode.new(:num , val[0])
458
+ result
459
+ end
460
+ .,.,
461
+
462
+ module_eval(<<'.,.,', 'sts_parse.ry', 48)
463
+ def _reduce_28(val, _values, result)
464
+ result = GramNode.new(:string, val[0])
465
+ result
466
+ end
467
+ .,.,
468
+
469
+ module_eval(<<'.,.,', 'sts_parse.ry', 49)
470
+ def _reduce_29(val, _values, result)
471
+ result = GramNode.new(:ident , val[0])
472
+ result
473
+ end
474
+ .,.,
475
+
476
+ module_eval(<<'.,.,', 'sts_parse.ry', 51)
477
+ def _reduce_30(val, _values, result)
478
+ val[0] << val[2]; result = val[0]
479
+ result
480
+ end
481
+ .,.,
482
+
483
+ module_eval(<<'.,.,', 'sts_parse.ry', 52)
484
+ def _reduce_31(val, _values, result)
485
+ result = Array.new(1, val[0])
486
+ result
487
+ end
488
+ .,.,
489
+
490
+ module_eval(<<'.,.,', 'sts_parse.ry', 54)
491
+ def _reduce_32(val, _values, result)
492
+ result = GramNode.new( :proc_stmt , GramNode.new(:ident, val[0]) , val[1])
493
+ result
494
+ end
495
+ .,.,
496
+
497
+ module_eval(<<'.,.,', 'sts_parse.ry', 56)
498
+ def _reduce_33(val, _values, result)
499
+ result = nil
500
+ result
501
+ end
502
+ .,.,
503
+
504
+ module_eval(<<'.,.,', 'sts_parse.ry', 57)
505
+ def _reduce_34(val, _values, result)
506
+ result = val[0]
507
+ result
508
+ end
509
+ .,.,
510
+
511
+ module_eval(<<'.,.,', 'sts_parse.ry', 59)
512
+ def _reduce_35(val, _values, result)
513
+ val[0] << val[1] ; result = val[0]
514
+ result
515
+ end
516
+ .,.,
517
+
518
+ module_eval(<<'.,.,', 'sts_parse.ry', 60)
519
+ def _reduce_36(val, _values, result)
520
+ result = Array.new(1, val[0] )
521
+ result
522
+ end
523
+ .,.,
524
+
525
+ module_eval(<<'.,.,', 'sts_parse.ry', 62)
526
+ def _reduce_37(val, _values, result)
527
+ result = GramNode.new(:ident , val[0])
528
+ result
529
+ end
530
+ .,.,
531
+
532
+ module_eval(<<'.,.,', 'sts_parse.ry', 63)
533
+ def _reduce_38(val, _values, result)
534
+ result = GramNode.new(:num , val[0])
535
+ result
536
+ end
537
+ .,.,
538
+
539
+ module_eval(<<'.,.,', 'sts_parse.ry', 64)
540
+ def _reduce_39(val, _values, result)
541
+ result = GramNode.new(:string, val[0])
542
+ result
543
+ end
544
+ .,.,
545
+
546
+ module_eval(<<'.,.,', 'sts_parse.ry', 65)
547
+ def _reduce_40(val, _values, result)
548
+ result = GramNode.new(:sign, val[0])
549
+ result
550
+ end
551
+ .,.,
552
+
553
+ module_eval(<<'.,.,', 'sts_parse.ry', 66)
554
+ def _reduce_41(val, _values, result)
555
+ result = GramNode.new(:sign, val[0])
556
+ result
557
+ end
558
+ .,.,
559
+
560
+ module_eval(<<'.,.,', 'sts_parse.ry', 67)
561
+ def _reduce_42(val, _values, result)
562
+ result = GramNode.new(:sign, val[0])
563
+ result
564
+ end
565
+ .,.,
566
+
567
+ module_eval(<<'.,.,', 'sts_parse.ry', 68)
568
+ def _reduce_43(val, _values, result)
569
+ result = GramNode.new(:sign, val[0])
570
+ result
571
+ end
572
+ .,.,
573
+
574
+ module_eval(<<'.,.,', 'sts_parse.ry', 69)
575
+ def _reduce_44(val, _values, result)
576
+ result = GramNode.new(:sign, val[0])
577
+ result
578
+ end
579
+ .,.,
580
+
581
+ module_eval(<<'.,.,', 'sts_parse.ry', 70)
582
+ def _reduce_45(val, _values, result)
583
+ result = GramNode.new(:sign, val[0])
584
+ result
585
+ end
586
+ .,.,
587
+
588
+ module_eval(<<'.,.,', 'sts_parse.ry', 71)
589
+ def _reduce_46(val, _values, result)
590
+ result = GramNode.new(:sign, val[0])
591
+ result
592
+ end
593
+ .,.,
594
+
595
+ module_eval(<<'.,.,', 'sts_parse.ry', 72)
596
+ def _reduce_47(val, _values, result)
597
+ result = GramNode.new(:sign, val[0])
598
+ result
599
+ end
600
+ .,.,
601
+
602
+ module_eval(<<'.,.,', 'sts_parse.ry', 73)
603
+ def _reduce_48(val, _values, result)
604
+ result = GramNode.new(:sign, val[0])
605
+ result
606
+ end
607
+ .,.,
608
+
609
+ module_eval(<<'.,.,', 'sts_parse.ry', 74)
610
+ def _reduce_49(val, _values, result)
611
+ result = GramNode.new(:sign, val[0])
612
+ result
613
+ end
614
+ .,.,
615
+
616
+ module_eval(<<'.,.,', 'sts_parse.ry', 75)
617
+ def _reduce_50(val, _values, result)
618
+ result = GramNode.new(:sign, val[0])
619
+ result
620
+ end
621
+ .,.,
622
+
623
+ module_eval(<<'.,.,', 'sts_parse.ry', 76)
624
+ def _reduce_51(val, _values, result)
625
+ result = GramNode.new(:sign, val[0])
626
+ result
627
+ end
628
+ .,.,
629
+
630
+ module_eval(<<'.,.,', 'sts_parse.ry', 77)
631
+ def _reduce_52(val, _values, result)
632
+ result = GramNode.new(:sign, val[0])
633
+ result
634
+ end
635
+ .,.,
636
+
637
+ module_eval(<<'.,.,', 'sts_parse.ry', 78)
638
+ def _reduce_53(val, _values, result)
639
+ result = GramNode.new(:sign, val[0])
640
+ result
641
+ end
642
+ .,.,
643
+
644
+ module_eval(<<'.,.,', 'sts_parse.ry', 79)
645
+ def _reduce_54(val, _values, result)
646
+ result = GramNode.new(:sign, val[0])
647
+ result
648
+ end
649
+ .,.,
650
+
651
+ # reduce 55 omitted
652
+
653
+ # reduce 56 omitted
654
+
655
+ # reduce 57 omitted
656
+
657
+ # reduce 58 omitted
658
+
659
+ def _reduce_none(val, _values, result)
660
+ val[0]
661
+ end
662
+
663
+ end # class STSParser
664
+
665
+
666
+ require_relative("sts_gram_node.rb")
667
+
668
+ module STSParserDriver
669
+ def self.run( tokens )
670
+ parser = STSParser.new
671
+
672
+ begin
673
+ gram_tree = parser.parse( tokens )
674
+ rescue Racc::ParseError => e
675
+ puts "Parser error detected"
676
+ puts e.message
677
+ runtime_error = RuntimeError.new( e.message );
678
+ runtime_error.set_backtrace( e.backtrace ); e.set_backtrace([])
679
+ raise runtime_error
680
+ end
681
+ end
682
+ end