vorax 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -57,3 +57,4 @@ require 'vorax/parser/grammars/alias.rb'
57
57
  require 'vorax/parser/grammars/column.rb'
58
58
  require 'vorax/parser/grammars/package_spec.rb'
59
59
  require 'vorax/parser/grammars/plsql_def.rb'
60
+ require 'vorax/parser/grammars/for_block.rb'
@@ -1,7 +1,7 @@
1
1
 
2
2
  # line 1 "lib/vorax/parser/grammars/alias.rl"
3
3
 
4
- # line 81 "lib/vorax/parser/grammars/alias.rl"
4
+ # line 72 "lib/vorax/parser/grammars/alias.rl"
5
5
 
6
6
 
7
7
  module Vorax
@@ -544,7 +544,7 @@ end
544
544
  self.alias_en_main = 131;
545
545
 
546
546
 
547
- # line 104 "lib/vorax/parser/grammars/alias.rl"
547
+ # line 95 "lib/vorax/parser/grammars/alias.rl"
548
548
 
549
549
  # line 550 "lib/vorax/parser/grammars/alias.rb"
550
550
  begin
@@ -556,7 +556,7 @@ begin
556
556
  act = 0
557
557
  end
558
558
 
559
- # line 105 "lib/vorax/parser/grammars/alias.rl"
559
+ # line 96 "lib/vorax/parser/grammars/alias.rl"
560
560
 
561
561
  # line 562 "lib/vorax/parser/grammars/alias.rb"
562
562
  begin
@@ -658,68 +658,59 @@ when 0 then
658
658
  # line 5 "lib/vorax/parser/grammars/alias.rl"
659
659
  begin
660
660
 
661
- #puts "tableref_start: p=#{p}"
662
661
  @t_start = p
663
662
  end
664
663
  when 1 then
665
- # line 10 "lib/vorax/parser/grammars/alias.rl"
664
+ # line 9 "lib/vorax/parser/grammars/alias.rl"
666
665
  begin
667
666
 
668
667
  @table_ref = data[(@t_start..p-1)]
669
- #puts "tableref_end: @table_ref=#@table_ref"
670
668
  end
671
669
  when 2 then
672
- # line 15 "lib/vorax/parser/grammars/alias.rl"
670
+ # line 13 "lib/vorax/parser/grammars/alias.rl"
673
671
  begin
674
672
 
675
- #puts "alias_start: p=#{p}"
676
673
  @a_start = p
677
674
  @alias_value = nil
678
675
  end
679
676
  when 3 then
680
- # line 21 "lib/vorax/parser/grammars/alias.rl"
677
+ # line 18 "lib/vorax/parser/grammars/alias.rl"
681
678
  begin
682
679
 
683
680
  text = data[(@a_start..p-1)]
684
681
  @alias_value = text unless @not_alias.include?(text.upcase)
685
- #puts "alias_end: @alias_value=#@alias_value"
686
682
  end
687
683
  when 4 then
688
- # line 27 "lib/vorax/parser/grammars/alias.rl"
684
+ # line 23 "lib/vorax/parser/grammars/alias.rl"
689
685
  begin
690
686
 
691
- #puts "subquery_start: p=#{p}"
692
687
  @subquery_text = Parser.walk_balanced_paren(data[(p..-1)]).gsub(/^\(|\)$/, '')
693
688
  p += 1
694
689
  @subquery_range = (p..p+@subquery_text.length-1)
695
690
  p += @subquery_text.length
696
691
  te = p
697
- #puts "subquery_end: p=#{p} @subquery_text=#@subquery_text @subquery_range=#@subquery_range"
698
692
  end
699
693
  when 5 then
700
- # line 37 "lib/vorax/parser/grammars/alias.rl"
694
+ # line 31 "lib/vorax/parser/grammars/alias.rl"
701
695
  begin
702
696
 
703
- #puts "before_with: p=#{p}"
704
697
  @alias_value = nil
705
698
  @subquery_range = nil
706
699
  @subquery_text = nil
707
700
  end
708
701
  when 6 then
709
- # line 44 "lib/vorax/parser/grammars/alias.rl"
702
+ # line 37 "lib/vorax/parser/grammars/alias.rl"
710
703
  begin
711
704
 
712
705
  @refs << ExprRef.new(@subquery_text, @subquery_range, @alias_value)
713
706
  @alias_value = nil
714
707
  @subquery_range = nil
715
708
  @subquery_text = nil
716
- #puts "after_with"
717
709
  end
718
710
  when 7 then
719
- # line 52 "lib/vorax/parser/grammars/alias.rl"
711
+ # line 44 "lib/vorax/parser/grammars/alias.rl"
720
712
  begin
721
713
 
722
- #puts "before_tref: p=#{p} @alias_value=#@alias_value @subquery_text=#@subquery_text @subquery_range=#@subquery_range"
723
714
  add_tableref
724
715
  end
725
716
  when 10 then
@@ -728,81 +719,81 @@ when 10 then
728
719
  te = p+1
729
720
  end
730
721
  when 11 then
731
- # line 71 "lib/vorax/parser/grammars/alias.rl"
722
+ # line 62 "lib/vorax/parser/grammars/alias.rl"
732
723
  begin
733
724
  act = 1; end
734
725
  when 12 then
735
- # line 73 "lib/vorax/parser/grammars/alias.rl"
726
+ # line 64 "lib/vorax/parser/grammars/alias.rl"
736
727
  begin
737
728
  act = 3; end
738
729
  when 13 then
739
- # line 74 "lib/vorax/parser/grammars/alias.rl"
730
+ # line 65 "lib/vorax/parser/grammars/alias.rl"
740
731
  begin
741
732
  act = 4; end
742
733
  when 14 then
743
- # line 78 "lib/vorax/parser/grammars/alias.rl"
734
+ # line 69 "lib/vorax/parser/grammars/alias.rl"
744
735
  begin
745
736
  act = 8; end
746
737
  when 15 then
747
- # line 72 "lib/vorax/parser/grammars/alias.rl"
738
+ # line 63 "lib/vorax/parser/grammars/alias.rl"
748
739
  begin
749
740
  te = p+1
750
741
  end
751
742
  when 16 then
752
- # line 78 "lib/vorax/parser/grammars/alias.rl"
743
+ # line 69 "lib/vorax/parser/grammars/alias.rl"
753
744
  begin
754
745
  te = p+1
755
746
  end
756
747
  when 17 then
757
- # line 71 "lib/vorax/parser/grammars/alias.rl"
748
+ # line 62 "lib/vorax/parser/grammars/alias.rl"
758
749
  begin
759
750
  te = p
760
751
  p = p - 1; end
761
752
  when 18 then
762
- # line 74 "lib/vorax/parser/grammars/alias.rl"
753
+ # line 65 "lib/vorax/parser/grammars/alias.rl"
763
754
  begin
764
755
  te = p
765
756
  p = p - 1; begin @start_columns = te end
766
757
  end
767
758
  when 19 then
768
- # line 75 "lib/vorax/parser/grammars/alias.rl"
759
+ # line 66 "lib/vorax/parser/grammars/alias.rl"
769
760
  begin
770
761
  te = p
771
762
  p = p - 1; begin @columns = data[(@start_columns..ts)] unless @columns end
772
763
  end
773
764
  when 20 then
774
- # line 76 "lib/vorax/parser/grammars/alias.rl"
765
+ # line 67 "lib/vorax/parser/grammars/alias.rl"
775
766
  begin
776
767
  te = p
777
768
  p = p - 1; end
778
769
  when 21 then
779
- # line 77 "lib/vorax/parser/grammars/alias.rl"
770
+ # line 68 "lib/vorax/parser/grammars/alias.rl"
780
771
  begin
781
772
  te = p
782
773
  p = p - 1; end
783
774
  when 22 then
784
- # line 78 "lib/vorax/parser/grammars/alias.rl"
775
+ # line 69 "lib/vorax/parser/grammars/alias.rl"
785
776
  begin
786
777
  te = p
787
778
  p = p - 1; end
788
779
  when 23 then
789
- # line 75 "lib/vorax/parser/grammars/alias.rl"
780
+ # line 66 "lib/vorax/parser/grammars/alias.rl"
790
781
  begin
791
782
  begin p = ((te))-1; end
792
783
  begin @columns = data[(@start_columns..ts)] unless @columns end
793
784
  end
794
785
  when 24 then
795
- # line 76 "lib/vorax/parser/grammars/alias.rl"
786
+ # line 67 "lib/vorax/parser/grammars/alias.rl"
796
787
  begin
797
788
  begin p = ((te))-1; end
798
789
  end
799
790
  when 25 then
800
- # line 77 "lib/vorax/parser/grammars/alias.rl"
791
+ # line 68 "lib/vorax/parser/grammars/alias.rl"
801
792
  begin
802
793
  begin p = ((te))-1; end
803
794
  end
804
795
  when 26 then
805
- # line 78 "lib/vorax/parser/grammars/alias.rl"
796
+ # line 69 "lib/vorax/parser/grammars/alias.rl"
806
797
  begin
807
798
  begin p = ((te))-1; end
808
799
  end
@@ -821,7 +812,7 @@ end
821
812
  end
822
813
  end
823
814
  end
824
- # line 825 "lib/vorax/parser/grammars/alias.rb"
815
+ # line 816 "lib/vorax/parser/grammars/alias.rb"
825
816
  end # action switch
826
817
  end
827
818
  end
@@ -841,7 +832,7 @@ when 8 then
841
832
  # line 1 "NONE"
842
833
  begin
843
834
  ts = nil; end
844
- # line 845 "lib/vorax/parser/grammars/alias.rb"
835
+ # line 836 "lib/vorax/parser/grammars/alias.rb"
845
836
  end # to state action switch
846
837
  end
847
838
  if _trigger_goto
@@ -868,7 +859,7 @@ end
868
859
  end
869
860
  end
870
861
 
871
- # line 106 "lib/vorax/parser/grammars/alias.rl"
862
+ # line 97 "lib/vorax/parser/grammars/alias.rl"
872
863
  data.chop!
873
864
 
874
865
  # needed to finalize the last pending tableref
@@ -3,17 +3,14 @@
3
3
  machine alias;
4
4
 
5
5
  action tableref_start {
6
- #puts "tableref_start: p=#{p}"
7
6
  @t_start = p
8
7
  }
9
8
 
10
9
  action tableref_end {
11
10
  @table_ref = data[(@t_start..p-1)]
12
- #puts "tableref_end: @table_ref=#@table_ref"
13
11
  }
14
12
 
15
13
  action alias_start {
16
- #puts "alias_start: p=#{p}"
17
14
  @a_start = p
18
15
  @alias_value = nil
19
16
  }
@@ -21,21 +18,17 @@ action alias_start {
21
18
  action alias_end {
22
19
  text = data[(@a_start..p-1)]
23
20
  @alias_value = text unless @not_alias.include?(text.upcase)
24
- #puts "alias_end: @alias_value=#@alias_value"
25
21
  }
26
22
 
27
23
  action subquery_start {
28
- #puts "subquery_start: p=#{p}"
29
24
  @subquery_text = Parser.walk_balanced_paren(data[(p..-1)]).gsub(/^\(|\)$/, '')
30
25
  p += 1
31
26
  @subquery_range = (p..p+@subquery_text.length-1)
32
27
  p += @subquery_text.length
33
28
  te = p
34
- #puts "subquery_end: p=#{p} @subquery_text=#@subquery_text @subquery_range=#@subquery_range"
35
29
  }
36
30
 
37
31
  action before_with {
38
- #puts "before_with: p=#{p}"
39
32
  @alias_value = nil
40
33
  @subquery_range = nil
41
34
  @subquery_text = nil
@@ -46,11 +39,9 @@ action after_with {
46
39
  @alias_value = nil
47
40
  @subquery_range = nil
48
41
  @subquery_text = nil
49
- #puts "after_with"
50
42
  }
51
43
 
52
44
  action before_tref {
53
- #puts "before_tref: p=#{p} @alias_value=#@alias_value @subquery_text=#@subquery_text @subquery_range=#@subquery_range"
54
45
  add_tableref
55
46
  }
56
47
 
@@ -320,7 +320,7 @@ when 0 then
320
320
  begin
321
321
 
322
322
  expr = Parser.walk_balanced_paren(data[(p..-1)])
323
- p += expr.length
323
+ p += expr.length - 1
324
324
  te = p
325
325
  end
326
326
  when 3 then
@@ -4,7 +4,7 @@ machine column;
4
4
 
5
5
  action expr_start {
6
6
  expr = Parser.walk_balanced_paren(data[(p..-1)])
7
- p += expr.length
7
+ p += expr.length - 1
8
8
  te = p
9
9
  }
10
10
 
@@ -23,6 +23,9 @@ identifier = simple_identifier | dquoted_string;
23
23
 
24
24
  # define intereseting keywords
25
25
  K_END = /end/i;
26
+ K_REVERSE = /reverse/i;
27
+ K_FOR = /for/i;
28
+ K_IN = /in/i;
26
29
  K_IF = /if/i;
27
30
  K_LOOP = /loop/i;
28
31
  K_PRAGMA = /pragma/i;
@@ -0,0 +1,413 @@
1
+
2
+ # line 1 "lib/vorax/parser/grammars/for_block.rl"
3
+
4
+ # line 41 "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, 4, 2,
27
+ 5, 2, 2, 5, 3
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, 75, 82, 83, 84, 85,
38
+ 86, 88, 90, 92, 94, 99, 100, 101,
39
+ 102, 103, 105, 119, 120, 121, 122, 123,
40
+ 125, 133, 139, 140, 141, 142, 149, 150,
41
+ 151, 152, 153, 155, 162, 163, 164, 166,
42
+ 182, 198, 214, 230, 246, 262, 276, 283,
43
+ 284, 285, 286, 287, 289, 303, 304, 305,
44
+ 306, 307, 309
45
+ ]
46
+
47
+ class << self
48
+ attr_accessor :_for_block_trans_keys
49
+ private :_for_block_trans_keys, :_for_block_trans_keys=
50
+ end
51
+ self._for_block_trans_keys = [
52
+ 70, 102, 79, 111, 82, 114, 32, 45,
53
+ 47, 9, 13, 32, 34, 45, 47, 95,
54
+ 9, 13, 35, 36, 65, 90, 97, 122,
55
+ 34, 32, 45, 47, 9, 13, 32, 45,
56
+ 47, 73, 105, 9, 13, 45, 10, 42,
57
+ 42, 42, 47, 78, 110, 32, 40, 45,
58
+ 47, 9, 13, 32, 34, 40, 45, 47,
59
+ 82, 95, 114, 9, 13, 35, 36, 48,
60
+ 57, 65, 90, 97, 122, 34, 32, 45,
61
+ 47, 9, 13, 32, 45, 47, 76, 108,
62
+ 9, 13, 45, 10, 42, 42, 42, 47,
63
+ 79, 111, 79, 111, 80, 112, 32, 45,
64
+ 47, 9, 13, 45, 10, 42, 42, 42,
65
+ 47, 32, 45, 47, 95, 9, 13, 35,
66
+ 36, 48, 57, 65, 90, 97, 122, 45,
67
+ 10, 42, 42, 42, 47, 32, 45, 46,
68
+ 47, 9, 13, 48, 57, 32, 45, 46,
69
+ 47, 9, 13, 45, 10, 46, 32, 45,
70
+ 47, 9, 13, 48, 57, 45, 10, 42,
71
+ 42, 42, 47, 32, 45, 47, 9, 13,
72
+ 48, 57, 42, 42, 42, 47, 32, 45,
73
+ 47, 69, 95, 101, 9, 13, 35, 36,
74
+ 48, 57, 65, 90, 97, 122, 32, 45,
75
+ 47, 86, 95, 118, 9, 13, 35, 36,
76
+ 48, 57, 65, 90, 97, 122, 32, 45,
77
+ 47, 69, 95, 101, 9, 13, 35, 36,
78
+ 48, 57, 65, 90, 97, 122, 32, 45,
79
+ 47, 82, 95, 114, 9, 13, 35, 36,
80
+ 48, 57, 65, 90, 97, 122, 32, 45,
81
+ 47, 83, 95, 115, 9, 13, 35, 36,
82
+ 48, 57, 65, 90, 97, 122, 32, 45,
83
+ 47, 69, 95, 101, 9, 13, 35, 36,
84
+ 48, 57, 65, 90, 97, 122, 32, 45,
85
+ 47, 95, 9, 13, 35, 36, 48, 57,
86
+ 65, 90, 97, 122, 32, 45, 47, 9,
87
+ 13, 48, 57, 45, 10, 42, 42, 42,
88
+ 47, 32, 45, 47, 95, 9, 13, 35,
89
+ 36, 48, 57, 65, 90, 97, 122, 45,
90
+ 10, 42, 42, 42, 47, 32, 45, 47,
91
+ 9, 13, 0
92
+ ]
93
+
94
+ class << self
95
+ attr_accessor :_for_block_single_lengths
96
+ private :_for_block_single_lengths, :_for_block_single_lengths=
97
+ end
98
+ self._for_block_single_lengths = [
99
+ 0, 2, 2, 2, 3, 5, 1, 3,
100
+ 5, 1, 1, 1, 1, 2, 2, 4,
101
+ 8, 1, 3, 5, 1, 1, 1, 1,
102
+ 2, 2, 2, 2, 3, 1, 1, 1,
103
+ 1, 2, 4, 1, 1, 1, 1, 2,
104
+ 4, 4, 1, 1, 1, 3, 1, 1,
105
+ 1, 1, 2, 3, 1, 1, 2, 6,
106
+ 6, 6, 6, 6, 6, 4, 3, 1,
107
+ 1, 1, 1, 2, 4, 1, 1, 1,
108
+ 1, 2, 3
109
+ ]
110
+
111
+ class << self
112
+ attr_accessor :_for_block_range_lengths
113
+ private :_for_block_range_lengths, :_for_block_range_lengths=
114
+ end
115
+ self._for_block_range_lengths = [
116
+ 0, 0, 0, 0, 1, 4, 0, 1,
117
+ 1, 0, 0, 0, 0, 0, 0, 1,
118
+ 5, 0, 1, 1, 0, 0, 0, 0,
119
+ 0, 0, 0, 0, 1, 0, 0, 0,
120
+ 0, 0, 5, 0, 0, 0, 0, 0,
121
+ 2, 1, 0, 0, 0, 2, 0, 0,
122
+ 0, 0, 0, 2, 0, 0, 0, 5,
123
+ 5, 5, 5, 5, 5, 5, 2, 0,
124
+ 0, 0, 0, 0, 5, 0, 0, 0,
125
+ 0, 0, 1
126
+ ]
127
+
128
+ class << self
129
+ attr_accessor :_for_block_index_offsets
130
+ private :_for_block_index_offsets, :_for_block_index_offsets=
131
+ end
132
+ self._for_block_index_offsets = [
133
+ 0, 0, 3, 6, 9, 14, 24, 26,
134
+ 31, 38, 40, 42, 44, 46, 49, 52,
135
+ 58, 72, 74, 79, 86, 88, 90, 92,
136
+ 94, 97, 100, 103, 106, 111, 113, 115,
137
+ 117, 119, 122, 132, 134, 136, 138, 140,
138
+ 143, 150, 156, 158, 160, 162, 168, 170,
139
+ 172, 174, 176, 179, 185, 187, 189, 192,
140
+ 204, 216, 228, 240, 252, 264, 274, 280,
141
+ 282, 284, 286, 288, 291, 301, 303, 305,
142
+ 307, 309, 312
143
+ ]
144
+
145
+ class << self
146
+ attr_accessor :_for_block_indicies
147
+ private :_for_block_indicies, :_for_block_indicies=
148
+ end
149
+ self._for_block_indicies = [
150
+ 0, 0, 1, 2, 2, 1, 3, 3,
151
+ 1, 4, 5, 6, 4, 1, 4, 7,
152
+ 5, 6, 8, 4, 8, 8, 8, 1,
153
+ 10, 9, 11, 12, 13, 11, 1, 14,
154
+ 15, 16, 17, 17, 14, 1, 18, 1,
155
+ 14, 18, 19, 1, 20, 19, 20, 14,
156
+ 19, 21, 21, 1, 22, 23, 24, 25,
157
+ 22, 1, 22, 26, 23, 24, 25, 29,
158
+ 27, 29, 22, 27, 28, 27, 27, 1,
159
+ 31, 30, 32, 33, 34, 32, 1, 35,
160
+ 36, 37, 38, 38, 35, 1, 39, 1,
161
+ 35, 39, 40, 1, 41, 40, 41, 35,
162
+ 40, 42, 42, 1, 43, 43, 1, 44,
163
+ 44, 1, 45, 46, 47, 45, 1, 48,
164
+ 1, 45, 48, 49, 1, 50, 49, 50,
165
+ 45, 49, 32, 33, 34, 51, 32, 51,
166
+ 51, 51, 51, 1, 52, 1, 22, 52,
167
+ 53, 1, 54, 53, 54, 22, 53, 55,
168
+ 56, 57, 58, 55, 28, 1, 55, 56,
169
+ 57, 58, 55, 1, 59, 1, 55, 59,
170
+ 60, 1, 60, 61, 62, 60, 63, 1,
171
+ 64, 1, 60, 64, 65, 1, 66, 65,
172
+ 66, 60, 65, 35, 36, 37, 35, 63,
173
+ 1, 67, 1, 68, 67, 68, 55, 67,
174
+ 32, 33, 34, 69, 51, 69, 32, 51,
175
+ 51, 51, 51, 1, 32, 33, 34, 70,
176
+ 51, 70, 32, 51, 51, 51, 51, 1,
177
+ 32, 33, 34, 71, 51, 71, 32, 51,
178
+ 51, 51, 51, 1, 32, 33, 34, 72,
179
+ 51, 72, 32, 51, 51, 51, 51, 1,
180
+ 32, 33, 34, 73, 51, 73, 32, 51,
181
+ 51, 51, 51, 1, 32, 33, 34, 74,
182
+ 51, 74, 32, 51, 51, 51, 51, 1,
183
+ 75, 76, 77, 51, 75, 51, 51, 51,
184
+ 51, 1, 75, 76, 77, 75, 28, 1,
185
+ 78, 1, 75, 78, 79, 1, 80, 79,
186
+ 80, 75, 79, 11, 12, 13, 81, 11,
187
+ 81, 81, 81, 81, 1, 82, 1, 4,
188
+ 82, 83, 1, 84, 83, 84, 4, 83,
189
+ 45, 46, 47, 45, 1, 0
190
+ ]
191
+
192
+ class << self
193
+ attr_accessor :_for_block_trans_targs
194
+ private :_for_block_trans_targs, :_for_block_trans_targs=
195
+ end
196
+ self._for_block_trans_targs = [
197
+ 2, 0, 3, 4, 5, 69, 71, 6,
198
+ 68, 6, 7, 8, 9, 11, 8, 9,
199
+ 11, 14, 10, 12, 13, 15, 16, 19,
200
+ 35, 37, 17, 34, 40, 55, 17, 18,
201
+ 19, 20, 22, 19, 20, 22, 25, 21,
202
+ 23, 24, 26, 27, 28, 74, 29, 31,
203
+ 30, 32, 33, 34, 36, 38, 39, 41,
204
+ 42, 44, 52, 43, 45, 46, 48, 51,
205
+ 47, 49, 50, 53, 54, 56, 57, 58,
206
+ 59, 60, 61, 62, 63, 65, 64, 66,
207
+ 67, 68, 70, 72, 73
208
+ ]
209
+
210
+ class << self
211
+ attr_accessor :_for_block_trans_actions
212
+ private :_for_block_trans_actions, :_for_block_trans_actions=
213
+ end
214
+ self._for_block_trans_actions = [
215
+ 0, 0, 0, 0, 0, 0, 0, 5,
216
+ 5, 0, 0, 7, 7, 7, 0, 0,
217
+ 0, 0, 0, 0, 0, 0, 0, 1,
218
+ 0, 0, 5, 5, 0, 5, 0, 0,
219
+ 10, 10, 10, 0, 0, 0, 0, 0,
220
+ 0, 0, 0, 0, 0, 3, 0, 0,
221
+ 0, 0, 0, 0, 0, 0, 0, 0,
222
+ 0, 0, 0, 0, 0, 0, 0, 0,
223
+ 0, 0, 0, 0, 0, 0, 0, 0,
224
+ 0, 0, 0, 0, 0, 0, 0, 0,
225
+ 0, 0, 0, 0, 0
226
+ ]
227
+
228
+ class << self
229
+ attr_accessor :for_block_start
230
+ end
231
+ self.for_block_start = 1;
232
+ class << self
233
+ attr_accessor :for_block_first_final
234
+ end
235
+ self.for_block_first_final = 74;
236
+ class << self
237
+ attr_accessor :for_block_error
238
+ end
239
+ self.for_block_error = 0;
240
+
241
+ class << self
242
+ attr_accessor :for_block_en_for_stmt
243
+ end
244
+ self.for_block_en_for_stmt = 1;
245
+
246
+
247
+ # line 56 "lib/vorax/parser/grammars/for_block.rl"
248
+
249
+ # line 250 "lib/vorax/parser/grammars/for_block.rb"
250
+ begin
251
+ p ||= 0
252
+ pe ||= data.length
253
+ cs = for_block_start
254
+ end
255
+
256
+ # line 57 "lib/vorax/parser/grammars/for_block.rl"
257
+
258
+ # line 259 "lib/vorax/parser/grammars/for_block.rb"
259
+ begin
260
+ _klen, _trans, _keys, _acts, _nacts = nil
261
+ _goto_level = 0
262
+ _resume = 10
263
+ _eof_trans = 15
264
+ _again = 20
265
+ _test_eof = 30
266
+ _out = 40
267
+ while true
268
+ _trigger_goto = false
269
+ if _goto_level <= 0
270
+ if p == pe
271
+ _goto_level = _test_eof
272
+ next
273
+ end
274
+ if cs == 0
275
+ _goto_level = _out
276
+ next
277
+ end
278
+ end
279
+ if _goto_level <= _resume
280
+ _keys = _for_block_key_offsets[cs]
281
+ _trans = _for_block_index_offsets[cs]
282
+ _klen = _for_block_single_lengths[cs]
283
+ _break_match = false
284
+
285
+ begin
286
+ if _klen > 0
287
+ _lower = _keys
288
+ _upper = _keys + _klen - 1
289
+
290
+ loop do
291
+ break if _upper < _lower
292
+ _mid = _lower + ( (_upper - _lower) >> 1 )
293
+
294
+ if data[p].ord < _for_block_trans_keys[_mid]
295
+ _upper = _mid - 1
296
+ elsif data[p].ord > _for_block_trans_keys[_mid]
297
+ _lower = _mid + 1
298
+ else
299
+ _trans += (_mid - _keys)
300
+ _break_match = true
301
+ break
302
+ end
303
+ end # loop
304
+ break if _break_match
305
+ _keys += _klen
306
+ _trans += _klen
307
+ end
308
+ _klen = _for_block_range_lengths[cs]
309
+ if _klen > 0
310
+ _lower = _keys
311
+ _upper = _keys + (_klen << 1) - 2
312
+ loop do
313
+ break if _upper < _lower
314
+ _mid = _lower + (((_upper-_lower) >> 1) & ~1)
315
+ if data[p].ord < _for_block_trans_keys[_mid]
316
+ _upper = _mid - 2
317
+ elsif data[p].ord > _for_block_trans_keys[_mid+1]
318
+ _lower = _mid + 2
319
+ else
320
+ _trans += ((_mid - _keys) >> 1)
321
+ _break_match = true
322
+ break
323
+ end
324
+ end # loop
325
+ break if _break_match
326
+ _trans += _klen
327
+ end
328
+ end while false
329
+ _trans = _for_block_indicies[_trans]
330
+ cs = _for_block_trans_targs[_trans]
331
+ if _for_block_trans_actions[_trans] != 0
332
+ _acts = _for_block_trans_actions[_trans]
333
+ _nacts = _for_block_actions[_acts]
334
+ _acts += 1
335
+ while _nacts > 0
336
+ _nacts -= 1
337
+ _acts += 1
338
+ case _for_block_actions[_acts - 1]
339
+ when 0 then
340
+ # line 7 "lib/vorax/parser/grammars/for_block.rl"
341
+ begin
342
+
343
+ @expr = Parser.walk_balanced_paren(data[(p..-1)])
344
+ p += @expr.length - 1
345
+ end
346
+ when 1 then
347
+ # line 12 "lib/vorax/parser/grammars/for_block.rl"
348
+ begin
349
+
350
+ @end_pos = p
351
+ end
352
+ when 2 then
353
+ # line 16 "lib/vorax/parser/grammars/for_block.rl"
354
+ begin
355
+
356
+ @for_var = data[(@start..@end)]
357
+ end
358
+ when 3 then
359
+ # line 20 "lib/vorax/parser/grammars/for_block.rl"
360
+ begin
361
+
362
+ @cursor_var = data[(@start..@end)]
363
+ end
364
+ when 4 then
365
+ # line 24 "lib/vorax/parser/grammars/for_block.rl"
366
+ begin
367
+
368
+ @start = p
369
+ end
370
+ when 5 then
371
+ # line 28 "lib/vorax/parser/grammars/for_block.rl"
372
+ begin
373
+
374
+ @end = p - 1
375
+ end
376
+ # line 377 "lib/vorax/parser/grammars/for_block.rb"
377
+ end # action switch
378
+ end
379
+ end
380
+ if _trigger_goto
381
+ next
382
+ end
383
+ end
384
+ if _goto_level <= _again
385
+ if cs == 0
386
+ _goto_level = _out
387
+ next
388
+ end
389
+ p += 1
390
+ if p != pe
391
+ _goto_level = _resume
392
+ next
393
+ end
394
+ end
395
+ if _goto_level <= _test_eof
396
+ end
397
+ if _goto_level <= _out
398
+ break
399
+ end
400
+ end
401
+ end
402
+
403
+ # line 58 "lib/vorax/parser/grammars/for_block.rl"
404
+ end
405
+ return {:cursor_var => @cursor_var,
406
+ :for_var => @for_var,
407
+ :expr => @expr,
408
+ :end_pos => @end_pos}
409
+ end
410
+
411
+ end
412
+
413
+ end