csv_plus_plus 0.1.0 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -1
  3. data/README.md +18 -62
  4. data/lib/csv_plus_plus/benchmarked_compiler.rb +62 -0
  5. data/lib/csv_plus_plus/can_define_references.rb +88 -0
  6. data/lib/csv_plus_plus/can_resolve_references.rb +8 -0
  7. data/lib/csv_plus_plus/cell.rb +3 -3
  8. data/lib/csv_plus_plus/cli.rb +24 -7
  9. data/lib/csv_plus_plus/color.rb +12 -6
  10. data/lib/csv_plus_plus/compiler.rb +156 -0
  11. data/lib/csv_plus_plus/data_validation.rb +138 -0
  12. data/lib/csv_plus_plus/{language → entities}/ast_builder.rb +5 -7
  13. data/lib/csv_plus_plus/entities/boolean.rb +31 -0
  14. data/lib/csv_plus_plus/{language → entities}/builtins.rb +2 -4
  15. data/lib/csv_plus_plus/entities/cell_reference.rb +60 -0
  16. data/lib/csv_plus_plus/entities/date.rb +30 -0
  17. data/lib/csv_plus_plus/entities/entity.rb +84 -0
  18. data/lib/csv_plus_plus/entities/function.rb +33 -0
  19. data/lib/csv_plus_plus/entities/function_call.rb +35 -0
  20. data/lib/csv_plus_plus/entities/number.rb +34 -0
  21. data/lib/csv_plus_plus/entities/runtime_value.rb +26 -0
  22. data/lib/csv_plus_plus/entities/string.rb +29 -0
  23. data/lib/csv_plus_plus/entities/variable.rb +25 -0
  24. data/lib/csv_plus_plus/entities.rb +33 -0
  25. data/lib/csv_plus_plus/error/error.rb +10 -0
  26. data/lib/csv_plus_plus/error/formula_syntax_error.rb +36 -0
  27. data/lib/csv_plus_plus/error/modifier_syntax_error.rb +27 -0
  28. data/lib/csv_plus_plus/error/modifier_validation_error.rb +49 -0
  29. data/lib/csv_plus_plus/{language → error}/syntax_error.rb +6 -14
  30. data/lib/csv_plus_plus/error/writer_error.rb +9 -0
  31. data/lib/csv_plus_plus/error.rb +9 -2
  32. data/lib/csv_plus_plus/expand.rb +3 -1
  33. data/lib/csv_plus_plus/google_api_client.rb +4 -0
  34. data/lib/csv_plus_plus/lexer/lexer.rb +19 -11
  35. data/lib/csv_plus_plus/modifier/conditional_formatting.rb +17 -0
  36. data/lib/csv_plus_plus/modifier.rb +73 -70
  37. data/lib/csv_plus_plus/options.rb +3 -0
  38. data/lib/csv_plus_plus/parser/cell_value.tab.rb +305 -0
  39. data/lib/csv_plus_plus/parser/code_section.tab.rb +410 -0
  40. data/lib/csv_plus_plus/parser/modifier.tab.rb +484 -0
  41. data/lib/csv_plus_plus/references.rb +68 -0
  42. data/lib/csv_plus_plus/row.rb +0 -3
  43. data/lib/csv_plus_plus/runtime.rb +199 -0
  44. data/lib/csv_plus_plus/scope.rb +196 -0
  45. data/lib/csv_plus_plus/template.rb +21 -5
  46. data/lib/csv_plus_plus/validated_modifier.rb +164 -0
  47. data/lib/csv_plus_plus/version.rb +1 -1
  48. data/lib/csv_plus_plus/writer/file_backer_upper.rb +6 -4
  49. data/lib/csv_plus_plus/writer/google_sheet_builder.rb +24 -29
  50. data/lib/csv_plus_plus/writer/google_sheet_modifier.rb +33 -12
  51. data/lib/csv_plus_plus/writer/rubyxl_builder.rb +3 -6
  52. data/lib/csv_plus_plus.rb +41 -16
  53. metadata +34 -24
  54. data/lib/csv_plus_plus/code_section.rb +0 -68
  55. data/lib/csv_plus_plus/language/benchmarked_compiler.rb +0 -65
  56. data/lib/csv_plus_plus/language/cell_value.tab.rb +0 -332
  57. data/lib/csv_plus_plus/language/code_section.tab.rb +0 -442
  58. data/lib/csv_plus_plus/language/compiler.rb +0 -157
  59. data/lib/csv_plus_plus/language/entities/boolean.rb +0 -33
  60. data/lib/csv_plus_plus/language/entities/cell_reference.rb +0 -33
  61. data/lib/csv_plus_plus/language/entities/entity.rb +0 -86
  62. data/lib/csv_plus_plus/language/entities/function.rb +0 -35
  63. data/lib/csv_plus_plus/language/entities/function_call.rb +0 -26
  64. data/lib/csv_plus_plus/language/entities/number.rb +0 -36
  65. data/lib/csv_plus_plus/language/entities/runtime_value.rb +0 -28
  66. data/lib/csv_plus_plus/language/entities/string.rb +0 -31
  67. data/lib/csv_plus_plus/language/entities/variable.rb +0 -25
  68. data/lib/csv_plus_plus/language/entities.rb +0 -28
  69. data/lib/csv_plus_plus/language/references.rb +0 -70
  70. data/lib/csv_plus_plus/language/runtime.rb +0 -205
  71. data/lib/csv_plus_plus/language/scope.rb +0 -188
  72. data/lib/csv_plus_plus/modifier.tab.rb +0 -907
@@ -0,0 +1,305 @@
1
+ #
2
+ # DO NOT MODIFY!!!!
3
+ # This file is automatically generated by Racc 1.6.2
4
+ # from Racc grammar file "".
5
+ #
6
+
7
+ require 'racc/parser.rb'
8
+
9
+ require_relative '../lexer'
10
+ require_relative '../entities/ast_builder'
11
+
12
+ module CSVPlusPlus
13
+ module Parser
14
+ class CellValue < Racc::Parser
15
+
16
+ module_eval(<<'...end cell_value.y/module_eval...', 'cell_value.y', 49)
17
+ include ::CSVPlusPlus::Entities::ASTBuilder
18
+ include ::CSVPlusPlus::Lexer
19
+
20
+ protected
21
+
22
+ def anything_to_parse?(input)
23
+ input.strip.start_with?('=')
24
+ end
25
+
26
+ def parse_subject
27
+ 'cell value'
28
+ end
29
+
30
+ def return_value
31
+ @ast
32
+ end
33
+
34
+ def tokenizer
35
+ ::CSVPlusPlus::Lexer::Tokenizer.new(
36
+ catchall: /[\{\}\(\),=]/,
37
+ ignore: /\s+/,
38
+ tokens: [
39
+ TOKEN_LIBRARY[:TRUE],
40
+ TOKEN_LIBRARY[:FALSE],
41
+ TOKEN_LIBRARY[:NUMBER],
42
+ TOKEN_LIBRARY[:STRING],
43
+ TOKEN_LIBRARY[:INFIX_OP],
44
+ TOKEN_LIBRARY[:VAR_REF],
45
+ TOKEN_LIBRARY[:ID]
46
+ ]
47
+ )
48
+ end
49
+ ...end cell_value.y/module_eval...
50
+ ##### State transition tables begin ###
51
+
52
+ racc_action_table = [
53
+ 7, 21, 15, 25, 2, 16, 3, 7, 14, 18,
54
+ 19, 16, 16, 16, 7, 12, 13, 16, 10, 9,
55
+ 11, 8, 12, 13, 26, 10, 9, 11, 8, 12,
56
+ 13, nil, 10, 9, 11, 8, 7, 23, nil, nil,
57
+ nil, nil, nil, 7, nil, nil, nil, nil, nil, nil,
58
+ nil, 12, 13, nil, 10, 9, 11, 8, 12, 13,
59
+ nil, 10, 9, 11, 8 ]
60
+
61
+ racc_action_check = [
62
+ 2, 17, 4, 22, 0, 4, 1, 7, 3, 8,
63
+ 13, 20, 24, 27, 16, 2, 2, 17, 2, 2,
64
+ 2, 2, 7, 7, 22, 7, 7, 7, 7, 16,
65
+ 16, nil, 16, 16, 16, 16, 19, 19, nil, nil,
66
+ nil, nil, nil, 26, nil, nil, nil, nil, nil, nil,
67
+ nil, 19, 19, nil, 19, 19, 19, 19, 26, 26,
68
+ nil, 26, 26, 26, 26 ]
69
+
70
+ racc_action_pointer = [
71
+ -6, 6, -2, 8, -14, nil, nil, 5, -9, nil,
72
+ nil, nil, nil, 8, nil, nil, 12, -2, nil, 34,
73
+ -8, nil, 0, nil, -7, nil, 41, -6 ]
74
+
75
+ racc_action_default = [
76
+ -16, -16, -16, -16, -16, -2, -3, -16, -16, -6,
77
+ -7, -8, -9, -10, 28, -1, -16, -16, -5, -16,
78
+ -15, -4, -16, -12, -14, -11, -16, -13 ]
79
+
80
+ racc_goto_table = [
81
+ 4, 1, 22, nil, nil, 17, nil, nil, nil, nil,
82
+ nil, nil, nil, nil, 20, nil, nil, 24, nil, nil,
83
+ nil, nil, nil, nil, 27 ]
84
+
85
+ racc_goto_check = [
86
+ 2, 1, 5, nil, nil, 2, nil, nil, nil, nil,
87
+ nil, nil, nil, nil, 2, nil, nil, 2, nil, nil,
88
+ nil, nil, nil, nil, 2 ]
89
+
90
+ racc_goto_pointer = [
91
+ nil, 1, -2, nil, nil, -17 ]
92
+
93
+ racc_goto_default = [
94
+ nil, nil, nil, 5, 6, nil ]
95
+
96
+ racc_reduce_table = [
97
+ 0, 0, :racc_error,
98
+ 3, 26, :_reduce_1,
99
+ 1, 27, :_reduce_none,
100
+ 1, 27, :_reduce_none,
101
+ 3, 27, :_reduce_4,
102
+ 2, 27, :_reduce_5,
103
+ 1, 27, :_reduce_6,
104
+ 1, 27, :_reduce_7,
105
+ 1, 27, :_reduce_8,
106
+ 1, 27, :_reduce_9,
107
+ 1, 27, :_reduce_10,
108
+ 4, 28, :_reduce_11,
109
+ 3, 28, :_reduce_12,
110
+ 3, 30, :_reduce_13,
111
+ 1, 30, :_reduce_14,
112
+ 3, 29, :_reduce_15 ]
113
+
114
+ racc_reduce_n = 16
115
+
116
+ racc_shift_n = 28
117
+
118
+ racc_token_table = {
119
+ false => 0,
120
+ :error => 1,
121
+ "(" => 2,
122
+ ")" => 3,
123
+ "^" => 4,
124
+ "*" => 5,
125
+ "/" => 6,
126
+ "+" => 7,
127
+ "-" => 8,
128
+ "&" => 9,
129
+ "=" => 10,
130
+ "<" => 11,
131
+ ">" => 12,
132
+ "<=" => 13,
133
+ ">=" => 14,
134
+ "<>" => 15,
135
+ :EOL => 16,
136
+ :FALSE => 17,
137
+ :ID => 18,
138
+ :INFIX_OP => 19,
139
+ :NUMBER => 20,
140
+ :STRING => 21,
141
+ :TRUE => 22,
142
+ :VAR_REF => 23,
143
+ "," => 24 }
144
+
145
+ racc_nt_base = 25
146
+
147
+ racc_use_result_var = true
148
+
149
+ Racc_arg = [
150
+ racc_action_table,
151
+ racc_action_check,
152
+ racc_action_default,
153
+ racc_action_pointer,
154
+ racc_goto_table,
155
+ racc_goto_check,
156
+ racc_goto_default,
157
+ racc_goto_pointer,
158
+ racc_nt_base,
159
+ racc_reduce_table,
160
+ racc_token_table,
161
+ racc_shift_n,
162
+ racc_reduce_n,
163
+ racc_use_result_var ]
164
+
165
+ Racc_token_to_s_table = [
166
+ "$end",
167
+ "error",
168
+ "\"(\"",
169
+ "\")\"",
170
+ "\"^\"",
171
+ "\"*\"",
172
+ "\"/\"",
173
+ "\"+\"",
174
+ "\"-\"",
175
+ "\"&\"",
176
+ "\"=\"",
177
+ "\"<\"",
178
+ "\">\"",
179
+ "\"<=\"",
180
+ "\">=\"",
181
+ "\"<>\"",
182
+ "EOL",
183
+ "FALSE",
184
+ "ID",
185
+ "INFIX_OP",
186
+ "NUMBER",
187
+ "STRING",
188
+ "TRUE",
189
+ "VAR_REF",
190
+ "\",\"",
191
+ "$start",
192
+ "cell_value",
193
+ "exp",
194
+ "fn_call",
195
+ "infix_fn_call",
196
+ "fn_call_args" ]
197
+
198
+ Racc_debug_parser = false
199
+
200
+ ##### State transition tables end #####
201
+
202
+ # reduce 0 omitted
203
+
204
+ module_eval(<<'.,.,', 'cell_value.y', 21)
205
+ def _reduce_1(val, _values, result)
206
+ @ast = val[1]
207
+ result
208
+ end
209
+ .,.,
210
+
211
+ # reduce 2 omitted
212
+
213
+ # reduce 3 omitted
214
+
215
+ module_eval(<<'.,.,', 'cell_value.y', 25)
216
+ def _reduce_4(val, _values, result)
217
+ result = val[1]
218
+ result
219
+ end
220
+ .,.,
221
+
222
+ module_eval(<<'.,.,', 'cell_value.y', 26)
223
+ def _reduce_5(val, _values, result)
224
+ result = variable(val[1])
225
+ result
226
+ end
227
+ .,.,
228
+
229
+ module_eval(<<'.,.,', 'cell_value.y', 27)
230
+ def _reduce_6(val, _values, result)
231
+ result = string(val[0])
232
+ result
233
+ end
234
+ .,.,
235
+
236
+ module_eval(<<'.,.,', 'cell_value.y', 28)
237
+ def _reduce_7(val, _values, result)
238
+ result = number(val[0])
239
+ result
240
+ end
241
+ .,.,
242
+
243
+ module_eval(<<'.,.,', 'cell_value.y', 29)
244
+ def _reduce_8(val, _values, result)
245
+ result = boolean(true)
246
+ result
247
+ end
248
+ .,.,
249
+
250
+ module_eval(<<'.,.,', 'cell_value.y', 30)
251
+ def _reduce_9(val, _values, result)
252
+ result = boolean(false)
253
+ result
254
+ end
255
+ .,.,
256
+
257
+ module_eval(<<'.,.,', 'cell_value.y', 31)
258
+ def _reduce_10(val, _values, result)
259
+ result = cell_reference(val[0])
260
+ result
261
+ end
262
+ .,.,
263
+
264
+ module_eval(<<'.,.,', 'cell_value.y', 33)
265
+ def _reduce_11(val, _values, result)
266
+ result = function_call(val[0], val[2])
267
+ result
268
+ end
269
+ .,.,
270
+
271
+ module_eval(<<'.,.,', 'cell_value.y', 34)
272
+ def _reduce_12(val, _values, result)
273
+ result = function_call(val[0], [])
274
+ result
275
+ end
276
+ .,.,
277
+
278
+ module_eval(<<'.,.,', 'cell_value.y', 36)
279
+ def _reduce_13(val, _values, result)
280
+ result = val[0] << val[2]
281
+ result
282
+ end
283
+ .,.,
284
+
285
+ module_eval(<<'.,.,', 'cell_value.y', 37)
286
+ def _reduce_14(val, _values, result)
287
+ result = [val[0]]
288
+ result
289
+ end
290
+ .,.,
291
+
292
+ module_eval(<<'.,.,', 'cell_value.y', 39)
293
+ def _reduce_15(val, _values, result)
294
+ result = function_call(val[1], [val[0], val[2]], infix: true)
295
+ result
296
+ end
297
+ .,.,
298
+
299
+ def _reduce_none(val, _values, result)
300
+ val[0]
301
+ end
302
+
303
+ end # class CellValue
304
+ end # module Parser
305
+ end # module CSVPlusPlus
@@ -0,0 +1,410 @@
1
+ #
2
+ # DO NOT MODIFY!!!!
3
+ # This file is automatically generated by Racc 1.6.2
4
+ # from Racc grammar file "".
5
+ #
6
+
7
+ require 'racc/parser.rb'
8
+
9
+ require_relative '../lexer'
10
+ require_relative '../entities/ast_builder'
11
+
12
+ module CSVPlusPlus
13
+ module Parser
14
+ class CodeSection < Racc::Parser
15
+
16
+ module_eval(<<'...end code_section.y/module_eval...', 'code_section.y', 69)
17
+ include ::CSVPlusPlus::Lexer
18
+ include ::CSVPlusPlus::Entities::ASTBuilder
19
+
20
+ def initialize(scope)
21
+ super()
22
+ @scope = scope
23
+ end
24
+
25
+ protected
26
+
27
+ def anything_to_parse?(input)
28
+ @rest = input.strip
29
+
30
+ return !@rest.index(::CSVPlusPlus::Lexer::END_OF_CODE_SECTION).nil?
31
+ end
32
+
33
+ def parse_subject
34
+ 'code section'
35
+ end
36
+
37
+ def tokenizer
38
+ ::CSVPlusPlus::Lexer::Tokenizer.new(
39
+ catchall: /[\{\}\(\),]/, # TODO: do I even need this (oh I think brackets are for arrays
40
+ ignore: /\s+|\#[^\n]+\n/,
41
+ stop_fn: lambda do |scanner|
42
+ return false unless scanner.scan(/#{::CSVPlusPlus::Lexer::END_OF_CODE_SECTION}/)
43
+
44
+ @tokens << [:END_OF_CODE, scanner.matched]
45
+ @rest = scanner.rest.strip
46
+ true
47
+ end,
48
+ tokens: [
49
+ [/:=/, :ASSIGN],
50
+ [/def/, :FN_DEF],
51
+ TOKEN_LIBRARY[:TRUE],
52
+ TOKEN_LIBRARY[:FALSE],
53
+ TOKEN_LIBRARY[:NUMBER],
54
+ TOKEN_LIBRARY[:STRING],
55
+ TOKEN_LIBRARY[:INFIX_OP],
56
+ TOKEN_LIBRARY[:VAR_REF],
57
+ TOKEN_LIBRARY[:ID]
58
+ ],
59
+ )
60
+ end
61
+
62
+ def return_value
63
+ @rest
64
+ end
65
+
66
+ private
67
+
68
+ def def_function(id, arguments, body)
69
+ fn_def = function(id, arguments, body)
70
+ @scope.def_function(fn_def.id, fn_def)
71
+ end
72
+
73
+ def def_variable(id, ast)
74
+ @scope.def_variable(id, ast)
75
+ end
76
+ ...end code_section.y/module_eval...
77
+ ##### State transition tables begin ###
78
+
79
+ racc_action_table = [
80
+ 20, 38, 9, 12, 13, 14, 16, 20, 31, 33,
81
+ 34, 31, 42, 31, 20, 31, 29, 25, 26, 31,
82
+ 23, 22, 24, 21, 25, 26, 20, 23, 22, 24,
83
+ 21, 25, 26, 30, 23, 22, 24, 21, 20, 41,
84
+ 31, nil, 35, 25, 26, 20, 23, 22, 24, 21,
85
+ 3, 10, nil, 7, 7, 25, 26, 36, 23, 22,
86
+ 24, 21, 25, 26, 43, 23, 22, 24, 21, 8,
87
+ 8, nil, nil, nil, nil, nil, nil, nil, nil, 44 ]
88
+
89
+ racc_action_check = [
90
+ 13, 32, 1, 7, 8, 9, 12, 15, 17, 21,
91
+ 26, 27, 36, 37, 20, 39, 16, 13, 13, 32,
92
+ 13, 13, 13, 13, 15, 15, 31, 15, 15, 15,
93
+ 15, 20, 20, 16, 20, 20, 20, 20, 34, 34,
94
+ 45, nil, 28, 31, 31, 44, 31, 31, 31, 31,
95
+ 0, 2, nil, 0, 2, 34, 34, 28, 34, 34,
96
+ 34, 34, 44, 44, 40, 44, 44, 44, 44, 0,
97
+ 2, nil, nil, nil, nil, nil, nil, nil, nil, 40 ]
98
+
99
+ racc_action_pointer = [
100
+ 48, 2, 49, nil, nil, nil, nil, -18, -2, 5,
101
+ nil, nil, 3, -3, nil, 4, 12, -14, nil, nil,
102
+ 11, -12, nil, nil, nil, nil, 7, -11, 38, nil,
103
+ nil, 23, -3, nil, 35, nil, -9, -9, nil, -7,
104
+ 60, nil, nil, nil, 42, 18 ]
105
+
106
+ racc_action_default = [
107
+ -27, -27, -27, -2, -4, -5, -6, -27, -27, -27,
108
+ -1, -3, -27, -27, 46, -27, -27, -12, -13, -14,
109
+ -27, -27, -17, -18, -19, -20, -21, -7, -27, -9,
110
+ -11, -27, -27, -16, -27, -8, -27, -22, -15, -26,
111
+ -27, -24, -10, -23, -27, -25 ]
112
+
113
+ racc_goto_table = [
114
+ 17, 4, 27, 11, 1, 2, 15, 32, 28, 40,
115
+ nil, nil, nil, nil, nil, nil, nil, nil, 37, nil,
116
+ nil, 39, nil, nil, nil, nil, nil, nil, nil, nil,
117
+ nil, 45 ]
118
+
119
+ racc_goto_check = [
120
+ 7, 3, 7, 3, 1, 2, 6, 7, 8, 11,
121
+ nil, nil, nil, nil, nil, nil, nil, nil, 7, nil,
122
+ nil, 7, nil, nil, nil, nil, nil, nil, nil, nil,
123
+ nil, 7 ]
124
+
125
+ racc_goto_pointer = [
126
+ nil, 4, 5, 1, nil, nil, -6, -13, -8, nil,
127
+ nil, -25 ]
128
+
129
+ racc_goto_default = [
130
+ nil, nil, nil, nil, 5, 6, nil, nil, nil, 18,
131
+ 19, nil ]
132
+
133
+ racc_reduce_table = [
134
+ 0, 0, :racc_error,
135
+ 2, 28, :_reduce_none,
136
+ 1, 28, :_reduce_none,
137
+ 2, 29, :_reduce_none,
138
+ 1, 29, :_reduce_none,
139
+ 1, 30, :_reduce_none,
140
+ 1, 30, :_reduce_none,
141
+ 4, 31, :_reduce_7,
142
+ 3, 33, :_reduce_8,
143
+ 2, 33, :_reduce_9,
144
+ 3, 35, :_reduce_10,
145
+ 1, 35, :_reduce_11,
146
+ 3, 32, :_reduce_12,
147
+ 1, 34, :_reduce_none,
148
+ 1, 34, :_reduce_none,
149
+ 3, 34, :_reduce_15,
150
+ 2, 34, :_reduce_16,
151
+ 1, 34, :_reduce_17,
152
+ 1, 34, :_reduce_18,
153
+ 1, 34, :_reduce_19,
154
+ 1, 34, :_reduce_20,
155
+ 1, 34, :_reduce_21,
156
+ 3, 37, :_reduce_22,
157
+ 4, 36, :_reduce_23,
158
+ 3, 36, :_reduce_24,
159
+ 3, 38, :_reduce_25,
160
+ 1, 38, :_reduce_26 ]
161
+
162
+ racc_reduce_n = 27
163
+
164
+ racc_shift_n = 46
165
+
166
+ racc_token_table = {
167
+ false => 0,
168
+ :error => 1,
169
+ :END_OF_CODE => 2,
170
+ "(" => 3,
171
+ ")" => 4,
172
+ :FN_DEF => 5,
173
+ :ASSIGN => 6,
174
+ "^" => 7,
175
+ "*" => 8,
176
+ "/" => 9,
177
+ "+" => 10,
178
+ "-" => 11,
179
+ "&" => 12,
180
+ "=" => 13,
181
+ "<" => 14,
182
+ ">" => 15,
183
+ "<=" => 16,
184
+ ">=" => 17,
185
+ "<>" => 18,
186
+ "," => 19,
187
+ :FALSE => 20,
188
+ :ID => 21,
189
+ :INFIX_OP => 22,
190
+ :NUMBER => 23,
191
+ :STRING => 24,
192
+ :TRUE => 25,
193
+ :VAR_REF => 26 }
194
+
195
+ racc_nt_base = 27
196
+
197
+ racc_use_result_var = true
198
+
199
+ Racc_arg = [
200
+ racc_action_table,
201
+ racc_action_check,
202
+ racc_action_default,
203
+ racc_action_pointer,
204
+ racc_goto_table,
205
+ racc_goto_check,
206
+ racc_goto_default,
207
+ racc_goto_pointer,
208
+ racc_nt_base,
209
+ racc_reduce_table,
210
+ racc_token_table,
211
+ racc_shift_n,
212
+ racc_reduce_n,
213
+ racc_use_result_var ]
214
+
215
+ Racc_token_to_s_table = [
216
+ "$end",
217
+ "error",
218
+ "END_OF_CODE",
219
+ "\"(\"",
220
+ "\")\"",
221
+ "FN_DEF",
222
+ "ASSIGN",
223
+ "\"^\"",
224
+ "\"*\"",
225
+ "\"/\"",
226
+ "\"+\"",
227
+ "\"-\"",
228
+ "\"&\"",
229
+ "\"=\"",
230
+ "\"<\"",
231
+ "\">\"",
232
+ "\"<=\"",
233
+ "\">=\"",
234
+ "\"<>\"",
235
+ "\",\"",
236
+ "FALSE",
237
+ "ID",
238
+ "INFIX_OP",
239
+ "NUMBER",
240
+ "STRING",
241
+ "TRUE",
242
+ "VAR_REF",
243
+ "$start",
244
+ "code_section",
245
+ "code",
246
+ "def",
247
+ "fn_def",
248
+ "var_def",
249
+ "fn_def_args_or_not",
250
+ "exp",
251
+ "fn_def_args",
252
+ "fn_call",
253
+ "infix_fn_call",
254
+ "fn_call_args" ]
255
+
256
+ Racc_debug_parser = false
257
+
258
+ ##### State transition tables end #####
259
+
260
+ # reduce 0 omitted
261
+
262
+ # reduce 1 omitted
263
+
264
+ # reduce 2 omitted
265
+
266
+ # reduce 3 omitted
267
+
268
+ # reduce 4 omitted
269
+
270
+ # reduce 5 omitted
271
+
272
+ # reduce 6 omitted
273
+
274
+ module_eval(<<'.,.,', 'code_section.y', 33)
275
+ def _reduce_7(val, _values, result)
276
+ def_function(val[1], val[2], val[3])
277
+ result
278
+ end
279
+ .,.,
280
+
281
+ module_eval(<<'.,.,', 'code_section.y', 35)
282
+ def _reduce_8(val, _values, result)
283
+ result = val[1]
284
+ result
285
+ end
286
+ .,.,
287
+
288
+ module_eval(<<'.,.,', 'code_section.y', 36)
289
+ def _reduce_9(val, _values, result)
290
+ result = []
291
+ result
292
+ end
293
+ .,.,
294
+
295
+ module_eval(<<'.,.,', 'code_section.y', 38)
296
+ def _reduce_10(val, _values, result)
297
+ result = val[0] << val[2]
298
+ result
299
+ end
300
+ .,.,
301
+
302
+ module_eval(<<'.,.,', 'code_section.y', 39)
303
+ def _reduce_11(val, _values, result)
304
+ result = [val[0]]
305
+ result
306
+ end
307
+ .,.,
308
+
309
+ module_eval(<<'.,.,', 'code_section.y', 41)
310
+ def _reduce_12(val, _values, result)
311
+ def_variable(val[0], val[2])
312
+ result
313
+ end
314
+ .,.,
315
+
316
+ # reduce 13 omitted
317
+
318
+ # reduce 14 omitted
319
+
320
+ module_eval(<<'.,.,', 'code_section.y', 45)
321
+ def _reduce_15(val, _values, result)
322
+ result = val[1]
323
+ result
324
+ end
325
+ .,.,
326
+
327
+ module_eval(<<'.,.,', 'code_section.y', 46)
328
+ def _reduce_16(val, _values, result)
329
+ result = variable(val[1])
330
+ result
331
+ end
332
+ .,.,
333
+
334
+ module_eval(<<'.,.,', 'code_section.y', 47)
335
+ def _reduce_17(val, _values, result)
336
+ result = string(val[0])
337
+ result
338
+ end
339
+ .,.,
340
+
341
+ module_eval(<<'.,.,', 'code_section.y', 48)
342
+ def _reduce_18(val, _values, result)
343
+ result = number(val[0])
344
+ result
345
+ end
346
+ .,.,
347
+
348
+ module_eval(<<'.,.,', 'code_section.y', 49)
349
+ def _reduce_19(val, _values, result)
350
+ result = boolean(true)
351
+ result
352
+ end
353
+ .,.,
354
+
355
+ module_eval(<<'.,.,', 'code_section.y', 50)
356
+ def _reduce_20(val, _values, result)
357
+ result = boolean(false)
358
+ result
359
+ end
360
+ .,.,
361
+
362
+ module_eval(<<'.,.,', 'code_section.y', 51)
363
+ def _reduce_21(val, _values, result)
364
+ result = cell_reference(val[0])
365
+ result
366
+ end
367
+ .,.,
368
+
369
+ module_eval(<<'.,.,', 'code_section.y', 53)
370
+ def _reduce_22(val, _values, result)
371
+ result = function_call(val[1], [val[0], val[2]], infix: true)
372
+ result
373
+ end
374
+ .,.,
375
+
376
+ module_eval(<<'.,.,', 'code_section.y', 55)
377
+ def _reduce_23(val, _values, result)
378
+ result = function_call(val[0], val[2])
379
+ result
380
+ end
381
+ .,.,
382
+
383
+ module_eval(<<'.,.,', 'code_section.y', 56)
384
+ def _reduce_24(val, _values, result)
385
+ result = function_call(val[0], [])
386
+ result
387
+ end
388
+ .,.,
389
+
390
+ module_eval(<<'.,.,', 'code_section.y', 58)
391
+ def _reduce_25(val, _values, result)
392
+ result = val[0] << val[2]
393
+ result
394
+ end
395
+ .,.,
396
+
397
+ module_eval(<<'.,.,', 'code_section.y', 59)
398
+ def _reduce_26(val, _values, result)
399
+ result = [val[0]]
400
+ result
401
+ end
402
+ .,.,
403
+
404
+ def _reduce_none(val, _values, result)
405
+ val[0]
406
+ end
407
+
408
+ end # class CodeSection
409
+ end # module Parser
410
+ end # module CSVPlusPlus