File Coverage

blib/lib/Gherkin/Generated/Parser.pm
Criterion Covered Total %
statement 164 3046 5.3
branch 57 1452 3.9
condition 4 5 80.0
subroutine 11 50 22.0
pod 0 46 0.0
total 236 4599 5.1


line stmt bran cond sub pod time code
1             package Gherkin::Generated::Parser;
2             $Gherkin::Generated::Parser::VERSION = '39.0.0';
3             # This file is generated. Do not edit! Edit gherkin-perl.razor instead.
4 1     1   9 use strict;
  1         3  
  1         35  
5 1     1   4 use warnings;
  1         2  
  1         44  
6              
7 1     1   5 use base 'Gherkin::ParserBase';
  1         1  
  1         525  
8              
9             ## no critic (ProhibitMagicNumbers)
10             my %states_to_match_names = (
11             0 => "match_token_at_0",
12             1 => "match_token_at_1",
13             2 => "match_token_at_2",
14             3 => "match_token_at_3",
15             4 => "match_token_at_4",
16             5 => "match_token_at_5",
17             6 => "match_token_at_6",
18             7 => "match_token_at_7",
19             8 => "match_token_at_8",
20             9 => "match_token_at_9",
21             10 => "match_token_at_10",
22             11 => "match_token_at_11",
23             12 => "match_token_at_12",
24             13 => "match_token_at_13",
25             14 => "match_token_at_14",
26             15 => "match_token_at_15",
27             16 => "match_token_at_16",
28             17 => "match_token_at_17",
29             18 => "match_token_at_18",
30             19 => "match_token_at_19",
31             20 => "match_token_at_20",
32             21 => "match_token_at_21",
33             22 => "match_token_at_22",
34             23 => "match_token_at_23",
35             24 => "match_token_at_24",
36             25 => "match_token_at_25",
37             26 => "match_token_at_26",
38             27 => "match_token_at_27",
39             28 => "match_token_at_28",
40             29 => "match_token_at_29",
41             30 => "match_token_at_30",
42             31 => "match_token_at_31",
43             32 => "match_token_at_32",
44             33 => "match_token_at_33",
45             35 => "match_token_at_35",
46             36 => "match_token_at_36",
47             37 => "match_token_at_37",
48             38 => "match_token_at_38",
49             39 => "match_token_at_39",
50             40 => "match_token_at_40",
51             41 => "match_token_at_41",
52             42 => "match_token_at_42",
53             );
54             ## use critic
55              
56             sub parse {
57 3     3 0 11 my ( $self, $token_scanner, $uri ) = @_;
58              
59 3 100 100     39 $token_scanner = Gherkin::TokenScanner->new($token_scanner)
60             unless ref $token_scanner && (ref $token_scanner ne 'SCALAR');
61              
62 3         33 $self->ast_builder->reset($uri);
63 3         22 $self->token_matcher->reset();
64              
65 3         39 my $context = Gherkin::ParserContext->new(
66             {
67             token_scanner => $token_scanner,
68             token_matcher => $self->token_matcher,
69             }
70             );
71              
72 3         24 $self->_start_rule( $context, 'GherkinDocument' );
73              
74 3         7 my $state = 0;
75 3         29 my $token;
76              
77 3         7 while (1) {
78 36         121 $token = $context->read_token($context);
79 36         131 $state = $self->match_token( $state, $token, $context );
80              
81 36 100       123 last if $token->is_eof();
82             }
83              
84 3         107 $self->_end_rule( $context, 'GherkinDocument' );
85              
86 3 50       17 if ( my @errors = $context->errors ) {
87 0         0 Gherkin::Exceptions::CompositeParser->throw(@errors);
88             }
89              
90 3         23 return $self->get_result();
91             }
92              
93             sub match_token {
94 36     36 0 86 my ( $self, $state, $token, $context ) = @_;
95 36   50     142 my $method_name = $states_to_match_names{ $state } ||
96             die "Unknown state: $state";
97 36         188 $self->$method_name( $token, $context );
98             }
99              
100             sub _construct_parser_error {
101 0     0   0 my ($self, $token, @args) = @_;
102 0 0       0 my $error_class = "Gherkin::Exceptions::" . (
103             $token->is_eof ? 'UnexpectedEOF' : 'UnexpectedToken' );
104              
105 0         0 return $error_class->new( $token, @args );
106             }
107              
108             ## no critic (ProhibitExcessComplexity, ProhibitMagicNumbers, ProhibitPostfixControls)
109              
110             # Start
111             sub match_token_at_0 {
112 3     3 0 9 my ( $self, $token, $context ) = @_;
113 3         7 my ( $ok, $err );
114 3         20 ($ok, $err) = $context->token_matcher->match_EOF($token);
115 3 50       25 if ($ok) {
116 0 0       0 $self->add_error( $context, $err ) if $err;
117 0         0 $self->_build($context, $token);
118 0         0 return 34;
119             }
120 3         20 ($ok, $err) = $context->token_matcher->match_Language($token);
121 3 50       11 if ($ok) {
122 0 0       0 $self->add_error( $context, $err ) if $err;
123 0         0 $self->_start_rule($context, 'Feature');
124 0         0 $self->_start_rule($context, 'FeatureHeader');
125 0         0 $self->_build($context, $token);
126 0         0 return 1;
127             }
128 3         17 ($ok, $err) = $context->token_matcher->match_TagLine($token);
129 3 50       12 if ($ok) {
130 0 0       0 $self->add_error( $context, $err ) if $err;
131 0         0 $self->_start_rule($context, 'Feature');
132 0         0 $self->_start_rule($context, 'FeatureHeader');
133 0         0 $self->_start_rule($context, 'Tags');
134 0         0 $self->_build($context, $token);
135 0         0 return 2;
136             }
137 3         17 ($ok, $err) = $context->token_matcher->match_FeatureLine($token);
138 3 50       10 if ($ok) {
139 3 50       10 $self->add_error( $context, $err ) if $err;
140 3         14 $self->_start_rule($context, 'Feature');
141 3         11 $self->_start_rule($context, 'FeatureHeader');
142 3         18 $self->_build($context, $token);
143 3         40 return 3;
144             }
145 0         0 ($ok, $err) = $context->token_matcher->match_Comment($token);
146 0 0       0 if ($ok) {
147 0 0       0 $self->add_error( $context, $err ) if $err;
148 0         0 $self->_build($context, $token);
149 0         0 return 0;
150             }
151 0         0 ($ok, $err) = $context->token_matcher->match_Empty($token);
152 0 0       0 if ($ok) {
153 0 0       0 $self->add_error( $context, $err ) if $err;
154 0         0 $self->_build($context, $token);
155 0         0 return 0;
156             }
157              
158 0         0 $token->detach;
159 0         0 $err = $self->_construct_parser_error(
160             $token,
161             ["#EOF", "#Language", "#TagLine", "#FeatureLine", "#Comment", "#Empty"],
162             "State: 0 - Start",
163             );
164 0         0 $self->add_error( $context, $err );
165              
166 0         0 return 0;
167             }
168              
169             # GherkinDocument:0>Feature:0>FeatureHeader:0>#Language:0
170             sub match_token_at_1 {
171 0     0 0 0 my ( $self, $token, $context ) = @_;
172 0         0 my ( $ok, $err );
173 0         0 ($ok, $err) = $context->token_matcher->match_TagLine($token);
174 0 0       0 if ($ok) {
175 0 0       0 $self->add_error( $context, $err ) if $err;
176 0         0 $self->_start_rule($context, 'Tags');
177 0         0 $self->_build($context, $token);
178 0         0 return 2;
179             }
180 0         0 ($ok, $err) = $context->token_matcher->match_FeatureLine($token);
181 0 0       0 if ($ok) {
182 0 0       0 $self->add_error( $context, $err ) if $err;
183 0         0 $self->_build($context, $token);
184 0         0 return 3;
185             }
186 0         0 ($ok, $err) = $context->token_matcher->match_Comment($token);
187 0 0       0 if ($ok) {
188 0 0       0 $self->add_error( $context, $err ) if $err;
189 0         0 $self->_build($context, $token);
190 0         0 return 1;
191             }
192 0         0 ($ok, $err) = $context->token_matcher->match_Empty($token);
193 0 0       0 if ($ok) {
194 0 0       0 $self->add_error( $context, $err ) if $err;
195 0         0 $self->_build($context, $token);
196 0         0 return 1;
197             }
198              
199 0         0 $token->detach;
200 0         0 $err = $self->_construct_parser_error(
201             $token,
202             ["#TagLine", "#FeatureLine", "#Comment", "#Empty"],
203             "State: 1 - GherkinDocument:0>Feature:0>FeatureHeader:0>#Language:0",
204             );
205 0         0 $self->add_error( $context, $err );
206              
207 0         0 return 1;
208             }
209              
210             # GherkinDocument:0>Feature:0>FeatureHeader:1>Tags:0>#TagLine:0
211             sub match_token_at_2 {
212 0     0 0 0 my ( $self, $token, $context ) = @_;
213 0         0 my ( $ok, $err );
214 0         0 ($ok, $err) = $context->token_matcher->match_TagLine($token);
215 0 0       0 if ($ok) {
216 0 0       0 $self->add_error( $context, $err ) if $err;
217 0         0 $self->_build($context, $token);
218 0         0 return 2;
219             }
220 0         0 ($ok, $err) = $context->token_matcher->match_FeatureLine($token);
221 0 0       0 if ($ok) {
222 0 0       0 $self->add_error( $context, $err ) if $err;
223 0         0 $self->_end_rule($context, 'Tags');
224 0         0 $self->_build($context, $token);
225 0         0 return 3;
226             }
227 0         0 ($ok, $err) = $context->token_matcher->match_Comment($token);
228 0 0       0 if ($ok) {
229 0 0       0 $self->add_error( $context, $err ) if $err;
230 0         0 $self->_build($context, $token);
231 0         0 return 2;
232             }
233 0         0 ($ok, $err) = $context->token_matcher->match_Empty($token);
234 0 0       0 if ($ok) {
235 0 0       0 $self->add_error( $context, $err ) if $err;
236 0         0 $self->_build($context, $token);
237 0         0 return 2;
238             }
239              
240 0         0 $token->detach;
241 0         0 $err = $self->_construct_parser_error(
242             $token,
243             ["#TagLine", "#FeatureLine", "#Comment", "#Empty"],
244             "State: 2 - GherkinDocument:0>Feature:0>FeatureHeader:1>Tags:0>#TagLine:0",
245             );
246 0         0 $self->add_error( $context, $err );
247              
248 0         0 return 2;
249             }
250              
251             # GherkinDocument:0>Feature:0>FeatureHeader:2>#FeatureLine:0
252             sub match_token_at_3 {
253 6     6 0 16 my ( $self, $token, $context ) = @_;
254 6         10 my ( $ok, $err );
255 6         30 ($ok, $err) = $context->token_matcher->match_EOF($token);
256 6 50       16 if ($ok) {
257 0 0       0 $self->add_error( $context, $err ) if $err;
258 0         0 $self->_end_rule($context, 'FeatureHeader');
259 0         0 $self->_end_rule($context, 'Feature');
260 0         0 $self->_build($context, $token);
261 0         0 return 34;
262             }
263 6         62 ($ok, $err) = $context->token_matcher->match_Empty($token);
264 6 100       20 if ($ok) {
265 3 50       9 $self->add_error( $context, $err ) if $err;
266 3         12 $self->_build($context, $token);
267 3         10 return 3;
268             }
269 3         19 ($ok, $err) = $context->token_matcher->match_Comment($token);
270 3 50       12 if ($ok) {
271 0 0       0 $self->add_error( $context, $err ) if $err;
272 0         0 $self->_start_rule($context, 'Description');
273 0         0 $self->_build($context, $token);
274 0         0 return 4;
275             }
276 3         17 ($ok, $err) = $context->token_matcher->match_BackgroundLine($token);
277 3 50       10 if ($ok) {
278 3 50       13 $self->add_error( $context, $err ) if $err;
279 3         20 $self->_end_rule($context, 'FeatureHeader');
280 3         13 $self->_start_rule($context, 'Background');
281 3         9 $self->_build($context, $token);
282 3         9 return 5;
283             }
284 0         0 ($ok, $err) = $context->token_matcher->match_TagLine($token);
285 0 0       0 if ($ok) {
286 0 0       0 $self->add_error( $context, $err ) if $err;
287 0 0       0 if ($self->lookahead_0($context, $token)) {
288 0         0 $self->_end_rule($context, 'FeatureHeader');
289 0         0 $self->_start_rule($context, 'ScenarioDefinition');
290 0         0 $self->_start_rule($context, 'Tags');
291 0         0 $self->_build($context, $token);
292 0         0 return 9;
293             }
294             }
295 0         0 ($ok, $err) = $context->token_matcher->match_TagLine($token);
296 0 0       0 if ($ok) {
297 0 0       0 $self->add_error( $context, $err ) if $err;
298 0         0 $self->_end_rule($context, 'FeatureHeader');
299 0         0 $self->_start_rule($context, 'Rule');
300 0         0 $self->_start_rule($context, 'RuleHeader');
301 0         0 $self->_start_rule($context, 'Tags');
302 0         0 $self->_build($context, $token);
303 0         0 return 18;
304             }
305 0         0 ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
306 0 0       0 if ($ok) {
307 0 0       0 $self->add_error( $context, $err ) if $err;
308 0         0 $self->_end_rule($context, 'FeatureHeader');
309 0         0 $self->_start_rule($context, 'ScenarioDefinition');
310 0         0 $self->_start_rule($context, 'Scenario');
311 0         0 $self->_build($context, $token);
312 0         0 return 10;
313             }
314 0         0 ($ok, $err) = $context->token_matcher->match_RuleLine($token);
315 0 0       0 if ($ok) {
316 0 0       0 $self->add_error( $context, $err ) if $err;
317 0         0 $self->_end_rule($context, 'FeatureHeader');
318 0         0 $self->_start_rule($context, 'Rule');
319 0         0 $self->_start_rule($context, 'RuleHeader');
320 0         0 $self->_build($context, $token);
321 0         0 return 19;
322             }
323 0         0 ($ok, $err) = $context->token_matcher->match_Other($token);
324 0 0       0 if ($ok) {
325 0 0       0 $self->add_error( $context, $err ) if $err;
326 0         0 $self->_start_rule($context, 'Description');
327 0         0 $self->_build($context, $token);
328 0         0 return 4;
329             }
330              
331 0         0 $token->detach;
332 0         0 $err = $self->_construct_parser_error(
333             $token,
334             ["#EOF", "#Empty", "#Comment", "#BackgroundLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Other"],
335             "State: 3 - GherkinDocument:0>Feature:0>FeatureHeader:2>#FeatureLine:0",
336             );
337 0         0 $self->add_error( $context, $err );
338              
339 0         0 return 3;
340             }
341              
342             # GherkinDocument:0>Feature:0>FeatureHeader:3>DescriptionHelper:1>Description:0>__alt1:0>#Other:0
343             sub match_token_at_4 {
344 0     0 0 0 my ( $self, $token, $context ) = @_;
345 0         0 my ( $ok, $err );
346 0         0 ($ok, $err) = $context->token_matcher->match_EOF($token);
347 0 0       0 if ($ok) {
348 0 0       0 $self->add_error( $context, $err ) if $err;
349 0         0 $self->_end_rule($context, 'Description');
350 0         0 $self->_end_rule($context, 'FeatureHeader');
351 0         0 $self->_end_rule($context, 'Feature');
352 0         0 $self->_build($context, $token);
353 0         0 return 34;
354             }
355 0         0 ($ok, $err) = $context->token_matcher->match_Comment($token);
356 0 0       0 if ($ok) {
357 0 0       0 $self->add_error( $context, $err ) if $err;
358 0         0 $self->_build($context, $token);
359 0         0 return 4;
360             }
361 0         0 ($ok, $err) = $context->token_matcher->match_BackgroundLine($token);
362 0 0       0 if ($ok) {
363 0 0       0 $self->add_error( $context, $err ) if $err;
364 0         0 $self->_end_rule($context, 'Description');
365 0         0 $self->_end_rule($context, 'FeatureHeader');
366 0         0 $self->_start_rule($context, 'Background');
367 0         0 $self->_build($context, $token);
368 0         0 return 5;
369             }
370 0         0 ($ok, $err) = $context->token_matcher->match_TagLine($token);
371 0 0       0 if ($ok) {
372 0 0       0 $self->add_error( $context, $err ) if $err;
373 0 0       0 if ($self->lookahead_0($context, $token)) {
374 0         0 $self->_end_rule($context, 'Description');
375 0         0 $self->_end_rule($context, 'FeatureHeader');
376 0         0 $self->_start_rule($context, 'ScenarioDefinition');
377 0         0 $self->_start_rule($context, 'Tags');
378 0         0 $self->_build($context, $token);
379 0         0 return 9;
380             }
381             }
382 0         0 ($ok, $err) = $context->token_matcher->match_TagLine($token);
383 0 0       0 if ($ok) {
384 0 0       0 $self->add_error( $context, $err ) if $err;
385 0         0 $self->_end_rule($context, 'Description');
386 0         0 $self->_end_rule($context, 'FeatureHeader');
387 0         0 $self->_start_rule($context, 'Rule');
388 0         0 $self->_start_rule($context, 'RuleHeader');
389 0         0 $self->_start_rule($context, 'Tags');
390 0         0 $self->_build($context, $token);
391 0         0 return 18;
392             }
393 0         0 ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
394 0 0       0 if ($ok) {
395 0 0       0 $self->add_error( $context, $err ) if $err;
396 0         0 $self->_end_rule($context, 'Description');
397 0         0 $self->_end_rule($context, 'FeatureHeader');
398 0         0 $self->_start_rule($context, 'ScenarioDefinition');
399 0         0 $self->_start_rule($context, 'Scenario');
400 0         0 $self->_build($context, $token);
401 0         0 return 10;
402             }
403 0         0 ($ok, $err) = $context->token_matcher->match_RuleLine($token);
404 0 0       0 if ($ok) {
405 0 0       0 $self->add_error( $context, $err ) if $err;
406 0         0 $self->_end_rule($context, 'Description');
407 0         0 $self->_end_rule($context, 'FeatureHeader');
408 0         0 $self->_start_rule($context, 'Rule');
409 0         0 $self->_start_rule($context, 'RuleHeader');
410 0         0 $self->_build($context, $token);
411 0         0 return 19;
412             }
413 0         0 ($ok, $err) = $context->token_matcher->match_Other($token);
414 0 0       0 if ($ok) {
415 0 0       0 $self->add_error( $context, $err ) if $err;
416 0         0 $self->_build($context, $token);
417 0         0 return 4;
418             }
419              
420 0         0 $token->detach;
421 0         0 $err = $self->_construct_parser_error(
422             $token,
423             ["#EOF", "#Comment", "#BackgroundLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Other"],
424             "State: 4 - GherkinDocument:0>Feature:0>FeatureHeader:3>DescriptionHelper:1>Description:0>__alt1:0>#Other:0",
425             );
426 0         0 $self->add_error( $context, $err );
427              
428 0         0 return 4;
429             }
430              
431             # GherkinDocument:0>Feature:1>Background:0>#BackgroundLine:0
432             sub match_token_at_5 {
433 3     3 0 10 my ( $self, $token, $context ) = @_;
434 3         6 my ( $ok, $err );
435 3         17 ($ok, $err) = $context->token_matcher->match_EOF($token);
436 3 50       11 if ($ok) {
437 0 0       0 $self->add_error( $context, $err ) if $err;
438 0         0 $self->_end_rule($context, 'Background');
439 0         0 $self->_end_rule($context, 'Feature');
440 0         0 $self->_build($context, $token);
441 0         0 return 34;
442             }
443 3         14 ($ok, $err) = $context->token_matcher->match_Empty($token);
444 3 50       8 if ($ok) {
445 0 0       0 $self->add_error( $context, $err ) if $err;
446 0         0 $self->_build($context, $token);
447 0         0 return 5;
448             }
449 3         27 ($ok, $err) = $context->token_matcher->match_Comment($token);
450 3 50       11 if ($ok) {
451 0 0       0 $self->add_error( $context, $err ) if $err;
452 0         0 $self->_start_rule($context, 'Description');
453 0         0 $self->_build($context, $token);
454 0         0 return 6;
455             }
456 3         14 ($ok, $err) = $context->token_matcher->match_StepLine($token);
457 3 50       10 if ($ok) {
458 3 50       11 $self->add_error( $context, $err ) if $err;
459 3         15 $self->_start_rule($context, 'Step');
460 3         11 $self->_build($context, $token);
461 3         9 return 7;
462             }
463 0         0 ($ok, $err) = $context->token_matcher->match_TagLine($token);
464 0 0       0 if ($ok) {
465 0 0       0 $self->add_error( $context, $err ) if $err;
466 0 0       0 if ($self->lookahead_0($context, $token)) {
467 0         0 $self->_end_rule($context, 'Background');
468 0         0 $self->_start_rule($context, 'ScenarioDefinition');
469 0         0 $self->_start_rule($context, 'Tags');
470 0         0 $self->_build($context, $token);
471 0         0 return 9;
472             }
473             }
474 0         0 ($ok, $err) = $context->token_matcher->match_TagLine($token);
475 0 0       0 if ($ok) {
476 0 0       0 $self->add_error( $context, $err ) if $err;
477 0         0 $self->_end_rule($context, 'Background');
478 0         0 $self->_start_rule($context, 'Rule');
479 0         0 $self->_start_rule($context, 'RuleHeader');
480 0         0 $self->_start_rule($context, 'Tags');
481 0         0 $self->_build($context, $token);
482 0         0 return 18;
483             }
484 0         0 ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
485 0 0       0 if ($ok) {
486 0 0       0 $self->add_error( $context, $err ) if $err;
487 0         0 $self->_end_rule($context, 'Background');
488 0         0 $self->_start_rule($context, 'ScenarioDefinition');
489 0         0 $self->_start_rule($context, 'Scenario');
490 0         0 $self->_build($context, $token);
491 0         0 return 10;
492             }
493 0         0 ($ok, $err) = $context->token_matcher->match_RuleLine($token);
494 0 0       0 if ($ok) {
495 0 0       0 $self->add_error( $context, $err ) if $err;
496 0         0 $self->_end_rule($context, 'Background');
497 0         0 $self->_start_rule($context, 'Rule');
498 0         0 $self->_start_rule($context, 'RuleHeader');
499 0         0 $self->_build($context, $token);
500 0         0 return 19;
501             }
502 0         0 ($ok, $err) = $context->token_matcher->match_Other($token);
503 0 0       0 if ($ok) {
504 0 0       0 $self->add_error( $context, $err ) if $err;
505 0         0 $self->_start_rule($context, 'Description');
506 0         0 $self->_build($context, $token);
507 0         0 return 6;
508             }
509              
510 0         0 $token->detach;
511 0         0 $err = $self->_construct_parser_error(
512             $token,
513             ["#EOF", "#Empty", "#Comment", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Other"],
514             "State: 5 - GherkinDocument:0>Feature:1>Background:0>#BackgroundLine:0",
515             );
516 0         0 $self->add_error( $context, $err );
517              
518 0         0 return 5;
519             }
520              
521             # GherkinDocument:0>Feature:1>Background:1>DescriptionHelper:1>Description:0>__alt1:0>#Other:0
522             sub match_token_at_6 {
523 0     0 0 0 my ( $self, $token, $context ) = @_;
524 0         0 my ( $ok, $err );
525 0         0 ($ok, $err) = $context->token_matcher->match_EOF($token);
526 0 0       0 if ($ok) {
527 0 0       0 $self->add_error( $context, $err ) if $err;
528 0         0 $self->_end_rule($context, 'Description');
529 0         0 $self->_end_rule($context, 'Background');
530 0         0 $self->_end_rule($context, 'Feature');
531 0         0 $self->_build($context, $token);
532 0         0 return 34;
533             }
534 0         0 ($ok, $err) = $context->token_matcher->match_Comment($token);
535 0 0       0 if ($ok) {
536 0 0       0 $self->add_error( $context, $err ) if $err;
537 0         0 $self->_build($context, $token);
538 0         0 return 6;
539             }
540 0         0 ($ok, $err) = $context->token_matcher->match_StepLine($token);
541 0 0       0 if ($ok) {
542 0 0       0 $self->add_error( $context, $err ) if $err;
543 0         0 $self->_end_rule($context, 'Description');
544 0         0 $self->_start_rule($context, 'Step');
545 0         0 $self->_build($context, $token);
546 0         0 return 7;
547             }
548 0         0 ($ok, $err) = $context->token_matcher->match_TagLine($token);
549 0 0       0 if ($ok) {
550 0 0       0 $self->add_error( $context, $err ) if $err;
551 0 0       0 if ($self->lookahead_0($context, $token)) {
552 0         0 $self->_end_rule($context, 'Description');
553 0         0 $self->_end_rule($context, 'Background');
554 0         0 $self->_start_rule($context, 'ScenarioDefinition');
555 0         0 $self->_start_rule($context, 'Tags');
556 0         0 $self->_build($context, $token);
557 0         0 return 9;
558             }
559             }
560 0         0 ($ok, $err) = $context->token_matcher->match_TagLine($token);
561 0 0       0 if ($ok) {
562 0 0       0 $self->add_error( $context, $err ) if $err;
563 0         0 $self->_end_rule($context, 'Description');
564 0         0 $self->_end_rule($context, 'Background');
565 0         0 $self->_start_rule($context, 'Rule');
566 0         0 $self->_start_rule($context, 'RuleHeader');
567 0         0 $self->_start_rule($context, 'Tags');
568 0         0 $self->_build($context, $token);
569 0         0 return 18;
570             }
571 0         0 ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
572 0 0       0 if ($ok) {
573 0 0       0 $self->add_error( $context, $err ) if $err;
574 0         0 $self->_end_rule($context, 'Description');
575 0         0 $self->_end_rule($context, 'Background');
576 0         0 $self->_start_rule($context, 'ScenarioDefinition');
577 0         0 $self->_start_rule($context, 'Scenario');
578 0         0 $self->_build($context, $token);
579 0         0 return 10;
580             }
581 0         0 ($ok, $err) = $context->token_matcher->match_RuleLine($token);
582 0 0       0 if ($ok) {
583 0 0       0 $self->add_error( $context, $err ) if $err;
584 0         0 $self->_end_rule($context, 'Description');
585 0         0 $self->_end_rule($context, 'Background');
586 0         0 $self->_start_rule($context, 'Rule');
587 0         0 $self->_start_rule($context, 'RuleHeader');
588 0         0 $self->_build($context, $token);
589 0         0 return 19;
590             }
591 0         0 ($ok, $err) = $context->token_matcher->match_Other($token);
592 0 0       0 if ($ok) {
593 0 0       0 $self->add_error( $context, $err ) if $err;
594 0         0 $self->_build($context, $token);
595 0         0 return 6;
596             }
597              
598 0         0 $token->detach;
599 0         0 $err = $self->_construct_parser_error(
600             $token,
601             ["#EOF", "#Comment", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Other"],
602             "State: 6 - GherkinDocument:0>Feature:1>Background:1>DescriptionHelper:1>Description:0>__alt1:0>#Other:0",
603             );
604 0         0 $self->add_error( $context, $err );
605              
606 0         0 return 6;
607             }
608              
609             # GherkinDocument:0>Feature:1>Background:2>Step:0>#StepLine:0
610             sub match_token_at_7 {
611 9     9 0 22 my ( $self, $token, $context ) = @_;
612 9         19 my ( $ok, $err );
613 9         43 ($ok, $err) = $context->token_matcher->match_EOF($token);
614 9 50       24 if ($ok) {
615 0 0       0 $self->add_error( $context, $err ) if $err;
616 0         0 $self->_end_rule($context, 'Step');
617 0         0 $self->_end_rule($context, 'Background');
618 0         0 $self->_end_rule($context, 'Feature');
619 0         0 $self->_build($context, $token);
620 0         0 return 34;
621             }
622 9         34 ($ok, $err) = $context->token_matcher->match_TableRow($token);
623 9 50       22 if ($ok) {
624 0 0       0 $self->add_error( $context, $err ) if $err;
625 0         0 $self->_start_rule($context, 'DataTable');
626 0         0 $self->_build($context, $token);
627 0         0 return 8;
628             }
629 9         46 ($ok, $err) = $context->token_matcher->match_DocStringSeparator($token);
630 9 50       38 if ($ok) {
631 0 0       0 $self->add_error( $context, $err ) if $err;
632 0         0 $self->_start_rule($context, 'DocString');
633 0         0 $self->_build($context, $token);
634 0         0 return 41;
635             }
636 9         32 ($ok, $err) = $context->token_matcher->match_StepLine($token);
637 9 50       21 if ($ok) {
638 0 0       0 $self->add_error( $context, $err ) if $err;
639 0         0 $self->_end_rule($context, 'Step');
640 0         0 $self->_start_rule($context, 'Step');
641 0         0 $self->_build($context, $token);
642 0         0 return 7;
643             }
644 9         37 ($ok, $err) = $context->token_matcher->match_TagLine($token);
645 9 50       24 if ($ok) {
646 0 0       0 $self->add_error( $context, $err ) if $err;
647 0 0       0 if ($self->lookahead_0($context, $token)) {
648 0         0 $self->_end_rule($context, 'Step');
649 0         0 $self->_end_rule($context, 'Background');
650 0         0 $self->_start_rule($context, 'ScenarioDefinition');
651 0         0 $self->_start_rule($context, 'Tags');
652 0         0 $self->_build($context, $token);
653 0         0 return 9;
654             }
655             }
656 9         26 ($ok, $err) = $context->token_matcher->match_TagLine($token);
657 9 50       24 if ($ok) {
658 0 0       0 $self->add_error( $context, $err ) if $err;
659 0         0 $self->_end_rule($context, 'Step');
660 0         0 $self->_end_rule($context, 'Background');
661 0         0 $self->_start_rule($context, 'Rule');
662 0         0 $self->_start_rule($context, 'RuleHeader');
663 0         0 $self->_start_rule($context, 'Tags');
664 0         0 $self->_build($context, $token);
665 0         0 return 18;
666             }
667 9         33 ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
668 9 100       35 if ($ok) {
669 3 50       11 $self->add_error( $context, $err ) if $err;
670 3         14 $self->_end_rule($context, 'Step');
671 3         14 $self->_end_rule($context, 'Background');
672 3         15 $self->_start_rule($context, 'ScenarioDefinition');
673 3         12 $self->_start_rule($context, 'Scenario');
674 3         12 $self->_build($context, $token);
675 3         12 return 10;
676             }
677 6         26 ($ok, $err) = $context->token_matcher->match_RuleLine($token);
678 6 50       16 if ($ok) {
679 0 0       0 $self->add_error( $context, $err ) if $err;
680 0         0 $self->_end_rule($context, 'Step');
681 0         0 $self->_end_rule($context, 'Background');
682 0         0 $self->_start_rule($context, 'Rule');
683 0         0 $self->_start_rule($context, 'RuleHeader');
684 0         0 $self->_build($context, $token);
685 0         0 return 19;
686             }
687 6         21 ($ok, $err) = $context->token_matcher->match_Comment($token);
688 6 50       17 if ($ok) {
689 0 0       0 $self->add_error( $context, $err ) if $err;
690 0         0 $self->_build($context, $token);
691 0         0 return 7;
692             }
693 6         19 ($ok, $err) = $context->token_matcher->match_Empty($token);
694 6 50       19 if ($ok) {
695 6 50       45 $self->add_error( $context, $err ) if $err;
696 6         58 $self->_build($context, $token);
697 6         22 return 7;
698             }
699              
700 0         0 $token->detach;
701 0         0 $err = $self->_construct_parser_error(
702             $token,
703             ["#EOF", "#TableRow", "#DocStringSeparator", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"],
704             "State: 7 - GherkinDocument:0>Feature:1>Background:2>Step:0>#StepLine:0",
705             );
706 0         0 $self->add_error( $context, $err );
707              
708 0         0 return 7;
709             }
710              
711             # GherkinDocument:0>Feature:1>Background:2>Step:1>StepArg:0>__alt0:0>DataTable:0>#TableRow:0
712             sub match_token_at_8 {
713 0     0 0 0 my ( $self, $token, $context ) = @_;
714 0         0 my ( $ok, $err );
715 0         0 ($ok, $err) = $context->token_matcher->match_EOF($token);
716 0 0       0 if ($ok) {
717 0 0       0 $self->add_error( $context, $err ) if $err;
718 0         0 $self->_end_rule($context, 'DataTable');
719 0         0 $self->_end_rule($context, 'Step');
720 0         0 $self->_end_rule($context, 'Background');
721 0         0 $self->_end_rule($context, 'Feature');
722 0         0 $self->_build($context, $token);
723 0         0 return 34;
724             }
725 0         0 ($ok, $err) = $context->token_matcher->match_TableRow($token);
726 0 0       0 if ($ok) {
727 0 0       0 $self->add_error( $context, $err ) if $err;
728 0         0 $self->_build($context, $token);
729 0         0 return 8;
730             }
731 0         0 ($ok, $err) = $context->token_matcher->match_StepLine($token);
732 0 0       0 if ($ok) {
733 0 0       0 $self->add_error( $context, $err ) if $err;
734 0         0 $self->_end_rule($context, 'DataTable');
735 0         0 $self->_end_rule($context, 'Step');
736 0         0 $self->_start_rule($context, 'Step');
737 0         0 $self->_build($context, $token);
738 0         0 return 7;
739             }
740 0         0 ($ok, $err) = $context->token_matcher->match_TagLine($token);
741 0 0       0 if ($ok) {
742 0 0       0 $self->add_error( $context, $err ) if $err;
743 0 0       0 if ($self->lookahead_0($context, $token)) {
744 0         0 $self->_end_rule($context, 'DataTable');
745 0         0 $self->_end_rule($context, 'Step');
746 0         0 $self->_end_rule($context, 'Background');
747 0         0 $self->_start_rule($context, 'ScenarioDefinition');
748 0         0 $self->_start_rule($context, 'Tags');
749 0         0 $self->_build($context, $token);
750 0         0 return 9;
751             }
752             }
753 0         0 ($ok, $err) = $context->token_matcher->match_TagLine($token);
754 0 0       0 if ($ok) {
755 0 0       0 $self->add_error( $context, $err ) if $err;
756 0         0 $self->_end_rule($context, 'DataTable');
757 0         0 $self->_end_rule($context, 'Step');
758 0         0 $self->_end_rule($context, 'Background');
759 0         0 $self->_start_rule($context, 'Rule');
760 0         0 $self->_start_rule($context, 'RuleHeader');
761 0         0 $self->_start_rule($context, 'Tags');
762 0         0 $self->_build($context, $token);
763 0         0 return 18;
764             }
765 0         0 ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
766 0 0       0 if ($ok) {
767 0 0       0 $self->add_error( $context, $err ) if $err;
768 0         0 $self->_end_rule($context, 'DataTable');
769 0         0 $self->_end_rule($context, 'Step');
770 0         0 $self->_end_rule($context, 'Background');
771 0         0 $self->_start_rule($context, 'ScenarioDefinition');
772 0         0 $self->_start_rule($context, 'Scenario');
773 0         0 $self->_build($context, $token);
774 0         0 return 10;
775             }
776 0         0 ($ok, $err) = $context->token_matcher->match_RuleLine($token);
777 0 0       0 if ($ok) {
778 0 0       0 $self->add_error( $context, $err ) if $err;
779 0         0 $self->_end_rule($context, 'DataTable');
780 0         0 $self->_end_rule($context, 'Step');
781 0         0 $self->_end_rule($context, 'Background');
782 0         0 $self->_start_rule($context, 'Rule');
783 0         0 $self->_start_rule($context, 'RuleHeader');
784 0         0 $self->_build($context, $token);
785 0         0 return 19;
786             }
787 0         0 ($ok, $err) = $context->token_matcher->match_Comment($token);
788 0 0       0 if ($ok) {
789 0 0       0 $self->add_error( $context, $err ) if $err;
790 0         0 $self->_build($context, $token);
791 0         0 return 8;
792             }
793 0         0 ($ok, $err) = $context->token_matcher->match_Empty($token);
794 0 0       0 if ($ok) {
795 0 0       0 $self->add_error( $context, $err ) if $err;
796 0         0 $self->_build($context, $token);
797 0         0 return 8;
798             }
799              
800 0         0 $token->detach;
801 0         0 $err = $self->_construct_parser_error(
802             $token,
803             ["#EOF", "#TableRow", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"],
804             "State: 8 - GherkinDocument:0>Feature:1>Background:2>Step:1>StepArg:0>__alt0:0>DataTable:0>#TableRow:0",
805             );
806 0         0 $self->add_error( $context, $err );
807              
808 0         0 return 8;
809             }
810              
811             # GherkinDocument:0>Feature:2>ScenarioDefinition:0>Tags:0>#TagLine:0
812             sub match_token_at_9 {
813 0     0 0 0 my ( $self, $token, $context ) = @_;
814 0         0 my ( $ok, $err );
815 0         0 ($ok, $err) = $context->token_matcher->match_TagLine($token);
816 0 0       0 if ($ok) {
817 0 0       0 $self->add_error( $context, $err ) if $err;
818 0         0 $self->_build($context, $token);
819 0         0 return 9;
820             }
821 0         0 ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
822 0 0       0 if ($ok) {
823 0 0       0 $self->add_error( $context, $err ) if $err;
824 0         0 $self->_end_rule($context, 'Tags');
825 0         0 $self->_start_rule($context, 'Scenario');
826 0         0 $self->_build($context, $token);
827 0         0 return 10;
828             }
829 0         0 ($ok, $err) = $context->token_matcher->match_Comment($token);
830 0 0       0 if ($ok) {
831 0 0       0 $self->add_error( $context, $err ) if $err;
832 0         0 $self->_build($context, $token);
833 0         0 return 9;
834             }
835 0         0 ($ok, $err) = $context->token_matcher->match_Empty($token);
836 0 0       0 if ($ok) {
837 0 0       0 $self->add_error( $context, $err ) if $err;
838 0         0 $self->_build($context, $token);
839 0         0 return 9;
840             }
841              
842 0         0 $token->detach;
843 0         0 $err = $self->_construct_parser_error(
844             $token,
845             ["#TagLine", "#ScenarioLine", "#Comment", "#Empty"],
846             "State: 9 - GherkinDocument:0>Feature:2>ScenarioDefinition:0>Tags:0>#TagLine:0",
847             );
848 0         0 $self->add_error( $context, $err );
849              
850 0         0 return 9;
851             }
852              
853             # GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:0>#ScenarioLine:0
854             sub match_token_at_10 {
855 6     6 0 19 my ( $self, $token, $context ) = @_;
856 6         12 my ( $ok, $err );
857 6         32 ($ok, $err) = $context->token_matcher->match_EOF($token);
858 6 50       52 if ($ok) {
859 0 0       0 $self->add_error( $context, $err ) if $err;
860 0         0 $self->_end_rule($context, 'Scenario');
861 0         0 $self->_end_rule($context, 'ScenarioDefinition');
862 0         0 $self->_end_rule($context, 'Feature');
863 0         0 $self->_build($context, $token);
864 0         0 return 34;
865             }
866 6         23 ($ok, $err) = $context->token_matcher->match_Empty($token);
867 6 50       20 if ($ok) {
868 0 0       0 $self->add_error( $context, $err ) if $err;
869 0         0 $self->_build($context, $token);
870 0         0 return 10;
871             }
872 6         23 ($ok, $err) = $context->token_matcher->match_Comment($token);
873 6 50       17 if ($ok) {
874 0 0       0 $self->add_error( $context, $err ) if $err;
875 0         0 $self->_start_rule($context, 'Description');
876 0         0 $self->_build($context, $token);
877 0         0 return 11;
878             }
879 6         23 ($ok, $err) = $context->token_matcher->match_StepLine($token);
880 6 50       20 if ($ok) {
881 6 50       16 $self->add_error( $context, $err ) if $err;
882 6         34 $self->_start_rule($context, 'Step');
883 6         22 $self->_build($context, $token);
884 6         18 return 12;
885             }
886 0         0 ($ok, $err) = $context->token_matcher->match_TagLine($token);
887 0 0       0 if ($ok) {
888 0 0       0 $self->add_error( $context, $err ) if $err;
889 0 0       0 if ($self->lookahead_1($context, $token)) {
890 0         0 $self->_start_rule($context, 'ExamplesDefinition');
891 0         0 $self->_start_rule($context, 'Tags');
892 0         0 $self->_build($context, $token);
893 0         0 return 14;
894             }
895             }
896 0         0 ($ok, $err) = $context->token_matcher->match_TagLine($token);
897 0 0       0 if ($ok) {
898 0 0       0 $self->add_error( $context, $err ) if $err;
899 0 0       0 if ($self->lookahead_0($context, $token)) {
900 0         0 $self->_end_rule($context, 'Scenario');
901 0         0 $self->_end_rule($context, 'ScenarioDefinition');
902 0         0 $self->_start_rule($context, 'ScenarioDefinition');
903 0         0 $self->_start_rule($context, 'Tags');
904 0         0 $self->_build($context, $token);
905 0         0 return 9;
906             }
907             }
908 0         0 ($ok, $err) = $context->token_matcher->match_TagLine($token);
909 0 0       0 if ($ok) {
910 0 0       0 $self->add_error( $context, $err ) if $err;
911 0         0 $self->_end_rule($context, 'Scenario');
912 0         0 $self->_end_rule($context, 'ScenarioDefinition');
913 0         0 $self->_start_rule($context, 'Rule');
914 0         0 $self->_start_rule($context, 'RuleHeader');
915 0         0 $self->_start_rule($context, 'Tags');
916 0         0 $self->_build($context, $token);
917 0         0 return 18;
918             }
919 0         0 ($ok, $err) = $context->token_matcher->match_ExamplesLine($token);
920 0 0       0 if ($ok) {
921 0 0       0 $self->add_error( $context, $err ) if $err;
922 0         0 $self->_start_rule($context, 'ExamplesDefinition');
923 0         0 $self->_start_rule($context, 'Examples');
924 0         0 $self->_build($context, $token);
925 0         0 return 15;
926             }
927 0         0 ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
928 0 0       0 if ($ok) {
929 0 0       0 $self->add_error( $context, $err ) if $err;
930 0         0 $self->_end_rule($context, 'Scenario');
931 0         0 $self->_end_rule($context, 'ScenarioDefinition');
932 0         0 $self->_start_rule($context, 'ScenarioDefinition');
933 0         0 $self->_start_rule($context, 'Scenario');
934 0         0 $self->_build($context, $token);
935 0         0 return 10;
936             }
937 0         0 ($ok, $err) = $context->token_matcher->match_RuleLine($token);
938 0 0       0 if ($ok) {
939 0 0       0 $self->add_error( $context, $err ) if $err;
940 0         0 $self->_end_rule($context, 'Scenario');
941 0         0 $self->_end_rule($context, 'ScenarioDefinition');
942 0         0 $self->_start_rule($context, 'Rule');
943 0         0 $self->_start_rule($context, 'RuleHeader');
944 0         0 $self->_build($context, $token);
945 0         0 return 19;
946             }
947 0         0 ($ok, $err) = $context->token_matcher->match_Other($token);
948 0 0       0 if ($ok) {
949 0 0       0 $self->add_error( $context, $err ) if $err;
950 0         0 $self->_start_rule($context, 'Description');
951 0         0 $self->_build($context, $token);
952 0         0 return 11;
953             }
954              
955 0         0 $token->detach;
956 0         0 $err = $self->_construct_parser_error(
957             $token,
958             ["#EOF", "#Empty", "#Comment", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Other"],
959             "State: 10 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:0>#ScenarioLine:0",
960             );
961 0         0 $self->add_error( $context, $err );
962              
963 0         0 return 10;
964             }
965              
966             # GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:1>DescriptionHelper:1>Description:0>__alt1:0>#Other:0
967             sub match_token_at_11 {
968 0     0 0 0 my ( $self, $token, $context ) = @_;
969 0         0 my ( $ok, $err );
970 0         0 ($ok, $err) = $context->token_matcher->match_EOF($token);
971 0 0       0 if ($ok) {
972 0 0       0 $self->add_error( $context, $err ) if $err;
973 0         0 $self->_end_rule($context, 'Description');
974 0         0 $self->_end_rule($context, 'Scenario');
975 0         0 $self->_end_rule($context, 'ScenarioDefinition');
976 0         0 $self->_end_rule($context, 'Feature');
977 0         0 $self->_build($context, $token);
978 0         0 return 34;
979             }
980 0         0 ($ok, $err) = $context->token_matcher->match_Comment($token);
981 0 0       0 if ($ok) {
982 0 0       0 $self->add_error( $context, $err ) if $err;
983 0         0 $self->_build($context, $token);
984 0         0 return 11;
985             }
986 0         0 ($ok, $err) = $context->token_matcher->match_StepLine($token);
987 0 0       0 if ($ok) {
988 0 0       0 $self->add_error( $context, $err ) if $err;
989 0         0 $self->_end_rule($context, 'Description');
990 0         0 $self->_start_rule($context, 'Step');
991 0         0 $self->_build($context, $token);
992 0         0 return 12;
993             }
994 0         0 ($ok, $err) = $context->token_matcher->match_TagLine($token);
995 0 0       0 if ($ok) {
996 0 0       0 $self->add_error( $context, $err ) if $err;
997 0 0       0 if ($self->lookahead_1($context, $token)) {
998 0         0 $self->_end_rule($context, 'Description');
999 0         0 $self->_start_rule($context, 'ExamplesDefinition');
1000 0         0 $self->_start_rule($context, 'Tags');
1001 0         0 $self->_build($context, $token);
1002 0         0 return 14;
1003             }
1004             }
1005 0         0 ($ok, $err) = $context->token_matcher->match_TagLine($token);
1006 0 0       0 if ($ok) {
1007 0 0       0 $self->add_error( $context, $err ) if $err;
1008 0 0       0 if ($self->lookahead_0($context, $token)) {
1009 0         0 $self->_end_rule($context, 'Description');
1010 0         0 $self->_end_rule($context, 'Scenario');
1011 0         0 $self->_end_rule($context, 'ScenarioDefinition');
1012 0         0 $self->_start_rule($context, 'ScenarioDefinition');
1013 0         0 $self->_start_rule($context, 'Tags');
1014 0         0 $self->_build($context, $token);
1015 0         0 return 9;
1016             }
1017             }
1018 0         0 ($ok, $err) = $context->token_matcher->match_TagLine($token);
1019 0 0       0 if ($ok) {
1020 0 0       0 $self->add_error( $context, $err ) if $err;
1021 0         0 $self->_end_rule($context, 'Description');
1022 0         0 $self->_end_rule($context, 'Scenario');
1023 0         0 $self->_end_rule($context, 'ScenarioDefinition');
1024 0         0 $self->_start_rule($context, 'Rule');
1025 0         0 $self->_start_rule($context, 'RuleHeader');
1026 0         0 $self->_start_rule($context, 'Tags');
1027 0         0 $self->_build($context, $token);
1028 0         0 return 18;
1029             }
1030 0         0 ($ok, $err) = $context->token_matcher->match_ExamplesLine($token);
1031 0 0       0 if ($ok) {
1032 0 0       0 $self->add_error( $context, $err ) if $err;
1033 0         0 $self->_end_rule($context, 'Description');
1034 0         0 $self->_start_rule($context, 'ExamplesDefinition');
1035 0         0 $self->_start_rule($context, 'Examples');
1036 0         0 $self->_build($context, $token);
1037 0         0 return 15;
1038             }
1039 0         0 ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
1040 0 0       0 if ($ok) {
1041 0 0       0 $self->add_error( $context, $err ) if $err;
1042 0         0 $self->_end_rule($context, 'Description');
1043 0         0 $self->_end_rule($context, 'Scenario');
1044 0         0 $self->_end_rule($context, 'ScenarioDefinition');
1045 0         0 $self->_start_rule($context, 'ScenarioDefinition');
1046 0         0 $self->_start_rule($context, 'Scenario');
1047 0         0 $self->_build($context, $token);
1048 0         0 return 10;
1049             }
1050 0         0 ($ok, $err) = $context->token_matcher->match_RuleLine($token);
1051 0 0       0 if ($ok) {
1052 0 0       0 $self->add_error( $context, $err ) if $err;
1053 0         0 $self->_end_rule($context, 'Description');
1054 0         0 $self->_end_rule($context, 'Scenario');
1055 0         0 $self->_end_rule($context, 'ScenarioDefinition');
1056 0         0 $self->_start_rule($context, 'Rule');
1057 0         0 $self->_start_rule($context, 'RuleHeader');
1058 0         0 $self->_build($context, $token);
1059 0         0 return 19;
1060             }
1061 0         0 ($ok, $err) = $context->token_matcher->match_Other($token);
1062 0 0       0 if ($ok) {
1063 0 0       0 $self->add_error( $context, $err ) if $err;
1064 0         0 $self->_build($context, $token);
1065 0         0 return 11;
1066             }
1067              
1068 0         0 $token->detach;
1069 0         0 $err = $self->_construct_parser_error(
1070             $token,
1071             ["#EOF", "#Comment", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Other"],
1072             "State: 11 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:1>DescriptionHelper:1>Description:0>__alt1:0>#Other:0",
1073             );
1074 0         0 $self->add_error( $context, $err );
1075              
1076 0         0 return 11;
1077             }
1078              
1079             # GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:2>Step:0>#StepLine:0
1080             sub match_token_at_12 {
1081 9     9 0 21 my ( $self, $token, $context ) = @_;
1082 9         18 my ( $ok, $err );
1083 9         42 ($ok, $err) = $context->token_matcher->match_EOF($token);
1084 9 100       28 if ($ok) {
1085 3 50       9 $self->add_error( $context, $err ) if $err;
1086 3         16 $self->_end_rule($context, 'Step');
1087 3         15 $self->_end_rule($context, 'Scenario');
1088 3         11 $self->_end_rule($context, 'ScenarioDefinition');
1089 3         15 $self->_end_rule($context, 'Feature');
1090 3         16 $self->_build($context, $token);
1091 3         11 return 34;
1092             }
1093 6         23 ($ok, $err) = $context->token_matcher->match_TableRow($token);
1094 6 50       17 if ($ok) {
1095 0 0       0 $self->add_error( $context, $err ) if $err;
1096 0         0 $self->_start_rule($context, 'DataTable');
1097 0         0 $self->_build($context, $token);
1098 0         0 return 13;
1099             }
1100 6         21 ($ok, $err) = $context->token_matcher->match_DocStringSeparator($token);
1101 6 50       18 if ($ok) {
1102 0 0       0 $self->add_error( $context, $err ) if $err;
1103 0         0 $self->_start_rule($context, 'DocString');
1104 0         0 $self->_build($context, $token);
1105 0         0 return 39;
1106             }
1107 6         22 ($ok, $err) = $context->token_matcher->match_StepLine($token);
1108 6 50       17 if ($ok) {
1109 0 0       0 $self->add_error( $context, $err ) if $err;
1110 0         0 $self->_end_rule($context, 'Step');
1111 0         0 $self->_start_rule($context, 'Step');
1112 0         0 $self->_build($context, $token);
1113 0         0 return 12;
1114             }
1115 6         82 ($ok, $err) = $context->token_matcher->match_TagLine($token);
1116 6 50       21 if ($ok) {
1117 0 0       0 $self->add_error( $context, $err ) if $err;
1118 0 0       0 if ($self->lookahead_1($context, $token)) {
1119 0         0 $self->_end_rule($context, 'Step');
1120 0         0 $self->_start_rule($context, 'ExamplesDefinition');
1121 0         0 $self->_start_rule($context, 'Tags');
1122 0         0 $self->_build($context, $token);
1123 0         0 return 14;
1124             }
1125             }
1126 6         19 ($ok, $err) = $context->token_matcher->match_TagLine($token);
1127 6 50       16 if ($ok) {
1128 0 0       0 $self->add_error( $context, $err ) if $err;
1129 0 0       0 if ($self->lookahead_0($context, $token)) {
1130 0         0 $self->_end_rule($context, 'Step');
1131 0         0 $self->_end_rule($context, 'Scenario');
1132 0         0 $self->_end_rule($context, 'ScenarioDefinition');
1133 0         0 $self->_start_rule($context, 'ScenarioDefinition');
1134 0         0 $self->_start_rule($context, 'Tags');
1135 0         0 $self->_build($context, $token);
1136 0         0 return 9;
1137             }
1138             }
1139 6         21 ($ok, $err) = $context->token_matcher->match_TagLine($token);
1140 6 50       16 if ($ok) {
1141 0 0       0 $self->add_error( $context, $err ) if $err;
1142 0         0 $self->_end_rule($context, 'Step');
1143 0         0 $self->_end_rule($context, 'Scenario');
1144 0         0 $self->_end_rule($context, 'ScenarioDefinition');
1145 0         0 $self->_start_rule($context, 'Rule');
1146 0         0 $self->_start_rule($context, 'RuleHeader');
1147 0         0 $self->_start_rule($context, 'Tags');
1148 0         0 $self->_build($context, $token);
1149 0         0 return 18;
1150             }
1151 6         23 ($ok, $err) = $context->token_matcher->match_ExamplesLine($token);
1152 6 50       14 if ($ok) {
1153 0 0       0 $self->add_error( $context, $err ) if $err;
1154 0         0 $self->_end_rule($context, 'Step');
1155 0         0 $self->_start_rule($context, 'ExamplesDefinition');
1156 0         0 $self->_start_rule($context, 'Examples');
1157 0         0 $self->_build($context, $token);
1158 0         0 return 15;
1159             }
1160 6         22 ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
1161 6 100       19 if ($ok) {
1162 3 50       8 $self->add_error( $context, $err ) if $err;
1163 3         16 $self->_end_rule($context, 'Step');
1164 3         14 $self->_end_rule($context, 'Scenario');
1165 3         12 $self->_end_rule($context, 'ScenarioDefinition');
1166 3         16 $self->_start_rule($context, 'ScenarioDefinition');
1167 3         11 $self->_start_rule($context, 'Scenario');
1168 3         11 $self->_build($context, $token);
1169 3         12 return 10;
1170             }
1171 3         17 ($ok, $err) = $context->token_matcher->match_RuleLine($token);
1172 3 50       27 if ($ok) {
1173 0 0       0 $self->add_error( $context, $err ) if $err;
1174 0         0 $self->_end_rule($context, 'Step');
1175 0         0 $self->_end_rule($context, 'Scenario');
1176 0         0 $self->_end_rule($context, 'ScenarioDefinition');
1177 0         0 $self->_start_rule($context, 'Rule');
1178 0         0 $self->_start_rule($context, 'RuleHeader');
1179 0         0 $self->_build($context, $token);
1180 0         0 return 19;
1181             }
1182 3         13 ($ok, $err) = $context->token_matcher->match_Comment($token);
1183 3 50       10 if ($ok) {
1184 0 0       0 $self->add_error( $context, $err ) if $err;
1185 0         0 $self->_build($context, $token);
1186 0         0 return 12;
1187             }
1188 3         12 ($ok, $err) = $context->token_matcher->match_Empty($token);
1189 3 50       28 if ($ok) {
1190 3 50       9 $self->add_error( $context, $err ) if $err;
1191 3         17 $self->_build($context, $token);
1192 3         13 return 12;
1193             }
1194              
1195 0           $token->detach;
1196 0           $err = $self->_construct_parser_error(
1197             $token,
1198             ["#EOF", "#TableRow", "#DocStringSeparator", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"],
1199             "State: 12 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:2>Step:0>#StepLine:0",
1200             );
1201 0           $self->add_error( $context, $err );
1202              
1203 0           return 12;
1204             }
1205              
1206             # GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:0>DataTable:0>#TableRow:0
1207             sub match_token_at_13 {
1208 0     0 0   my ( $self, $token, $context ) = @_;
1209 0           my ( $ok, $err );
1210 0           ($ok, $err) = $context->token_matcher->match_EOF($token);
1211 0 0         if ($ok) {
1212 0 0         $self->add_error( $context, $err ) if $err;
1213 0           $self->_end_rule($context, 'DataTable');
1214 0           $self->_end_rule($context, 'Step');
1215 0           $self->_end_rule($context, 'Scenario');
1216 0           $self->_end_rule($context, 'ScenarioDefinition');
1217 0           $self->_end_rule($context, 'Feature');
1218 0           $self->_build($context, $token);
1219 0           return 34;
1220             }
1221 0           ($ok, $err) = $context->token_matcher->match_TableRow($token);
1222 0 0         if ($ok) {
1223 0 0         $self->add_error( $context, $err ) if $err;
1224 0           $self->_build($context, $token);
1225 0           return 13;
1226             }
1227 0           ($ok, $err) = $context->token_matcher->match_StepLine($token);
1228 0 0         if ($ok) {
1229 0 0         $self->add_error( $context, $err ) if $err;
1230 0           $self->_end_rule($context, 'DataTable');
1231 0           $self->_end_rule($context, 'Step');
1232 0           $self->_start_rule($context, 'Step');
1233 0           $self->_build($context, $token);
1234 0           return 12;
1235             }
1236 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
1237 0 0         if ($ok) {
1238 0 0         $self->add_error( $context, $err ) if $err;
1239 0 0         if ($self->lookahead_1($context, $token)) {
1240 0           $self->_end_rule($context, 'DataTable');
1241 0           $self->_end_rule($context, 'Step');
1242 0           $self->_start_rule($context, 'ExamplesDefinition');
1243 0           $self->_start_rule($context, 'Tags');
1244 0           $self->_build($context, $token);
1245 0           return 14;
1246             }
1247             }
1248 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
1249 0 0         if ($ok) {
1250 0 0         $self->add_error( $context, $err ) if $err;
1251 0 0         if ($self->lookahead_0($context, $token)) {
1252 0           $self->_end_rule($context, 'DataTable');
1253 0           $self->_end_rule($context, 'Step');
1254 0           $self->_end_rule($context, 'Scenario');
1255 0           $self->_end_rule($context, 'ScenarioDefinition');
1256 0           $self->_start_rule($context, 'ScenarioDefinition');
1257 0           $self->_start_rule($context, 'Tags');
1258 0           $self->_build($context, $token);
1259 0           return 9;
1260             }
1261             }
1262 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
1263 0 0         if ($ok) {
1264 0 0         $self->add_error( $context, $err ) if $err;
1265 0           $self->_end_rule($context, 'DataTable');
1266 0           $self->_end_rule($context, 'Step');
1267 0           $self->_end_rule($context, 'Scenario');
1268 0           $self->_end_rule($context, 'ScenarioDefinition');
1269 0           $self->_start_rule($context, 'Rule');
1270 0           $self->_start_rule($context, 'RuleHeader');
1271 0           $self->_start_rule($context, 'Tags');
1272 0           $self->_build($context, $token);
1273 0           return 18;
1274             }
1275 0           ($ok, $err) = $context->token_matcher->match_ExamplesLine($token);
1276 0 0         if ($ok) {
1277 0 0         $self->add_error( $context, $err ) if $err;
1278 0           $self->_end_rule($context, 'DataTable');
1279 0           $self->_end_rule($context, 'Step');
1280 0           $self->_start_rule($context, 'ExamplesDefinition');
1281 0           $self->_start_rule($context, 'Examples');
1282 0           $self->_build($context, $token);
1283 0           return 15;
1284             }
1285 0           ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
1286 0 0         if ($ok) {
1287 0 0         $self->add_error( $context, $err ) if $err;
1288 0           $self->_end_rule($context, 'DataTable');
1289 0           $self->_end_rule($context, 'Step');
1290 0           $self->_end_rule($context, 'Scenario');
1291 0           $self->_end_rule($context, 'ScenarioDefinition');
1292 0           $self->_start_rule($context, 'ScenarioDefinition');
1293 0           $self->_start_rule($context, 'Scenario');
1294 0           $self->_build($context, $token);
1295 0           return 10;
1296             }
1297 0           ($ok, $err) = $context->token_matcher->match_RuleLine($token);
1298 0 0         if ($ok) {
1299 0 0         $self->add_error( $context, $err ) if $err;
1300 0           $self->_end_rule($context, 'DataTable');
1301 0           $self->_end_rule($context, 'Step');
1302 0           $self->_end_rule($context, 'Scenario');
1303 0           $self->_end_rule($context, 'ScenarioDefinition');
1304 0           $self->_start_rule($context, 'Rule');
1305 0           $self->_start_rule($context, 'RuleHeader');
1306 0           $self->_build($context, $token);
1307 0           return 19;
1308             }
1309 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
1310 0 0         if ($ok) {
1311 0 0         $self->add_error( $context, $err ) if $err;
1312 0           $self->_build($context, $token);
1313 0           return 13;
1314             }
1315 0           ($ok, $err) = $context->token_matcher->match_Empty($token);
1316 0 0         if ($ok) {
1317 0 0         $self->add_error( $context, $err ) if $err;
1318 0           $self->_build($context, $token);
1319 0           return 13;
1320             }
1321              
1322 0           $token->detach;
1323 0           $err = $self->_construct_parser_error(
1324             $token,
1325             ["#EOF", "#TableRow", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"],
1326             "State: 13 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:0>DataTable:0>#TableRow:0",
1327             );
1328 0           $self->add_error( $context, $err );
1329              
1330 0           return 13;
1331             }
1332              
1333             # GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:0>Tags:0>#TagLine:0
1334             sub match_token_at_14 {
1335 0     0 0   my ( $self, $token, $context ) = @_;
1336 0           my ( $ok, $err );
1337 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
1338 0 0         if ($ok) {
1339 0 0         $self->add_error( $context, $err ) if $err;
1340 0           $self->_build($context, $token);
1341 0           return 14;
1342             }
1343 0           ($ok, $err) = $context->token_matcher->match_ExamplesLine($token);
1344 0 0         if ($ok) {
1345 0 0         $self->add_error( $context, $err ) if $err;
1346 0           $self->_end_rule($context, 'Tags');
1347 0           $self->_start_rule($context, 'Examples');
1348 0           $self->_build($context, $token);
1349 0           return 15;
1350             }
1351 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
1352 0 0         if ($ok) {
1353 0 0         $self->add_error( $context, $err ) if $err;
1354 0           $self->_build($context, $token);
1355 0           return 14;
1356             }
1357 0           ($ok, $err) = $context->token_matcher->match_Empty($token);
1358 0 0         if ($ok) {
1359 0 0         $self->add_error( $context, $err ) if $err;
1360 0           $self->_build($context, $token);
1361 0           return 14;
1362             }
1363              
1364 0           $token->detach;
1365 0           $err = $self->_construct_parser_error(
1366             $token,
1367             ["#TagLine", "#ExamplesLine", "#Comment", "#Empty"],
1368             "State: 14 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:0>Tags:0>#TagLine:0",
1369             );
1370 0           $self->add_error( $context, $err );
1371              
1372 0           return 14;
1373             }
1374              
1375             # GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:0>#ExamplesLine:0
1376             sub match_token_at_15 {
1377 0     0 0   my ( $self, $token, $context ) = @_;
1378 0           my ( $ok, $err );
1379 0           ($ok, $err) = $context->token_matcher->match_EOF($token);
1380 0 0         if ($ok) {
1381 0 0         $self->add_error( $context, $err ) if $err;
1382 0           $self->_end_rule($context, 'Examples');
1383 0           $self->_end_rule($context, 'ExamplesDefinition');
1384 0           $self->_end_rule($context, 'Scenario');
1385 0           $self->_end_rule($context, 'ScenarioDefinition');
1386 0           $self->_end_rule($context, 'Feature');
1387 0           $self->_build($context, $token);
1388 0           return 34;
1389             }
1390 0           ($ok, $err) = $context->token_matcher->match_Empty($token);
1391 0 0         if ($ok) {
1392 0 0         $self->add_error( $context, $err ) if $err;
1393 0           $self->_build($context, $token);
1394 0           return 15;
1395             }
1396 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
1397 0 0         if ($ok) {
1398 0 0         $self->add_error( $context, $err ) if $err;
1399 0           $self->_start_rule($context, 'Description');
1400 0           $self->_build($context, $token);
1401 0           return 16;
1402             }
1403 0           ($ok, $err) = $context->token_matcher->match_TableRow($token);
1404 0 0         if ($ok) {
1405 0 0         $self->add_error( $context, $err ) if $err;
1406 0           $self->_start_rule($context, 'ExamplesTable');
1407 0           $self->_build($context, $token);
1408 0           return 17;
1409             }
1410 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
1411 0 0         if ($ok) {
1412 0 0         $self->add_error( $context, $err ) if $err;
1413 0 0         if ($self->lookahead_1($context, $token)) {
1414 0           $self->_end_rule($context, 'Examples');
1415 0           $self->_end_rule($context, 'ExamplesDefinition');
1416 0           $self->_start_rule($context, 'ExamplesDefinition');
1417 0           $self->_start_rule($context, 'Tags');
1418 0           $self->_build($context, $token);
1419 0           return 14;
1420             }
1421             }
1422 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
1423 0 0         if ($ok) {
1424 0 0         $self->add_error( $context, $err ) if $err;
1425 0 0         if ($self->lookahead_0($context, $token)) {
1426 0           $self->_end_rule($context, 'Examples');
1427 0           $self->_end_rule($context, 'ExamplesDefinition');
1428 0           $self->_end_rule($context, 'Scenario');
1429 0           $self->_end_rule($context, 'ScenarioDefinition');
1430 0           $self->_start_rule($context, 'ScenarioDefinition');
1431 0           $self->_start_rule($context, 'Tags');
1432 0           $self->_build($context, $token);
1433 0           return 9;
1434             }
1435             }
1436 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
1437 0 0         if ($ok) {
1438 0 0         $self->add_error( $context, $err ) if $err;
1439 0           $self->_end_rule($context, 'Examples');
1440 0           $self->_end_rule($context, 'ExamplesDefinition');
1441 0           $self->_end_rule($context, 'Scenario');
1442 0           $self->_end_rule($context, 'ScenarioDefinition');
1443 0           $self->_start_rule($context, 'Rule');
1444 0           $self->_start_rule($context, 'RuleHeader');
1445 0           $self->_start_rule($context, 'Tags');
1446 0           $self->_build($context, $token);
1447 0           return 18;
1448             }
1449 0           ($ok, $err) = $context->token_matcher->match_ExamplesLine($token);
1450 0 0         if ($ok) {
1451 0 0         $self->add_error( $context, $err ) if $err;
1452 0           $self->_end_rule($context, 'Examples');
1453 0           $self->_end_rule($context, 'ExamplesDefinition');
1454 0           $self->_start_rule($context, 'ExamplesDefinition');
1455 0           $self->_start_rule($context, 'Examples');
1456 0           $self->_build($context, $token);
1457 0           return 15;
1458             }
1459 0           ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
1460 0 0         if ($ok) {
1461 0 0         $self->add_error( $context, $err ) if $err;
1462 0           $self->_end_rule($context, 'Examples');
1463 0           $self->_end_rule($context, 'ExamplesDefinition');
1464 0           $self->_end_rule($context, 'Scenario');
1465 0           $self->_end_rule($context, 'ScenarioDefinition');
1466 0           $self->_start_rule($context, 'ScenarioDefinition');
1467 0           $self->_start_rule($context, 'Scenario');
1468 0           $self->_build($context, $token);
1469 0           return 10;
1470             }
1471 0           ($ok, $err) = $context->token_matcher->match_RuleLine($token);
1472 0 0         if ($ok) {
1473 0 0         $self->add_error( $context, $err ) if $err;
1474 0           $self->_end_rule($context, 'Examples');
1475 0           $self->_end_rule($context, 'ExamplesDefinition');
1476 0           $self->_end_rule($context, 'Scenario');
1477 0           $self->_end_rule($context, 'ScenarioDefinition');
1478 0           $self->_start_rule($context, 'Rule');
1479 0           $self->_start_rule($context, 'RuleHeader');
1480 0           $self->_build($context, $token);
1481 0           return 19;
1482             }
1483 0           ($ok, $err) = $context->token_matcher->match_Other($token);
1484 0 0         if ($ok) {
1485 0 0         $self->add_error( $context, $err ) if $err;
1486 0           $self->_start_rule($context, 'Description');
1487 0           $self->_build($context, $token);
1488 0           return 16;
1489             }
1490              
1491 0           $token->detach;
1492 0           $err = $self->_construct_parser_error(
1493             $token,
1494             ["#EOF", "#Empty", "#Comment", "#TableRow", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Other"],
1495             "State: 15 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:0>#ExamplesLine:0",
1496             );
1497 0           $self->add_error( $context, $err );
1498              
1499 0           return 15;
1500             }
1501              
1502             # GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:1>DescriptionHelper:1>Description:0>__alt1:0>#Other:0
1503             sub match_token_at_16 {
1504 0     0 0   my ( $self, $token, $context ) = @_;
1505 0           my ( $ok, $err );
1506 0           ($ok, $err) = $context->token_matcher->match_EOF($token);
1507 0 0         if ($ok) {
1508 0 0         $self->add_error( $context, $err ) if $err;
1509 0           $self->_end_rule($context, 'Description');
1510 0           $self->_end_rule($context, 'Examples');
1511 0           $self->_end_rule($context, 'ExamplesDefinition');
1512 0           $self->_end_rule($context, 'Scenario');
1513 0           $self->_end_rule($context, 'ScenarioDefinition');
1514 0           $self->_end_rule($context, 'Feature');
1515 0           $self->_build($context, $token);
1516 0           return 34;
1517             }
1518 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
1519 0 0         if ($ok) {
1520 0 0         $self->add_error( $context, $err ) if $err;
1521 0           $self->_build($context, $token);
1522 0           return 16;
1523             }
1524 0           ($ok, $err) = $context->token_matcher->match_TableRow($token);
1525 0 0         if ($ok) {
1526 0 0         $self->add_error( $context, $err ) if $err;
1527 0           $self->_end_rule($context, 'Description');
1528 0           $self->_start_rule($context, 'ExamplesTable');
1529 0           $self->_build($context, $token);
1530 0           return 17;
1531             }
1532 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
1533 0 0         if ($ok) {
1534 0 0         $self->add_error( $context, $err ) if $err;
1535 0 0         if ($self->lookahead_1($context, $token)) {
1536 0           $self->_end_rule($context, 'Description');
1537 0           $self->_end_rule($context, 'Examples');
1538 0           $self->_end_rule($context, 'ExamplesDefinition');
1539 0           $self->_start_rule($context, 'ExamplesDefinition');
1540 0           $self->_start_rule($context, 'Tags');
1541 0           $self->_build($context, $token);
1542 0           return 14;
1543             }
1544             }
1545 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
1546 0 0         if ($ok) {
1547 0 0         $self->add_error( $context, $err ) if $err;
1548 0 0         if ($self->lookahead_0($context, $token)) {
1549 0           $self->_end_rule($context, 'Description');
1550 0           $self->_end_rule($context, 'Examples');
1551 0           $self->_end_rule($context, 'ExamplesDefinition');
1552 0           $self->_end_rule($context, 'Scenario');
1553 0           $self->_end_rule($context, 'ScenarioDefinition');
1554 0           $self->_start_rule($context, 'ScenarioDefinition');
1555 0           $self->_start_rule($context, 'Tags');
1556 0           $self->_build($context, $token);
1557 0           return 9;
1558             }
1559             }
1560 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
1561 0 0         if ($ok) {
1562 0 0         $self->add_error( $context, $err ) if $err;
1563 0           $self->_end_rule($context, 'Description');
1564 0           $self->_end_rule($context, 'Examples');
1565 0           $self->_end_rule($context, 'ExamplesDefinition');
1566 0           $self->_end_rule($context, 'Scenario');
1567 0           $self->_end_rule($context, 'ScenarioDefinition');
1568 0           $self->_start_rule($context, 'Rule');
1569 0           $self->_start_rule($context, 'RuleHeader');
1570 0           $self->_start_rule($context, 'Tags');
1571 0           $self->_build($context, $token);
1572 0           return 18;
1573             }
1574 0           ($ok, $err) = $context->token_matcher->match_ExamplesLine($token);
1575 0 0         if ($ok) {
1576 0 0         $self->add_error( $context, $err ) if $err;
1577 0           $self->_end_rule($context, 'Description');
1578 0           $self->_end_rule($context, 'Examples');
1579 0           $self->_end_rule($context, 'ExamplesDefinition');
1580 0           $self->_start_rule($context, 'ExamplesDefinition');
1581 0           $self->_start_rule($context, 'Examples');
1582 0           $self->_build($context, $token);
1583 0           return 15;
1584             }
1585 0           ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
1586 0 0         if ($ok) {
1587 0 0         $self->add_error( $context, $err ) if $err;
1588 0           $self->_end_rule($context, 'Description');
1589 0           $self->_end_rule($context, 'Examples');
1590 0           $self->_end_rule($context, 'ExamplesDefinition');
1591 0           $self->_end_rule($context, 'Scenario');
1592 0           $self->_end_rule($context, 'ScenarioDefinition');
1593 0           $self->_start_rule($context, 'ScenarioDefinition');
1594 0           $self->_start_rule($context, 'Scenario');
1595 0           $self->_build($context, $token);
1596 0           return 10;
1597             }
1598 0           ($ok, $err) = $context->token_matcher->match_RuleLine($token);
1599 0 0         if ($ok) {
1600 0 0         $self->add_error( $context, $err ) if $err;
1601 0           $self->_end_rule($context, 'Description');
1602 0           $self->_end_rule($context, 'Examples');
1603 0           $self->_end_rule($context, 'ExamplesDefinition');
1604 0           $self->_end_rule($context, 'Scenario');
1605 0           $self->_end_rule($context, 'ScenarioDefinition');
1606 0           $self->_start_rule($context, 'Rule');
1607 0           $self->_start_rule($context, 'RuleHeader');
1608 0           $self->_build($context, $token);
1609 0           return 19;
1610             }
1611 0           ($ok, $err) = $context->token_matcher->match_Other($token);
1612 0 0         if ($ok) {
1613 0 0         $self->add_error( $context, $err ) if $err;
1614 0           $self->_build($context, $token);
1615 0           return 16;
1616             }
1617              
1618 0           $token->detach;
1619 0           $err = $self->_construct_parser_error(
1620             $token,
1621             ["#EOF", "#Comment", "#TableRow", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Other"],
1622             "State: 16 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:1>DescriptionHelper:1>Description:0>__alt1:0>#Other:0",
1623             );
1624 0           $self->add_error( $context, $err );
1625              
1626 0           return 16;
1627             }
1628              
1629             # GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:2>ExamplesTable:0>#TableRow:0
1630             sub match_token_at_17 {
1631 0     0 0   my ( $self, $token, $context ) = @_;
1632 0           my ( $ok, $err );
1633 0           ($ok, $err) = $context->token_matcher->match_EOF($token);
1634 0 0         if ($ok) {
1635 0 0         $self->add_error( $context, $err ) if $err;
1636 0           $self->_end_rule($context, 'ExamplesTable');
1637 0           $self->_end_rule($context, 'Examples');
1638 0           $self->_end_rule($context, 'ExamplesDefinition');
1639 0           $self->_end_rule($context, 'Scenario');
1640 0           $self->_end_rule($context, 'ScenarioDefinition');
1641 0           $self->_end_rule($context, 'Feature');
1642 0           $self->_build($context, $token);
1643 0           return 34;
1644             }
1645 0           ($ok, $err) = $context->token_matcher->match_TableRow($token);
1646 0 0         if ($ok) {
1647 0 0         $self->add_error( $context, $err ) if $err;
1648 0           $self->_build($context, $token);
1649 0           return 17;
1650             }
1651 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
1652 0 0         if ($ok) {
1653 0 0         $self->add_error( $context, $err ) if $err;
1654 0 0         if ($self->lookahead_1($context, $token)) {
1655 0           $self->_end_rule($context, 'ExamplesTable');
1656 0           $self->_end_rule($context, 'Examples');
1657 0           $self->_end_rule($context, 'ExamplesDefinition');
1658 0           $self->_start_rule($context, 'ExamplesDefinition');
1659 0           $self->_start_rule($context, 'Tags');
1660 0           $self->_build($context, $token);
1661 0           return 14;
1662             }
1663             }
1664 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
1665 0 0         if ($ok) {
1666 0 0         $self->add_error( $context, $err ) if $err;
1667 0 0         if ($self->lookahead_0($context, $token)) {
1668 0           $self->_end_rule($context, 'ExamplesTable');
1669 0           $self->_end_rule($context, 'Examples');
1670 0           $self->_end_rule($context, 'ExamplesDefinition');
1671 0           $self->_end_rule($context, 'Scenario');
1672 0           $self->_end_rule($context, 'ScenarioDefinition');
1673 0           $self->_start_rule($context, 'ScenarioDefinition');
1674 0           $self->_start_rule($context, 'Tags');
1675 0           $self->_build($context, $token);
1676 0           return 9;
1677             }
1678             }
1679 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
1680 0 0         if ($ok) {
1681 0 0         $self->add_error( $context, $err ) if $err;
1682 0           $self->_end_rule($context, 'ExamplesTable');
1683 0           $self->_end_rule($context, 'Examples');
1684 0           $self->_end_rule($context, 'ExamplesDefinition');
1685 0           $self->_end_rule($context, 'Scenario');
1686 0           $self->_end_rule($context, 'ScenarioDefinition');
1687 0           $self->_start_rule($context, 'Rule');
1688 0           $self->_start_rule($context, 'RuleHeader');
1689 0           $self->_start_rule($context, 'Tags');
1690 0           $self->_build($context, $token);
1691 0           return 18;
1692             }
1693 0           ($ok, $err) = $context->token_matcher->match_ExamplesLine($token);
1694 0 0         if ($ok) {
1695 0 0         $self->add_error( $context, $err ) if $err;
1696 0           $self->_end_rule($context, 'ExamplesTable');
1697 0           $self->_end_rule($context, 'Examples');
1698 0           $self->_end_rule($context, 'ExamplesDefinition');
1699 0           $self->_start_rule($context, 'ExamplesDefinition');
1700 0           $self->_start_rule($context, 'Examples');
1701 0           $self->_build($context, $token);
1702 0           return 15;
1703             }
1704 0           ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
1705 0 0         if ($ok) {
1706 0 0         $self->add_error( $context, $err ) if $err;
1707 0           $self->_end_rule($context, 'ExamplesTable');
1708 0           $self->_end_rule($context, 'Examples');
1709 0           $self->_end_rule($context, 'ExamplesDefinition');
1710 0           $self->_end_rule($context, 'Scenario');
1711 0           $self->_end_rule($context, 'ScenarioDefinition');
1712 0           $self->_start_rule($context, 'ScenarioDefinition');
1713 0           $self->_start_rule($context, 'Scenario');
1714 0           $self->_build($context, $token);
1715 0           return 10;
1716             }
1717 0           ($ok, $err) = $context->token_matcher->match_RuleLine($token);
1718 0 0         if ($ok) {
1719 0 0         $self->add_error( $context, $err ) if $err;
1720 0           $self->_end_rule($context, 'ExamplesTable');
1721 0           $self->_end_rule($context, 'Examples');
1722 0           $self->_end_rule($context, 'ExamplesDefinition');
1723 0           $self->_end_rule($context, 'Scenario');
1724 0           $self->_end_rule($context, 'ScenarioDefinition');
1725 0           $self->_start_rule($context, 'Rule');
1726 0           $self->_start_rule($context, 'RuleHeader');
1727 0           $self->_build($context, $token);
1728 0           return 19;
1729             }
1730 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
1731 0 0         if ($ok) {
1732 0 0         $self->add_error( $context, $err ) if $err;
1733 0           $self->_build($context, $token);
1734 0           return 17;
1735             }
1736 0           ($ok, $err) = $context->token_matcher->match_Empty($token);
1737 0 0         if ($ok) {
1738 0 0         $self->add_error( $context, $err ) if $err;
1739 0           $self->_build($context, $token);
1740 0           return 17;
1741             }
1742              
1743 0           $token->detach;
1744 0           $err = $self->_construct_parser_error(
1745             $token,
1746             ["#EOF", "#TableRow", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"],
1747             "State: 17 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:2>ExamplesTable:0>#TableRow:0",
1748             );
1749 0           $self->add_error( $context, $err );
1750              
1751 0           return 17;
1752             }
1753              
1754             # GherkinDocument:0>Feature:3>Rule:0>RuleHeader:0>Tags:0>#TagLine:0
1755             sub match_token_at_18 {
1756 0     0 0   my ( $self, $token, $context ) = @_;
1757 0           my ( $ok, $err );
1758 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
1759 0 0         if ($ok) {
1760 0 0         $self->add_error( $context, $err ) if $err;
1761 0           $self->_build($context, $token);
1762 0           return 18;
1763             }
1764 0           ($ok, $err) = $context->token_matcher->match_RuleLine($token);
1765 0 0         if ($ok) {
1766 0 0         $self->add_error( $context, $err ) if $err;
1767 0           $self->_end_rule($context, 'Tags');
1768 0           $self->_build($context, $token);
1769 0           return 19;
1770             }
1771 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
1772 0 0         if ($ok) {
1773 0 0         $self->add_error( $context, $err ) if $err;
1774 0           $self->_build($context, $token);
1775 0           return 18;
1776             }
1777 0           ($ok, $err) = $context->token_matcher->match_Empty($token);
1778 0 0         if ($ok) {
1779 0 0         $self->add_error( $context, $err ) if $err;
1780 0           $self->_build($context, $token);
1781 0           return 18;
1782             }
1783              
1784 0           $token->detach;
1785 0           $err = $self->_construct_parser_error(
1786             $token,
1787             ["#TagLine", "#RuleLine", "#Comment", "#Empty"],
1788             "State: 18 - GherkinDocument:0>Feature:3>Rule:0>RuleHeader:0>Tags:0>#TagLine:0",
1789             );
1790 0           $self->add_error( $context, $err );
1791              
1792 0           return 18;
1793             }
1794              
1795             # GherkinDocument:0>Feature:3>Rule:0>RuleHeader:1>#RuleLine:0
1796             sub match_token_at_19 {
1797 0     0 0   my ( $self, $token, $context ) = @_;
1798 0           my ( $ok, $err );
1799 0           ($ok, $err) = $context->token_matcher->match_EOF($token);
1800 0 0         if ($ok) {
1801 0 0         $self->add_error( $context, $err ) if $err;
1802 0           $self->_end_rule($context, 'RuleHeader');
1803 0           $self->_end_rule($context, 'Rule');
1804 0           $self->_end_rule($context, 'Feature');
1805 0           $self->_build($context, $token);
1806 0           return 34;
1807             }
1808 0           ($ok, $err) = $context->token_matcher->match_Empty($token);
1809 0 0         if ($ok) {
1810 0 0         $self->add_error( $context, $err ) if $err;
1811 0           $self->_build($context, $token);
1812 0           return 19;
1813             }
1814 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
1815 0 0         if ($ok) {
1816 0 0         $self->add_error( $context, $err ) if $err;
1817 0           $self->_start_rule($context, 'Description');
1818 0           $self->_build($context, $token);
1819 0           return 20;
1820             }
1821 0           ($ok, $err) = $context->token_matcher->match_BackgroundLine($token);
1822 0 0         if ($ok) {
1823 0 0         $self->add_error( $context, $err ) if $err;
1824 0           $self->_end_rule($context, 'RuleHeader');
1825 0           $self->_start_rule($context, 'Background');
1826 0           $self->_build($context, $token);
1827 0           return 21;
1828             }
1829 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
1830 0 0         if ($ok) {
1831 0 0         $self->add_error( $context, $err ) if $err;
1832 0 0         if ($self->lookahead_0($context, $token)) {
1833 0           $self->_end_rule($context, 'RuleHeader');
1834 0           $self->_start_rule($context, 'ScenarioDefinition');
1835 0           $self->_start_rule($context, 'Tags');
1836 0           $self->_build($context, $token);
1837 0           return 25;
1838             }
1839             }
1840 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
1841 0 0         if ($ok) {
1842 0 0         $self->add_error( $context, $err ) if $err;
1843 0           $self->_end_rule($context, 'RuleHeader');
1844 0           $self->_end_rule($context, 'Rule');
1845 0           $self->_start_rule($context, 'Rule');
1846 0           $self->_start_rule($context, 'RuleHeader');
1847 0           $self->_start_rule($context, 'Tags');
1848 0           $self->_build($context, $token);
1849 0           return 18;
1850             }
1851 0           ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
1852 0 0         if ($ok) {
1853 0 0         $self->add_error( $context, $err ) if $err;
1854 0           $self->_end_rule($context, 'RuleHeader');
1855 0           $self->_start_rule($context, 'ScenarioDefinition');
1856 0           $self->_start_rule($context, 'Scenario');
1857 0           $self->_build($context, $token);
1858 0           return 26;
1859             }
1860 0           ($ok, $err) = $context->token_matcher->match_RuleLine($token);
1861 0 0         if ($ok) {
1862 0 0         $self->add_error( $context, $err ) if $err;
1863 0           $self->_end_rule($context, 'RuleHeader');
1864 0           $self->_end_rule($context, 'Rule');
1865 0           $self->_start_rule($context, 'Rule');
1866 0           $self->_start_rule($context, 'RuleHeader');
1867 0           $self->_build($context, $token);
1868 0           return 19;
1869             }
1870 0           ($ok, $err) = $context->token_matcher->match_Other($token);
1871 0 0         if ($ok) {
1872 0 0         $self->add_error( $context, $err ) if $err;
1873 0           $self->_start_rule($context, 'Description');
1874 0           $self->_build($context, $token);
1875 0           return 20;
1876             }
1877              
1878 0           $token->detach;
1879 0           $err = $self->_construct_parser_error(
1880             $token,
1881             ["#EOF", "#Empty", "#Comment", "#BackgroundLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Other"],
1882             "State: 19 - GherkinDocument:0>Feature:3>Rule:0>RuleHeader:1>#RuleLine:0",
1883             );
1884 0           $self->add_error( $context, $err );
1885              
1886 0           return 19;
1887             }
1888              
1889             # GherkinDocument:0>Feature:3>Rule:0>RuleHeader:2>DescriptionHelper:1>Description:0>__alt1:0>#Other:0
1890             sub match_token_at_20 {
1891 0     0 0   my ( $self, $token, $context ) = @_;
1892 0           my ( $ok, $err );
1893 0           ($ok, $err) = $context->token_matcher->match_EOF($token);
1894 0 0         if ($ok) {
1895 0 0         $self->add_error( $context, $err ) if $err;
1896 0           $self->_end_rule($context, 'Description');
1897 0           $self->_end_rule($context, 'RuleHeader');
1898 0           $self->_end_rule($context, 'Rule');
1899 0           $self->_end_rule($context, 'Feature');
1900 0           $self->_build($context, $token);
1901 0           return 34;
1902             }
1903 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
1904 0 0         if ($ok) {
1905 0 0         $self->add_error( $context, $err ) if $err;
1906 0           $self->_build($context, $token);
1907 0           return 20;
1908             }
1909 0           ($ok, $err) = $context->token_matcher->match_BackgroundLine($token);
1910 0 0         if ($ok) {
1911 0 0         $self->add_error( $context, $err ) if $err;
1912 0           $self->_end_rule($context, 'Description');
1913 0           $self->_end_rule($context, 'RuleHeader');
1914 0           $self->_start_rule($context, 'Background');
1915 0           $self->_build($context, $token);
1916 0           return 21;
1917             }
1918 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
1919 0 0         if ($ok) {
1920 0 0         $self->add_error( $context, $err ) if $err;
1921 0 0         if ($self->lookahead_0($context, $token)) {
1922 0           $self->_end_rule($context, 'Description');
1923 0           $self->_end_rule($context, 'RuleHeader');
1924 0           $self->_start_rule($context, 'ScenarioDefinition');
1925 0           $self->_start_rule($context, 'Tags');
1926 0           $self->_build($context, $token);
1927 0           return 25;
1928             }
1929             }
1930 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
1931 0 0         if ($ok) {
1932 0 0         $self->add_error( $context, $err ) if $err;
1933 0           $self->_end_rule($context, 'Description');
1934 0           $self->_end_rule($context, 'RuleHeader');
1935 0           $self->_end_rule($context, 'Rule');
1936 0           $self->_start_rule($context, 'Rule');
1937 0           $self->_start_rule($context, 'RuleHeader');
1938 0           $self->_start_rule($context, 'Tags');
1939 0           $self->_build($context, $token);
1940 0           return 18;
1941             }
1942 0           ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
1943 0 0         if ($ok) {
1944 0 0         $self->add_error( $context, $err ) if $err;
1945 0           $self->_end_rule($context, 'Description');
1946 0           $self->_end_rule($context, 'RuleHeader');
1947 0           $self->_start_rule($context, 'ScenarioDefinition');
1948 0           $self->_start_rule($context, 'Scenario');
1949 0           $self->_build($context, $token);
1950 0           return 26;
1951             }
1952 0           ($ok, $err) = $context->token_matcher->match_RuleLine($token);
1953 0 0         if ($ok) {
1954 0 0         $self->add_error( $context, $err ) if $err;
1955 0           $self->_end_rule($context, 'Description');
1956 0           $self->_end_rule($context, 'RuleHeader');
1957 0           $self->_end_rule($context, 'Rule');
1958 0           $self->_start_rule($context, 'Rule');
1959 0           $self->_start_rule($context, 'RuleHeader');
1960 0           $self->_build($context, $token);
1961 0           return 19;
1962             }
1963 0           ($ok, $err) = $context->token_matcher->match_Other($token);
1964 0 0         if ($ok) {
1965 0 0         $self->add_error( $context, $err ) if $err;
1966 0           $self->_build($context, $token);
1967 0           return 20;
1968             }
1969              
1970 0           $token->detach;
1971 0           $err = $self->_construct_parser_error(
1972             $token,
1973             ["#EOF", "#Comment", "#BackgroundLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Other"],
1974             "State: 20 - GherkinDocument:0>Feature:3>Rule:0>RuleHeader:2>DescriptionHelper:1>Description:0>__alt1:0>#Other:0",
1975             );
1976 0           $self->add_error( $context, $err );
1977              
1978 0           return 20;
1979             }
1980              
1981             # GherkinDocument:0>Feature:3>Rule:1>Background:0>#BackgroundLine:0
1982             sub match_token_at_21 {
1983 0     0 0   my ( $self, $token, $context ) = @_;
1984 0           my ( $ok, $err );
1985 0           ($ok, $err) = $context->token_matcher->match_EOF($token);
1986 0 0         if ($ok) {
1987 0 0         $self->add_error( $context, $err ) if $err;
1988 0           $self->_end_rule($context, 'Background');
1989 0           $self->_end_rule($context, 'Rule');
1990 0           $self->_end_rule($context, 'Feature');
1991 0           $self->_build($context, $token);
1992 0           return 34;
1993             }
1994 0           ($ok, $err) = $context->token_matcher->match_Empty($token);
1995 0 0         if ($ok) {
1996 0 0         $self->add_error( $context, $err ) if $err;
1997 0           $self->_build($context, $token);
1998 0           return 21;
1999             }
2000 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
2001 0 0         if ($ok) {
2002 0 0         $self->add_error( $context, $err ) if $err;
2003 0           $self->_start_rule($context, 'Description');
2004 0           $self->_build($context, $token);
2005 0           return 22;
2006             }
2007 0           ($ok, $err) = $context->token_matcher->match_StepLine($token);
2008 0 0         if ($ok) {
2009 0 0         $self->add_error( $context, $err ) if $err;
2010 0           $self->_start_rule($context, 'Step');
2011 0           $self->_build($context, $token);
2012 0           return 23;
2013             }
2014 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
2015 0 0         if ($ok) {
2016 0 0         $self->add_error( $context, $err ) if $err;
2017 0 0         if ($self->lookahead_0($context, $token)) {
2018 0           $self->_end_rule($context, 'Background');
2019 0           $self->_start_rule($context, 'ScenarioDefinition');
2020 0           $self->_start_rule($context, 'Tags');
2021 0           $self->_build($context, $token);
2022 0           return 25;
2023             }
2024             }
2025 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
2026 0 0         if ($ok) {
2027 0 0         $self->add_error( $context, $err ) if $err;
2028 0           $self->_end_rule($context, 'Background');
2029 0           $self->_end_rule($context, 'Rule');
2030 0           $self->_start_rule($context, 'Rule');
2031 0           $self->_start_rule($context, 'RuleHeader');
2032 0           $self->_start_rule($context, 'Tags');
2033 0           $self->_build($context, $token);
2034 0           return 18;
2035             }
2036 0           ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
2037 0 0         if ($ok) {
2038 0 0         $self->add_error( $context, $err ) if $err;
2039 0           $self->_end_rule($context, 'Background');
2040 0           $self->_start_rule($context, 'ScenarioDefinition');
2041 0           $self->_start_rule($context, 'Scenario');
2042 0           $self->_build($context, $token);
2043 0           return 26;
2044             }
2045 0           ($ok, $err) = $context->token_matcher->match_RuleLine($token);
2046 0 0         if ($ok) {
2047 0 0         $self->add_error( $context, $err ) if $err;
2048 0           $self->_end_rule($context, 'Background');
2049 0           $self->_end_rule($context, 'Rule');
2050 0           $self->_start_rule($context, 'Rule');
2051 0           $self->_start_rule($context, 'RuleHeader');
2052 0           $self->_build($context, $token);
2053 0           return 19;
2054             }
2055 0           ($ok, $err) = $context->token_matcher->match_Other($token);
2056 0 0         if ($ok) {
2057 0 0         $self->add_error( $context, $err ) if $err;
2058 0           $self->_start_rule($context, 'Description');
2059 0           $self->_build($context, $token);
2060 0           return 22;
2061             }
2062              
2063 0           $token->detach;
2064 0           $err = $self->_construct_parser_error(
2065             $token,
2066             ["#EOF", "#Empty", "#Comment", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Other"],
2067             "State: 21 - GherkinDocument:0>Feature:3>Rule:1>Background:0>#BackgroundLine:0",
2068             );
2069 0           $self->add_error( $context, $err );
2070              
2071 0           return 21;
2072             }
2073              
2074             # GherkinDocument:0>Feature:3>Rule:1>Background:1>DescriptionHelper:1>Description:0>__alt1:0>#Other:0
2075             sub match_token_at_22 {
2076 0     0 0   my ( $self, $token, $context ) = @_;
2077 0           my ( $ok, $err );
2078 0           ($ok, $err) = $context->token_matcher->match_EOF($token);
2079 0 0         if ($ok) {
2080 0 0         $self->add_error( $context, $err ) if $err;
2081 0           $self->_end_rule($context, 'Description');
2082 0           $self->_end_rule($context, 'Background');
2083 0           $self->_end_rule($context, 'Rule');
2084 0           $self->_end_rule($context, 'Feature');
2085 0           $self->_build($context, $token);
2086 0           return 34;
2087             }
2088 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
2089 0 0         if ($ok) {
2090 0 0         $self->add_error( $context, $err ) if $err;
2091 0           $self->_build($context, $token);
2092 0           return 22;
2093             }
2094 0           ($ok, $err) = $context->token_matcher->match_StepLine($token);
2095 0 0         if ($ok) {
2096 0 0         $self->add_error( $context, $err ) if $err;
2097 0           $self->_end_rule($context, 'Description');
2098 0           $self->_start_rule($context, 'Step');
2099 0           $self->_build($context, $token);
2100 0           return 23;
2101             }
2102 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
2103 0 0         if ($ok) {
2104 0 0         $self->add_error( $context, $err ) if $err;
2105 0 0         if ($self->lookahead_0($context, $token)) {
2106 0           $self->_end_rule($context, 'Description');
2107 0           $self->_end_rule($context, 'Background');
2108 0           $self->_start_rule($context, 'ScenarioDefinition');
2109 0           $self->_start_rule($context, 'Tags');
2110 0           $self->_build($context, $token);
2111 0           return 25;
2112             }
2113             }
2114 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
2115 0 0         if ($ok) {
2116 0 0         $self->add_error( $context, $err ) if $err;
2117 0           $self->_end_rule($context, 'Description');
2118 0           $self->_end_rule($context, 'Background');
2119 0           $self->_end_rule($context, 'Rule');
2120 0           $self->_start_rule($context, 'Rule');
2121 0           $self->_start_rule($context, 'RuleHeader');
2122 0           $self->_start_rule($context, 'Tags');
2123 0           $self->_build($context, $token);
2124 0           return 18;
2125             }
2126 0           ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
2127 0 0         if ($ok) {
2128 0 0         $self->add_error( $context, $err ) if $err;
2129 0           $self->_end_rule($context, 'Description');
2130 0           $self->_end_rule($context, 'Background');
2131 0           $self->_start_rule($context, 'ScenarioDefinition');
2132 0           $self->_start_rule($context, 'Scenario');
2133 0           $self->_build($context, $token);
2134 0           return 26;
2135             }
2136 0           ($ok, $err) = $context->token_matcher->match_RuleLine($token);
2137 0 0         if ($ok) {
2138 0 0         $self->add_error( $context, $err ) if $err;
2139 0           $self->_end_rule($context, 'Description');
2140 0           $self->_end_rule($context, 'Background');
2141 0           $self->_end_rule($context, 'Rule');
2142 0           $self->_start_rule($context, 'Rule');
2143 0           $self->_start_rule($context, 'RuleHeader');
2144 0           $self->_build($context, $token);
2145 0           return 19;
2146             }
2147 0           ($ok, $err) = $context->token_matcher->match_Other($token);
2148 0 0         if ($ok) {
2149 0 0         $self->add_error( $context, $err ) if $err;
2150 0           $self->_build($context, $token);
2151 0           return 22;
2152             }
2153              
2154 0           $token->detach;
2155 0           $err = $self->_construct_parser_error(
2156             $token,
2157             ["#EOF", "#Comment", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Other"],
2158             "State: 22 - GherkinDocument:0>Feature:3>Rule:1>Background:1>DescriptionHelper:1>Description:0>__alt1:0>#Other:0",
2159             );
2160 0           $self->add_error( $context, $err );
2161              
2162 0           return 22;
2163             }
2164              
2165             # GherkinDocument:0>Feature:3>Rule:1>Background:2>Step:0>#StepLine:0
2166             sub match_token_at_23 {
2167 0     0 0   my ( $self, $token, $context ) = @_;
2168 0           my ( $ok, $err );
2169 0           ($ok, $err) = $context->token_matcher->match_EOF($token);
2170 0 0         if ($ok) {
2171 0 0         $self->add_error( $context, $err ) if $err;
2172 0           $self->_end_rule($context, 'Step');
2173 0           $self->_end_rule($context, 'Background');
2174 0           $self->_end_rule($context, 'Rule');
2175 0           $self->_end_rule($context, 'Feature');
2176 0           $self->_build($context, $token);
2177 0           return 34;
2178             }
2179 0           ($ok, $err) = $context->token_matcher->match_TableRow($token);
2180 0 0         if ($ok) {
2181 0 0         $self->add_error( $context, $err ) if $err;
2182 0           $self->_start_rule($context, 'DataTable');
2183 0           $self->_build($context, $token);
2184 0           return 24;
2185             }
2186 0           ($ok, $err) = $context->token_matcher->match_DocStringSeparator($token);
2187 0 0         if ($ok) {
2188 0 0         $self->add_error( $context, $err ) if $err;
2189 0           $self->_start_rule($context, 'DocString');
2190 0           $self->_build($context, $token);
2191 0           return 37;
2192             }
2193 0           ($ok, $err) = $context->token_matcher->match_StepLine($token);
2194 0 0         if ($ok) {
2195 0 0         $self->add_error( $context, $err ) if $err;
2196 0           $self->_end_rule($context, 'Step');
2197 0           $self->_start_rule($context, 'Step');
2198 0           $self->_build($context, $token);
2199 0           return 23;
2200             }
2201 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
2202 0 0         if ($ok) {
2203 0 0         $self->add_error( $context, $err ) if $err;
2204 0 0         if ($self->lookahead_0($context, $token)) {
2205 0           $self->_end_rule($context, 'Step');
2206 0           $self->_end_rule($context, 'Background');
2207 0           $self->_start_rule($context, 'ScenarioDefinition');
2208 0           $self->_start_rule($context, 'Tags');
2209 0           $self->_build($context, $token);
2210 0           return 25;
2211             }
2212             }
2213 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
2214 0 0         if ($ok) {
2215 0 0         $self->add_error( $context, $err ) if $err;
2216 0           $self->_end_rule($context, 'Step');
2217 0           $self->_end_rule($context, 'Background');
2218 0           $self->_end_rule($context, 'Rule');
2219 0           $self->_start_rule($context, 'Rule');
2220 0           $self->_start_rule($context, 'RuleHeader');
2221 0           $self->_start_rule($context, 'Tags');
2222 0           $self->_build($context, $token);
2223 0           return 18;
2224             }
2225 0           ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
2226 0 0         if ($ok) {
2227 0 0         $self->add_error( $context, $err ) if $err;
2228 0           $self->_end_rule($context, 'Step');
2229 0           $self->_end_rule($context, 'Background');
2230 0           $self->_start_rule($context, 'ScenarioDefinition');
2231 0           $self->_start_rule($context, 'Scenario');
2232 0           $self->_build($context, $token);
2233 0           return 26;
2234             }
2235 0           ($ok, $err) = $context->token_matcher->match_RuleLine($token);
2236 0 0         if ($ok) {
2237 0 0         $self->add_error( $context, $err ) if $err;
2238 0           $self->_end_rule($context, 'Step');
2239 0           $self->_end_rule($context, 'Background');
2240 0           $self->_end_rule($context, 'Rule');
2241 0           $self->_start_rule($context, 'Rule');
2242 0           $self->_start_rule($context, 'RuleHeader');
2243 0           $self->_build($context, $token);
2244 0           return 19;
2245             }
2246 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
2247 0 0         if ($ok) {
2248 0 0         $self->add_error( $context, $err ) if $err;
2249 0           $self->_build($context, $token);
2250 0           return 23;
2251             }
2252 0           ($ok, $err) = $context->token_matcher->match_Empty($token);
2253 0 0         if ($ok) {
2254 0 0         $self->add_error( $context, $err ) if $err;
2255 0           $self->_build($context, $token);
2256 0           return 23;
2257             }
2258              
2259 0           $token->detach;
2260 0           $err = $self->_construct_parser_error(
2261             $token,
2262             ["#EOF", "#TableRow", "#DocStringSeparator", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"],
2263             "State: 23 - GherkinDocument:0>Feature:3>Rule:1>Background:2>Step:0>#StepLine:0",
2264             );
2265 0           $self->add_error( $context, $err );
2266              
2267 0           return 23;
2268             }
2269              
2270             # GherkinDocument:0>Feature:3>Rule:1>Background:2>Step:1>StepArg:0>__alt0:0>DataTable:0>#TableRow:0
2271             sub match_token_at_24 {
2272 0     0 0   my ( $self, $token, $context ) = @_;
2273 0           my ( $ok, $err );
2274 0           ($ok, $err) = $context->token_matcher->match_EOF($token);
2275 0 0         if ($ok) {
2276 0 0         $self->add_error( $context, $err ) if $err;
2277 0           $self->_end_rule($context, 'DataTable');
2278 0           $self->_end_rule($context, 'Step');
2279 0           $self->_end_rule($context, 'Background');
2280 0           $self->_end_rule($context, 'Rule');
2281 0           $self->_end_rule($context, 'Feature');
2282 0           $self->_build($context, $token);
2283 0           return 34;
2284             }
2285 0           ($ok, $err) = $context->token_matcher->match_TableRow($token);
2286 0 0         if ($ok) {
2287 0 0         $self->add_error( $context, $err ) if $err;
2288 0           $self->_build($context, $token);
2289 0           return 24;
2290             }
2291 0           ($ok, $err) = $context->token_matcher->match_StepLine($token);
2292 0 0         if ($ok) {
2293 0 0         $self->add_error( $context, $err ) if $err;
2294 0           $self->_end_rule($context, 'DataTable');
2295 0           $self->_end_rule($context, 'Step');
2296 0           $self->_start_rule($context, 'Step');
2297 0           $self->_build($context, $token);
2298 0           return 23;
2299             }
2300 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
2301 0 0         if ($ok) {
2302 0 0         $self->add_error( $context, $err ) if $err;
2303 0 0         if ($self->lookahead_0($context, $token)) {
2304 0           $self->_end_rule($context, 'DataTable');
2305 0           $self->_end_rule($context, 'Step');
2306 0           $self->_end_rule($context, 'Background');
2307 0           $self->_start_rule($context, 'ScenarioDefinition');
2308 0           $self->_start_rule($context, 'Tags');
2309 0           $self->_build($context, $token);
2310 0           return 25;
2311             }
2312             }
2313 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
2314 0 0         if ($ok) {
2315 0 0         $self->add_error( $context, $err ) if $err;
2316 0           $self->_end_rule($context, 'DataTable');
2317 0           $self->_end_rule($context, 'Step');
2318 0           $self->_end_rule($context, 'Background');
2319 0           $self->_end_rule($context, 'Rule');
2320 0           $self->_start_rule($context, 'Rule');
2321 0           $self->_start_rule($context, 'RuleHeader');
2322 0           $self->_start_rule($context, 'Tags');
2323 0           $self->_build($context, $token);
2324 0           return 18;
2325             }
2326 0           ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
2327 0 0         if ($ok) {
2328 0 0         $self->add_error( $context, $err ) if $err;
2329 0           $self->_end_rule($context, 'DataTable');
2330 0           $self->_end_rule($context, 'Step');
2331 0           $self->_end_rule($context, 'Background');
2332 0           $self->_start_rule($context, 'ScenarioDefinition');
2333 0           $self->_start_rule($context, 'Scenario');
2334 0           $self->_build($context, $token);
2335 0           return 26;
2336             }
2337 0           ($ok, $err) = $context->token_matcher->match_RuleLine($token);
2338 0 0         if ($ok) {
2339 0 0         $self->add_error( $context, $err ) if $err;
2340 0           $self->_end_rule($context, 'DataTable');
2341 0           $self->_end_rule($context, 'Step');
2342 0           $self->_end_rule($context, 'Background');
2343 0           $self->_end_rule($context, 'Rule');
2344 0           $self->_start_rule($context, 'Rule');
2345 0           $self->_start_rule($context, 'RuleHeader');
2346 0           $self->_build($context, $token);
2347 0           return 19;
2348             }
2349 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
2350 0 0         if ($ok) {
2351 0 0         $self->add_error( $context, $err ) if $err;
2352 0           $self->_build($context, $token);
2353 0           return 24;
2354             }
2355 0           ($ok, $err) = $context->token_matcher->match_Empty($token);
2356 0 0         if ($ok) {
2357 0 0         $self->add_error( $context, $err ) if $err;
2358 0           $self->_build($context, $token);
2359 0           return 24;
2360             }
2361              
2362 0           $token->detach;
2363 0           $err = $self->_construct_parser_error(
2364             $token,
2365             ["#EOF", "#TableRow", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"],
2366             "State: 24 - GherkinDocument:0>Feature:3>Rule:1>Background:2>Step:1>StepArg:0>__alt0:0>DataTable:0>#TableRow:0",
2367             );
2368 0           $self->add_error( $context, $err );
2369              
2370 0           return 24;
2371             }
2372              
2373             # GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:0>Tags:0>#TagLine:0
2374             sub match_token_at_25 {
2375 0     0 0   my ( $self, $token, $context ) = @_;
2376 0           my ( $ok, $err );
2377 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
2378 0 0         if ($ok) {
2379 0 0         $self->add_error( $context, $err ) if $err;
2380 0           $self->_build($context, $token);
2381 0           return 25;
2382             }
2383 0           ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
2384 0 0         if ($ok) {
2385 0 0         $self->add_error( $context, $err ) if $err;
2386 0           $self->_end_rule($context, 'Tags');
2387 0           $self->_start_rule($context, 'Scenario');
2388 0           $self->_build($context, $token);
2389 0           return 26;
2390             }
2391 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
2392 0 0         if ($ok) {
2393 0 0         $self->add_error( $context, $err ) if $err;
2394 0           $self->_build($context, $token);
2395 0           return 25;
2396             }
2397 0           ($ok, $err) = $context->token_matcher->match_Empty($token);
2398 0 0         if ($ok) {
2399 0 0         $self->add_error( $context, $err ) if $err;
2400 0           $self->_build($context, $token);
2401 0           return 25;
2402             }
2403              
2404 0           $token->detach;
2405 0           $err = $self->_construct_parser_error(
2406             $token,
2407             ["#TagLine", "#ScenarioLine", "#Comment", "#Empty"],
2408             "State: 25 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:0>Tags:0>#TagLine:0",
2409             );
2410 0           $self->add_error( $context, $err );
2411              
2412 0           return 25;
2413             }
2414              
2415             # GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:0>#ScenarioLine:0
2416             sub match_token_at_26 {
2417 0     0 0   my ( $self, $token, $context ) = @_;
2418 0           my ( $ok, $err );
2419 0           ($ok, $err) = $context->token_matcher->match_EOF($token);
2420 0 0         if ($ok) {
2421 0 0         $self->add_error( $context, $err ) if $err;
2422 0           $self->_end_rule($context, 'Scenario');
2423 0           $self->_end_rule($context, 'ScenarioDefinition');
2424 0           $self->_end_rule($context, 'Rule');
2425 0           $self->_end_rule($context, 'Feature');
2426 0           $self->_build($context, $token);
2427 0           return 34;
2428             }
2429 0           ($ok, $err) = $context->token_matcher->match_Empty($token);
2430 0 0         if ($ok) {
2431 0 0         $self->add_error( $context, $err ) if $err;
2432 0           $self->_build($context, $token);
2433 0           return 26;
2434             }
2435 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
2436 0 0         if ($ok) {
2437 0 0         $self->add_error( $context, $err ) if $err;
2438 0           $self->_start_rule($context, 'Description');
2439 0           $self->_build($context, $token);
2440 0           return 27;
2441             }
2442 0           ($ok, $err) = $context->token_matcher->match_StepLine($token);
2443 0 0         if ($ok) {
2444 0 0         $self->add_error( $context, $err ) if $err;
2445 0           $self->_start_rule($context, 'Step');
2446 0           $self->_build($context, $token);
2447 0           return 28;
2448             }
2449 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
2450 0 0         if ($ok) {
2451 0 0         $self->add_error( $context, $err ) if $err;
2452 0 0         if ($self->lookahead_1($context, $token)) {
2453 0           $self->_start_rule($context, 'ExamplesDefinition');
2454 0           $self->_start_rule($context, 'Tags');
2455 0           $self->_build($context, $token);
2456 0           return 30;
2457             }
2458             }
2459 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
2460 0 0         if ($ok) {
2461 0 0         $self->add_error( $context, $err ) if $err;
2462 0 0         if ($self->lookahead_0($context, $token)) {
2463 0           $self->_end_rule($context, 'Scenario');
2464 0           $self->_end_rule($context, 'ScenarioDefinition');
2465 0           $self->_start_rule($context, 'ScenarioDefinition');
2466 0           $self->_start_rule($context, 'Tags');
2467 0           $self->_build($context, $token);
2468 0           return 25;
2469             }
2470             }
2471 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
2472 0 0         if ($ok) {
2473 0 0         $self->add_error( $context, $err ) if $err;
2474 0           $self->_end_rule($context, 'Scenario');
2475 0           $self->_end_rule($context, 'ScenarioDefinition');
2476 0           $self->_end_rule($context, 'Rule');
2477 0           $self->_start_rule($context, 'Rule');
2478 0           $self->_start_rule($context, 'RuleHeader');
2479 0           $self->_start_rule($context, 'Tags');
2480 0           $self->_build($context, $token);
2481 0           return 18;
2482             }
2483 0           ($ok, $err) = $context->token_matcher->match_ExamplesLine($token);
2484 0 0         if ($ok) {
2485 0 0         $self->add_error( $context, $err ) if $err;
2486 0           $self->_start_rule($context, 'ExamplesDefinition');
2487 0           $self->_start_rule($context, 'Examples');
2488 0           $self->_build($context, $token);
2489 0           return 31;
2490             }
2491 0           ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
2492 0 0         if ($ok) {
2493 0 0         $self->add_error( $context, $err ) if $err;
2494 0           $self->_end_rule($context, 'Scenario');
2495 0           $self->_end_rule($context, 'ScenarioDefinition');
2496 0           $self->_start_rule($context, 'ScenarioDefinition');
2497 0           $self->_start_rule($context, 'Scenario');
2498 0           $self->_build($context, $token);
2499 0           return 26;
2500             }
2501 0           ($ok, $err) = $context->token_matcher->match_RuleLine($token);
2502 0 0         if ($ok) {
2503 0 0         $self->add_error( $context, $err ) if $err;
2504 0           $self->_end_rule($context, 'Scenario');
2505 0           $self->_end_rule($context, 'ScenarioDefinition');
2506 0           $self->_end_rule($context, 'Rule');
2507 0           $self->_start_rule($context, 'Rule');
2508 0           $self->_start_rule($context, 'RuleHeader');
2509 0           $self->_build($context, $token);
2510 0           return 19;
2511             }
2512 0           ($ok, $err) = $context->token_matcher->match_Other($token);
2513 0 0         if ($ok) {
2514 0 0         $self->add_error( $context, $err ) if $err;
2515 0           $self->_start_rule($context, 'Description');
2516 0           $self->_build($context, $token);
2517 0           return 27;
2518             }
2519              
2520 0           $token->detach;
2521 0           $err = $self->_construct_parser_error(
2522             $token,
2523             ["#EOF", "#Empty", "#Comment", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Other"],
2524             "State: 26 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:0>#ScenarioLine:0",
2525             );
2526 0           $self->add_error( $context, $err );
2527              
2528 0           return 26;
2529             }
2530              
2531             # GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:1>DescriptionHelper:1>Description:0>__alt1:0>#Other:0
2532             sub match_token_at_27 {
2533 0     0 0   my ( $self, $token, $context ) = @_;
2534 0           my ( $ok, $err );
2535 0           ($ok, $err) = $context->token_matcher->match_EOF($token);
2536 0 0         if ($ok) {
2537 0 0         $self->add_error( $context, $err ) if $err;
2538 0           $self->_end_rule($context, 'Description');
2539 0           $self->_end_rule($context, 'Scenario');
2540 0           $self->_end_rule($context, 'ScenarioDefinition');
2541 0           $self->_end_rule($context, 'Rule');
2542 0           $self->_end_rule($context, 'Feature');
2543 0           $self->_build($context, $token);
2544 0           return 34;
2545             }
2546 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
2547 0 0         if ($ok) {
2548 0 0         $self->add_error( $context, $err ) if $err;
2549 0           $self->_build($context, $token);
2550 0           return 27;
2551             }
2552 0           ($ok, $err) = $context->token_matcher->match_StepLine($token);
2553 0 0         if ($ok) {
2554 0 0         $self->add_error( $context, $err ) if $err;
2555 0           $self->_end_rule($context, 'Description');
2556 0           $self->_start_rule($context, 'Step');
2557 0           $self->_build($context, $token);
2558 0           return 28;
2559             }
2560 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
2561 0 0         if ($ok) {
2562 0 0         $self->add_error( $context, $err ) if $err;
2563 0 0         if ($self->lookahead_1($context, $token)) {
2564 0           $self->_end_rule($context, 'Description');
2565 0           $self->_start_rule($context, 'ExamplesDefinition');
2566 0           $self->_start_rule($context, 'Tags');
2567 0           $self->_build($context, $token);
2568 0           return 30;
2569             }
2570             }
2571 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
2572 0 0         if ($ok) {
2573 0 0         $self->add_error( $context, $err ) if $err;
2574 0 0         if ($self->lookahead_0($context, $token)) {
2575 0           $self->_end_rule($context, 'Description');
2576 0           $self->_end_rule($context, 'Scenario');
2577 0           $self->_end_rule($context, 'ScenarioDefinition');
2578 0           $self->_start_rule($context, 'ScenarioDefinition');
2579 0           $self->_start_rule($context, 'Tags');
2580 0           $self->_build($context, $token);
2581 0           return 25;
2582             }
2583             }
2584 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
2585 0 0         if ($ok) {
2586 0 0         $self->add_error( $context, $err ) if $err;
2587 0           $self->_end_rule($context, 'Description');
2588 0           $self->_end_rule($context, 'Scenario');
2589 0           $self->_end_rule($context, 'ScenarioDefinition');
2590 0           $self->_end_rule($context, 'Rule');
2591 0           $self->_start_rule($context, 'Rule');
2592 0           $self->_start_rule($context, 'RuleHeader');
2593 0           $self->_start_rule($context, 'Tags');
2594 0           $self->_build($context, $token);
2595 0           return 18;
2596             }
2597 0           ($ok, $err) = $context->token_matcher->match_ExamplesLine($token);
2598 0 0         if ($ok) {
2599 0 0         $self->add_error( $context, $err ) if $err;
2600 0           $self->_end_rule($context, 'Description');
2601 0           $self->_start_rule($context, 'ExamplesDefinition');
2602 0           $self->_start_rule($context, 'Examples');
2603 0           $self->_build($context, $token);
2604 0           return 31;
2605             }
2606 0           ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
2607 0 0         if ($ok) {
2608 0 0         $self->add_error( $context, $err ) if $err;
2609 0           $self->_end_rule($context, 'Description');
2610 0           $self->_end_rule($context, 'Scenario');
2611 0           $self->_end_rule($context, 'ScenarioDefinition');
2612 0           $self->_start_rule($context, 'ScenarioDefinition');
2613 0           $self->_start_rule($context, 'Scenario');
2614 0           $self->_build($context, $token);
2615 0           return 26;
2616             }
2617 0           ($ok, $err) = $context->token_matcher->match_RuleLine($token);
2618 0 0         if ($ok) {
2619 0 0         $self->add_error( $context, $err ) if $err;
2620 0           $self->_end_rule($context, 'Description');
2621 0           $self->_end_rule($context, 'Scenario');
2622 0           $self->_end_rule($context, 'ScenarioDefinition');
2623 0           $self->_end_rule($context, 'Rule');
2624 0           $self->_start_rule($context, 'Rule');
2625 0           $self->_start_rule($context, 'RuleHeader');
2626 0           $self->_build($context, $token);
2627 0           return 19;
2628             }
2629 0           ($ok, $err) = $context->token_matcher->match_Other($token);
2630 0 0         if ($ok) {
2631 0 0         $self->add_error( $context, $err ) if $err;
2632 0           $self->_build($context, $token);
2633 0           return 27;
2634             }
2635              
2636 0           $token->detach;
2637 0           $err = $self->_construct_parser_error(
2638             $token,
2639             ["#EOF", "#Comment", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Other"],
2640             "State: 27 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:1>DescriptionHelper:1>Description:0>__alt1:0>#Other:0",
2641             );
2642 0           $self->add_error( $context, $err );
2643              
2644 0           return 27;
2645             }
2646              
2647             # GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:2>Step:0>#StepLine:0
2648             sub match_token_at_28 {
2649 0     0 0   my ( $self, $token, $context ) = @_;
2650 0           my ( $ok, $err );
2651 0           ($ok, $err) = $context->token_matcher->match_EOF($token);
2652 0 0         if ($ok) {
2653 0 0         $self->add_error( $context, $err ) if $err;
2654 0           $self->_end_rule($context, 'Step');
2655 0           $self->_end_rule($context, 'Scenario');
2656 0           $self->_end_rule($context, 'ScenarioDefinition');
2657 0           $self->_end_rule($context, 'Rule');
2658 0           $self->_end_rule($context, 'Feature');
2659 0           $self->_build($context, $token);
2660 0           return 34;
2661             }
2662 0           ($ok, $err) = $context->token_matcher->match_TableRow($token);
2663 0 0         if ($ok) {
2664 0 0         $self->add_error( $context, $err ) if $err;
2665 0           $self->_start_rule($context, 'DataTable');
2666 0           $self->_build($context, $token);
2667 0           return 29;
2668             }
2669 0           ($ok, $err) = $context->token_matcher->match_DocStringSeparator($token);
2670 0 0         if ($ok) {
2671 0 0         $self->add_error( $context, $err ) if $err;
2672 0           $self->_start_rule($context, 'DocString');
2673 0           $self->_build($context, $token);
2674 0           return 35;
2675             }
2676 0           ($ok, $err) = $context->token_matcher->match_StepLine($token);
2677 0 0         if ($ok) {
2678 0 0         $self->add_error( $context, $err ) if $err;
2679 0           $self->_end_rule($context, 'Step');
2680 0           $self->_start_rule($context, 'Step');
2681 0           $self->_build($context, $token);
2682 0           return 28;
2683             }
2684 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
2685 0 0         if ($ok) {
2686 0 0         $self->add_error( $context, $err ) if $err;
2687 0 0         if ($self->lookahead_1($context, $token)) {
2688 0           $self->_end_rule($context, 'Step');
2689 0           $self->_start_rule($context, 'ExamplesDefinition');
2690 0           $self->_start_rule($context, 'Tags');
2691 0           $self->_build($context, $token);
2692 0           return 30;
2693             }
2694             }
2695 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
2696 0 0         if ($ok) {
2697 0 0         $self->add_error( $context, $err ) if $err;
2698 0 0         if ($self->lookahead_0($context, $token)) {
2699 0           $self->_end_rule($context, 'Step');
2700 0           $self->_end_rule($context, 'Scenario');
2701 0           $self->_end_rule($context, 'ScenarioDefinition');
2702 0           $self->_start_rule($context, 'ScenarioDefinition');
2703 0           $self->_start_rule($context, 'Tags');
2704 0           $self->_build($context, $token);
2705 0           return 25;
2706             }
2707             }
2708 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
2709 0 0         if ($ok) {
2710 0 0         $self->add_error( $context, $err ) if $err;
2711 0           $self->_end_rule($context, 'Step');
2712 0           $self->_end_rule($context, 'Scenario');
2713 0           $self->_end_rule($context, 'ScenarioDefinition');
2714 0           $self->_end_rule($context, 'Rule');
2715 0           $self->_start_rule($context, 'Rule');
2716 0           $self->_start_rule($context, 'RuleHeader');
2717 0           $self->_start_rule($context, 'Tags');
2718 0           $self->_build($context, $token);
2719 0           return 18;
2720             }
2721 0           ($ok, $err) = $context->token_matcher->match_ExamplesLine($token);
2722 0 0         if ($ok) {
2723 0 0         $self->add_error( $context, $err ) if $err;
2724 0           $self->_end_rule($context, 'Step');
2725 0           $self->_start_rule($context, 'ExamplesDefinition');
2726 0           $self->_start_rule($context, 'Examples');
2727 0           $self->_build($context, $token);
2728 0           return 31;
2729             }
2730 0           ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
2731 0 0         if ($ok) {
2732 0 0         $self->add_error( $context, $err ) if $err;
2733 0           $self->_end_rule($context, 'Step');
2734 0           $self->_end_rule($context, 'Scenario');
2735 0           $self->_end_rule($context, 'ScenarioDefinition');
2736 0           $self->_start_rule($context, 'ScenarioDefinition');
2737 0           $self->_start_rule($context, 'Scenario');
2738 0           $self->_build($context, $token);
2739 0           return 26;
2740             }
2741 0           ($ok, $err) = $context->token_matcher->match_RuleLine($token);
2742 0 0         if ($ok) {
2743 0 0         $self->add_error( $context, $err ) if $err;
2744 0           $self->_end_rule($context, 'Step');
2745 0           $self->_end_rule($context, 'Scenario');
2746 0           $self->_end_rule($context, 'ScenarioDefinition');
2747 0           $self->_end_rule($context, 'Rule');
2748 0           $self->_start_rule($context, 'Rule');
2749 0           $self->_start_rule($context, 'RuleHeader');
2750 0           $self->_build($context, $token);
2751 0           return 19;
2752             }
2753 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
2754 0 0         if ($ok) {
2755 0 0         $self->add_error( $context, $err ) if $err;
2756 0           $self->_build($context, $token);
2757 0           return 28;
2758             }
2759 0           ($ok, $err) = $context->token_matcher->match_Empty($token);
2760 0 0         if ($ok) {
2761 0 0         $self->add_error( $context, $err ) if $err;
2762 0           $self->_build($context, $token);
2763 0           return 28;
2764             }
2765              
2766 0           $token->detach;
2767 0           $err = $self->_construct_parser_error(
2768             $token,
2769             ["#EOF", "#TableRow", "#DocStringSeparator", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"],
2770             "State: 28 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:2>Step:0>#StepLine:0",
2771             );
2772 0           $self->add_error( $context, $err );
2773              
2774 0           return 28;
2775             }
2776              
2777             # GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:0>DataTable:0>#TableRow:0
2778             sub match_token_at_29 {
2779 0     0 0   my ( $self, $token, $context ) = @_;
2780 0           my ( $ok, $err );
2781 0           ($ok, $err) = $context->token_matcher->match_EOF($token);
2782 0 0         if ($ok) {
2783 0 0         $self->add_error( $context, $err ) if $err;
2784 0           $self->_end_rule($context, 'DataTable');
2785 0           $self->_end_rule($context, 'Step');
2786 0           $self->_end_rule($context, 'Scenario');
2787 0           $self->_end_rule($context, 'ScenarioDefinition');
2788 0           $self->_end_rule($context, 'Rule');
2789 0           $self->_end_rule($context, 'Feature');
2790 0           $self->_build($context, $token);
2791 0           return 34;
2792             }
2793 0           ($ok, $err) = $context->token_matcher->match_TableRow($token);
2794 0 0         if ($ok) {
2795 0 0         $self->add_error( $context, $err ) if $err;
2796 0           $self->_build($context, $token);
2797 0           return 29;
2798             }
2799 0           ($ok, $err) = $context->token_matcher->match_StepLine($token);
2800 0 0         if ($ok) {
2801 0 0         $self->add_error( $context, $err ) if $err;
2802 0           $self->_end_rule($context, 'DataTable');
2803 0           $self->_end_rule($context, 'Step');
2804 0           $self->_start_rule($context, 'Step');
2805 0           $self->_build($context, $token);
2806 0           return 28;
2807             }
2808 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
2809 0 0         if ($ok) {
2810 0 0         $self->add_error( $context, $err ) if $err;
2811 0 0         if ($self->lookahead_1($context, $token)) {
2812 0           $self->_end_rule($context, 'DataTable');
2813 0           $self->_end_rule($context, 'Step');
2814 0           $self->_start_rule($context, 'ExamplesDefinition');
2815 0           $self->_start_rule($context, 'Tags');
2816 0           $self->_build($context, $token);
2817 0           return 30;
2818             }
2819             }
2820 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
2821 0 0         if ($ok) {
2822 0 0         $self->add_error( $context, $err ) if $err;
2823 0 0         if ($self->lookahead_0($context, $token)) {
2824 0           $self->_end_rule($context, 'DataTable');
2825 0           $self->_end_rule($context, 'Step');
2826 0           $self->_end_rule($context, 'Scenario');
2827 0           $self->_end_rule($context, 'ScenarioDefinition');
2828 0           $self->_start_rule($context, 'ScenarioDefinition');
2829 0           $self->_start_rule($context, 'Tags');
2830 0           $self->_build($context, $token);
2831 0           return 25;
2832             }
2833             }
2834 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
2835 0 0         if ($ok) {
2836 0 0         $self->add_error( $context, $err ) if $err;
2837 0           $self->_end_rule($context, 'DataTable');
2838 0           $self->_end_rule($context, 'Step');
2839 0           $self->_end_rule($context, 'Scenario');
2840 0           $self->_end_rule($context, 'ScenarioDefinition');
2841 0           $self->_end_rule($context, 'Rule');
2842 0           $self->_start_rule($context, 'Rule');
2843 0           $self->_start_rule($context, 'RuleHeader');
2844 0           $self->_start_rule($context, 'Tags');
2845 0           $self->_build($context, $token);
2846 0           return 18;
2847             }
2848 0           ($ok, $err) = $context->token_matcher->match_ExamplesLine($token);
2849 0 0         if ($ok) {
2850 0 0         $self->add_error( $context, $err ) if $err;
2851 0           $self->_end_rule($context, 'DataTable');
2852 0           $self->_end_rule($context, 'Step');
2853 0           $self->_start_rule($context, 'ExamplesDefinition');
2854 0           $self->_start_rule($context, 'Examples');
2855 0           $self->_build($context, $token);
2856 0           return 31;
2857             }
2858 0           ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
2859 0 0         if ($ok) {
2860 0 0         $self->add_error( $context, $err ) if $err;
2861 0           $self->_end_rule($context, 'DataTable');
2862 0           $self->_end_rule($context, 'Step');
2863 0           $self->_end_rule($context, 'Scenario');
2864 0           $self->_end_rule($context, 'ScenarioDefinition');
2865 0           $self->_start_rule($context, 'ScenarioDefinition');
2866 0           $self->_start_rule($context, 'Scenario');
2867 0           $self->_build($context, $token);
2868 0           return 26;
2869             }
2870 0           ($ok, $err) = $context->token_matcher->match_RuleLine($token);
2871 0 0         if ($ok) {
2872 0 0         $self->add_error( $context, $err ) if $err;
2873 0           $self->_end_rule($context, 'DataTable');
2874 0           $self->_end_rule($context, 'Step');
2875 0           $self->_end_rule($context, 'Scenario');
2876 0           $self->_end_rule($context, 'ScenarioDefinition');
2877 0           $self->_end_rule($context, 'Rule');
2878 0           $self->_start_rule($context, 'Rule');
2879 0           $self->_start_rule($context, 'RuleHeader');
2880 0           $self->_build($context, $token);
2881 0           return 19;
2882             }
2883 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
2884 0 0         if ($ok) {
2885 0 0         $self->add_error( $context, $err ) if $err;
2886 0           $self->_build($context, $token);
2887 0           return 29;
2888             }
2889 0           ($ok, $err) = $context->token_matcher->match_Empty($token);
2890 0 0         if ($ok) {
2891 0 0         $self->add_error( $context, $err ) if $err;
2892 0           $self->_build($context, $token);
2893 0           return 29;
2894             }
2895              
2896 0           $token->detach;
2897 0           $err = $self->_construct_parser_error(
2898             $token,
2899             ["#EOF", "#TableRow", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"],
2900             "State: 29 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:0>DataTable:0>#TableRow:0",
2901             );
2902 0           $self->add_error( $context, $err );
2903              
2904 0           return 29;
2905             }
2906              
2907             # GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:0>Tags:0>#TagLine:0
2908             sub match_token_at_30 {
2909 0     0 0   my ( $self, $token, $context ) = @_;
2910 0           my ( $ok, $err );
2911 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
2912 0 0         if ($ok) {
2913 0 0         $self->add_error( $context, $err ) if $err;
2914 0           $self->_build($context, $token);
2915 0           return 30;
2916             }
2917 0           ($ok, $err) = $context->token_matcher->match_ExamplesLine($token);
2918 0 0         if ($ok) {
2919 0 0         $self->add_error( $context, $err ) if $err;
2920 0           $self->_end_rule($context, 'Tags');
2921 0           $self->_start_rule($context, 'Examples');
2922 0           $self->_build($context, $token);
2923 0           return 31;
2924             }
2925 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
2926 0 0         if ($ok) {
2927 0 0         $self->add_error( $context, $err ) if $err;
2928 0           $self->_build($context, $token);
2929 0           return 30;
2930             }
2931 0           ($ok, $err) = $context->token_matcher->match_Empty($token);
2932 0 0         if ($ok) {
2933 0 0         $self->add_error( $context, $err ) if $err;
2934 0           $self->_build($context, $token);
2935 0           return 30;
2936             }
2937              
2938 0           $token->detach;
2939 0           $err = $self->_construct_parser_error(
2940             $token,
2941             ["#TagLine", "#ExamplesLine", "#Comment", "#Empty"],
2942             "State: 30 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:0>Tags:0>#TagLine:0",
2943             );
2944 0           $self->add_error( $context, $err );
2945              
2946 0           return 30;
2947             }
2948              
2949             # GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:0>#ExamplesLine:0
2950             sub match_token_at_31 {
2951 0     0 0   my ( $self, $token, $context ) = @_;
2952 0           my ( $ok, $err );
2953 0           ($ok, $err) = $context->token_matcher->match_EOF($token);
2954 0 0         if ($ok) {
2955 0 0         $self->add_error( $context, $err ) if $err;
2956 0           $self->_end_rule($context, 'Examples');
2957 0           $self->_end_rule($context, 'ExamplesDefinition');
2958 0           $self->_end_rule($context, 'Scenario');
2959 0           $self->_end_rule($context, 'ScenarioDefinition');
2960 0           $self->_end_rule($context, 'Rule');
2961 0           $self->_end_rule($context, 'Feature');
2962 0           $self->_build($context, $token);
2963 0           return 34;
2964             }
2965 0           ($ok, $err) = $context->token_matcher->match_Empty($token);
2966 0 0         if ($ok) {
2967 0 0         $self->add_error( $context, $err ) if $err;
2968 0           $self->_build($context, $token);
2969 0           return 31;
2970             }
2971 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
2972 0 0         if ($ok) {
2973 0 0         $self->add_error( $context, $err ) if $err;
2974 0           $self->_start_rule($context, 'Description');
2975 0           $self->_build($context, $token);
2976 0           return 32;
2977             }
2978 0           ($ok, $err) = $context->token_matcher->match_TableRow($token);
2979 0 0         if ($ok) {
2980 0 0         $self->add_error( $context, $err ) if $err;
2981 0           $self->_start_rule($context, 'ExamplesTable');
2982 0           $self->_build($context, $token);
2983 0           return 33;
2984             }
2985 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
2986 0 0         if ($ok) {
2987 0 0         $self->add_error( $context, $err ) if $err;
2988 0 0         if ($self->lookahead_1($context, $token)) {
2989 0           $self->_end_rule($context, 'Examples');
2990 0           $self->_end_rule($context, 'ExamplesDefinition');
2991 0           $self->_start_rule($context, 'ExamplesDefinition');
2992 0           $self->_start_rule($context, 'Tags');
2993 0           $self->_build($context, $token);
2994 0           return 30;
2995             }
2996             }
2997 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
2998 0 0         if ($ok) {
2999 0 0         $self->add_error( $context, $err ) if $err;
3000 0 0         if ($self->lookahead_0($context, $token)) {
3001 0           $self->_end_rule($context, 'Examples');
3002 0           $self->_end_rule($context, 'ExamplesDefinition');
3003 0           $self->_end_rule($context, 'Scenario');
3004 0           $self->_end_rule($context, 'ScenarioDefinition');
3005 0           $self->_start_rule($context, 'ScenarioDefinition');
3006 0           $self->_start_rule($context, 'Tags');
3007 0           $self->_build($context, $token);
3008 0           return 25;
3009             }
3010             }
3011 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
3012 0 0         if ($ok) {
3013 0 0         $self->add_error( $context, $err ) if $err;
3014 0           $self->_end_rule($context, 'Examples');
3015 0           $self->_end_rule($context, 'ExamplesDefinition');
3016 0           $self->_end_rule($context, 'Scenario');
3017 0           $self->_end_rule($context, 'ScenarioDefinition');
3018 0           $self->_end_rule($context, 'Rule');
3019 0           $self->_start_rule($context, 'Rule');
3020 0           $self->_start_rule($context, 'RuleHeader');
3021 0           $self->_start_rule($context, 'Tags');
3022 0           $self->_build($context, $token);
3023 0           return 18;
3024             }
3025 0           ($ok, $err) = $context->token_matcher->match_ExamplesLine($token);
3026 0 0         if ($ok) {
3027 0 0         $self->add_error( $context, $err ) if $err;
3028 0           $self->_end_rule($context, 'Examples');
3029 0           $self->_end_rule($context, 'ExamplesDefinition');
3030 0           $self->_start_rule($context, 'ExamplesDefinition');
3031 0           $self->_start_rule($context, 'Examples');
3032 0           $self->_build($context, $token);
3033 0           return 31;
3034             }
3035 0           ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
3036 0 0         if ($ok) {
3037 0 0         $self->add_error( $context, $err ) if $err;
3038 0           $self->_end_rule($context, 'Examples');
3039 0           $self->_end_rule($context, 'ExamplesDefinition');
3040 0           $self->_end_rule($context, 'Scenario');
3041 0           $self->_end_rule($context, 'ScenarioDefinition');
3042 0           $self->_start_rule($context, 'ScenarioDefinition');
3043 0           $self->_start_rule($context, 'Scenario');
3044 0           $self->_build($context, $token);
3045 0           return 26;
3046             }
3047 0           ($ok, $err) = $context->token_matcher->match_RuleLine($token);
3048 0 0         if ($ok) {
3049 0 0         $self->add_error( $context, $err ) if $err;
3050 0           $self->_end_rule($context, 'Examples');
3051 0           $self->_end_rule($context, 'ExamplesDefinition');
3052 0           $self->_end_rule($context, 'Scenario');
3053 0           $self->_end_rule($context, 'ScenarioDefinition');
3054 0           $self->_end_rule($context, 'Rule');
3055 0           $self->_start_rule($context, 'Rule');
3056 0           $self->_start_rule($context, 'RuleHeader');
3057 0           $self->_build($context, $token);
3058 0           return 19;
3059             }
3060 0           ($ok, $err) = $context->token_matcher->match_Other($token);
3061 0 0         if ($ok) {
3062 0 0         $self->add_error( $context, $err ) if $err;
3063 0           $self->_start_rule($context, 'Description');
3064 0           $self->_build($context, $token);
3065 0           return 32;
3066             }
3067              
3068 0           $token->detach;
3069 0           $err = $self->_construct_parser_error(
3070             $token,
3071             ["#EOF", "#Empty", "#Comment", "#TableRow", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Other"],
3072             "State: 31 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:0>#ExamplesLine:0",
3073             );
3074 0           $self->add_error( $context, $err );
3075              
3076 0           return 31;
3077             }
3078              
3079             # GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:1>DescriptionHelper:1>Description:0>__alt1:0>#Other:0
3080             sub match_token_at_32 {
3081 0     0 0   my ( $self, $token, $context ) = @_;
3082 0           my ( $ok, $err );
3083 0           ($ok, $err) = $context->token_matcher->match_EOF($token);
3084 0 0         if ($ok) {
3085 0 0         $self->add_error( $context, $err ) if $err;
3086 0           $self->_end_rule($context, 'Description');
3087 0           $self->_end_rule($context, 'Examples');
3088 0           $self->_end_rule($context, 'ExamplesDefinition');
3089 0           $self->_end_rule($context, 'Scenario');
3090 0           $self->_end_rule($context, 'ScenarioDefinition');
3091 0           $self->_end_rule($context, 'Rule');
3092 0           $self->_end_rule($context, 'Feature');
3093 0           $self->_build($context, $token);
3094 0           return 34;
3095             }
3096 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
3097 0 0         if ($ok) {
3098 0 0         $self->add_error( $context, $err ) if $err;
3099 0           $self->_build($context, $token);
3100 0           return 32;
3101             }
3102 0           ($ok, $err) = $context->token_matcher->match_TableRow($token);
3103 0 0         if ($ok) {
3104 0 0         $self->add_error( $context, $err ) if $err;
3105 0           $self->_end_rule($context, 'Description');
3106 0           $self->_start_rule($context, 'ExamplesTable');
3107 0           $self->_build($context, $token);
3108 0           return 33;
3109             }
3110 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
3111 0 0         if ($ok) {
3112 0 0         $self->add_error( $context, $err ) if $err;
3113 0 0         if ($self->lookahead_1($context, $token)) {
3114 0           $self->_end_rule($context, 'Description');
3115 0           $self->_end_rule($context, 'Examples');
3116 0           $self->_end_rule($context, 'ExamplesDefinition');
3117 0           $self->_start_rule($context, 'ExamplesDefinition');
3118 0           $self->_start_rule($context, 'Tags');
3119 0           $self->_build($context, $token);
3120 0           return 30;
3121             }
3122             }
3123 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
3124 0 0         if ($ok) {
3125 0 0         $self->add_error( $context, $err ) if $err;
3126 0 0         if ($self->lookahead_0($context, $token)) {
3127 0           $self->_end_rule($context, 'Description');
3128 0           $self->_end_rule($context, 'Examples');
3129 0           $self->_end_rule($context, 'ExamplesDefinition');
3130 0           $self->_end_rule($context, 'Scenario');
3131 0           $self->_end_rule($context, 'ScenarioDefinition');
3132 0           $self->_start_rule($context, 'ScenarioDefinition');
3133 0           $self->_start_rule($context, 'Tags');
3134 0           $self->_build($context, $token);
3135 0           return 25;
3136             }
3137             }
3138 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
3139 0 0         if ($ok) {
3140 0 0         $self->add_error( $context, $err ) if $err;
3141 0           $self->_end_rule($context, 'Description');
3142 0           $self->_end_rule($context, 'Examples');
3143 0           $self->_end_rule($context, 'ExamplesDefinition');
3144 0           $self->_end_rule($context, 'Scenario');
3145 0           $self->_end_rule($context, 'ScenarioDefinition');
3146 0           $self->_end_rule($context, 'Rule');
3147 0           $self->_start_rule($context, 'Rule');
3148 0           $self->_start_rule($context, 'RuleHeader');
3149 0           $self->_start_rule($context, 'Tags');
3150 0           $self->_build($context, $token);
3151 0           return 18;
3152             }
3153 0           ($ok, $err) = $context->token_matcher->match_ExamplesLine($token);
3154 0 0         if ($ok) {
3155 0 0         $self->add_error( $context, $err ) if $err;
3156 0           $self->_end_rule($context, 'Description');
3157 0           $self->_end_rule($context, 'Examples');
3158 0           $self->_end_rule($context, 'ExamplesDefinition');
3159 0           $self->_start_rule($context, 'ExamplesDefinition');
3160 0           $self->_start_rule($context, 'Examples');
3161 0           $self->_build($context, $token);
3162 0           return 31;
3163             }
3164 0           ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
3165 0 0         if ($ok) {
3166 0 0         $self->add_error( $context, $err ) if $err;
3167 0           $self->_end_rule($context, 'Description');
3168 0           $self->_end_rule($context, 'Examples');
3169 0           $self->_end_rule($context, 'ExamplesDefinition');
3170 0           $self->_end_rule($context, 'Scenario');
3171 0           $self->_end_rule($context, 'ScenarioDefinition');
3172 0           $self->_start_rule($context, 'ScenarioDefinition');
3173 0           $self->_start_rule($context, 'Scenario');
3174 0           $self->_build($context, $token);
3175 0           return 26;
3176             }
3177 0           ($ok, $err) = $context->token_matcher->match_RuleLine($token);
3178 0 0         if ($ok) {
3179 0 0         $self->add_error( $context, $err ) if $err;
3180 0           $self->_end_rule($context, 'Description');
3181 0           $self->_end_rule($context, 'Examples');
3182 0           $self->_end_rule($context, 'ExamplesDefinition');
3183 0           $self->_end_rule($context, 'Scenario');
3184 0           $self->_end_rule($context, 'ScenarioDefinition');
3185 0           $self->_end_rule($context, 'Rule');
3186 0           $self->_start_rule($context, 'Rule');
3187 0           $self->_start_rule($context, 'RuleHeader');
3188 0           $self->_build($context, $token);
3189 0           return 19;
3190             }
3191 0           ($ok, $err) = $context->token_matcher->match_Other($token);
3192 0 0         if ($ok) {
3193 0 0         $self->add_error( $context, $err ) if $err;
3194 0           $self->_build($context, $token);
3195 0           return 32;
3196             }
3197              
3198 0           $token->detach;
3199 0           $err = $self->_construct_parser_error(
3200             $token,
3201             ["#EOF", "#Comment", "#TableRow", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Other"],
3202             "State: 32 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:1>DescriptionHelper:1>Description:0>__alt1:0>#Other:0",
3203             );
3204 0           $self->add_error( $context, $err );
3205              
3206 0           return 32;
3207             }
3208              
3209             # GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:2>ExamplesTable:0>#TableRow:0
3210             sub match_token_at_33 {
3211 0     0 0   my ( $self, $token, $context ) = @_;
3212 0           my ( $ok, $err );
3213 0           ($ok, $err) = $context->token_matcher->match_EOF($token);
3214 0 0         if ($ok) {
3215 0 0         $self->add_error( $context, $err ) if $err;
3216 0           $self->_end_rule($context, 'ExamplesTable');
3217 0           $self->_end_rule($context, 'Examples');
3218 0           $self->_end_rule($context, 'ExamplesDefinition');
3219 0           $self->_end_rule($context, 'Scenario');
3220 0           $self->_end_rule($context, 'ScenarioDefinition');
3221 0           $self->_end_rule($context, 'Rule');
3222 0           $self->_end_rule($context, 'Feature');
3223 0           $self->_build($context, $token);
3224 0           return 34;
3225             }
3226 0           ($ok, $err) = $context->token_matcher->match_TableRow($token);
3227 0 0         if ($ok) {
3228 0 0         $self->add_error( $context, $err ) if $err;
3229 0           $self->_build($context, $token);
3230 0           return 33;
3231             }
3232 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
3233 0 0         if ($ok) {
3234 0 0         $self->add_error( $context, $err ) if $err;
3235 0 0         if ($self->lookahead_1($context, $token)) {
3236 0           $self->_end_rule($context, 'ExamplesTable');
3237 0           $self->_end_rule($context, 'Examples');
3238 0           $self->_end_rule($context, 'ExamplesDefinition');
3239 0           $self->_start_rule($context, 'ExamplesDefinition');
3240 0           $self->_start_rule($context, 'Tags');
3241 0           $self->_build($context, $token);
3242 0           return 30;
3243             }
3244             }
3245 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
3246 0 0         if ($ok) {
3247 0 0         $self->add_error( $context, $err ) if $err;
3248 0 0         if ($self->lookahead_0($context, $token)) {
3249 0           $self->_end_rule($context, 'ExamplesTable');
3250 0           $self->_end_rule($context, 'Examples');
3251 0           $self->_end_rule($context, 'ExamplesDefinition');
3252 0           $self->_end_rule($context, 'Scenario');
3253 0           $self->_end_rule($context, 'ScenarioDefinition');
3254 0           $self->_start_rule($context, 'ScenarioDefinition');
3255 0           $self->_start_rule($context, 'Tags');
3256 0           $self->_build($context, $token);
3257 0           return 25;
3258             }
3259             }
3260 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
3261 0 0         if ($ok) {
3262 0 0         $self->add_error( $context, $err ) if $err;
3263 0           $self->_end_rule($context, 'ExamplesTable');
3264 0           $self->_end_rule($context, 'Examples');
3265 0           $self->_end_rule($context, 'ExamplesDefinition');
3266 0           $self->_end_rule($context, 'Scenario');
3267 0           $self->_end_rule($context, 'ScenarioDefinition');
3268 0           $self->_end_rule($context, 'Rule');
3269 0           $self->_start_rule($context, 'Rule');
3270 0           $self->_start_rule($context, 'RuleHeader');
3271 0           $self->_start_rule($context, 'Tags');
3272 0           $self->_build($context, $token);
3273 0           return 18;
3274             }
3275 0           ($ok, $err) = $context->token_matcher->match_ExamplesLine($token);
3276 0 0         if ($ok) {
3277 0 0         $self->add_error( $context, $err ) if $err;
3278 0           $self->_end_rule($context, 'ExamplesTable');
3279 0           $self->_end_rule($context, 'Examples');
3280 0           $self->_end_rule($context, 'ExamplesDefinition');
3281 0           $self->_start_rule($context, 'ExamplesDefinition');
3282 0           $self->_start_rule($context, 'Examples');
3283 0           $self->_build($context, $token);
3284 0           return 31;
3285             }
3286 0           ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
3287 0 0         if ($ok) {
3288 0 0         $self->add_error( $context, $err ) if $err;
3289 0           $self->_end_rule($context, 'ExamplesTable');
3290 0           $self->_end_rule($context, 'Examples');
3291 0           $self->_end_rule($context, 'ExamplesDefinition');
3292 0           $self->_end_rule($context, 'Scenario');
3293 0           $self->_end_rule($context, 'ScenarioDefinition');
3294 0           $self->_start_rule($context, 'ScenarioDefinition');
3295 0           $self->_start_rule($context, 'Scenario');
3296 0           $self->_build($context, $token);
3297 0           return 26;
3298             }
3299 0           ($ok, $err) = $context->token_matcher->match_RuleLine($token);
3300 0 0         if ($ok) {
3301 0 0         $self->add_error( $context, $err ) if $err;
3302 0           $self->_end_rule($context, 'ExamplesTable');
3303 0           $self->_end_rule($context, 'Examples');
3304 0           $self->_end_rule($context, 'ExamplesDefinition');
3305 0           $self->_end_rule($context, 'Scenario');
3306 0           $self->_end_rule($context, 'ScenarioDefinition');
3307 0           $self->_end_rule($context, 'Rule');
3308 0           $self->_start_rule($context, 'Rule');
3309 0           $self->_start_rule($context, 'RuleHeader');
3310 0           $self->_build($context, $token);
3311 0           return 19;
3312             }
3313 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
3314 0 0         if ($ok) {
3315 0 0         $self->add_error( $context, $err ) if $err;
3316 0           $self->_build($context, $token);
3317 0           return 33;
3318             }
3319 0           ($ok, $err) = $context->token_matcher->match_Empty($token);
3320 0 0         if ($ok) {
3321 0 0         $self->add_error( $context, $err ) if $err;
3322 0           $self->_build($context, $token);
3323 0           return 33;
3324             }
3325              
3326 0           $token->detach;
3327 0           $err = $self->_construct_parser_error(
3328             $token,
3329             ["#EOF", "#TableRow", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"],
3330             "State: 33 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:3>ExamplesDefinition:1>Examples:2>ExamplesTable:0>#TableRow:0",
3331             );
3332 0           $self->add_error( $context, $err );
3333              
3334 0           return 33;
3335             }
3336              
3337             # GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:1>DocString:0>#DocStringSeparator:0
3338             sub match_token_at_35 {
3339 0     0 0   my ( $self, $token, $context ) = @_;
3340 0           my ( $ok, $err );
3341 0           ($ok, $err) = $context->token_matcher->match_DocStringSeparator($token);
3342 0 0         if ($ok) {
3343 0 0         $self->add_error( $context, $err ) if $err;
3344 0           $self->_build($context, $token);
3345 0           return 36;
3346             }
3347 0           ($ok, $err) = $context->token_matcher->match_Other($token);
3348 0 0         if ($ok) {
3349 0 0         $self->add_error( $context, $err ) if $err;
3350 0           $self->_build($context, $token);
3351 0           return 35;
3352             }
3353              
3354 0           $token->detach;
3355 0           $err = $self->_construct_parser_error(
3356             $token,
3357             ["#DocStringSeparator", "#Other"],
3358             "State: 35 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:1>DocString:0>#DocStringSeparator:0",
3359             );
3360 0           $self->add_error( $context, $err );
3361              
3362 0           return 35;
3363             }
3364              
3365             # GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:1>DocString:2>#DocStringSeparator:0
3366             sub match_token_at_36 {
3367 0     0 0   my ( $self, $token, $context ) = @_;
3368 0           my ( $ok, $err );
3369 0           ($ok, $err) = $context->token_matcher->match_EOF($token);
3370 0 0         if ($ok) {
3371 0 0         $self->add_error( $context, $err ) if $err;
3372 0           $self->_end_rule($context, 'DocString');
3373 0           $self->_end_rule($context, 'Step');
3374 0           $self->_end_rule($context, 'Scenario');
3375 0           $self->_end_rule($context, 'ScenarioDefinition');
3376 0           $self->_end_rule($context, 'Rule');
3377 0           $self->_end_rule($context, 'Feature');
3378 0           $self->_build($context, $token);
3379 0           return 34;
3380             }
3381 0           ($ok, $err) = $context->token_matcher->match_StepLine($token);
3382 0 0         if ($ok) {
3383 0 0         $self->add_error( $context, $err ) if $err;
3384 0           $self->_end_rule($context, 'DocString');
3385 0           $self->_end_rule($context, 'Step');
3386 0           $self->_start_rule($context, 'Step');
3387 0           $self->_build($context, $token);
3388 0           return 28;
3389             }
3390 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
3391 0 0         if ($ok) {
3392 0 0         $self->add_error( $context, $err ) if $err;
3393 0 0         if ($self->lookahead_1($context, $token)) {
3394 0           $self->_end_rule($context, 'DocString');
3395 0           $self->_end_rule($context, 'Step');
3396 0           $self->_start_rule($context, 'ExamplesDefinition');
3397 0           $self->_start_rule($context, 'Tags');
3398 0           $self->_build($context, $token);
3399 0           return 30;
3400             }
3401             }
3402 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
3403 0 0         if ($ok) {
3404 0 0         $self->add_error( $context, $err ) if $err;
3405 0 0         if ($self->lookahead_0($context, $token)) {
3406 0           $self->_end_rule($context, 'DocString');
3407 0           $self->_end_rule($context, 'Step');
3408 0           $self->_end_rule($context, 'Scenario');
3409 0           $self->_end_rule($context, 'ScenarioDefinition');
3410 0           $self->_start_rule($context, 'ScenarioDefinition');
3411 0           $self->_start_rule($context, 'Tags');
3412 0           $self->_build($context, $token);
3413 0           return 25;
3414             }
3415             }
3416 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
3417 0 0         if ($ok) {
3418 0 0         $self->add_error( $context, $err ) if $err;
3419 0           $self->_end_rule($context, 'DocString');
3420 0           $self->_end_rule($context, 'Step');
3421 0           $self->_end_rule($context, 'Scenario');
3422 0           $self->_end_rule($context, 'ScenarioDefinition');
3423 0           $self->_end_rule($context, 'Rule');
3424 0           $self->_start_rule($context, 'Rule');
3425 0           $self->_start_rule($context, 'RuleHeader');
3426 0           $self->_start_rule($context, 'Tags');
3427 0           $self->_build($context, $token);
3428 0           return 18;
3429             }
3430 0           ($ok, $err) = $context->token_matcher->match_ExamplesLine($token);
3431 0 0         if ($ok) {
3432 0 0         $self->add_error( $context, $err ) if $err;
3433 0           $self->_end_rule($context, 'DocString');
3434 0           $self->_end_rule($context, 'Step');
3435 0           $self->_start_rule($context, 'ExamplesDefinition');
3436 0           $self->_start_rule($context, 'Examples');
3437 0           $self->_build($context, $token);
3438 0           return 31;
3439             }
3440 0           ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
3441 0 0         if ($ok) {
3442 0 0         $self->add_error( $context, $err ) if $err;
3443 0           $self->_end_rule($context, 'DocString');
3444 0           $self->_end_rule($context, 'Step');
3445 0           $self->_end_rule($context, 'Scenario');
3446 0           $self->_end_rule($context, 'ScenarioDefinition');
3447 0           $self->_start_rule($context, 'ScenarioDefinition');
3448 0           $self->_start_rule($context, 'Scenario');
3449 0           $self->_build($context, $token);
3450 0           return 26;
3451             }
3452 0           ($ok, $err) = $context->token_matcher->match_RuleLine($token);
3453 0 0         if ($ok) {
3454 0 0         $self->add_error( $context, $err ) if $err;
3455 0           $self->_end_rule($context, 'DocString');
3456 0           $self->_end_rule($context, 'Step');
3457 0           $self->_end_rule($context, 'Scenario');
3458 0           $self->_end_rule($context, 'ScenarioDefinition');
3459 0           $self->_end_rule($context, 'Rule');
3460 0           $self->_start_rule($context, 'Rule');
3461 0           $self->_start_rule($context, 'RuleHeader');
3462 0           $self->_build($context, $token);
3463 0           return 19;
3464             }
3465 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
3466 0 0         if ($ok) {
3467 0 0         $self->add_error( $context, $err ) if $err;
3468 0           $self->_build($context, $token);
3469 0           return 36;
3470             }
3471 0           ($ok, $err) = $context->token_matcher->match_Empty($token);
3472 0 0         if ($ok) {
3473 0 0         $self->add_error( $context, $err ) if $err;
3474 0           $self->_build($context, $token);
3475 0           return 36;
3476             }
3477              
3478 0           $token->detach;
3479 0           $err = $self->_construct_parser_error(
3480             $token,
3481             ["#EOF", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"],
3482             "State: 36 - GherkinDocument:0>Feature:3>Rule:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:1>DocString:2>#DocStringSeparator:0",
3483             );
3484 0           $self->add_error( $context, $err );
3485              
3486 0           return 36;
3487             }
3488              
3489             # GherkinDocument:0>Feature:3>Rule:1>Background:2>Step:1>StepArg:0>__alt0:1>DocString:0>#DocStringSeparator:0
3490             sub match_token_at_37 {
3491 0     0 0   my ( $self, $token, $context ) = @_;
3492 0           my ( $ok, $err );
3493 0           ($ok, $err) = $context->token_matcher->match_DocStringSeparator($token);
3494 0 0         if ($ok) {
3495 0 0         $self->add_error( $context, $err ) if $err;
3496 0           $self->_build($context, $token);
3497 0           return 38;
3498             }
3499 0           ($ok, $err) = $context->token_matcher->match_Other($token);
3500 0 0         if ($ok) {
3501 0 0         $self->add_error( $context, $err ) if $err;
3502 0           $self->_build($context, $token);
3503 0           return 37;
3504             }
3505              
3506 0           $token->detach;
3507 0           $err = $self->_construct_parser_error(
3508             $token,
3509             ["#DocStringSeparator", "#Other"],
3510             "State: 37 - GherkinDocument:0>Feature:3>Rule:1>Background:2>Step:1>StepArg:0>__alt0:1>DocString:0>#DocStringSeparator:0",
3511             );
3512 0           $self->add_error( $context, $err );
3513              
3514 0           return 37;
3515             }
3516              
3517             # GherkinDocument:0>Feature:3>Rule:1>Background:2>Step:1>StepArg:0>__alt0:1>DocString:2>#DocStringSeparator:0
3518             sub match_token_at_38 {
3519 0     0 0   my ( $self, $token, $context ) = @_;
3520 0           my ( $ok, $err );
3521 0           ($ok, $err) = $context->token_matcher->match_EOF($token);
3522 0 0         if ($ok) {
3523 0 0         $self->add_error( $context, $err ) if $err;
3524 0           $self->_end_rule($context, 'DocString');
3525 0           $self->_end_rule($context, 'Step');
3526 0           $self->_end_rule($context, 'Background');
3527 0           $self->_end_rule($context, 'Rule');
3528 0           $self->_end_rule($context, 'Feature');
3529 0           $self->_build($context, $token);
3530 0           return 34;
3531             }
3532 0           ($ok, $err) = $context->token_matcher->match_StepLine($token);
3533 0 0         if ($ok) {
3534 0 0         $self->add_error( $context, $err ) if $err;
3535 0           $self->_end_rule($context, 'DocString');
3536 0           $self->_end_rule($context, 'Step');
3537 0           $self->_start_rule($context, 'Step');
3538 0           $self->_build($context, $token);
3539 0           return 23;
3540             }
3541 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
3542 0 0         if ($ok) {
3543 0 0         $self->add_error( $context, $err ) if $err;
3544 0 0         if ($self->lookahead_0($context, $token)) {
3545 0           $self->_end_rule($context, 'DocString');
3546 0           $self->_end_rule($context, 'Step');
3547 0           $self->_end_rule($context, 'Background');
3548 0           $self->_start_rule($context, 'ScenarioDefinition');
3549 0           $self->_start_rule($context, 'Tags');
3550 0           $self->_build($context, $token);
3551 0           return 25;
3552             }
3553             }
3554 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
3555 0 0         if ($ok) {
3556 0 0         $self->add_error( $context, $err ) if $err;
3557 0           $self->_end_rule($context, 'DocString');
3558 0           $self->_end_rule($context, 'Step');
3559 0           $self->_end_rule($context, 'Background');
3560 0           $self->_end_rule($context, 'Rule');
3561 0           $self->_start_rule($context, 'Rule');
3562 0           $self->_start_rule($context, 'RuleHeader');
3563 0           $self->_start_rule($context, 'Tags');
3564 0           $self->_build($context, $token);
3565 0           return 18;
3566             }
3567 0           ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
3568 0 0         if ($ok) {
3569 0 0         $self->add_error( $context, $err ) if $err;
3570 0           $self->_end_rule($context, 'DocString');
3571 0           $self->_end_rule($context, 'Step');
3572 0           $self->_end_rule($context, 'Background');
3573 0           $self->_start_rule($context, 'ScenarioDefinition');
3574 0           $self->_start_rule($context, 'Scenario');
3575 0           $self->_build($context, $token);
3576 0           return 26;
3577             }
3578 0           ($ok, $err) = $context->token_matcher->match_RuleLine($token);
3579 0 0         if ($ok) {
3580 0 0         $self->add_error( $context, $err ) if $err;
3581 0           $self->_end_rule($context, 'DocString');
3582 0           $self->_end_rule($context, 'Step');
3583 0           $self->_end_rule($context, 'Background');
3584 0           $self->_end_rule($context, 'Rule');
3585 0           $self->_start_rule($context, 'Rule');
3586 0           $self->_start_rule($context, 'RuleHeader');
3587 0           $self->_build($context, $token);
3588 0           return 19;
3589             }
3590 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
3591 0 0         if ($ok) {
3592 0 0         $self->add_error( $context, $err ) if $err;
3593 0           $self->_build($context, $token);
3594 0           return 38;
3595             }
3596 0           ($ok, $err) = $context->token_matcher->match_Empty($token);
3597 0 0         if ($ok) {
3598 0 0         $self->add_error( $context, $err ) if $err;
3599 0           $self->_build($context, $token);
3600 0           return 38;
3601             }
3602              
3603 0           $token->detach;
3604 0           $err = $self->_construct_parser_error(
3605             $token,
3606             ["#EOF", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"],
3607             "State: 38 - GherkinDocument:0>Feature:3>Rule:1>Background:2>Step:1>StepArg:0>__alt0:1>DocString:2>#DocStringSeparator:0",
3608             );
3609 0           $self->add_error( $context, $err );
3610              
3611 0           return 38;
3612             }
3613              
3614             # GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:1>DocString:0>#DocStringSeparator:0
3615             sub match_token_at_39 {
3616 0     0 0   my ( $self, $token, $context ) = @_;
3617 0           my ( $ok, $err );
3618 0           ($ok, $err) = $context->token_matcher->match_DocStringSeparator($token);
3619 0 0         if ($ok) {
3620 0 0         $self->add_error( $context, $err ) if $err;
3621 0           $self->_build($context, $token);
3622 0           return 40;
3623             }
3624 0           ($ok, $err) = $context->token_matcher->match_Other($token);
3625 0 0         if ($ok) {
3626 0 0         $self->add_error( $context, $err ) if $err;
3627 0           $self->_build($context, $token);
3628 0           return 39;
3629             }
3630              
3631 0           $token->detach;
3632 0           $err = $self->_construct_parser_error(
3633             $token,
3634             ["#DocStringSeparator", "#Other"],
3635             "State: 39 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:1>DocString:0>#DocStringSeparator:0",
3636             );
3637 0           $self->add_error( $context, $err );
3638              
3639 0           return 39;
3640             }
3641              
3642             # GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:1>DocString:2>#DocStringSeparator:0
3643             sub match_token_at_40 {
3644 0     0 0   my ( $self, $token, $context ) = @_;
3645 0           my ( $ok, $err );
3646 0           ($ok, $err) = $context->token_matcher->match_EOF($token);
3647 0 0         if ($ok) {
3648 0 0         $self->add_error( $context, $err ) if $err;
3649 0           $self->_end_rule($context, 'DocString');
3650 0           $self->_end_rule($context, 'Step');
3651 0           $self->_end_rule($context, 'Scenario');
3652 0           $self->_end_rule($context, 'ScenarioDefinition');
3653 0           $self->_end_rule($context, 'Feature');
3654 0           $self->_build($context, $token);
3655 0           return 34;
3656             }
3657 0           ($ok, $err) = $context->token_matcher->match_StepLine($token);
3658 0 0         if ($ok) {
3659 0 0         $self->add_error( $context, $err ) if $err;
3660 0           $self->_end_rule($context, 'DocString');
3661 0           $self->_end_rule($context, 'Step');
3662 0           $self->_start_rule($context, 'Step');
3663 0           $self->_build($context, $token);
3664 0           return 12;
3665             }
3666 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
3667 0 0         if ($ok) {
3668 0 0         $self->add_error( $context, $err ) if $err;
3669 0 0         if ($self->lookahead_1($context, $token)) {
3670 0           $self->_end_rule($context, 'DocString');
3671 0           $self->_end_rule($context, 'Step');
3672 0           $self->_start_rule($context, 'ExamplesDefinition');
3673 0           $self->_start_rule($context, 'Tags');
3674 0           $self->_build($context, $token);
3675 0           return 14;
3676             }
3677             }
3678 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
3679 0 0         if ($ok) {
3680 0 0         $self->add_error( $context, $err ) if $err;
3681 0 0         if ($self->lookahead_0($context, $token)) {
3682 0           $self->_end_rule($context, 'DocString');
3683 0           $self->_end_rule($context, 'Step');
3684 0           $self->_end_rule($context, 'Scenario');
3685 0           $self->_end_rule($context, 'ScenarioDefinition');
3686 0           $self->_start_rule($context, 'ScenarioDefinition');
3687 0           $self->_start_rule($context, 'Tags');
3688 0           $self->_build($context, $token);
3689 0           return 9;
3690             }
3691             }
3692 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
3693 0 0         if ($ok) {
3694 0 0         $self->add_error( $context, $err ) if $err;
3695 0           $self->_end_rule($context, 'DocString');
3696 0           $self->_end_rule($context, 'Step');
3697 0           $self->_end_rule($context, 'Scenario');
3698 0           $self->_end_rule($context, 'ScenarioDefinition');
3699 0           $self->_start_rule($context, 'Rule');
3700 0           $self->_start_rule($context, 'RuleHeader');
3701 0           $self->_start_rule($context, 'Tags');
3702 0           $self->_build($context, $token);
3703 0           return 18;
3704             }
3705 0           ($ok, $err) = $context->token_matcher->match_ExamplesLine($token);
3706 0 0         if ($ok) {
3707 0 0         $self->add_error( $context, $err ) if $err;
3708 0           $self->_end_rule($context, 'DocString');
3709 0           $self->_end_rule($context, 'Step');
3710 0           $self->_start_rule($context, 'ExamplesDefinition');
3711 0           $self->_start_rule($context, 'Examples');
3712 0           $self->_build($context, $token);
3713 0           return 15;
3714             }
3715 0           ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
3716 0 0         if ($ok) {
3717 0 0         $self->add_error( $context, $err ) if $err;
3718 0           $self->_end_rule($context, 'DocString');
3719 0           $self->_end_rule($context, 'Step');
3720 0           $self->_end_rule($context, 'Scenario');
3721 0           $self->_end_rule($context, 'ScenarioDefinition');
3722 0           $self->_start_rule($context, 'ScenarioDefinition');
3723 0           $self->_start_rule($context, 'Scenario');
3724 0           $self->_build($context, $token);
3725 0           return 10;
3726             }
3727 0           ($ok, $err) = $context->token_matcher->match_RuleLine($token);
3728 0 0         if ($ok) {
3729 0 0         $self->add_error( $context, $err ) if $err;
3730 0           $self->_end_rule($context, 'DocString');
3731 0           $self->_end_rule($context, 'Step');
3732 0           $self->_end_rule($context, 'Scenario');
3733 0           $self->_end_rule($context, 'ScenarioDefinition');
3734 0           $self->_start_rule($context, 'Rule');
3735 0           $self->_start_rule($context, 'RuleHeader');
3736 0           $self->_build($context, $token);
3737 0           return 19;
3738             }
3739 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
3740 0 0         if ($ok) {
3741 0 0         $self->add_error( $context, $err ) if $err;
3742 0           $self->_build($context, $token);
3743 0           return 40;
3744             }
3745 0           ($ok, $err) = $context->token_matcher->match_Empty($token);
3746 0 0         if ($ok) {
3747 0 0         $self->add_error( $context, $err ) if $err;
3748 0           $self->_build($context, $token);
3749 0           return 40;
3750             }
3751              
3752 0           $token->detach;
3753 0           $err = $self->_construct_parser_error(
3754             $token,
3755             ["#EOF", "#StepLine", "#TagLine", "#ExamplesLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"],
3756             "State: 40 - GherkinDocument:0>Feature:2>ScenarioDefinition:1>Scenario:2>Step:1>StepArg:0>__alt0:1>DocString:2>#DocStringSeparator:0",
3757             );
3758 0           $self->add_error( $context, $err );
3759              
3760 0           return 40;
3761             }
3762              
3763             # GherkinDocument:0>Feature:1>Background:2>Step:1>StepArg:0>__alt0:1>DocString:0>#DocStringSeparator:0
3764             sub match_token_at_41 {
3765 0     0 0   my ( $self, $token, $context ) = @_;
3766 0           my ( $ok, $err );
3767 0           ($ok, $err) = $context->token_matcher->match_DocStringSeparator($token);
3768 0 0         if ($ok) {
3769 0 0         $self->add_error( $context, $err ) if $err;
3770 0           $self->_build($context, $token);
3771 0           return 42;
3772             }
3773 0           ($ok, $err) = $context->token_matcher->match_Other($token);
3774 0 0         if ($ok) {
3775 0 0         $self->add_error( $context, $err ) if $err;
3776 0           $self->_build($context, $token);
3777 0           return 41;
3778             }
3779              
3780 0           $token->detach;
3781 0           $err = $self->_construct_parser_error(
3782             $token,
3783             ["#DocStringSeparator", "#Other"],
3784             "State: 41 - GherkinDocument:0>Feature:1>Background:2>Step:1>StepArg:0>__alt0:1>DocString:0>#DocStringSeparator:0",
3785             );
3786 0           $self->add_error( $context, $err );
3787              
3788 0           return 41;
3789             }
3790              
3791             # GherkinDocument:0>Feature:1>Background:2>Step:1>StepArg:0>__alt0:1>DocString:2>#DocStringSeparator:0
3792             sub match_token_at_42 {
3793 0     0 0   my ( $self, $token, $context ) = @_;
3794 0           my ( $ok, $err );
3795 0           ($ok, $err) = $context->token_matcher->match_EOF($token);
3796 0 0         if ($ok) {
3797 0 0         $self->add_error( $context, $err ) if $err;
3798 0           $self->_end_rule($context, 'DocString');
3799 0           $self->_end_rule($context, 'Step');
3800 0           $self->_end_rule($context, 'Background');
3801 0           $self->_end_rule($context, 'Feature');
3802 0           $self->_build($context, $token);
3803 0           return 34;
3804             }
3805 0           ($ok, $err) = $context->token_matcher->match_StepLine($token);
3806 0 0         if ($ok) {
3807 0 0         $self->add_error( $context, $err ) if $err;
3808 0           $self->_end_rule($context, 'DocString');
3809 0           $self->_end_rule($context, 'Step');
3810 0           $self->_start_rule($context, 'Step');
3811 0           $self->_build($context, $token);
3812 0           return 7;
3813             }
3814 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
3815 0 0         if ($ok) {
3816 0 0         $self->add_error( $context, $err ) if $err;
3817 0 0         if ($self->lookahead_0($context, $token)) {
3818 0           $self->_end_rule($context, 'DocString');
3819 0           $self->_end_rule($context, 'Step');
3820 0           $self->_end_rule($context, 'Background');
3821 0           $self->_start_rule($context, 'ScenarioDefinition');
3822 0           $self->_start_rule($context, 'Tags');
3823 0           $self->_build($context, $token);
3824 0           return 9;
3825             }
3826             }
3827 0           ($ok, $err) = $context->token_matcher->match_TagLine($token);
3828 0 0         if ($ok) {
3829 0 0         $self->add_error( $context, $err ) if $err;
3830 0           $self->_end_rule($context, 'DocString');
3831 0           $self->_end_rule($context, 'Step');
3832 0           $self->_end_rule($context, 'Background');
3833 0           $self->_start_rule($context, 'Rule');
3834 0           $self->_start_rule($context, 'RuleHeader');
3835 0           $self->_start_rule($context, 'Tags');
3836 0           $self->_build($context, $token);
3837 0           return 18;
3838             }
3839 0           ($ok, $err) = $context->token_matcher->match_ScenarioLine($token);
3840 0 0         if ($ok) {
3841 0 0         $self->add_error( $context, $err ) if $err;
3842 0           $self->_end_rule($context, 'DocString');
3843 0           $self->_end_rule($context, 'Step');
3844 0           $self->_end_rule($context, 'Background');
3845 0           $self->_start_rule($context, 'ScenarioDefinition');
3846 0           $self->_start_rule($context, 'Scenario');
3847 0           $self->_build($context, $token);
3848 0           return 10;
3849             }
3850 0           ($ok, $err) = $context->token_matcher->match_RuleLine($token);
3851 0 0         if ($ok) {
3852 0 0         $self->add_error( $context, $err ) if $err;
3853 0           $self->_end_rule($context, 'DocString');
3854 0           $self->_end_rule($context, 'Step');
3855 0           $self->_end_rule($context, 'Background');
3856 0           $self->_start_rule($context, 'Rule');
3857 0           $self->_start_rule($context, 'RuleHeader');
3858 0           $self->_build($context, $token);
3859 0           return 19;
3860             }
3861 0           ($ok, $err) = $context->token_matcher->match_Comment($token);
3862 0 0         if ($ok) {
3863 0 0         $self->add_error( $context, $err ) if $err;
3864 0           $self->_build($context, $token);
3865 0           return 42;
3866             }
3867 0           ($ok, $err) = $context->token_matcher->match_Empty($token);
3868 0 0         if ($ok) {
3869 0 0         $self->add_error( $context, $err ) if $err;
3870 0           $self->_build($context, $token);
3871 0           return 42;
3872             }
3873              
3874 0           $token->detach;
3875 0           $err = $self->_construct_parser_error(
3876             $token,
3877             ["#EOF", "#StepLine", "#TagLine", "#ScenarioLine", "#RuleLine", "#Comment", "#Empty"],
3878             "State: 42 - GherkinDocument:0>Feature:1>Background:2>Step:1>StepArg:0>__alt0:1>DocString:2>#DocStringSeparator:0",
3879             );
3880 0           $self->add_error( $context, $err );
3881              
3882 0           return 42;
3883             }
3884              
3885             ## use critic
3886              
3887             sub lookahead_0 {
3888 0     0 0   my ($self, $context, $current_token) = @_;
3889              
3890 0           $current_token->detach();
3891              
3892 0           my $token;
3893             my @queue;
3894 0           my $match = 0;
3895              
3896 0           my $ok;
3897 0           while (1) {
3898 0           $token = $context->read_token();
3899 0           $token->detach;
3900 0           push( @queue, $token );
3901              
3902              
3903 0           ($match) = $context->token_matcher->match_ScenarioLine($token);
3904 0 0         last if $match;
3905              
3906 0           ($ok) = $context->token_matcher->match_Empty($token);
3907 0 0         next if $ok;
3908 0           ($ok) = $context->token_matcher->match_Comment($token);
3909 0 0         next if $ok;
3910 0           ($ok) = $context->token_matcher->match_TagLine($token);
3911 0 0         next if $ok;
3912 0           last;
3913             }
3914              
3915 0           $context->add_tokens( @queue );
3916 0           return $match;
3917             }
3918             sub lookahead_1 {
3919 0     0 0   my ($self, $context, $current_token) = @_;
3920              
3921 0           $current_token->detach();
3922              
3923 0           my $token;
3924             my @queue;
3925 0           my $match = 0;
3926              
3927 0           my $ok;
3928 0           while (1) {
3929 0           $token = $context->read_token();
3930 0           $token->detach;
3931 0           push( @queue, $token );
3932              
3933              
3934 0           ($match) = $context->token_matcher->match_ExamplesLine($token);
3935 0 0         last if $match;
3936              
3937 0           ($ok) = $context->token_matcher->match_Empty($token);
3938 0 0         next if $ok;
3939 0           ($ok) = $context->token_matcher->match_Comment($token);
3940 0 0         next if $ok;
3941 0           ($ok) = $context->token_matcher->match_TagLine($token);
3942 0 0         next if $ok;
3943 0           last;
3944             }
3945              
3946 0           $context->add_tokens( @queue );
3947 0           return $match;
3948             }
3949             1;