|
1 |
| -# |
2 |
| -# DO NOT MODIFY!!!! |
3 |
| -# This file is automatically generated by Racc 1.4.16 from |
4 |
| -# Racc grammar file "". |
5 | 1 |
|
6 |
| -# :markup: markdown |
| 2 | +require "action_dispatch/journey/scanner" |
| 3 | +require "action_dispatch/journey/nodes/node" |
7 | 4 |
|
8 |
| -require 'racc/parser.rb' |
9 |
| - |
10 |
| -# :stopdoc: |
11 |
| - |
12 |
| -require "action_dispatch/journey/parser_extras" |
13 | 5 | module ActionDispatch
|
14 |
| - module Journey |
15 |
| - class Parser < Racc::Parser |
16 |
| -##### State transition tables begin ### |
17 |
| - |
18 |
| -racc_action_table = [ |
19 |
| - 13, 15, 14, 7, 19, 16, 8, 19, 13, 15, |
20 |
| - 14, 7, 17, 16, 8, 13, 15, 14, 7, 21, |
21 |
| - 16, 8, 13, 15, 14, 7, 24, 16, 8 ] |
22 |
| - |
23 |
| -racc_action_check = [ |
24 |
| - 2, 2, 2, 2, 22, 2, 2, 2, 19, 19, |
25 |
| - 19, 19, 1, 19, 19, 7, 7, 7, 7, 17, |
26 |
| - 7, 7, 0, 0, 0, 0, 20, 0, 0 ] |
27 |
| - |
28 |
| -racc_action_pointer = [ |
29 |
| - 20, 12, -2, nil, nil, nil, nil, 13, nil, nil, |
30 |
| - nil, nil, nil, nil, nil, nil, nil, 19, nil, 6, |
31 |
| - 20, nil, -5, nil, nil ] |
32 |
| - |
33 |
| -racc_action_default = [ |
34 |
| - -19, -19, -2, -3, -4, -5, -6, -19, -10, -11, |
35 |
| - -12, -13, -14, -15, -16, -17, -18, -19, -1, -19, |
36 |
| - -19, 25, -8, -9, -7 ] |
37 |
| - |
38 |
| -racc_goto_table = [ |
39 |
| - 1, 22, 18, 23, nil, nil, nil, 20 ] |
40 |
| - |
41 |
| -racc_goto_check = [ |
42 |
| - 1, 2, 1, 3, nil, nil, nil, 1 ] |
43 |
| - |
44 |
| -racc_goto_pointer = [ |
45 |
| - nil, 0, -18, -16, nil, nil, nil, nil, nil, nil, |
46 |
| - nil ] |
47 |
| - |
48 |
| -racc_goto_default = [ |
49 |
| - nil, nil, 2, 3, 4, 5, 6, 9, 10, 11, |
50 |
| - 12 ] |
51 |
| - |
52 |
| -racc_reduce_table = [ |
53 |
| - 0, 0, :racc_error, |
54 |
| - 2, 11, :_reduce_1, |
55 |
| - 1, 11, :_reduce_2, |
56 |
| - 1, 11, :_reduce_none, |
57 |
| - 1, 12, :_reduce_none, |
58 |
| - 1, 12, :_reduce_none, |
59 |
| - 1, 12, :_reduce_none, |
60 |
| - 3, 15, :_reduce_7, |
61 |
| - 3, 13, :_reduce_8, |
62 |
| - 3, 13, :_reduce_9, |
63 |
| - 1, 16, :_reduce_10, |
64 |
| - 1, 14, :_reduce_none, |
65 |
| - 1, 14, :_reduce_none, |
66 |
| - 1, 14, :_reduce_none, |
67 |
| - 1, 14, :_reduce_none, |
68 |
| - 1, 19, :_reduce_15, |
69 |
| - 1, 17, :_reduce_16, |
70 |
| - 1, 18, :_reduce_17, |
71 |
| - 1, 20, :_reduce_18 ] |
72 |
| - |
73 |
| -racc_reduce_n = 19 |
74 |
| - |
75 |
| -racc_shift_n = 25 |
76 |
| - |
77 |
| -racc_token_table = { |
78 |
| - false => 0, |
79 |
| - :error => 1, |
80 |
| - :SLASH => 2, |
81 |
| - :LITERAL => 3, |
82 |
| - :SYMBOL => 4, |
83 |
| - :LPAREN => 5, |
84 |
| - :RPAREN => 6, |
85 |
| - :DOT => 7, |
86 |
| - :STAR => 8, |
87 |
| - :OR => 9 } |
88 |
| - |
89 |
| -racc_nt_base = 10 |
90 |
| - |
91 |
| -racc_use_result_var = false |
92 |
| - |
93 |
| -Racc_arg = [ |
94 |
| - racc_action_table, |
95 |
| - racc_action_check, |
96 |
| - racc_action_default, |
97 |
| - racc_action_pointer, |
98 |
| - racc_goto_table, |
99 |
| - racc_goto_check, |
100 |
| - racc_goto_default, |
101 |
| - racc_goto_pointer, |
102 |
| - racc_nt_base, |
103 |
| - racc_reduce_table, |
104 |
| - racc_token_table, |
105 |
| - racc_shift_n, |
106 |
| - racc_reduce_n, |
107 |
| - racc_use_result_var ] |
108 |
| - |
109 |
| -Racc_token_to_s_table = [ |
110 |
| - "$end", |
111 |
| - "error", |
112 |
| - "SLASH", |
113 |
| - "LITERAL", |
114 |
| - "SYMBOL", |
115 |
| - "LPAREN", |
116 |
| - "RPAREN", |
117 |
| - "DOT", |
118 |
| - "STAR", |
119 |
| - "OR", |
120 |
| - "$start", |
121 |
| - "expressions", |
122 |
| - "expression", |
123 |
| - "or", |
124 |
| - "terminal", |
125 |
| - "group", |
126 |
| - "star", |
127 |
| - "symbol", |
128 |
| - "literal", |
129 |
| - "slash", |
130 |
| - "dot" ] |
131 |
| - |
132 |
| -Racc_debug_parser = false |
133 |
| - |
134 |
| -##### State transition tables end ##### |
135 |
| - |
136 |
| -# reduce 0 omitted |
137 |
| - |
138 |
| -def _reduce_1(val, _values) |
139 |
| - Cat.new(val.first, val.last) |
140 |
| -end |
141 |
| - |
142 |
| -def _reduce_2(val, _values) |
143 |
| - val.first |
144 |
| -end |
145 |
| - |
146 |
| -# reduce 3 omitted |
147 |
| - |
148 |
| -# reduce 4 omitted |
149 |
| - |
150 |
| -# reduce 5 omitted |
151 |
| - |
152 |
| -# reduce 6 omitted |
153 |
| - |
154 |
| -def _reduce_7(val, _values) |
155 |
| - Group.new(val[1]) |
156 |
| -end |
157 |
| - |
158 |
| -def _reduce_8(val, _values) |
159 |
| - Or.new([val.first, val.last]) |
160 |
| -end |
161 |
| - |
162 |
| -def _reduce_9(val, _values) |
163 |
| - Or.new([val.first, val.last]) |
164 |
| -end |
165 |
| - |
166 |
| -def _reduce_10(val, _values) |
167 |
| - Star.new(Symbol.new(val.last, Symbol::GREEDY_EXP)) |
| 6 | + module Journey # :nodoc: |
| 7 | + class Parser # :nodoc: |
| 8 | + include Journey::Nodes |
| 9 | + |
| 10 | + def self.parse(string) |
| 11 | + new.parse string |
| 12 | + end |
| 13 | + |
| 14 | + def initialize |
| 15 | + @scanner = Scanner.new |
| 16 | + @next_token = nil |
| 17 | + end |
| 18 | + |
| 19 | + def parse(string) |
| 20 | + @scanner.scan_setup(string) |
| 21 | + advance_token |
| 22 | + do_parse |
| 23 | + end |
| 24 | + |
| 25 | + private |
| 26 | + |
| 27 | + def advance_token |
| 28 | + @next_token = @scanner.next_token |
| 29 | + end |
| 30 | + |
| 31 | + def do_parse |
| 32 | + parse_expressions |
| 33 | + end |
| 34 | + |
| 35 | + def parse_expressions |
| 36 | + node = parse_expression |
| 37 | + |
| 38 | + while @next_token |
| 39 | + case @next_token.first |
| 40 | + when :RPAREN |
| 41 | + break |
| 42 | + when :OR |
| 43 | + node = parse_or(node) |
| 44 | + else |
| 45 | + node = Cat.new(node, parse_expressions) |
| 46 | + end |
| 47 | + end |
| 48 | + |
| 49 | + node |
| 50 | + end |
| 51 | + |
| 52 | + def parse_or(lhs) |
| 53 | + advance_token |
| 54 | + node = parse_expression |
| 55 | + Or.new([lhs, node]) |
| 56 | + end |
| 57 | + |
| 58 | + def parse_expression |
| 59 | + if @next_token.first == :STAR |
| 60 | + parse_star |
| 61 | + elsif @next_token.first == :LPAREN |
| 62 | + parse_group |
| 63 | + else |
| 64 | + parse_terminal |
| 65 | + end |
| 66 | + end |
| 67 | + |
| 68 | + def parse_star |
| 69 | + node = Star.new(Symbol.new(@next_token.last, Symbol::GREEDY_EXP)) |
| 70 | + advance_token |
| 71 | + node |
| 72 | + end |
| 73 | + |
| 74 | + def parse_group |
| 75 | + advance_token |
| 76 | + node = parse_expressions |
| 77 | + if @next_token.first == :RPAREN |
| 78 | + node = Group.new(node) |
| 79 | + advance_token |
| 80 | + node |
| 81 | + else |
| 82 | + raise "error" |
| 83 | + end |
| 84 | + end |
| 85 | + |
| 86 | + def parse_terminal |
| 87 | + node = case @next_token.first |
| 88 | + when :SYMBOL |
| 89 | + Symbol.new(@next_token.last) |
| 90 | + when :LITERAL |
| 91 | + Literal.new(@next_token.last) |
| 92 | + when :SLASH |
| 93 | + Slash.new(@next_token.last) |
| 94 | + when :DOT |
| 95 | + Dot.new(@next_token.last) |
| 96 | + end |
| 97 | + |
| 98 | + advance_token |
| 99 | + node |
| 100 | + end |
| 101 | + end |
| 102 | + end |
168 | 103 | end
|
169 |
| - |
170 |
| -# reduce 11 omitted |
171 |
| - |
172 |
| -# reduce 12 omitted |
173 |
| - |
174 |
| -# reduce 13 omitted |
175 |
| - |
176 |
| -# reduce 14 omitted |
177 |
| - |
178 |
| -def _reduce_15(val, _values) |
179 |
| - Slash.new(val.first) |
180 |
| -end |
181 |
| - |
182 |
| -def _reduce_16(val, _values) |
183 |
| - Symbol.new(val.first) |
184 |
| -end |
185 |
| - |
186 |
| -def _reduce_17(val, _values) |
187 |
| - Literal.new(val.first) |
188 |
| -end |
189 |
| - |
190 |
| -def _reduce_18(val, _values) |
191 |
| - Dot.new(val.first) |
192 |
| -end |
193 |
| - |
194 |
| -def _reduce_none(val, _values) |
195 |
| - val[0] |
196 |
| -end |
197 |
| - |
198 |
| - end # class Parser |
199 |
| - end # module Journey |
200 |
| -end # module ActionDispatch |
0 commit comments