vorax 0.4.2 → 5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. data/README.md +4 -29
  2. data/vorax.gemspec +3 -11
  3. metadata +4 -92
  4. data/.rspec +0 -1
  5. data/Rakefile +0 -30
  6. data/lib/vorax.rb +0 -60
  7. data/lib/vorax/base_funnel.rb +0 -30
  8. data/lib/vorax/output/html_convertor.rb +0 -120
  9. data/lib/vorax/output/html_funnel.rb +0 -79
  10. data/lib/vorax/output/pagezip_convertor.rb +0 -20
  11. data/lib/vorax/output/tablezip_convertor.rb +0 -22
  12. data/lib/vorax/output/vertical_convertor.rb +0 -53
  13. data/lib/vorax/output/zip_convertor.rb +0 -117
  14. data/lib/vorax/parser/argument.rb~ +0 -125
  15. data/lib/vorax/parser/conn_string.rb +0 -104
  16. data/lib/vorax/parser/grammars/alias.rb +0 -904
  17. data/lib/vorax/parser/grammars/alias.rl +0 -138
  18. data/lib/vorax/parser/grammars/column.rb +0 -454
  19. data/lib/vorax/parser/grammars/column.rl +0 -64
  20. data/lib/vorax/parser/grammars/common.rl +0 -107
  21. data/lib/vorax/parser/grammars/declare.rb +0 -9606
  22. data/lib/vorax/parser/grammars/declare.rl +0 -160
  23. data/lib/vorax/parser/grammars/for_block.rb +0 -440
  24. data/lib/vorax/parser/grammars/for_block.rl +0 -73
  25. data/lib/vorax/parser/grammars/plsql_def.rb +0 -539
  26. data/lib/vorax/parser/grammars/plsql_def.rl +0 -73
  27. data/lib/vorax/parser/grammars/statement.rb +0 -925
  28. data/lib/vorax/parser/grammars/statement.rl +0 -83
  29. data/lib/vorax/parser/parser.rb +0 -344
  30. data/lib/vorax/parser/plsql_structure.rb +0 -222
  31. data/lib/vorax/parser/plsql_walker.rb +0 -143
  32. data/lib/vorax/parser/statement_inspector.rb~ +0 -52
  33. data/lib/vorax/parser/stmt_inspector.rb +0 -78
  34. data/lib/vorax/parser/target_ref.rb +0 -110
  35. data/lib/vorax/sqlplus.rb +0 -273
  36. data/lib/vorax/version.rb +0 -7
  37. data/lib/vorax/vorax_io.rb +0 -70
  38. data/spec/column_spec.rb +0 -40
  39. data/spec/conn_string_spec.rb +0 -53
  40. data/spec/declare_spec.rb +0 -281
  41. data/spec/pagezip_spec.rb +0 -153
  42. data/spec/parser_spec.rb +0 -352
  43. data/spec/plsql_structure_spec.rb +0 -68
  44. data/spec/spec_helper.rb +0 -13
  45. data/spec/sql/create_objects.sql +0 -69
  46. data/spec/sql/dbms_crypto.spc +0 -339
  47. data/spec/sql/dbms_stats.spc +0 -4097
  48. data/spec/sql/drop_user.sql +0 -10
  49. data/spec/sql/muci.spc +0 -26
  50. data/spec/sql/setup_user.sql +0 -22
  51. data/spec/sql/test.fnc +0 -12
  52. data/spec/sql/test.pkg +0 -83
  53. data/spec/sqlplus_spec.rb +0 -52
  54. data/spec/stmt_inspector_spec.rb +0 -96
  55. data/spec/tablezip_spec.rb +0 -111
  56. data/spec/vertical_spec.rb +0 -150
@@ -1,160 +0,0 @@
1
- %%{
2
-
3
- machine declare;
4
-
5
- include common "common.rl";
6
-
7
- action start_identifier {
8
- @start = p
9
- }
10
-
11
- action end_identifier {
12
- @end = p - 1
13
- }
14
-
15
- action tail {
16
- p = p - 1
17
- te = p
18
- }
19
-
20
- prev_terminator = (';' ws*) | (ws+ (K_AS | K_IS | K_DECLARE) ws+);
21
- next_terminator = ';' | (ws+ (K_AS | K_IS) ws+);
22
- id = identifier >start_identifier %end_identifier;
23
- variable_name = id - (K_CURSOR | K_TYPE | K_FUNCTION | K_PROCEDURE | K_END | K_PRAGMA);
24
- variable_type = qualified_identifier (K_ROWTYPE | K_VARTYPE)?;
25
-
26
- constant = prev_terminator
27
- (id ws+ K_CONSTANT ws+
28
- (qualified_identifier >{@start_qi = p} %{@end_qi = p - 1})
29
- (( any )* :>> ';') %tail
30
- ) >{@start_capture = p};
31
-
32
- exception = prev_terminator
33
- (variable_name ws+ K_EXCEPTION
34
- (( any )* :>> ';') %tail
35
- ) >{@start_capture = p};
36
-
37
- cursor = prev_terminator
38
- (K_CURSOR ws+ id ws+ K_IS ws+
39
- (( any )* :>> ';') %tail
40
- ) >{@start_capture = p};
41
-
42
- type = prev_terminator
43
- (K_TYPE ws+ id ws+ K_IS ws+
44
- (qualified_identifier >{@start_qi = p} %{@end_qi = p - 1})
45
- (( any )* :>> ';') %tail
46
- ) >{@start_capture = p};
47
-
48
- var = prev_terminator
49
- (
50
- variable_name ws+ (variable_type >{@start_qi = p} %{@end_qi = p - 1})
51
- (( any )* :>> ';') %tail
52
- ) >{@start_capture = p};
53
-
54
- function = prev_terminator
55
- (
56
- K_FUNCTION ws+ id
57
- (( any )* :>> next_terminator) %tail
58
- ) >{@start_capture = p};
59
-
60
- procedure = prev_terminator
61
- (
62
- K_PROCEDURE ws+ id
63
- (( any )* :>> next_terminator) %tail
64
- ) >{@start_capture = p};
65
-
66
- main := |*
67
- squoted_string;
68
- dquoted_string;
69
- comment;
70
- constant => { add_item(:constant, te) };
71
- exception => { add_item(:exception, te) };
72
- cursor => { add_item(:cursor, te) };
73
- type => { add_item(:type, te) };
74
- var => { add_item(:variable, te) };
75
- function => { add_item(:function, te) };
76
- procedure => { add_item(:procedure, te) };
77
- any => {};
78
- *|;
79
-
80
- }%%
81
-
82
- require 'set'
83
-
84
- module Vorax
85
-
86
- module Parser
87
-
88
- class DeclareItem
89
-
90
- attr_reader :name
91
- attr_accessor :is_a, :captured_text, :type
92
-
93
- def initialize(name, is_a = nil, type = nil, captured_text = '')
94
- @name = name
95
- @is_a = is_a
96
- @type = type
97
- @captured_text = captured_text
98
- end
99
-
100
- def ==(obj)
101
- self.name == obj.name && self.is_a == obj.is_a && self.type == obj.type && self.captured_text == obj.captured_text
102
- end
103
-
104
- def debug_constructor
105
- "DeclareItem.new(#{@name.inspect}, #{@is_a.inspect}, #{@type.inspect}, #{@captured_text.inspect})"
106
- end
107
-
108
- def to_vim
109
- "{'name' : #{@name.to_s.inspect}," +
110
- " 'is_a' : #{@is_a.to_s.inspect}," +
111
- " 'type' : #{@type.to_s.inspect}," +
112
- " 'captured_text' : #{@captured_text.to_s.inspect}}"
113
- end
114
-
115
- end
116
-
117
- # A class used to parse a PLSQL package spec.
118
- class Declare
119
-
120
- attr_reader :items
121
-
122
- def initialize(declare_code)
123
- @code = Parser.remove_all_comments(declare_code)
124
- walk(@code)
125
- end
126
-
127
- # Walks the provided spec in order to compute the structure.
128
- #
129
- # param data [String] the package spec
130
- def walk(data)
131
- @items = []
132
- if data
133
- eof = data.length
134
- %% write data;
135
- %% write init;
136
- %% write exec;
137
- end
138
- end
139
-
140
- def to_vim
141
- "[ #{@items.map { |i| i.to_vim }.join(',')} ]"
142
- end
143
-
144
- private
145
-
146
- def add_item(type, te)
147
- item = DeclareItem.new(@code[(@start..@end)])
148
- item.is_a = type
149
- item.type = @code[(@start_qi..@end_qi)] if @start_qi && @end_qi
150
- item.captured_text = @code[(@start_capture..te)]
151
- @items << item
152
- @start_qi = @end_qi = nil
153
- end
154
-
155
- end
156
-
157
- end
158
-
159
- end
160
-
@@ -1,440 +0,0 @@
1
-
2
- # line 1 "lib/vorax/parser/grammars/for_block.rl"
3
-
4
- # line 47 "lib/vorax/parser/grammars/for_block.rl"
5
-
6
-
7
-
8
- module Vorax
9
-
10
- module Parser
11
-
12
- def self.describe_for(data)
13
- @cursor_var = nil
14
- @for_var = nil
15
- @expr = nil
16
- @end_pos = -1
17
- if data
18
- eof = data.length
19
-
20
- # line 21 "lib/vorax/parser/grammars/for_block.rb"
21
- class << self
22
- attr_accessor :_for_block_actions
23
- private :_for_block_actions, :_for_block_actions=
24
- end
25
- self._for_block_actions = [
26
- 0, 1, 0, 1, 1, 1, 3, 1,
27
- 4, 1, 5, 2, 6, 2
28
- ]
29
-
30
- class << self
31
- attr_accessor :_for_block_key_offsets
32
- private :_for_block_key_offsets, :_for_block_key_offsets=
33
- end
34
- self._for_block_key_offsets = [
35
- 0, 0, 2, 4, 6, 11, 24, 25,
36
- 30, 37, 38, 39, 40, 41, 43, 45,
37
- 51, 69, 70, 76, 83, 84, 85, 86,
38
- 87, 89, 91, 93, 95, 100, 101, 102,
39
- 103, 104, 106, 114, 115, 121, 129, 130,
40
- 135, 149, 164, 179, 180, 181, 182, 183,
41
- 185, 193, 199, 200, 201, 202, 209, 210,
42
- 211, 212, 213, 215, 222, 223, 224, 226,
43
- 243, 260, 277, 294, 311, 328, 343, 350,
44
- 351, 352, 353, 354, 356, 370, 371, 372,
45
- 373, 374, 376
46
- ]
47
-
48
- class << self
49
- attr_accessor :_for_block_trans_keys
50
- private :_for_block_trans_keys, :_for_block_trans_keys=
51
- end
52
- self._for_block_trans_keys = [
53
- 70, 102, 79, 111, 82, 114, 32, 45,
54
- 47, 9, 13, 32, 34, 45, 47, 95,
55
- 9, 13, 35, 36, 65, 90, 97, 122,
56
- 34, 32, 45, 47, 9, 13, 32, 45,
57
- 47, 73, 105, 9, 13, 45, 10, 42,
58
- 42, 42, 47, 78, 110, 32, 40, 45,
59
- 47, 9, 13, 32, 34, 40, 45, 47,
60
- 82, 95, 114, 9, 13, 35, 36, 48,
61
- 57, 65, 90, 97, 122, 34, 32, 45,
62
- 46, 47, 9, 13, 32, 45, 47, 76,
63
- 108, 9, 13, 45, 10, 42, 42, 42,
64
- 47, 79, 111, 79, 111, 80, 112, 32,
65
- 45, 47, 9, 13, 45, 10, 42, 42,
66
- 42, 47, 34, 95, 35, 36, 65, 90,
67
- 97, 122, 34, 32, 45, 46, 47, 9,
68
- 13, 34, 95, 35, 36, 65, 90, 97,
69
- 122, 34, 32, 45, 47, 9, 13, 32,
70
- 45, 47, 95, 9, 13, 35, 36, 48,
71
- 57, 65, 90, 97, 122, 32, 45, 46,
72
- 47, 95, 9, 13, 35, 36, 48, 57,
73
- 65, 90, 97, 122, 32, 45, 46, 47,
74
- 95, 9, 13, 35, 36, 48, 57, 65,
75
- 90, 97, 122, 45, 10, 42, 42, 42,
76
- 47, 32, 45, 46, 47, 9, 13, 48,
77
- 57, 32, 45, 46, 47, 9, 13, 45,
78
- 10, 46, 32, 45, 47, 9, 13, 48,
79
- 57, 45, 10, 42, 42, 42, 47, 32,
80
- 45, 47, 9, 13, 48, 57, 42, 42,
81
- 42, 47, 32, 45, 46, 47, 69, 95,
82
- 101, 9, 13, 35, 36, 48, 57, 65,
83
- 90, 97, 122, 32, 45, 46, 47, 86,
84
- 95, 118, 9, 13, 35, 36, 48, 57,
85
- 65, 90, 97, 122, 32, 45, 46, 47,
86
- 69, 95, 101, 9, 13, 35, 36, 48,
87
- 57, 65, 90, 97, 122, 32, 45, 46,
88
- 47, 82, 95, 114, 9, 13, 35, 36,
89
- 48, 57, 65, 90, 97, 122, 32, 45,
90
- 46, 47, 83, 95, 115, 9, 13, 35,
91
- 36, 48, 57, 65, 90, 97, 122, 32,
92
- 45, 46, 47, 69, 95, 101, 9, 13,
93
- 35, 36, 48, 57, 65, 90, 97, 122,
94
- 32, 45, 46, 47, 95, 9, 13, 35,
95
- 36, 48, 57, 65, 90, 97, 122, 32,
96
- 45, 47, 9, 13, 48, 57, 45, 10,
97
- 42, 42, 42, 47, 32, 45, 47, 95,
98
- 9, 13, 35, 36, 48, 57, 65, 90,
99
- 97, 122, 45, 10, 42, 42, 42, 47,
100
- 32, 45, 47, 9, 13, 0
101
- ]
102
-
103
- class << self
104
- attr_accessor :_for_block_single_lengths
105
- private :_for_block_single_lengths, :_for_block_single_lengths=
106
- end
107
- self._for_block_single_lengths = [
108
- 0, 2, 2, 2, 3, 5, 1, 3,
109
- 5, 1, 1, 1, 1, 2, 2, 4,
110
- 8, 1, 4, 5, 1, 1, 1, 1,
111
- 2, 2, 2, 2, 3, 1, 1, 1,
112
- 1, 2, 2, 1, 4, 2, 1, 3,
113
- 4, 5, 5, 1, 1, 1, 1, 2,
114
- 4, 4, 1, 1, 1, 3, 1, 1,
115
- 1, 1, 2, 3, 1, 1, 2, 7,
116
- 7, 7, 7, 7, 7, 5, 3, 1,
117
- 1, 1, 1, 2, 4, 1, 1, 1,
118
- 1, 2, 3
119
- ]
120
-
121
- class << self
122
- attr_accessor :_for_block_range_lengths
123
- private :_for_block_range_lengths, :_for_block_range_lengths=
124
- end
125
- self._for_block_range_lengths = [
126
- 0, 0, 0, 0, 1, 4, 0, 1,
127
- 1, 0, 0, 0, 0, 0, 0, 1,
128
- 5, 0, 1, 1, 0, 0, 0, 0,
129
- 0, 0, 0, 0, 1, 0, 0, 0,
130
- 0, 0, 3, 0, 1, 3, 0, 1,
131
- 5, 5, 5, 0, 0, 0, 0, 0,
132
- 2, 1, 0, 0, 0, 2, 0, 0,
133
- 0, 0, 0, 2, 0, 0, 0, 5,
134
- 5, 5, 5, 5, 5, 5, 2, 0,
135
- 0, 0, 0, 0, 5, 0, 0, 0,
136
- 0, 0, 1
137
- ]
138
-
139
- class << self
140
- attr_accessor :_for_block_index_offsets
141
- private :_for_block_index_offsets, :_for_block_index_offsets=
142
- end
143
- self._for_block_index_offsets = [
144
- 0, 0, 3, 6, 9, 14, 24, 26,
145
- 31, 38, 40, 42, 44, 46, 49, 52,
146
- 58, 72, 74, 80, 87, 89, 91, 93,
147
- 95, 98, 101, 104, 107, 112, 114, 116,
148
- 118, 120, 123, 129, 131, 137, 143, 145,
149
- 150, 160, 171, 182, 184, 186, 188, 190,
150
- 193, 200, 206, 208, 210, 212, 218, 220,
151
- 222, 224, 226, 229, 235, 237, 239, 242,
152
- 255, 268, 281, 294, 307, 320, 331, 337,
153
- 339, 341, 343, 345, 348, 358, 360, 362,
154
- 364, 366, 369
155
- ]
156
-
157
- class << self
158
- attr_accessor :_for_block_indicies
159
- private :_for_block_indicies, :_for_block_indicies=
160
- end
161
- self._for_block_indicies = [
162
- 0, 0, 1, 2, 2, 1, 3, 3,
163
- 1, 4, 5, 6, 4, 1, 4, 7,
164
- 5, 6, 8, 4, 8, 8, 8, 1,
165
- 10, 9, 11, 12, 13, 11, 1, 14,
166
- 15, 16, 17, 17, 14, 1, 18, 1,
167
- 14, 18, 19, 1, 20, 19, 20, 14,
168
- 19, 21, 21, 1, 22, 23, 24, 25,
169
- 22, 1, 22, 26, 23, 24, 25, 29,
170
- 27, 29, 22, 27, 28, 27, 27, 1,
171
- 31, 30, 32, 33, 34, 35, 32, 1,
172
- 36, 37, 38, 39, 39, 36, 1, 40,
173
- 1, 36, 40, 41, 1, 42, 41, 42,
174
- 36, 41, 43, 43, 1, 44, 44, 1,
175
- 45, 45, 1, 46, 47, 48, 46, 1,
176
- 49, 1, 46, 49, 50, 1, 51, 50,
177
- 51, 46, 50, 52, 53, 53, 53, 53,
178
- 1, 54, 52, 32, 33, 55, 35, 32,
179
- 1, 56, 57, 57, 57, 57, 1, 58,
180
- 56, 32, 33, 35, 32, 1, 32, 33,
181
- 35, 57, 32, 57, 57, 57, 57, 1,
182
- 32, 33, 55, 35, 53, 32, 53, 53,
183
- 53, 53, 1, 32, 33, 34, 35, 59,
184
- 32, 59, 59, 59, 59, 1, 60, 1,
185
- 22, 60, 61, 1, 62, 61, 62, 22,
186
- 61, 63, 64, 65, 66, 63, 28, 1,
187
- 63, 64, 65, 66, 63, 1, 67, 1,
188
- 63, 67, 68, 1, 68, 69, 70, 68,
189
- 71, 1, 72, 1, 68, 72, 73, 1,
190
- 74, 73, 74, 68, 73, 36, 37, 38,
191
- 36, 71, 1, 75, 1, 76, 75, 76,
192
- 63, 75, 32, 33, 34, 35, 77, 59,
193
- 77, 32, 59, 59, 59, 59, 1, 32,
194
- 33, 34, 35, 78, 59, 78, 32, 59,
195
- 59, 59, 59, 1, 32, 33, 34, 35,
196
- 79, 59, 79, 32, 59, 59, 59, 59,
197
- 1, 32, 33, 34, 35, 80, 59, 80,
198
- 32, 59, 59, 59, 59, 1, 32, 33,
199
- 34, 35, 81, 59, 81, 32, 59, 59,
200
- 59, 59, 1, 32, 33, 34, 35, 82,
201
- 59, 82, 32, 59, 59, 59, 59, 1,
202
- 83, 84, 34, 85, 59, 83, 59, 59,
203
- 59, 59, 1, 83, 84, 85, 83, 28,
204
- 1, 86, 1, 83, 86, 87, 1, 88,
205
- 87, 88, 83, 87, 11, 12, 13, 89,
206
- 11, 89, 89, 89, 89, 1, 90, 1,
207
- 4, 90, 91, 1, 92, 91, 92, 4,
208
- 91, 46, 47, 48, 46, 1, 0
209
- ]
210
-
211
- class << self
212
- attr_accessor :_for_block_trans_targs
213
- private :_for_block_trans_targs, :_for_block_trans_targs=
214
- end
215
- self._for_block_trans_targs = [
216
- 2, 0, 3, 4, 5, 77, 79, 6,
217
- 76, 6, 7, 8, 9, 11, 8, 9,
218
- 11, 14, 10, 12, 13, 15, 16, 19,
219
- 43, 45, 17, 42, 48, 63, 17, 18,
220
- 19, 20, 34, 22, 19, 20, 22, 25,
221
- 21, 23, 24, 26, 27, 28, 82, 29,
222
- 31, 30, 32, 33, 35, 41, 36, 37,
223
- 38, 40, 39, 42, 44, 46, 47, 49,
224
- 50, 52, 60, 51, 53, 54, 56, 59,
225
- 55, 57, 58, 61, 62, 64, 65, 66,
226
- 67, 68, 69, 70, 71, 73, 72, 74,
227
- 75, 76, 78, 80, 81
228
- ]
229
-
230
- class << self
231
- attr_accessor :_for_block_trans_actions
232
- private :_for_block_trans_actions, :_for_block_trans_actions=
233
- end
234
- self._for_block_trans_actions = [
235
- 0, 0, 0, 0, 0, 0, 0, 9,
236
- 9, 0, 0, 11, 11, 11, 0, 0,
237
- 0, 0, 0, 0, 0, 0, 0, 1,
238
- 0, 0, 5, 5, 0, 5, 0, 0,
239
- 7, 7, 0, 7, 0, 0, 0, 0,
240
- 0, 0, 0, 0, 0, 0, 3, 0,
241
- 0, 0, 0, 0, 0, 0, 0, 0,
242
- 0, 0, 0, 0, 0, 0, 0, 0,
243
- 0, 0, 0, 0, 0, 0, 0, 0,
244
- 0, 0, 0, 0, 0, 0, 0, 0,
245
- 0, 0, 0, 0, 0, 0, 0, 0,
246
- 0, 0, 0, 0, 0
247
- ]
248
-
249
- class << self
250
- attr_accessor :for_block_start
251
- end
252
- self.for_block_start = 1;
253
- class << self
254
- attr_accessor :for_block_first_final
255
- end
256
- self.for_block_first_final = 82;
257
- class << self
258
- attr_accessor :for_block_error
259
- end
260
- self.for_block_error = 0;
261
-
262
- class << self
263
- attr_accessor :for_block_en_for_stmt
264
- end
265
- self.for_block_en_for_stmt = 1;
266
-
267
-
268
- # line 62 "lib/vorax/parser/grammars/for_block.rl"
269
-
270
- # line 271 "lib/vorax/parser/grammars/for_block.rb"
271
- begin
272
- p ||= 0
273
- pe ||= data.length
274
- cs = for_block_start
275
- end
276
-
277
- # line 63 "lib/vorax/parser/grammars/for_block.rl"
278
-
279
- # line 280 "lib/vorax/parser/grammars/for_block.rb"
280
- begin
281
- _klen, _trans, _keys, _acts, _nacts = nil
282
- _goto_level = 0
283
- _resume = 10
284
- _eof_trans = 15
285
- _again = 20
286
- _test_eof = 30
287
- _out = 40
288
- while true
289
- _trigger_goto = false
290
- if _goto_level <= 0
291
- if p == pe
292
- _goto_level = _test_eof
293
- next
294
- end
295
- if cs == 0
296
- _goto_level = _out
297
- next
298
- end
299
- end
300
- if _goto_level <= _resume
301
- _keys = _for_block_key_offsets[cs]
302
- _trans = _for_block_index_offsets[cs]
303
- _klen = _for_block_single_lengths[cs]
304
- _break_match = false
305
-
306
- begin
307
- if _klen > 0
308
- _lower = _keys
309
- _upper = _keys + _klen - 1
310
-
311
- loop do
312
- break if _upper < _lower
313
- _mid = _lower + ( (_upper - _lower) >> 1 )
314
-
315
- if data[p].ord < _for_block_trans_keys[_mid]
316
- _upper = _mid - 1
317
- elsif data[p].ord > _for_block_trans_keys[_mid]
318
- _lower = _mid + 1
319
- else
320
- _trans += (_mid - _keys)
321
- _break_match = true
322
- break
323
- end
324
- end # loop
325
- break if _break_match
326
- _keys += _klen
327
- _trans += _klen
328
- end
329
- _klen = _for_block_range_lengths[cs]
330
- if _klen > 0
331
- _lower = _keys
332
- _upper = _keys + (_klen << 1) - 2
333
- loop do
334
- break if _upper < _lower
335
- _mid = _lower + (((_upper-_lower) >> 1) & ~1)
336
- if data[p].ord < _for_block_trans_keys[_mid]
337
- _upper = _mid - 2
338
- elsif data[p].ord > _for_block_trans_keys[_mid+1]
339
- _lower = _mid + 2
340
- else
341
- _trans += ((_mid - _keys) >> 1)
342
- _break_match = true
343
- break
344
- end
345
- end # loop
346
- break if _break_match
347
- _trans += _klen
348
- end
349
- end while false
350
- _trans = _for_block_indicies[_trans]
351
- cs = _for_block_trans_targs[_trans]
352
- if _for_block_trans_actions[_trans] != 0
353
- _acts = _for_block_trans_actions[_trans]
354
- _nacts = _for_block_actions[_acts]
355
- _acts += 1
356
- while _nacts > 0
357
- _nacts -= 1
358
- _acts += 1
359
- case _for_block_actions[_acts - 1]
360
- when 0 then
361
- # line 7 "lib/vorax/parser/grammars/for_block.rl"
362
- begin
363
-
364
- @expr = Parser.walk_balanced_paren(data[(p..-1)])
365
- p += @expr.length - 1
366
- end
367
- when 1 then
368
- # line 12 "lib/vorax/parser/grammars/for_block.rl"
369
- begin
370
-
371
- @end_pos = p
372
- end
373
- when 2 then
374
- # line 16 "lib/vorax/parser/grammars/for_block.rl"
375
- begin
376
-
377
- @for_var = data[(@start..@end)]
378
- end
379
- when 3 then
380
- # line 20 "lib/vorax/parser/grammars/for_block.rl"
381
- begin
382
-
383
- @cursor_var_start = p
384
- end
385
- when 4 then
386
- # line 24 "lib/vorax/parser/grammars/for_block.rl"
387
- begin
388
-
389
- @cursor_var = data[(@cursor_var_start..p-1)]
390
- end
391
- when 5 then
392
- # line 28 "lib/vorax/parser/grammars/for_block.rl"
393
- begin
394
-
395
- @start = p
396
- end
397
- when 6 then
398
- # line 32 "lib/vorax/parser/grammars/for_block.rl"
399
- begin
400
-
401
- @end = p - 1
402
- end
403
- # line 404 "lib/vorax/parser/grammars/for_block.rb"
404
- end # action switch
405
- end
406
- end
407
- if _trigger_goto
408
- next
409
- end
410
- end
411
- if _goto_level <= _again
412
- if cs == 0
413
- _goto_level = _out
414
- next
415
- end
416
- p += 1
417
- if p != pe
418
- _goto_level = _resume
419
- next
420
- end
421
- end
422
- if _goto_level <= _test_eof
423
- end
424
- if _goto_level <= _out
425
- break
426
- end
427
- end
428
- end
429
-
430
- # line 64 "lib/vorax/parser/grammars/for_block.rl"
431
- end
432
- return {:cursor_var => @cursor_var,
433
- :for_var => @for_var,
434
- :expr => @expr,
435
- :end_pos => @end_pos}
436
- end
437
-
438
- end
439
-
440
- end