File Coverage

blib/lib/TM/CTM/CParser.pm
Criterion Covered Total %
statement 5031 7784 64.6
branch 1491 4358 34.2
condition 514 1667 30.8
subroutine 329 389 84.5
pod 0 1 0.0
total 7365 14199 51.8


line stmt bran cond sub pod time code
1             package TM::CTM::CParser;
2 1     1   10 use Parse::RecDescent;
  1         4  
  1         13  
3              
4             { my $ERRORS;
5              
6              
7             package Parse::RecDescent::TM::CTM::CParser;
8 1     1   122 use strict;
  1         2  
  1         46  
9 1     1   5 use vars qw($skip $AUTOLOAD );
  1         2  
  1         107  
10             @Parse::RecDescent::TM::CTM::CParser::ISA = ();
11             $skip = '\s*';
12              
13             my $store;
14             my $log;
15             my $implicits;
16 1     1   6 use Data::Dumper;
  1         2  
  1         71  
17 1     1   5 use TM;
  1         2  
  1         43  
18 1     1   6 use TM::Literal;
  1         3  
  1         89  
19             my %prefixes;
20             my %prefixes_backup;
21             my %wildcards;
22             my %wildcards_backup;
23             my %templates;
24              
25             my $lid;
26             ;
27              
28              
29             {
30             local $SIG{__WARN__} = sub {0};
31             # PRETEND TO BE IN Parse::RecDescent NAMESPACE
32             *Parse::RecDescent::TM::CTM::CParser::AUTOLOAD = sub
33             {
34 1     1   6 no strict 'refs';
  1         2  
  1         214  
35 0     0   0 $AUTOLOAD =~ s/^Parse::RecDescent::TM::CTM::CParser/Parse::RecDescent/;
36 0         0 goto &{$AUTOLOAD};
  0         0  
37             }
38             }
39              
40             push @Parse::RecDescent::TM::CTM::CParser::ISA, 'Parse::RecDescent';
41             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
42             sub Parse::RecDescent::TM::CTM::CParser::string
43             {
44 57     57   115 my $thisparser = $_[0];
45 1     1   6 use vars q{$tracelevel};
  1         2  
  1         2231  
46 57   50     234 local $tracelevel = ($tracelevel||0)+1;
47 57         95 $ERRORS = 0;
48 57         165 my $thisrule = $thisparser->{"rules"}{"string"};
49            
50 57 50       158 Parse::RecDescent::_trace(q{Trying rule: [string]},
51             Parse::RecDescent::_tracefirst($_[1]),
52             q{string},
53             $tracelevel)
54             if defined $::RD_TRACE;
55              
56            
57 57         67 my $err_at = @{$thisparser->{errors}};
  57         115  
58              
59 57         104 my $score;
60             my $score_return;
61 0         0 my $_tok;
62 57         84 my $return = undef;
63 57         89 my $_matched=0;
64 57         66 my $commit=0;
65 57         134 my @item = ();
66 57         121 my %item = ();
67 57   33     223 my $repeating = defined($_[2]) && $_[2];
68 57   33     258 my $_noactions = defined($_[3]) && $_[3];
69 57 50       137 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  57         67  
  57         128  
70 57 50       242 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
71 57         83 my $text;
72 57         96 my $lastsep="";
73 57         183 my $expectation = new Parse::RecDescent::Expectation(q{/\\"\{3\}(.*?)\\"\{3\}/s, or /\\"([^\\n]*?)\\"/});
74 57         448 $expectation->at($_[1]);
75            
76 57         211 my $thisline;
77 57         281 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
78              
79            
80              
81 57   33     565 while (!$_matched && !$commit)
82             {
83            
84 57 50       126 Parse::RecDescent::_trace(q{Trying production: [/\\"\{3\}(.*?)\\"\{3\}/s '^^']},
85             Parse::RecDescent::_tracefirst($_[1]),
86             q{string},
87             $tracelevel)
88             if defined $::RD_TRACE;
89 57         186 my $thisprod = $thisrule->{"prods"}[0];
90 57         135 $text = $_[1];
91 57         81 my $_savetext;
92 57         133 @item = (q{string});
93 57         119 %item = (__RULE__ => q{string});
94 57         79 my $repcount = 0;
95              
96              
97 57 50       142 Parse::RecDescent::_trace(q{Trying terminal: [/\\"\{3\}(.*?)\\"\{3\}/s]}, Parse::RecDescent::_tracefirst($text),
98             q{string},
99             $tracelevel)
100             if defined $::RD_TRACE;
101 57         98 $lastsep = "";
102 57         154 $expectation->is(q{})->at($text);
103            
104              
105 57 100 66     730 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\"{3}(.*?)\"{3})//s)
  57 100       682  
106             {
107            
108 56         164 $expectation->failed();
109 56 50       268 Parse::RecDescent::_trace(q{<>},
110             Parse::RecDescent::_tracefirst($text))
111             if defined $::RD_TRACE;
112              
113 56         108 last;
114             }
115 1 50       7 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
116             . $& . q{])},
117             Parse::RecDescent::_tracefirst($text))
118             if defined $::RD_TRACE;
119 1         6 push @item, $item{__PATTERN1__}=$&;
120            
121              
122 1 50       5 Parse::RecDescent::_trace(q{Trying repeated subrule: ['^^']},
123             Parse::RecDescent::_tracefirst($text),
124             q{string},
125             $tracelevel)
126             if defined $::RD_TRACE;
127 1         5 $expectation->is(q{'^^'})->at($text);
128            
129 1 50   1   18 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::TM::CTM::CParser::_alternation_1_of_production_1_of_rule_string, 0, 1, $_noactions,$expectation,sub { \@arg })))
  1         4  
130             {
131 0 0       0 Parse::RecDescent::_trace(q{<>},
132             Parse::RecDescent::_tracefirst($text),
133             q{string},
134             $tracelevel)
135             if defined $::RD_TRACE;
136 0         0 last;
137             }
138 1 50       27 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule_string]<< (}
139             . @$_tok . q{ times)},
140            
141             Parse::RecDescent::_tracefirst($text),
142             q{string},
143             $tracelevel)
144             if defined $::RD_TRACE;
145 1         3 $item{q{_alternation_1_of_production_1_of_rule_string(?)}} = $_tok;
146 1         2 push @item, $_tok;
147            
148              
149              
150 1 50       4 Parse::RecDescent::_trace(q{Trying action},
151             Parse::RecDescent::_tracefirst($text),
152             q{string},
153             $tracelevel)
154             if defined $::RD_TRACE;
155            
156              
157 1 50 33     3 $_tok = ($_noactions) ? 0 : do { $return = new TM::Literal ($1, $item[2]->[0] || TM::Literal->STRING); };
  1         14  
158 1 50       6 unless (defined $_tok)
159             {
160 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
161             if defined $::RD_TRACE;
162 0         0 last;
163             }
164 1 50       4 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
165             . $_tok . q{])},
166             Parse::RecDescent::_tracefirst($text))
167             if defined $::RD_TRACE;
168 1         3 push @item, $_tok;
169            
170            
171              
172              
173 1 50       5 Parse::RecDescent::_trace(q{>>Matched production: [/\\"\{3\}(.*?)\\"\{3\}/s '^^']<<},
174             Parse::RecDescent::_tracefirst($text),
175             q{string},
176             $tracelevel)
177             if defined $::RD_TRACE;
178 1         2 $_matched = 1;
179 1         2 last;
180             }
181              
182              
183 57   66     316 while (!$_matched && !$commit)
184             {
185            
186 56 50       168 Parse::RecDescent::_trace(q{Trying production: [/\\"([^\\n]*?)\\"/ '^^']},
187             Parse::RecDescent::_tracefirst($_[1]),
188             q{string},
189             $tracelevel)
190             if defined $::RD_TRACE;
191 56         167 my $thisprod = $thisrule->{"prods"}[1];
192 56         102 $text = $_[1];
193 56         79 my $_savetext;
194 56         134 @item = (q{string});
195 56         167 %item = (__RULE__ => q{string});
196 56         72 my $repcount = 0;
197              
198              
199 56 50       143 Parse::RecDescent::_trace(q{Trying terminal: [/\\"([^\\n]*?)\\"/]}, Parse::RecDescent::_tracefirst($text),
200             q{string},
201             $tracelevel)
202             if defined $::RD_TRACE;
203 56         96 $lastsep = "";
204 56         161 $expectation->is(q{})->at($text);
205            
206              
207 56 100 66     583 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\"([^\n]*?)\")//)
  56 100       736  
208             {
209            
210 26         73 $expectation->failed();
211 26 50       113 Parse::RecDescent::_trace(q{<>},
212             Parse::RecDescent::_tracefirst($text))
213             if defined $::RD_TRACE;
214              
215 26         53 last;
216             }
217 30 50       91 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
218             . $& . q{])},
219             Parse::RecDescent::_tracefirst($text))
220             if defined $::RD_TRACE;
221 30         107 push @item, $item{__PATTERN1__}=$&;
222            
223              
224 30 50       62 Parse::RecDescent::_trace(q{Trying repeated subrule: ['^^']},
225             Parse::RecDescent::_tracefirst($text),
226             q{string},
227             $tracelevel)
228             if defined $::RD_TRACE;
229 30         97 $expectation->is(q{'^^'})->at($text);
230            
231 30 50   30   393 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::TM::CTM::CParser::_alternation_1_of_production_2_of_rule_string, 0, 1, $_noactions,$expectation,sub { \@arg })))
  30         76  
232             {
233 0 0       0 Parse::RecDescent::_trace(q{<>},
234             Parse::RecDescent::_tracefirst($text),
235             q{string},
236             $tracelevel)
237             if defined $::RD_TRACE;
238 0         0 last;
239             }
240 30 50       434 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_2_of_rule_string]<< (}
241             . @$_tok . q{ times)},
242            
243             Parse::RecDescent::_tracefirst($text),
244             q{string},
245             $tracelevel)
246             if defined $::RD_TRACE;
247 30         79 $item{q{_alternation_1_of_production_2_of_rule_string(?)}} = $_tok;
248 30         59 push @item, $_tok;
249            
250              
251              
252 30 50       109 Parse::RecDescent::_trace(q{Trying action},
253             Parse::RecDescent::_tracefirst($text),
254             q{string},
255             $tracelevel)
256             if defined $::RD_TRACE;
257            
258              
259 30 50 66     63 $_tok = ($_noactions) ? 0 : do { $return = new TM::Literal ($1, $item[2]->[0] || TM::Literal->STRING); };
  30         422  
260 30 50       97 unless (defined $_tok)
261             {
262 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
263             if defined $::RD_TRACE;
264 0         0 last;
265             }
266 30 50       68 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
267             . $_tok . q{])},
268             Parse::RecDescent::_tracefirst($text))
269             if defined $::RD_TRACE;
270 30         51 push @item, $_tok;
271            
272            
273              
274              
275 30 50       79 Parse::RecDescent::_trace(q{>>Matched production: [/\\"([^\\n]*?)\\"/ '^^']<<},
276             Parse::RecDescent::_tracefirst($text),
277             q{string},
278             $tracelevel)
279             if defined $::RD_TRACE;
280 30         38 $_matched = 1;
281 30         78 last;
282             }
283              
284              
285 57 100 66     240 unless ( $_matched || defined($score) )
286             {
287            
288              
289 26         40 $_[1] = $text; # NOT SURE THIS IS NEEDED
290 26 50       51 Parse::RecDescent::_trace(q{<>},
291             Parse::RecDescent::_tracefirst($_[1]),
292             q{string},
293             $tracelevel)
294             if defined $::RD_TRACE;
295 26         181 return undef;
296             }
297 31 50 33     106 if (!defined($return) && defined($score))
298             {
299 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
300             q{string},
301             $tracelevel)
302             if defined $::RD_TRACE;
303 0         0 $return = $score_return;
304             }
305 31         40 splice @{$thisparser->{errors}}, $err_at;
  31         93  
306 31 50       72 $return = $item[$#item] unless defined $return;
307 31 50       76 if (defined $::RD_TRACE)
308             {
309 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
310             $return . q{])}, "",
311             q{string},
312             $tracelevel);
313 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
314             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
315             Parse::RecDescent::_tracefirst($text),
316             , q{string},
317             $tracelevel)
318             }
319 31         64 $_[1] = $text;
320 31         264 return $return;
321             }
322              
323             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
324             sub Parse::RecDescent::TM::CTM::CParser::tm_format
325             {
326 0     0   0 my $thisparser = $_[0];
327 1     1   6 use vars q{$tracelevel};
  1         2  
  1         359  
328 0   0     0 local $tracelevel = ($tracelevel||0)+1;
329 0         0 $ERRORS = 0;
330 0         0 my $thisrule = $thisparser->{"rules"}{"tm_format"};
331            
332 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [tm_format]},
333             Parse::RecDescent::_tracefirst($_[1]),
334             q{tm_format},
335             $tracelevel)
336             if defined $::RD_TRACE;
337              
338            
339 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
340              
341 0         0 my $score;
342             my $score_return;
343 0         0 my $_tok;
344 0         0 my $return = undef;
345 0         0 my $_matched=0;
346 0         0 my $commit=0;
347 0         0 my @item = ();
348 0         0 my %item = ();
349 0   0     0 my $repeating = defined($_[2]) && $_[2];
350 0   0     0 my $_noactions = defined($_[3]) && $_[3];
351 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
352 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
353 0         0 my $text;
354 0         0 my $lastsep="";
355 0         0 my $expectation = new Parse::RecDescent::Expectation(q{string});
356 0         0 $expectation->at($_[1]);
357            
358 0         0 my $thisline;
359 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
360              
361            
362              
363 0   0     0 while (!$_matched && !$commit)
364             {
365            
366 0 0       0 Parse::RecDescent::_trace(q{Trying production: [string]},
367             Parse::RecDescent::_tracefirst($_[1]),
368             q{tm_format},
369             $tracelevel)
370             if defined $::RD_TRACE;
371 0         0 my $thisprod = $thisrule->{"prods"}[0];
372 0         0 $text = $_[1];
373 0         0 my $_savetext;
374 0         0 @item = (q{tm_format});
375 0         0 %item = (__RULE__ => q{tm_format});
376 0         0 my $repcount = 0;
377              
378              
379 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [string]},
380             Parse::RecDescent::_tracefirst($text),
381             q{tm_format},
382             $tracelevel)
383             if defined $::RD_TRACE;
384 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         530  
  0         0  
385 0         0 $expectation->is(q{})->at($text);
386 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::string($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
387             {
388            
389 0 0       0 Parse::RecDescent::_trace(q{<>},
390             Parse::RecDescent::_tracefirst($text),
391             q{tm_format},
392             $tracelevel)
393             if defined $::RD_TRACE;
394 0         0 $expectation->failed();
395 0         0 last;
396             }
397 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [string]<< (return value: [}
398             . $_tok . q{]},
399            
400             Parse::RecDescent::_tracefirst($text),
401             q{tm_format},
402             $tracelevel)
403             if defined $::RD_TRACE;
404 0         0 $item{q{string}} = $_tok;
405 0         0 push @item, $_tok;
406            
407             }
408              
409              
410 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [string]<<},
411             Parse::RecDescent::_tracefirst($text),
412             q{tm_format},
413             $tracelevel)
414             if defined $::RD_TRACE;
415 0         0 $_matched = 1;
416 0         0 last;
417             }
418              
419              
420 0 0 0     0 unless ( $_matched || defined($score) )
421             {
422            
423              
424 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
425 0 0       0 Parse::RecDescent::_trace(q{<>},
426             Parse::RecDescent::_tracefirst($_[1]),
427             q{tm_format},
428             $tracelevel)
429             if defined $::RD_TRACE;
430 0         0 return undef;
431             }
432 0 0 0     0 if (!defined($return) && defined($score))
433             {
434 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
435             q{tm_format},
436             $tracelevel)
437             if defined $::RD_TRACE;
438 0         0 $return = $score_return;
439             }
440 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
441 0 0       0 $return = $item[$#item] unless defined $return;
442 0 0       0 if (defined $::RD_TRACE)
443             {
444 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
445             $return . q{])}, "",
446             q{tm_format},
447             $tracelevel);
448 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
449             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
450             Parse::RecDescent::_tracefirst($text),
451             , q{tm_format},
452             $tracelevel)
453             }
454 0         0 $_[1] = $text;
455 0         0 return $return;
456             }
457              
458             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
459             sub Parse::RecDescent::TM::CTM::CParser::topicmapid_directive
460             {
461 0     0   0 my $thisparser = $_[0];
462 1     1   5 use vars q{$tracelevel};
  1         1  
  1         560  
463 0   0     0 local $tracelevel = ($tracelevel||0)+1;
464 0         0 $ERRORS = 0;
465 0         0 my $thisrule = $thisparser->{"rules"}{"topicmapid_directive"};
466            
467 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [topicmapid_directive]},
468             Parse::RecDescent::_tracefirst($_[1]),
469             q{topicmapid_directive},
470             $tracelevel)
471             if defined $::RD_TRACE;
472              
473            
474 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
475              
476 0         0 my $score;
477             my $score_return;
478 0         0 my $_tok;
479 0         0 my $return = undef;
480 0         0 my $_matched=0;
481 0         0 my $commit=0;
482 0         0 my @item = ();
483 0         0 my %item = ();
484 0   0     0 my $repeating = defined($_[2]) && $_[2];
485 0   0     0 my $_noactions = defined($_[3]) && $_[3];
486 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
487 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
488 0         0 my $text;
489 0         0 my $lastsep="";
490 0         0 my $expectation = new Parse::RecDescent::Expectation(q{'#TOPICMAP'});
491 0         0 $expectation->at($_[1]);
492            
493 0         0 my $thisline;
494 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
495              
496            
497              
498 0   0     0 while (!$_matched && !$commit)
499             {
500            
501 0 0       0 Parse::RecDescent::_trace(q{Trying production: ['#TOPICMAP' name, or reify]},
502             Parse::RecDescent::_tracefirst($_[1]),
503             q{topicmapid_directive},
504             $tracelevel)
505             if defined $::RD_TRACE;
506 0         0 my $thisprod = $thisrule->{"prods"}[0];
507 0         0 $text = $_[1];
508 0         0 my $_savetext;
509 0         0 @item = (q{topicmapid_directive});
510 0         0 %item = (__RULE__ => q{topicmapid_directive});
511 0         0 my $repcount = 0;
512              
513              
514 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['#TOPICMAP']},
515             Parse::RecDescent::_tracefirst($text),
516             q{topicmapid_directive},
517             $tracelevel)
518             if defined $::RD_TRACE;
519 0         0 $lastsep = "";
520 0         0 $expectation->is(q{})->at($text);
521            
522              
523 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\#TOPICMAP//)
  0 0       0  
524             {
525            
526 0         0 $expectation->failed();
527 0 0       0 Parse::RecDescent::_trace(qq{<>},
528             Parse::RecDescent::_tracefirst($text))
529             if defined $::RD_TRACE;
530 0         0 last;
531             }
532 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
533             . $& . q{])},
534             Parse::RecDescent::_tracefirst($text))
535             if defined $::RD_TRACE;
536 0         0 push @item, $item{__STRING1__}=$&;
537            
538              
539 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_topicmapid_directive]},
540             Parse::RecDescent::_tracefirst($text),
541             q{topicmapid_directive},
542             $tracelevel)
543             if defined $::RD_TRACE;
544 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         1563  
  0         0  
545 0         0 $expectation->is(q{name, or reify})->at($text);
546 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::_alternation_1_of_production_1_of_rule_topicmapid_directive($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
547             {
548            
549 0 0       0 Parse::RecDescent::_trace(q{<>},
550             Parse::RecDescent::_tracefirst($text),
551             q{topicmapid_directive},
552             $tracelevel)
553             if defined $::RD_TRACE;
554 0         0 $expectation->failed();
555 0         0 last;
556             }
557 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_topicmapid_directive]<< (return value: [}
558             . $_tok . q{]},
559            
560             Parse::RecDescent::_tracefirst($text),
561             q{topicmapid_directive},
562             $tracelevel)
563             if defined $::RD_TRACE;
564 0         0 $item{q{_alternation_1_of_production_1_of_rule_topicmapid_directive}} = $_tok;
565 0         0 push @item, $_tok;
566            
567             }
568              
569 0 0       0 Parse::RecDescent::_trace(q{Trying action},
570             Parse::RecDescent::_tracefirst($text),
571             q{topicmapid_directive},
572             $tracelevel)
573             if defined $::RD_TRACE;
574            
575              
576 0 0       0 $_tok = ($_noactions) ? 0 : do {
577 0         0 $log->logdie (__PACKAGE__ . ": TOPICMAP directive ignored (use proper means)");
578             };
579 0 0       0 unless (defined $_tok)
580             {
581 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
582             if defined $::RD_TRACE;
583 0         0 last;
584             }
585 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
586             . $_tok . q{])},
587             Parse::RecDescent::_tracefirst($text))
588             if defined $::RD_TRACE;
589 0         0 push @item, $_tok;
590            
591            
592              
593              
594 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['#TOPICMAP' name, or reify]<<},
595             Parse::RecDescent::_tracefirst($text),
596             q{topicmapid_directive},
597             $tracelevel)
598             if defined $::RD_TRACE;
599 0         0 $_matched = 1;
600 0         0 last;
601             }
602              
603              
604 0 0 0     0 unless ( $_matched || defined($score) )
605             {
606            
607              
608 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
609 0 0       0 Parse::RecDescent::_trace(q{<>},
610             Parse::RecDescent::_tracefirst($_[1]),
611             q{topicmapid_directive},
612             $tracelevel)
613             if defined $::RD_TRACE;
614 0         0 return undef;
615             }
616 0 0 0     0 if (!defined($return) && defined($score))
617             {
618 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
619             q{topicmapid_directive},
620             $tracelevel)
621             if defined $::RD_TRACE;
622 0         0 $return = $score_return;
623             }
624 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
625 0 0       0 $return = $item[$#item] unless defined $return;
626 0 0       0 if (defined $::RD_TRACE)
627             {
628 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
629             $return . q{])}, "",
630             q{topicmapid_directive},
631             $tracelevel);
632 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
633             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
634             Parse::RecDescent::_tracefirst($text),
635             , q{topicmapid_directive},
636             $tracelevel)
637             }
638 0         0 $_[1] = $text;
639 0         0 return $return;
640             }
641              
642             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
643             sub Parse::RecDescent::TM::CTM::CParser::xname
644             {
645 0     0   0 my $thisparser = $_[0];
646 1     1   7 use vars q{$tracelevel};
  1         2  
  1         1838  
647 0   0     0 local $tracelevel = ($tracelevel||0)+1;
648 0         0 $ERRORS = 0;
649 0         0 my $thisrule = $thisparser->{"rules"}{"xname"};
650            
651 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [xname]},
652             Parse::RecDescent::_tracefirst($_[1]),
653             q{xname},
654             $tracelevel)
655             if defined $::RD_TRACE;
656              
657            
658 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
659              
660 0         0 my $score;
661             my $score_return;
662 0         0 my $_tok;
663 0         0 my $return = undef;
664 0         0 my $_matched=0;
665 0         0 my $commit=0;
666 0         0 my @item = ();
667 0         0 my %item = ();
668 0   0     0 my $repeating = defined($_[2]) && $_[2];
669 0   0     0 my $_noactions = defined($_[3]) && $_[3];
670 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
671 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
672 0         0 my $text;
673 0         0 my $lastsep="";
674 0         0 my $expectation = new Parse::RecDescent::Expectation(q{/^\\w[:\\-\\w]*/, or /^\\w[-\\w]*/});
675 0         0 $expectation->at($_[1]);
676            
677 0         0 my $thisline;
678 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
679              
680            
681              
682 0   0     0 while (!$_matched && !$commit)
683             {
684            
685 0 0       0 Parse::RecDescent::_trace(q{Trying production: [/^\\w[:\\-\\w]*/ ]},
686             Parse::RecDescent::_tracefirst($_[1]),
687             q{xname},
688             $tracelevel)
689             if defined $::RD_TRACE;
690 0         0 my $thisprod = $thisrule->{"prods"}[0];
691 0         0 $text = $_[1];
692 0         0 my $_savetext;
693 0         0 @item = (q{xname});
694 0         0 %item = (__RULE__ => q{xname});
695 0         0 my $repcount = 0;
696              
697              
698 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/^\\w[:\\-\\w]*/]}, Parse::RecDescent::_tracefirst($text),
699             q{xname},
700             $tracelevel)
701             if defined $::RD_TRACE;
702 0         0 $lastsep = "";
703 0         0 $expectation->is(q{})->at($text);
704            
705              
706 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:^\w[:\-\w]*)//)
  0 0       0  
707             {
708            
709 0         0 $expectation->failed();
710 0 0       0 Parse::RecDescent::_trace(q{<>},
711             Parse::RecDescent::_tracefirst($text))
712             if defined $::RD_TRACE;
713              
714 0         0 last;
715             }
716 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
717             . $& . q{])},
718             Parse::RecDescent::_tracefirst($text))
719             if defined $::RD_TRACE;
720 0         0 push @item, $item{__PATTERN1__}=$&;
721            
722              
723 0 0       0 Parse::RecDescent::_trace(q{Trying action},
724             Parse::RecDescent::_tracefirst($text),
725             q{xname},
726             $tracelevel)
727             if defined $::RD_TRACE;
728            
729              
730 0 0       0 $_tok = ($_noactions) ? 0 : do {
731 0         0 my $name = $item[1];
732 0 0       0 if ($name =~ /^(\w+):/) {
733 0         0 my $prefix = $1;
734 0 0       0 if ($prefixes{$prefix}) {
735 0         0 $name =~ s/^$prefix:/$prefixes{$prefix}/;
736 0         0 $return = $name;
737             } else {
738 0         0 $return = undef;
739             }
740             } else {
741 0         0 $return = $name;
742             }
743             };
744 0 0       0 unless (defined $_tok)
745             {
746 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
747             if defined $::RD_TRACE;
748 0         0 last;
749             }
750 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
751             . $_tok . q{])},
752             Parse::RecDescent::_tracefirst($text))
753             if defined $::RD_TRACE;
754 0         0 push @item, $_tok;
755            
756            
757              
758            
759              
760 0 0       0 Parse::RecDescent::_trace(q{Trying directive: []},
761             Parse::RecDescent::_tracefirst($text),
762             q{xname},
763             $tracelevel)
764             if defined $::RD_TRACE;
765 0 0       0 $_tok = do { ( ! $return) ? undef : 1 };
  0         0  
766 0 0       0 if (defined($_tok))
767             {
768 0 0       0 Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
769             . $_tok . q{])},
770             Parse::RecDescent::_tracefirst($text))
771             if defined $::RD_TRACE;
772             }
773             else
774             {
775 0 0       0 Parse::RecDescent::_trace(q{<>},
776             Parse::RecDescent::_tracefirst($text))
777             if defined $::RD_TRACE;
778             }
779            
780 0 0       0 last unless defined $_tok;
781 0         0 push @item, $item{__DIRECTIVE1__}=$_tok;
782            
783              
784              
785 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [/^\\w[:\\-\\w]*/ ]<<},
786             Parse::RecDescent::_tracefirst($text),
787             q{xname},
788             $tracelevel)
789             if defined $::RD_TRACE;
790 0         0 $_matched = 1;
791 0         0 last;
792             }
793              
794              
795 0   0     0 while (!$_matched && !$commit)
796             {
797            
798 0 0       0 Parse::RecDescent::_trace(q{Trying production: [/^\\w[-\\w]*/]},
799             Parse::RecDescent::_tracefirst($_[1]),
800             q{xname},
801             $tracelevel)
802             if defined $::RD_TRACE;
803 0         0 my $thisprod = $thisrule->{"prods"}[1];
804 0         0 $text = $_[1];
805 0         0 my $_savetext;
806 0         0 @item = (q{xname});
807 0         0 %item = (__RULE__ => q{xname});
808 0         0 my $repcount = 0;
809              
810              
811 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/^\\w[-\\w]*/]}, Parse::RecDescent::_tracefirst($text),
812             q{xname},
813             $tracelevel)
814             if defined $::RD_TRACE;
815 0         0 $lastsep = "";
816 0         0 $expectation->is(q{})->at($text);
817            
818              
819 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:^\w[-\w]*)//)
  0 0       0  
820             {
821            
822 0         0 $expectation->failed();
823 0 0       0 Parse::RecDescent::_trace(q{<>},
824             Parse::RecDescent::_tracefirst($text))
825             if defined $::RD_TRACE;
826              
827 0         0 last;
828             }
829 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
830             . $& . q{])},
831             Parse::RecDescent::_tracefirst($text))
832             if defined $::RD_TRACE;
833 0         0 push @item, $item{__PATTERN1__}=$&;
834            
835              
836 0 0       0 Parse::RecDescent::_trace(q{Trying action},
837             Parse::RecDescent::_tracefirst($text),
838             q{xname},
839             $tracelevel)
840             if defined $::RD_TRACE;
841            
842              
843 0 0       0 $_tok = ($_noactions) ? 0 : do {
844 0         0 $return = $item[1];
845             };
846 0 0       0 unless (defined $_tok)
847             {
848 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
849             if defined $::RD_TRACE;
850 0         0 last;
851             }
852 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
853             . $_tok . q{])},
854             Parse::RecDescent::_tracefirst($text))
855             if defined $::RD_TRACE;
856 0         0 push @item, $_tok;
857            
858            
859              
860              
861 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [/^\\w[-\\w]*/]<<},
862             Parse::RecDescent::_tracefirst($text),
863             q{xname},
864             $tracelevel)
865             if defined $::RD_TRACE;
866 0         0 $_matched = 1;
867 0         0 last;
868             }
869              
870              
871 0 0 0     0 unless ( $_matched || defined($score) )
872             {
873            
874              
875 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
876 0 0       0 Parse::RecDescent::_trace(q{<>},
877             Parse::RecDescent::_tracefirst($_[1]),
878             q{xname},
879             $tracelevel)
880             if defined $::RD_TRACE;
881 0         0 return undef;
882             }
883 0 0 0     0 if (!defined($return) && defined($score))
884             {
885 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
886             q{xname},
887             $tracelevel)
888             if defined $::RD_TRACE;
889 0         0 $return = $score_return;
890             }
891 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
892 0 0       0 $return = $item[$#item] unless defined $return;
893 0 0       0 if (defined $::RD_TRACE)
894             {
895 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
896             $return . q{])}, "",
897             q{xname},
898             $tracelevel);
899 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
900             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
901             Parse::RecDescent::_tracefirst($text),
902             , q{xname},
903             $tracelevel)
904             }
905 0         0 $_[1] = $text;
906 0         0 return $return;
907             }
908              
909             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
910             sub Parse::RecDescent::TM::CTM::CParser::occ_topic
911             {
912 0     0   0 my $thisparser = $_[0];
913 1     1   57 use vars q{$tracelevel};
  1         2  
  1         373  
914 0   0     0 local $tracelevel = ($tracelevel||0)+1;
915 0         0 $ERRORS = 0;
916 0         0 my $thisrule = $thisparser->{"rules"}{"occ_topic"};
917            
918 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [occ_topic]},
919             Parse::RecDescent::_tracefirst($_[1]),
920             q{occ_topic},
921             $tracelevel)
922             if defined $::RD_TRACE;
923              
924            
925 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
926              
927 0         0 my $score;
928             my $score_return;
929 0         0 my $_tok;
930 0         0 my $return = undef;
931 0         0 my $_matched=0;
932 0         0 my $commit=0;
933 0         0 my @item = ();
934 0         0 my %item = ();
935 0   0     0 my $repeating = defined($_[2]) && $_[2];
936 0   0     0 my $_noactions = defined($_[3]) && $_[3];
937 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
938 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
939 0         0 my $text;
940 0         0 my $lastsep="";
941 0         0 my $expectation = new Parse::RecDescent::Expectation(q{name});
942 0         0 $expectation->at($_[1]);
943            
944 0         0 my $thisline;
945 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
946              
947            
948              
949 0   0     0 while (!$_matched && !$commit)
950             {
951            
952 0 0       0 Parse::RecDescent::_trace(q{Trying production: [name]},
953             Parse::RecDescent::_tracefirst($_[1]),
954             q{occ_topic},
955             $tracelevel)
956             if defined $::RD_TRACE;
957 0         0 my $thisprod = $thisrule->{"prods"}[0];
958 0         0 $text = $_[1];
959 0         0 my $_savetext;
960 0         0 @item = (q{occ_topic});
961 0         0 %item = (__RULE__ => q{occ_topic});
962 0         0 my $repcount = 0;
963              
964              
965 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [name]},
966             Parse::RecDescent::_tracefirst($text),
967             q{occ_topic},
968             $tracelevel)
969             if defined $::RD_TRACE;
970 1     1   5 if (1) { no strict qw{refs};
  1         1  
  1         481  
  0         0  
971 0         0 $expectation->is(q{})->at($text);
972 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
973             {
974            
975 0 0       0 Parse::RecDescent::_trace(q{<>},
976             Parse::RecDescent::_tracefirst($text),
977             q{occ_topic},
978             $tracelevel)
979             if defined $::RD_TRACE;
980 0         0 $expectation->failed();
981 0         0 last;
982             }
983 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [name]<< (return value: [}
984             . $_tok . q{]},
985            
986             Parse::RecDescent::_tracefirst($text),
987             q{occ_topic},
988             $tracelevel)
989             if defined $::RD_TRACE;
990 0         0 $item{q{name}} = $_tok;
991 0         0 push @item, $_tok;
992            
993             }
994              
995              
996 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [name]<<},
997             Parse::RecDescent::_tracefirst($text),
998             q{occ_topic},
999             $tracelevel)
1000             if defined $::RD_TRACE;
1001 0         0 $_matched = 1;
1002 0         0 last;
1003             }
1004              
1005              
1006 0 0 0     0 unless ( $_matched || defined($score) )
1007             {
1008            
1009              
1010 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
1011 0 0       0 Parse::RecDescent::_trace(q{<>},
1012             Parse::RecDescent::_tracefirst($_[1]),
1013             q{occ_topic},
1014             $tracelevel)
1015             if defined $::RD_TRACE;
1016 0         0 return undef;
1017             }
1018 0 0 0     0 if (!defined($return) && defined($score))
1019             {
1020 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1021             q{occ_topic},
1022             $tracelevel)
1023             if defined $::RD_TRACE;
1024 0         0 $return = $score_return;
1025             }
1026 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
1027 0 0       0 $return = $item[$#item] unless defined $return;
1028 0 0       0 if (defined $::RD_TRACE)
1029             {
1030 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1031             $return . q{])}, "",
1032             q{occ_topic},
1033             $tracelevel);
1034 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1035             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1036             Parse::RecDescent::_tracefirst($text),
1037             , q{occ_topic},
1038             $tracelevel)
1039             }
1040 0         0 $_[1] = $text;
1041 0         0 return $return;
1042             }
1043              
1044             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
1045             sub Parse::RecDescent::TM::CTM::CParser::reifier
1046             {
1047 54     54   692 my $thisparser = $_[0];
1048 1     1   4 use vars q{$tracelevel};
  1         2  
  1         617  
1049 54   50     189 local $tracelevel = ($tracelevel||0)+1;
1050 54         84 $ERRORS = 0;
1051 54         196 my $thisrule = $thisparser->{"rules"}{"reifier"};
1052            
1053 54 50       125 Parse::RecDescent::_trace(q{Trying rule: [reifier]},
1054             Parse::RecDescent::_tracefirst($_[1]),
1055             q{reifier},
1056             $tracelevel)
1057             if defined $::RD_TRACE;
1058              
1059            
1060 54         916 my $err_at = @{$thisparser->{errors}};
  54         128  
1061              
1062 54         73 my $score;
1063             my $score_return;
1064 0         0 my $_tok;
1065 54         75 my $return = undef;
1066 54         73 my $_matched=0;
1067 54         62 my $commit=0;
1068 54         90 my @item = ();
1069 54         85 my %item = ();
1070 54   33     176 my $repeating = defined($_[2]) && $_[2];
1071 54   33     171 my $_noactions = defined($_[3]) && $_[3];
1072 54 50       153 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  54         63  
  54         107  
1073 54 50       237 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1074 54         69 my $text;
1075 54         80 my $lastsep="";
1076 54         190 my $expectation = new Parse::RecDescent::Expectation(q{'~'});
1077 54         451 $expectation->at($_[1]);
1078            
1079 54         230 my $thisline;
1080 54         259 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1081              
1082            
1083              
1084 54   33     599 while (!$_matched && !$commit)
1085             {
1086            
1087 54 50       133 Parse::RecDescent::_trace(q{Trying production: ['~' topic_ref]},
1088             Parse::RecDescent::_tracefirst($_[1]),
1089             q{reifier},
1090             $tracelevel)
1091             if defined $::RD_TRACE;
1092 54         178 my $thisprod = $thisrule->{"prods"}[0];
1093 54         85 $text = $_[1];
1094 54         69 my $_savetext;
1095 54         108 @item = (q{reifier});
1096 54         115 %item = (__RULE__ => q{reifier});
1097 54         95 my $repcount = 0;
1098              
1099              
1100 54 50       116 Parse::RecDescent::_trace(q{Trying terminal: ['~']},
1101             Parse::RecDescent::_tracefirst($text),
1102             q{reifier},
1103             $tracelevel)
1104             if defined $::RD_TRACE;
1105 54         72 $lastsep = "";
1106 54         154 $expectation->is(q{})->at($text);
1107            
1108              
1109 54 100 66     594 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\~//)
  54 100       597  
1110             {
1111            
1112 50         149 $expectation->failed();
1113 50 50       237 Parse::RecDescent::_trace(qq{<>},
1114             Parse::RecDescent::_tracefirst($text))
1115             if defined $::RD_TRACE;
1116 50         115 last;
1117             }
1118 4 50       22 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1119             . $& . q{])},
1120             Parse::RecDescent::_tracefirst($text))
1121             if defined $::RD_TRACE;
1122 4         14 push @item, $item{__STRING1__}=$&;
1123            
1124              
1125 4 50       16 Parse::RecDescent::_trace(q{Trying subrule: [topic_ref]},
1126             Parse::RecDescent::_tracefirst($text),
1127             q{reifier},
1128             $tracelevel)
1129             if defined $::RD_TRACE;
1130 1     1   6 if (1) { no strict qw{refs};
  1         1  
  1         861  
  4         8  
1131 4         17 $expectation->is(q{topic_ref})->at($text);
1132 4 50   4   47 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::topic_ref($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  4         42  
1133             {
1134            
1135 0 0       0 Parse::RecDescent::_trace(q{<>},
1136             Parse::RecDescent::_tracefirst($text),
1137             q{reifier},
1138             $tracelevel)
1139             if defined $::RD_TRACE;
1140 0         0 $expectation->failed();
1141 0         0 last;
1142             }
1143 4 50       23 Parse::RecDescent::_trace(q{>>Matched subrule: [topic_ref]<< (return value: [}
1144             . $_tok . q{]},
1145            
1146             Parse::RecDescent::_tracefirst($text),
1147             q{reifier},
1148             $tracelevel)
1149             if defined $::RD_TRACE;
1150 4         11 $item{q{topic_ref}} = $_tok;
1151 4         8 push @item, $_tok;
1152            
1153             }
1154              
1155 4 50       14 Parse::RecDescent::_trace(q{Trying action},
1156             Parse::RecDescent::_tracefirst($text),
1157             q{reifier},
1158             $tracelevel)
1159             if defined $::RD_TRACE;
1160            
1161              
1162 4 50       12 $_tok = ($_noactions) ? 0 : do { $return = $item[2]; };
  4         10  
1163 4 50       11 unless (defined $_tok)
1164             {
1165 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
1166             if defined $::RD_TRACE;
1167 0         0 last;
1168             }
1169 4 50       10 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
1170             . $_tok . q{])},
1171             Parse::RecDescent::_tracefirst($text))
1172             if defined $::RD_TRACE;
1173 4         7 push @item, $_tok;
1174            
1175            
1176              
1177              
1178 4 50       25 Parse::RecDescent::_trace(q{>>Matched production: ['~' topic_ref]<<},
1179             Parse::RecDescent::_tracefirst($text),
1180             q{reifier},
1181             $tracelevel)
1182             if defined $::RD_TRACE;
1183 4         6 $_matched = 1;
1184 4         7 last;
1185             }
1186              
1187              
1188 54 100 66     348 unless ( $_matched || defined($score) )
1189             {
1190            
1191              
1192 50         83 $_[1] = $text; # NOT SURE THIS IS NEEDED
1193 50 50       124 Parse::RecDescent::_trace(q{<>},
1194             Parse::RecDescent::_tracefirst($_[1]),
1195             q{reifier},
1196             $tracelevel)
1197             if defined $::RD_TRACE;
1198 50         320 return undef;
1199             }
1200 4 50 33     13 if (!defined($return) && defined($score))
1201             {
1202 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1203             q{reifier},
1204             $tracelevel)
1205             if defined $::RD_TRACE;
1206 0         0 $return = $score_return;
1207             }
1208 4         5 splice @{$thisparser->{errors}}, $err_at;
  4         9  
1209 4 50       11 $return = $item[$#item] unless defined $return;
1210 4 50       14 if (defined $::RD_TRACE)
1211             {
1212 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1213             $return . q{])}, "",
1214             q{reifier},
1215             $tracelevel);
1216 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1217             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1218             Parse::RecDescent::_tracefirst($text),
1219             , q{reifier},
1220             $tracelevel)
1221             }
1222 4         10 $_[1] = $text;
1223 4         37 return $return;
1224             }
1225              
1226             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
1227             sub Parse::RecDescent::TM::CTM::CParser::wildcard
1228             {
1229 185     185   295 my $thisparser = $_[0];
1230 1     1   5 use vars q{$tracelevel};
  1         2  
  1         360  
1231 185   50     543 local $tracelevel = ($tracelevel||0)+1;
1232 185         254 $ERRORS = 0;
1233 185         436 my $thisrule = $thisparser->{"rules"}{"wildcard"};
1234            
1235 185 50       374 Parse::RecDescent::_trace(q{Trying rule: [wildcard]},
1236             Parse::RecDescent::_tracefirst($_[1]),
1237             q{wildcard},
1238             $tracelevel)
1239             if defined $::RD_TRACE;
1240              
1241            
1242 185         195 my $err_at = @{$thisparser->{errors}};
  185         356  
1243              
1244 185         237 my $score;
1245             my $score_return;
1246 0         0 my $_tok;
1247 185         252 my $return = undef;
1248 185         222 my $_matched=0;
1249 185         197 my $commit=0;
1250 185         279 my @item = ();
1251 185         279 my %item = ();
1252 185   33     489 my $repeating = defined($_[2]) && $_[2];
1253 185   33     630 my $_noactions = defined($_[3]) && $_[3];
1254 185 50       357 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  185         229  
  185         330  
1255 185 50       788 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1256 185         204 my $text;
1257 185         248 my $lastsep="";
1258 185         626 my $expectation = new Parse::RecDescent::Expectation(q{named_wildcard, or anonymous_wildcard});
1259 185         1377 $expectation->at($_[1]);
1260            
1261 185         760 my $thisline;
1262 185         706 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1263              
1264            
1265              
1266 185   33     1804 while (!$_matched && !$commit)
1267             {
1268            
1269 185 50       377 Parse::RecDescent::_trace(q{Trying production: [named_wildcard]},
1270             Parse::RecDescent::_tracefirst($_[1]),
1271             q{wildcard},
1272             $tracelevel)
1273             if defined $::RD_TRACE;
1274 185         466 my $thisprod = $thisrule->{"prods"}[0];
1275 185         315 $text = $_[1];
1276 185         253 my $_savetext;
1277 185         324 @item = (q{wildcard});
1278 185         449 %item = (__RULE__ => q{wildcard});
1279 185         237 my $repcount = 0;
1280              
1281              
1282 185 50       364 Parse::RecDescent::_trace(q{Trying subrule: [named_wildcard]},
1283             Parse::RecDescent::_tracefirst($text),
1284             q{wildcard},
1285             $tracelevel)
1286             if defined $::RD_TRACE;
1287 1     1   5 if (1) { no strict qw{refs};
  1         1  
  1         396  
  185         221  
1288 185         473 $expectation->is(q{})->at($text);
1289 185 100   185   1814 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::named_wildcard($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  185         458  
1290             {
1291            
1292 173 50       318 Parse::RecDescent::_trace(q{<>},
1293             Parse::RecDescent::_tracefirst($text),
1294             q{wildcard},
1295             $tracelevel)
1296             if defined $::RD_TRACE;
1297 173         568 $expectation->failed();
1298 173         1084 last;
1299             }
1300 12 50       58 Parse::RecDescent::_trace(q{>>Matched subrule: [named_wildcard]<< (return value: [}
1301             . $_tok . q{]},
1302            
1303             Parse::RecDescent::_tracefirst($text),
1304             q{wildcard},
1305             $tracelevel)
1306             if defined $::RD_TRACE;
1307 12         25 $item{q{named_wildcard}} = $_tok;
1308 12         24 push @item, $_tok;
1309            
1310             }
1311              
1312              
1313 12 50       42 Parse::RecDescent::_trace(q{>>Matched production: [named_wildcard]<<},
1314             Parse::RecDescent::_tracefirst($text),
1315             q{wildcard},
1316             $tracelevel)
1317             if defined $::RD_TRACE;
1318 12         16 $_matched = 1;
1319 12         29 last;
1320             }
1321              
1322              
1323 185   66     935 while (!$_matched && !$commit)
1324             {
1325            
1326 173 50       391 Parse::RecDescent::_trace(q{Trying production: [anonymous_wildcard]},
1327             Parse::RecDescent::_tracefirst($_[1]),
1328             q{wildcard},
1329             $tracelevel)
1330             if defined $::RD_TRACE;
1331 173         386 my $thisprod = $thisrule->{"prods"}[1];
1332 173         303 $text = $_[1];
1333 173         188 my $_savetext;
1334 173         771 @item = (q{wildcard});
1335 173         439 %item = (__RULE__ => q{wildcard});
1336 173         244 my $repcount = 0;
1337              
1338              
1339 173 50       349 Parse::RecDescent::_trace(q{Trying subrule: [anonymous_wildcard]},
1340             Parse::RecDescent::_tracefirst($text),
1341             q{wildcard},
1342             $tracelevel)
1343             if defined $::RD_TRACE;
1344 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         475  
  173         195  
1345 173         494 $expectation->is(q{})->at($text);
1346 173 100   173   1856 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::anonymous_wildcard($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  173         395  
1347             {
1348            
1349 171 50       364 Parse::RecDescent::_trace(q{<>},
1350             Parse::RecDescent::_tracefirst($text),
1351             q{wildcard},
1352             $tracelevel)
1353             if defined $::RD_TRACE;
1354 171         459 $expectation->failed();
1355 171         683 last;
1356             }
1357 2 50       11 Parse::RecDescent::_trace(q{>>Matched subrule: [anonymous_wildcard]<< (return value: [}
1358             . $_tok . q{]},
1359            
1360             Parse::RecDescent::_tracefirst($text),
1361             q{wildcard},
1362             $tracelevel)
1363             if defined $::RD_TRACE;
1364 2         5 $item{q{anonymous_wildcard}} = $_tok;
1365 2         4 push @item, $_tok;
1366            
1367             }
1368              
1369              
1370 2 50       7 Parse::RecDescent::_trace(q{>>Matched production: [anonymous_wildcard]<<},
1371             Parse::RecDescent::_tracefirst($text),
1372             q{wildcard},
1373             $tracelevel)
1374             if defined $::RD_TRACE;
1375 2         3 $_matched = 1;
1376 2         4 last;
1377             }
1378              
1379              
1380 185 100 66     1070 unless ( $_matched || defined($score) )
1381             {
1382            
1383              
1384 171         287 $_[1] = $text; # NOT SURE THIS IS NEEDED
1385 171 50       362 Parse::RecDescent::_trace(q{<>},
1386             Parse::RecDescent::_tracefirst($_[1]),
1387             q{wildcard},
1388             $tracelevel)
1389             if defined $::RD_TRACE;
1390 171         1116 return undef;
1391             }
1392 14 50 33     100 if (!defined($return) && defined($score))
1393             {
1394 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1395             q{wildcard},
1396             $tracelevel)
1397             if defined $::RD_TRACE;
1398 0         0 $return = $score_return;
1399             }
1400 14         20 splice @{$thisparser->{errors}}, $err_at;
  14         35  
1401 14 50       51 $return = $item[$#item] unless defined $return;
1402 14 50       46 if (defined $::RD_TRACE)
1403             {
1404 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1405             $return . q{])}, "",
1406             q{wildcard},
1407             $tracelevel);
1408 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1409             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1410             Parse::RecDescent::_tracefirst($text),
1411             , q{wildcard},
1412             $tracelevel)
1413             }
1414 14         26 $_[1] = $text;
1415 14         102 return $return;
1416             }
1417              
1418             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
1419             sub Parse::RecDescent::TM::CTM::CParser::iri
1420             {
1421 508     508   641 my $thisparser = $_[0];
1422 1     1   4 use vars q{$tracelevel};
  1         7  
  1         837  
1423 508   50     1174 local $tracelevel = ($tracelevel||0)+1;
1424 508         626 $ERRORS = 0;
1425 508         1205 my $thisrule = $thisparser->{"rules"}{"iri"};
1426            
1427 508 50       1023 Parse::RecDescent::_trace(q{Trying rule: [iri]},
1428             Parse::RecDescent::_tracefirst($_[1]),
1429             q{iri},
1430             $tracelevel)
1431             if defined $::RD_TRACE;
1432              
1433            
1434 508         501 my $err_at = @{$thisparser->{errors}};
  508         873  
1435              
1436 508         710 my $score;
1437             my $score_return;
1438 0         0 my $_tok;
1439 508         602 my $return = undef;
1440 508         518 my $_matched=0;
1441 508         487 my $commit=0;
1442 508         665 my @item = ();
1443 508         738 my %item = ();
1444 508   33     1423 my $repeating = defined($_[2]) && $_[2];
1445 508   33     1375 my $_noactions = defined($_[3]) && $_[3];
1446 508 50       923 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  508         531  
  508         990  
1447 508 50       1795 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1448 508         574 my $text;
1449 508         603 my $lastsep="";
1450 508         1638 my $expectation = new Parse::RecDescent::Expectation(q{/\\w[\\w\\d\\+\\-\\.]+:\\/([^\\.\\s:;]|\\.(?!\\s)|:(?!\\s)|;(?!\\s))+/, or qname});
1451 508         3836 $expectation->at($_[1]);
1452            
1453 508         2209 my $thisline;
1454 508         2040 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1455              
1456            
1457              
1458 508   33     4469 while (!$_matched && !$commit)
1459             {
1460            
1461 508 50       937 Parse::RecDescent::_trace(q{Trying production: [/\\w[\\w\\d\\+\\-\\.]+:\\/([^\\.\\s:;]|\\.(?!\\s)|:(?!\\s)|;(?!\\s))+/]},
1462             Parse::RecDescent::_tracefirst($_[1]),
1463             q{iri},
1464             $tracelevel)
1465             if defined $::RD_TRACE;
1466 508         978 my $thisprod = $thisrule->{"prods"}[0];
1467 508         737 $text = $_[1];
1468 508         509 my $_savetext;
1469 508         768 @item = (q{iri});
1470 508         1036 %item = (__RULE__ => q{iri});
1471 508         559 my $repcount = 0;
1472              
1473              
1474 508 50       923 Parse::RecDescent::_trace(q{Trying terminal: [/\\w[\\w\\d\\+\\-\\.]+:\\/([^\\.\\s:;]|\\.(?!\\s)|:(?!\\s)|;(?!\\s))+/]}, Parse::RecDescent::_tracefirst($text),
1475             q{iri},
1476             $tracelevel)
1477             if defined $::RD_TRACE;
1478 508         650 $lastsep = "";
1479 508         1278 $expectation->is(q{})->at($text);
1480            
1481              
1482 508 100 66     5038 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\w[\w\d\+\-\.]+:\/([^\.\s:;]|\.(?!\s)|:(?!\s)|;(?!\s))+)//)
  508 100       5202  
1483             {
1484            
1485 471         1283 $expectation->failed();
1486 471 50       2040 Parse::RecDescent::_trace(q{<>},
1487             Parse::RecDescent::_tracefirst($text))
1488             if defined $::RD_TRACE;
1489              
1490 471         994 last;
1491             }
1492 37 50       169 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1493             . $& . q{])},
1494             Parse::RecDescent::_tracefirst($text))
1495             if defined $::RD_TRACE;
1496 37         181 push @item, $item{__PATTERN1__}=$&;
1497            
1498              
1499              
1500 37 50       106 Parse::RecDescent::_trace(q{>>Matched production: [/\\w[\\w\\d\\+\\-\\.]+:\\/([^\\.\\s:;]|\\.(?!\\s)|:(?!\\s)|;(?!\\s))+/]<<},
1501             Parse::RecDescent::_tracefirst($text),
1502             q{iri},
1503             $tracelevel)
1504             if defined $::RD_TRACE;
1505 37         49 $_matched = 1;
1506 37         73 last;
1507             }
1508              
1509              
1510 508   66     1887 while (!$_matched && !$commit)
1511             {
1512            
1513 471 50       865 Parse::RecDescent::_trace(q{Trying production: [qname]},
1514             Parse::RecDescent::_tracefirst($_[1]),
1515             q{iri},
1516             $tracelevel)
1517             if defined $::RD_TRACE;
1518 471         784 my $thisprod = $thisrule->{"prods"}[1];
1519 471         674 $text = $_[1];
1520 471         469 my $_savetext;
1521 471         903 @item = (q{iri});
1522 471         920 %item = (__RULE__ => q{iri});
1523 471         549 my $repcount = 0;
1524              
1525              
1526 471 50       928 Parse::RecDescent::_trace(q{Trying subrule: [qname]},
1527             Parse::RecDescent::_tracefirst($text),
1528             q{iri},
1529             $tracelevel)
1530             if defined $::RD_TRACE;
1531 1     1   6 if (1) { no strict qw{refs};
  1         3  
  1         875  
  471         432  
1532 471         1134 $expectation->is(q{})->at($text);
1533 471 100   471   4365 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::qname($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  471         1169  
1534             {
1535            
1536 456 50       1041 Parse::RecDescent::_trace(q{<>},
1537             Parse::RecDescent::_tracefirst($text),
1538             q{iri},
1539             $tracelevel)
1540             if defined $::RD_TRACE;
1541 456         1348 $expectation->failed();
1542 456         1615 last;
1543             }
1544 15 50       75 Parse::RecDescent::_trace(q{>>Matched subrule: [qname]<< (return value: [}
1545             . $_tok . q{]},
1546            
1547             Parse::RecDescent::_tracefirst($text),
1548             q{iri},
1549             $tracelevel)
1550             if defined $::RD_TRACE;
1551 15         73 $item{q{qname}} = $_tok;
1552 15         25 push @item, $_tok;
1553            
1554             }
1555              
1556              
1557 15 50       34 Parse::RecDescent::_trace(q{>>Matched production: [qname]<<},
1558             Parse::RecDescent::_tracefirst($text),
1559             q{iri},
1560             $tracelevel)
1561             if defined $::RD_TRACE;
1562 15         19 $_matched = 1;
1563 15         20 last;
1564             }
1565              
1566              
1567 508 100 66     2723 unless ( $_matched || defined($score) )
1568             {
1569            
1570              
1571 456         793 $_[1] = $text; # NOT SURE THIS IS NEEDED
1572 456 50       846 Parse::RecDescent::_trace(q{<>},
1573             Parse::RecDescent::_tracefirst($_[1]),
1574             q{iri},
1575             $tracelevel)
1576             if defined $::RD_TRACE;
1577 456         3140 return undef;
1578             }
1579 52 50 33     316 if (!defined($return) && defined($score))
1580             {
1581 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1582             q{iri},
1583             $tracelevel)
1584             if defined $::RD_TRACE;
1585 0         0 $return = $score_return;
1586             }
1587 52         90 splice @{$thisparser->{errors}}, $err_at;
  52         123  
1588 52 50       165 $return = $item[$#item] unless defined $return;
1589 52 50       172 if (defined $::RD_TRACE)
1590             {
1591 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1592             $return . q{])}, "",
1593             q{iri},
1594             $tracelevel);
1595 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1596             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1597             Parse::RecDescent::_tracefirst($text),
1598             , q{iri},
1599             $tracelevel)
1600             }
1601 52         99 $_[1] = $text;
1602 52         462 return $return;
1603             }
1604              
1605             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
1606             sub Parse::RecDescent::TM::CTM::CParser::scope
1607             {
1608 54     54   803 my $thisparser = $_[0];
1609 1     1   7 use vars q{$tracelevel};
  1         2  
  1         598  
1610 54   50     197 local $tracelevel = ($tracelevel||0)+1;
1611 54         98 $ERRORS = 0;
1612 54         143 my $thisrule = $thisparser->{"rules"}{"scope"};
1613            
1614 54 50       138 Parse::RecDescent::_trace(q{Trying rule: [scope]},
1615             Parse::RecDescent::_tracefirst($_[1]),
1616             q{scope},
1617             $tracelevel)
1618             if defined $::RD_TRACE;
1619              
1620            
1621 54         64 my $err_at = @{$thisparser->{errors}};
  54         124  
1622              
1623 54         86 my $score;
1624             my $score_return;
1625 0         0 my $_tok;
1626 54         103 my $return = undef;
1627 54         66 my $_matched=0;
1628 54         100 my $commit=0;
1629 54         101 my @item = ();
1630 54         113 my %item = ();
1631 54   33     213 my $repeating = defined($_[2]) && $_[2];
1632 54   33     189 my $_noactions = defined($_[3]) && $_[3];
1633 54 50       196 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  54         58  
  54         120  
1634 54 50       258 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1635 54         85 my $text;
1636 54         88 my $lastsep="";
1637 54         168 my $expectation = new Parse::RecDescent::Expectation(q{'@'});
1638 54         439 $expectation->at($_[1]);
1639            
1640 54         223 my $thisline;
1641 54         254 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1642              
1643            
1644              
1645 54   33     576 while (!$_matched && !$commit)
1646             {
1647            
1648 54 50       133 Parse::RecDescent::_trace(q{Trying production: ['@' topic_ref]},
1649             Parse::RecDescent::_tracefirst($_[1]),
1650             q{scope},
1651             $tracelevel)
1652             if defined $::RD_TRACE;
1653 54         153 my $thisprod = $thisrule->{"prods"}[0];
1654 54         102 $text = $_[1];
1655 54         68 my $_savetext;
1656 54         213 @item = (q{scope});
1657 54         147 %item = (__RULE__ => q{scope});
1658 54         106 my $repcount = 0;
1659              
1660              
1661 54 50       137 Parse::RecDescent::_trace(q{Trying terminal: ['@']},
1662             Parse::RecDescent::_tracefirst($text),
1663             q{scope},
1664             $tracelevel)
1665             if defined $::RD_TRACE;
1666 54         84 $lastsep = "";
1667 54         161 $expectation->is(q{})->at($text);
1668            
1669              
1670 54 100 66     620 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\@//)
  54 100       643  
1671             {
1672            
1673 47         150 $expectation->failed();
1674 47 50       222 Parse::RecDescent::_trace(qq{<>},
1675             Parse::RecDescent::_tracefirst($text))
1676             if defined $::RD_TRACE;
1677 47         95 last;
1678             }
1679 7 50       29 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1680             . $& . q{])},
1681             Parse::RecDescent::_tracefirst($text))
1682             if defined $::RD_TRACE;
1683 7         26 push @item, $item{__STRING1__}=$&;
1684            
1685              
1686 7 50       25 Parse::RecDescent::_trace(q{Trying subrule: [topic_ref]},
1687             Parse::RecDescent::_tracefirst($text),
1688             q{scope},
1689             $tracelevel)
1690             if defined $::RD_TRACE;
1691 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         721  
  7         13  
1692 7         21 $expectation->is(q{topic_ref})->at($text);
1693 7 50   7   80 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::topic_ref($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  7         21  
1694             {
1695            
1696 0 0       0 Parse::RecDescent::_trace(q{<>},
1697             Parse::RecDescent::_tracefirst($text),
1698             q{scope},
1699             $tracelevel)
1700             if defined $::RD_TRACE;
1701 0         0 $expectation->failed();
1702 0         0 last;
1703             }
1704 7 50       39 Parse::RecDescent::_trace(q{>>Matched subrule: [topic_ref]<< (return value: [}
1705             . $_tok . q{]},
1706            
1707             Parse::RecDescent::_tracefirst($text),
1708             q{scope},
1709             $tracelevel)
1710             if defined $::RD_TRACE;
1711 7         18 $item{q{topic_ref}} = $_tok;
1712 7         17 push @item, $_tok;
1713            
1714             }
1715              
1716 7 50       30 Parse::RecDescent::_trace(q{Trying action},
1717             Parse::RecDescent::_tracefirst($text),
1718             q{scope},
1719             $tracelevel)
1720             if defined $::RD_TRACE;
1721            
1722              
1723 7 50       46 $_tok = ($_noactions) ? 0 : do { $return = $item[2]; };
  7         14  
1724 7 50       26 unless (defined $_tok)
1725             {
1726 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
1727             if defined $::RD_TRACE;
1728 0         0 last;
1729             }
1730 7 50       22 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
1731             . $_tok . q{])},
1732             Parse::RecDescent::_tracefirst($text))
1733             if defined $::RD_TRACE;
1734 7         14 push @item, $_tok;
1735            
1736            
1737              
1738              
1739 7 50       45 Parse::RecDescent::_trace(q{>>Matched production: ['@' topic_ref]<<},
1740             Parse::RecDescent::_tracefirst($text),
1741             q{scope},
1742             $tracelevel)
1743             if defined $::RD_TRACE;
1744 7         10 $_matched = 1;
1745 7         19 last;
1746             }
1747              
1748              
1749 54 100 66     287 unless ( $_matched || defined($score) )
1750             {
1751            
1752              
1753 47         126 $_[1] = $text; # NOT SURE THIS IS NEEDED
1754 47 50       112 Parse::RecDescent::_trace(q{<>},
1755             Parse::RecDescent::_tracefirst($_[1]),
1756             q{scope},
1757             $tracelevel)
1758             if defined $::RD_TRACE;
1759 47         394 return undef;
1760             }
1761 7 50 33     29 if (!defined($return) && defined($score))
1762             {
1763 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1764             q{scope},
1765             $tracelevel)
1766             if defined $::RD_TRACE;
1767 0         0 $return = $score_return;
1768             }
1769 7         14 splice @{$thisparser->{errors}}, $err_at;
  7         17  
1770 7 50       21 $return = $item[$#item] unless defined $return;
1771 7 50       21 if (defined $::RD_TRACE)
1772             {
1773 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1774             $return . q{])}, "",
1775             q{scope},
1776             $tracelevel);
1777 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1778             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1779             Parse::RecDescent::_tracefirst($text),
1780             , q{scope},
1781             $tracelevel)
1782             }
1783 7         15 $_[1] = $text;
1784 7         61 return $return;
1785             }
1786              
1787             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
1788             sub Parse::RecDescent::TM::CTM::CParser::encoding
1789             {
1790 50     50   832 my $thisparser = $_[0];
1791 1     1   6 use vars q{$tracelevel};
  1         2  
  1         1543  
1792 50   50     204 local $tracelevel = ($tracelevel||0)+1;
1793 50         105 $ERRORS = 0;
1794 50         137 my $thisrule = $thisparser->{"rules"}{"encoding"};
1795            
1796 50 50       139 Parse::RecDescent::_trace(q{Trying rule: [encoding]},
1797             Parse::RecDescent::_tracefirst($_[1]),
1798             q{encoding},
1799             $tracelevel)
1800             if defined $::RD_TRACE;
1801              
1802            
1803 50         71 my $err_at = @{$thisparser->{errors}};
  50         136  
1804              
1805 50         68 my $score;
1806             my $score_return;
1807 0         0 my $_tok;
1808 50         88 my $return = undef;
1809 50         92 my $_matched=0;
1810 50         107 my $commit=0;
1811 50         110 my @item = ();
1812 50         102 my %item = ();
1813 50   33     195 my $repeating = defined($_[2]) && $_[2];
1814 50   33     209 my $_noactions = defined($_[3]) && $_[3];
1815 50 50       144 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  50         77  
  50         106  
1816 50 50       330 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1817 50         106 my $text;
1818 50         96 my $lastsep="";
1819 50         198 my $expectation = new Parse::RecDescent::Expectation(q{'TODO'});
1820 50         448 $expectation->at($_[1]);
1821            
1822 50         193 my $thisline;
1823 50         245 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1824              
1825            
1826              
1827 50   33     554 while (!$_matched && !$commit)
1828             {
1829            
1830 50 50       174 Parse::RecDescent::_trace(q{Trying production: ['TODO' '@' string]},
1831             Parse::RecDescent::_tracefirst($_[1]),
1832             q{encoding},
1833             $tracelevel)
1834             if defined $::RD_TRACE;
1835 50         150 my $thisprod = $thisrule->{"prods"}[0];
1836 50         95 $text = $_[1];
1837 50         92 my $_savetext;
1838 50         117 @item = (q{encoding});
1839 50         119 %item = (__RULE__ => q{encoding});
1840 50         72 my $repcount = 0;
1841              
1842              
1843 50 50       143 Parse::RecDescent::_trace(q{Trying terminal: ['TODO']},
1844             Parse::RecDescent::_tracefirst($text),
1845             q{encoding},
1846             $tracelevel)
1847             if defined $::RD_TRACE;
1848 50         99 $lastsep = "";
1849 50         218 $expectation->is(q{})->at($text);
1850            
1851              
1852 50 50 33     724 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\ATODO//)
  50 50       943  
1853             {
1854            
1855 50         240 $expectation->failed();
1856 50 50       280 Parse::RecDescent::_trace(qq{<>},
1857             Parse::RecDescent::_tracefirst($text))
1858             if defined $::RD_TRACE;
1859 50         151 last;
1860             }
1861 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1862             . $& . q{])},
1863             Parse::RecDescent::_tracefirst($text))
1864             if defined $::RD_TRACE;
1865 0         0 push @item, $item{__STRING1__}=$&;
1866            
1867              
1868 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['@']},
1869             Parse::RecDescent::_tracefirst($text),
1870             q{encoding},
1871             $tracelevel)
1872             if defined $::RD_TRACE;
1873 0         0 $lastsep = "";
1874 0         0 $expectation->is(q{'@'})->at($text);
1875            
1876              
1877 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\@//)
  0 0       0  
1878             {
1879            
1880 0         0 $expectation->failed();
1881 0 0       0 Parse::RecDescent::_trace(qq{<>},
1882             Parse::RecDescent::_tracefirst($text))
1883             if defined $::RD_TRACE;
1884 0         0 last;
1885             }
1886 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1887             . $& . q{])},
1888             Parse::RecDescent::_tracefirst($text))
1889             if defined $::RD_TRACE;
1890 0         0 push @item, $item{__STRING2__}=$&;
1891            
1892              
1893 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [string]},
1894             Parse::RecDescent::_tracefirst($text),
1895             q{encoding},
1896             $tracelevel)
1897             if defined $::RD_TRACE;
1898 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         765  
  0         0  
1899 0         0 $expectation->is(q{string})->at($text);
1900 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::string($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
1901             {
1902            
1903 0 0       0 Parse::RecDescent::_trace(q{<>},
1904             Parse::RecDescent::_tracefirst($text),
1905             q{encoding},
1906             $tracelevel)
1907             if defined $::RD_TRACE;
1908 0         0 $expectation->failed();
1909 0         0 last;
1910             }
1911 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [string]<< (return value: [}
1912             . $_tok . q{]},
1913            
1914             Parse::RecDescent::_tracefirst($text),
1915             q{encoding},
1916             $tracelevel)
1917             if defined $::RD_TRACE;
1918 0         0 $item{q{string}} = $_tok;
1919 0         0 push @item, $_tok;
1920            
1921             }
1922              
1923              
1924 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['TODO' '@' string]<<},
1925             Parse::RecDescent::_tracefirst($text),
1926             q{encoding},
1927             $tracelevel)
1928             if defined $::RD_TRACE;
1929 0         0 $_matched = 1;
1930 0         0 last;
1931             }
1932              
1933              
1934 50 50 33     247 unless ( $_matched || defined($score) )
1935             {
1936            
1937              
1938 50         95 $_[1] = $text; # NOT SURE THIS IS NEEDED
1939 50 50       118 Parse::RecDescent::_trace(q{<>},
1940             Parse::RecDescent::_tracefirst($_[1]),
1941             q{encoding},
1942             $tracelevel)
1943             if defined $::RD_TRACE;
1944 50         456 return undef;
1945             }
1946 0 0 0     0 if (!defined($return) && defined($score))
1947             {
1948 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1949             q{encoding},
1950             $tracelevel)
1951             if defined $::RD_TRACE;
1952 0         0 $return = $score_return;
1953             }
1954 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
1955 0 0       0 $return = $item[$#item] unless defined $return;
1956 0 0       0 if (defined $::RD_TRACE)
1957             {
1958 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1959             $return . q{])}, "",
1960             q{encoding},
1961             $tracelevel);
1962 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1963             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1964             Parse::RecDescent::_tracefirst($text),
1965             , q{encoding},
1966             $tracelevel)
1967             }
1968 0         0 $_[1] = $text;
1969 0         0 return $return;
1970             }
1971              
1972             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
1973             sub Parse::RecDescent::TM::CTM::CParser::topicmap
1974             {
1975 50     50   159 my $thisparser = $_[0];
1976 1     1   5 use vars q{$tracelevel};
  1         2  
  1         406  
1977 50   50     188 local $tracelevel = ($tracelevel||0)+1;
1978 50         115 $ERRORS = 0;
1979 50         165 my $thisrule = $thisparser->{"rules"}{"topicmap"};
1980            
1981 50 50       173 Parse::RecDescent::_trace(q{Trying rule: [topicmap]},
1982             Parse::RecDescent::_tracefirst($_[1]),
1983             q{topicmap},
1984             $tracelevel)
1985             if defined $::RD_TRACE;
1986              
1987            
1988 50         99 my $err_at = @{$thisparser->{errors}};
  50         132  
1989              
1990 50         120 my $score;
1991             my $score_return;
1992 0         0 my $_tok;
1993 50         118 my $return = undef;
1994 50         105 my $_matched=0;
1995 50         90 my $commit=0;
1996 50         133 my @item = ();
1997 50         127 my %item = ();
1998 50   33     316 my $repeating = defined($_[2]) && $_[2];
1999 50   33     296 my $_noactions = defined($_[3]) && $_[3];
2000 50 50       181 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  50         84  
  50         183  
2001 50 50       343 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2002 50         96 my $text;
2003 50         124 my $lastsep="";
2004 50         207 my $expectation = new Parse::RecDescent::Expectation(q{prolog});
2005 50         444 $expectation->at($_[1]);
2006            
2007 50         241 my $thisline;
2008 50         249 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2009              
2010            
2011              
2012 50   33     628 while (!$_matched && !$commit)
2013             {
2014            
2015 50 50       175 Parse::RecDescent::_trace(q{Trying production: [prolog directive directive, or template, or template_invocation, or topic, or association]},
2016             Parse::RecDescent::_tracefirst($_[1]),
2017             q{topicmap},
2018             $tracelevel)
2019             if defined $::RD_TRACE;
2020 50         165 my $thisprod = $thisrule->{"prods"}[0];
2021 50         123 $text = $_[1];
2022 50         91 my $_savetext;
2023 50         148 @item = (q{topicmap});
2024 50         166 %item = (__RULE__ => q{topicmap});
2025 50         80 my $repcount = 0;
2026              
2027              
2028 50 50       153 Parse::RecDescent::_trace(q{Trying subrule: [prolog]},
2029             Parse::RecDescent::_tracefirst($text),
2030             q{topicmap},
2031             $tracelevel)
2032             if defined $::RD_TRACE;
2033 1     1   4 if (1) { no strict qw{refs};
  1         2  
  1         908  
  50         69  
2034 50         154 $expectation->is(q{})->at($text);
2035 50 50   50   623 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::prolog($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  50         160  
2036             {
2037            
2038 0 0       0 Parse::RecDescent::_trace(q{<>},
2039             Parse::RecDescent::_tracefirst($text),
2040             q{topicmap},
2041             $tracelevel)
2042             if defined $::RD_TRACE;
2043 0         0 $expectation->failed();
2044 0         0 last;
2045             }
2046 50 50       209 Parse::RecDescent::_trace(q{>>Matched subrule: [prolog]<< (return value: [}
2047             . $_tok . q{]},
2048            
2049             Parse::RecDescent::_tracefirst($text),
2050             q{topicmap},
2051             $tracelevel)
2052             if defined $::RD_TRACE;
2053 50         120 $item{q{prolog}} = $_tok;
2054 50         85 push @item, $_tok;
2055            
2056             }
2057              
2058 50 50       139 Parse::RecDescent::_trace(q{Trying repeated subrule: [directive]},
2059             Parse::RecDescent::_tracefirst($text),
2060             q{topicmap},
2061             $tracelevel)
2062             if defined $::RD_TRACE;
2063 50         193 $expectation->is(q{directive})->at($text);
2064            
2065 50 50   58   622 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::TM::CTM::CParser::directive, 0, 100000000, $_noactions,$expectation,sub { \@arg })))
  58         191  
2066             {
2067 0 0       0 Parse::RecDescent::_trace(q{<>},
2068             Parse::RecDescent::_tracefirst($text),
2069             q{topicmap},
2070             $tracelevel)
2071             if defined $::RD_TRACE;
2072 0         0 last;
2073             }
2074 50 50       723 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [directive]<< (}
2075             . @$_tok . q{ times)},
2076            
2077             Parse::RecDescent::_tracefirst($text),
2078             q{topicmap},
2079             $tracelevel)
2080             if defined $::RD_TRACE;
2081 50         134 $item{q{directive(s?)}} = $_tok;
2082 50         68 push @item, $_tok;
2083            
2084              
2085              
2086 50 50       122 Parse::RecDescent::_trace(q{Trying repeated subrule: [directive, or template, or template_invocation, or topic, or association]},
2087             Parse::RecDescent::_tracefirst($text),
2088             q{topicmap},
2089             $tracelevel)
2090             if defined $::RD_TRACE;
2091 50         141 $expectation->is(q{directive, or template, or template_invocation, or topic, or association})->at($text);
2092            
2093 50 50   151   620 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::TM::CTM::CParser::_alternation_1_of_production_1_of_rule_topicmap, 0, 100000000, $_noactions,$expectation,sub { \@arg })))
  151         491  
2094             {
2095 0 0       0 Parse::RecDescent::_trace(q{<>},
2096             Parse::RecDescent::_tracefirst($text),
2097             q{topicmap},
2098             $tracelevel)
2099             if defined $::RD_TRACE;
2100 0         0 last;
2101             }
2102 47 50       974 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [_alternation_1_of_production_1_of_rule_topicmap]<< (}
2103             . @$_tok . q{ times)},
2104            
2105             Parse::RecDescent::_tracefirst($text),
2106             q{topicmap},
2107             $tracelevel)
2108             if defined $::RD_TRACE;
2109 47         147 $item{q{_alternation_1_of_production_1_of_rule_topicmap(s?)}} = $_tok;
2110 47         92 push @item, $_tok;
2111            
2112              
2113              
2114              
2115 47 50       116 Parse::RecDescent::_trace(q{>>Matched production: [prolog directive directive, or template, or template_invocation, or topic, or association]<<},
2116             Parse::RecDescent::_tracefirst($text),
2117             q{topicmap},
2118             $tracelevel)
2119             if defined $::RD_TRACE;
2120 47         65 $_matched = 1;
2121 47         110 last;
2122             }
2123              
2124              
2125 47 50 33     145 unless ( $_matched || defined($score) )
2126             {
2127            
2128              
2129 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
2130 0 0       0 Parse::RecDescent::_trace(q{<>},
2131             Parse::RecDescent::_tracefirst($_[1]),
2132             q{topicmap},
2133             $tracelevel)
2134             if defined $::RD_TRACE;
2135 0         0 return undef;
2136             }
2137 47 50 33     286 if (!defined($return) && defined($score))
2138             {
2139 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2140             q{topicmap},
2141             $tracelevel)
2142             if defined $::RD_TRACE;
2143 0         0 $return = $score_return;
2144             }
2145 47         70 splice @{$thisparser->{errors}}, $err_at;
  47         136  
2146 47 50       142 $return = $item[$#item] unless defined $return;
2147 47 50       102 if (defined $::RD_TRACE)
2148             {
2149 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2150             $return . q{])}, "",
2151             q{topicmap},
2152             $tracelevel);
2153 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
2154             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
2155             Parse::RecDescent::_tracefirst($text),
2156             , q{topicmap},
2157             $tracelevel)
2158             }
2159 47         106 $_[1] = $text;
2160 47         754 return $return;
2161             }
2162              
2163             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
2164             sub Parse::RecDescent::TM::CTM::CParser::topic
2165             {
2166 111     111   196 my $thisparser = $_[0];
2167 1     1   5 use vars q{$tracelevel};
  1         3  
  1         383  
2168 111   50     366 local $tracelevel = ($tracelevel||0)+1;
2169 111         187 $ERRORS = 0;
2170 111         277 my $thisrule = $thisparser->{"rules"}{"topic"};
2171            
2172 111 50       296 Parse::RecDescent::_trace(q{Trying rule: [topic]},
2173             Parse::RecDescent::_tracefirst($_[1]),
2174             q{topic},
2175             $tracelevel)
2176             if defined $::RD_TRACE;
2177              
2178            
2179 111         194 my $err_at = @{$thisparser->{errors}};
  111         207  
2180              
2181 111         155 my $score;
2182             my $score_return;
2183 0         0 my $_tok;
2184 111         140 my $return = undef;
2185 111         138 my $_matched=0;
2186 111         179 my $commit=0;
2187 111         213 my @item = ();
2188 111         197 my %item = ();
2189 111   33     411 my $repeating = defined($_[2]) && $_[2];
2190 111   33     379 my $_noactions = defined($_[3]) && $_[3];
2191 111 50       259 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  111         159  
  111         243  
2192 111 50       659 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2193 111         160 my $text;
2194 111         245 my $lastsep="";
2195 111         384 my $expectation = new Parse::RecDescent::Expectation(q{topic_identity});
2196 111         885 $expectation->at($_[1]);
2197            
2198 111         436 my $thisline;
2199 111         460 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2200              
2201            
2202              
2203 111   33     1096 while (!$_matched && !$commit)
2204             {
2205            
2206 111 50       248 Parse::RecDescent::_trace(q{Trying production: [topic_identity topic_tail '.']},
2207             Parse::RecDescent::_tracefirst($_[1]),
2208             q{topic},
2209             $tracelevel)
2210             if defined $::RD_TRACE;
2211 111         333 my $thisprod = $thisrule->{"prods"}[0];
2212 111         226 $text = $_[1];
2213 111         138 my $_savetext;
2214 111         219 @item = (q{topic});
2215 111         2678 %item = (__RULE__ => q{topic});
2216 111         150 my $repcount = 0;
2217              
2218              
2219 111 50       285 Parse::RecDescent::_trace(q{Trying subrule: [topic_identity]},
2220             Parse::RecDescent::_tracefirst($text),
2221             q{topic},
2222             $tracelevel)
2223             if defined $::RD_TRACE;
2224 1     1   10 if (1) { no strict qw{refs};
  1         2  
  1         1166  
  111         145  
2225 111         493 $expectation->is(q{})->at($text);
2226 111 100   111   1388 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::topic_identity($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  111         258  
2227             {
2228            
2229 40 50       107 Parse::RecDescent::_trace(q{<>},
2230             Parse::RecDescent::_tracefirst($text),
2231             q{topic},
2232             $tracelevel)
2233             if defined $::RD_TRACE;
2234 40         125 $expectation->failed();
2235 40         147 last;
2236             }
2237 71 50       289 Parse::RecDescent::_trace(q{>>Matched subrule: [topic_identity]<< (return value: [}
2238             . $_tok . q{]},
2239            
2240             Parse::RecDescent::_tracefirst($text),
2241             q{topic},
2242             $tracelevel)
2243             if defined $::RD_TRACE;
2244 71         210 $item{q{topic_identity}} = $_tok;
2245 71         107 push @item, $_tok;
2246            
2247             }
2248              
2249 71 50       173 Parse::RecDescent::_trace(q{Trying action},
2250             Parse::RecDescent::_tracefirst($text),
2251             q{topic},
2252             $tracelevel)
2253             if defined $::RD_TRACE;
2254            
2255              
2256 71 50       129 $_tok = ($_noactions) ? 0 : do { $lid = $item[1]; };
  71         159  
2257 71 50       202 unless (defined $_tok)
2258             {
2259 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
2260             if defined $::RD_TRACE;
2261 0         0 last;
2262             }
2263 71 50       171 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
2264             . $_tok . q{])},
2265             Parse::RecDescent::_tracefirst($text))
2266             if defined $::RD_TRACE;
2267 71         132 push @item, $_tok;
2268            
2269            
2270              
2271 71 50       127 Parse::RecDescent::_trace(q{Trying repeated subrule: [topic_tail]},
2272             Parse::RecDescent::_tracefirst($text),
2273             q{topic},
2274             $tracelevel)
2275             if defined $::RD_TRACE;
2276 71         256 $expectation->is(q{topic_tail})->at($text);
2277            
2278 71 50   142   958 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::TM::CTM::CParser::topic_tail, 0, 100000000, $_noactions,$expectation,sub { return [$lid] })))
  142         464  
2279             {
2280 0 0       0 Parse::RecDescent::_trace(q{<>},
2281             Parse::RecDescent::_tracefirst($text),
2282             q{topic},
2283             $tracelevel)
2284             if defined $::RD_TRACE;
2285 0         0 last;
2286             }
2287 71 50       1239 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [topic_tail]<< (}
2288             . @$_tok . q{ times)},
2289            
2290             Parse::RecDescent::_tracefirst($text),
2291             q{topic},
2292             $tracelevel)
2293             if defined $::RD_TRACE;
2294 71         187 $item{q{topic_tail(s?)}} = $_tok;
2295 71         135 push @item, $_tok;
2296            
2297              
2298              
2299 71 50       175 Parse::RecDescent::_trace(q{Trying terminal: ['.']},
2300             Parse::RecDescent::_tracefirst($text),
2301             q{topic},
2302             $tracelevel)
2303             if defined $::RD_TRACE;
2304 71         114 $lastsep = "";
2305 71         211 $expectation->is(q{'.'})->at($text);
2306            
2307              
2308 71 100 66     850 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\.//)
  71 100       824  
2309             {
2310            
2311 14         53 $expectation->failed();
2312 14 50       180 Parse::RecDescent::_trace(qq{<>},
2313             Parse::RecDescent::_tracefirst($text))
2314             if defined $::RD_TRACE;
2315 14         45 last;
2316             }
2317 57 50       172 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2318             . $& . q{])},
2319             Parse::RecDescent::_tracefirst($text))
2320             if defined $::RD_TRACE;
2321 57         217 push @item, $item{__STRING1__}=$&;
2322            
2323              
2324              
2325 57 50       131 Parse::RecDescent::_trace(q{>>Matched production: [topic_identity topic_tail '.']<<},
2326             Parse::RecDescent::_tracefirst($text),
2327             q{topic},
2328             $tracelevel)
2329             if defined $::RD_TRACE;
2330 57         76 $_matched = 1;
2331 57         169 last;
2332             }
2333              
2334              
2335 111 100 66     529 unless ( $_matched || defined($score) )
2336             {
2337            
2338              
2339 54         93 $_[1] = $text; # NOT SURE THIS IS NEEDED
2340 54 50       150 Parse::RecDescent::_trace(q{<>},
2341             Parse::RecDescent::_tracefirst($_[1]),
2342             q{topic},
2343             $tracelevel)
2344             if defined $::RD_TRACE;
2345 54         508 return undef;
2346             }
2347 57 50 33     317 if (!defined($return) && defined($score))
2348             {
2349 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2350             q{topic},
2351             $tracelevel)
2352             if defined $::RD_TRACE;
2353 0         0 $return = $score_return;
2354             }
2355 57         76 splice @{$thisparser->{errors}}, $err_at;
  57         156  
2356 57 50       164 $return = $item[$#item] unless defined $return;
2357 57 50       125 if (defined $::RD_TRACE)
2358             {
2359 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2360             $return . q{])}, "",
2361             q{topic},
2362             $tracelevel);
2363 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
2364             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
2365             Parse::RecDescent::_tracefirst($text),
2366             , q{topic},
2367             $tracelevel)
2368             }
2369 57         119 $_[1] = $text;
2370 57         819 return $return;
2371             }
2372              
2373             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
2374             sub Parse::RecDescent::TM::CTM::CParser::subject
2375             {
2376 0     0   0 my $thisparser = $_[0];
2377 1     1   5 use vars q{$tracelevel};
  1         2  
  1         765  
2378 0   0     0 local $tracelevel = ($tracelevel||0)+1;
2379 0         0 $ERRORS = 0;
2380 0         0 my $thisrule = $thisparser->{"rules"}{"subject"};
2381            
2382 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [subject]},
2383             Parse::RecDescent::_tracefirst($_[1]),
2384             q{subject},
2385             $tracelevel)
2386             if defined $::RD_TRACE;
2387              
2388            
2389 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
2390              
2391 0         0 my $score;
2392             my $score_return;
2393 0         0 my $_tok;
2394 0         0 my $return = undef;
2395 0         0 my $_matched=0;
2396 0         0 my $commit=0;
2397 0         0 my @item = ();
2398 0         0 my %item = ();
2399 0   0     0 my $repeating = defined($_[2]) && $_[2];
2400 0   0     0 my $_noactions = defined($_[3]) && $_[3];
2401 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
2402 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2403 0         0 my $text;
2404 0         0 my $lastsep="";
2405 0         0 my $expectation = new Parse::RecDescent::Expectation(q{'%'});
2406 0         0 $expectation->at($_[1]);
2407            
2408 0         0 my $thisline;
2409 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2410              
2411            
2412              
2413 0   0     0 while (!$_matched && !$commit)
2414             {
2415            
2416 0 0       0 Parse::RecDescent::_trace(q{Trying production: ['%' uri]},
2417             Parse::RecDescent::_tracefirst($_[1]),
2418             q{subject},
2419             $tracelevel)
2420             if defined $::RD_TRACE;
2421 0         0 my $thisprod = $thisrule->{"prods"}[0];
2422 0         0 $text = $_[1];
2423 0         0 my $_savetext;
2424 0         0 @item = (q{subject});
2425 0         0 %item = (__RULE__ => q{subject});
2426 0         0 my $repcount = 0;
2427              
2428              
2429 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['%']},
2430             Parse::RecDescent::_tracefirst($text),
2431             q{subject},
2432             $tracelevel)
2433             if defined $::RD_TRACE;
2434 0         0 $lastsep = "";
2435 0         0 $expectation->is(q{})->at($text);
2436            
2437              
2438 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\%//)
  0 0       0  
2439             {
2440            
2441 0         0 $expectation->failed();
2442 0 0       0 Parse::RecDescent::_trace(qq{<>},
2443             Parse::RecDescent::_tracefirst($text))
2444             if defined $::RD_TRACE;
2445 0         0 last;
2446             }
2447 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2448             . $& . q{])},
2449             Parse::RecDescent::_tracefirst($text))
2450             if defined $::RD_TRACE;
2451 0         0 push @item, $item{__STRING1__}=$&;
2452            
2453              
2454 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [uri]},
2455             Parse::RecDescent::_tracefirst($text),
2456             q{subject},
2457             $tracelevel)
2458             if defined $::RD_TRACE;
2459 1     1   5 if (1) { no strict qw{refs};
  1         19  
  1         709  
  0         0  
2460 0         0 $expectation->is(q{uri})->at($text);
2461 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::uri($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
2462             {
2463            
2464 0 0       0 Parse::RecDescent::_trace(q{<>},
2465             Parse::RecDescent::_tracefirst($text),
2466             q{subject},
2467             $tracelevel)
2468             if defined $::RD_TRACE;
2469 0         0 $expectation->failed();
2470 0         0 last;
2471             }
2472 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [uri]<< (return value: [}
2473             . $_tok . q{]},
2474            
2475             Parse::RecDescent::_tracefirst($text),
2476             q{subject},
2477             $tracelevel)
2478             if defined $::RD_TRACE;
2479 0         0 $item{q{uri}} = $_tok;
2480 0         0 push @item, $_tok;
2481            
2482             }
2483              
2484 0 0       0 Parse::RecDescent::_trace(q{Trying action},
2485             Parse::RecDescent::_tracefirst($text),
2486             q{subject},
2487             $tracelevel)
2488             if defined $::RD_TRACE;
2489            
2490              
2491 0 0       0 $_tok = ($_noactions) ? 0 : do { $return = $item[2]; };
  0         0  
2492 0 0       0 unless (defined $_tok)
2493             {
2494 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
2495             if defined $::RD_TRACE;
2496 0         0 last;
2497             }
2498 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
2499             . $_tok . q{])},
2500             Parse::RecDescent::_tracefirst($text))
2501             if defined $::RD_TRACE;
2502 0         0 push @item, $_tok;
2503            
2504            
2505              
2506              
2507 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['%' uri]<<},
2508             Parse::RecDescent::_tracefirst($text),
2509             q{subject},
2510             $tracelevel)
2511             if defined $::RD_TRACE;
2512 0         0 $_matched = 1;
2513 0         0 last;
2514             }
2515              
2516              
2517 0 0 0     0 unless ( $_matched || defined($score) )
2518             {
2519            
2520              
2521 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
2522 0 0       0 Parse::RecDescent::_trace(q{<>},
2523             Parse::RecDescent::_tracefirst($_[1]),
2524             q{subject},
2525             $tracelevel)
2526             if defined $::RD_TRACE;
2527 0         0 return undef;
2528             }
2529 0 0 0     0 if (!defined($return) && defined($score))
2530             {
2531 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2532             q{subject},
2533             $tracelevel)
2534             if defined $::RD_TRACE;
2535 0         0 $return = $score_return;
2536             }
2537 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
2538 0 0       0 $return = $item[$#item] unless defined $return;
2539 0 0       0 if (defined $::RD_TRACE)
2540             {
2541 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2542             $return . q{])}, "",
2543             q{subject},
2544             $tracelevel);
2545 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
2546             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
2547             Parse::RecDescent::_tracefirst($text),
2548             , q{subject},
2549             $tracelevel)
2550             }
2551 0         0 $_[1] = $text;
2552 0         0 return $return;
2553             }
2554              
2555             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
2556             sub Parse::RecDescent::TM::CTM::CParser::name
2557             {
2558 118     118   224 my $thisparser = $_[0];
2559 1     1   6 use vars q{$tracelevel};
  1         2  
  1         825  
2560 118   50     377 local $tracelevel = ($tracelevel||0)+1;
2561 118         178 $ERRORS = 0;
2562 118         354 my $thisrule = $thisparser->{"rules"}{"name"};
2563            
2564 118 50       263 Parse::RecDescent::_trace(q{Trying rule: [name]},
2565             Parse::RecDescent::_tracefirst($_[1]),
2566             q{name},
2567             $tracelevel)
2568             if defined $::RD_TRACE;
2569              
2570            
2571 118         165 my $err_at = @{$thisparser->{errors}};
  118         227  
2572              
2573 118         157 my $score;
2574             my $score_return;
2575 0         0 my $_tok;
2576 118         198 my $return = undef;
2577 118         181 my $_matched=0;
2578 118         135 my $commit=0;
2579 118         204 my @item = ();
2580 118         188 my %item = ();
2581 118   33     372 my $repeating = defined($_[2]) && $_[2];
2582 118   33     362 my $_noactions = defined($_[3]) && $_[3];
2583 118 50       272 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  118         174  
  118         244  
2584 118 50       467 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2585 118         179 my $text;
2586 118         189 my $lastsep="";
2587 118         376 my $expectation = new Parse::RecDescent::Expectation(q{'-'});
2588 118         878 $expectation->at($_[1]);
2589            
2590 118         450 my $thisline;
2591 118         463 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2592              
2593            
2594              
2595 118   33     1137 while (!$_matched && !$commit)
2596             {
2597            
2598 118 50       307 Parse::RecDescent::_trace(q{Trying production: ['-' typing string scope reifier]},
2599             Parse::RecDescent::_tracefirst($_[1]),
2600             q{name},
2601             $tracelevel)
2602             if defined $::RD_TRACE;
2603 118         302 my $thisprod = $thisrule->{"prods"}[0];
2604 118         189 $text = $_[1];
2605 118         134 my $_savetext;
2606 118         200 @item = (q{name});
2607 118         261 %item = (__RULE__ => q{name});
2608 118         171 my $repcount = 0;
2609              
2610              
2611 118 50       266 Parse::RecDescent::_trace(q{Trying terminal: ['-']},
2612             Parse::RecDescent::_tracefirst($text),
2613             q{name},
2614             $tracelevel)
2615             if defined $::RD_TRACE;
2616 118         217 $lastsep = "";
2617 118         306 $expectation->is(q{})->at($text);
2618            
2619              
2620 118 100 66     1328 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\-//)
  118 100       1337  
2621             {
2622            
2623 97         312 $expectation->failed();
2624 97 50       415 Parse::RecDescent::_trace(qq{<>},
2625             Parse::RecDescent::_tracefirst($text))
2626             if defined $::RD_TRACE;
2627 97         222 last;
2628             }
2629 21 50       99 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2630             . $& . q{])},
2631             Parse::RecDescent::_tracefirst($text))
2632             if defined $::RD_TRACE;
2633 21         87 push @item, $item{__STRING1__}=$&;
2634            
2635              
2636 21 50       74 Parse::RecDescent::_trace(q{Trying repeated subrule: [typing]},
2637             Parse::RecDescent::_tracefirst($text),
2638             q{name},
2639             $tracelevel)
2640             if defined $::RD_TRACE;
2641 21         83 $expectation->is(q{typing})->at($text);
2642            
2643 21 50   21   286 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::TM::CTM::CParser::typing, 0, 1, $_noactions,$expectation,sub { \@arg })))
  21         70  
2644             {
2645 0 0       0 Parse::RecDescent::_trace(q{<>},
2646             Parse::RecDescent::_tracefirst($text),
2647             q{name},
2648             $tracelevel)
2649             if defined $::RD_TRACE;
2650 0         0 last;
2651             }
2652 21 50       346 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [typing]<< (}
2653             . @$_tok . q{ times)},
2654            
2655             Parse::RecDescent::_tracefirst($text),
2656             q{name},
2657             $tracelevel)
2658             if defined $::RD_TRACE;
2659 21         55 $item{q{typing(?)}} = $_tok;
2660 21         34 push @item, $_tok;
2661            
2662              
2663              
2664 21 50       56 Parse::RecDescent::_trace(q{Trying subrule: [string]},
2665             Parse::RecDescent::_tracefirst($text),
2666             q{name},
2667             $tracelevel)
2668             if defined $::RD_TRACE;
2669 1     1   7 if (1) { no strict qw{refs};
  1         2  
  1         2223  
  21         55  
2670 21         69 $expectation->is(q{string})->at($text);
2671 21 50   21   241 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::string($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  21         61  
2672             {
2673            
2674 0 0       0 Parse::RecDescent::_trace(q{<>},
2675             Parse::RecDescent::_tracefirst($text),
2676             q{name},
2677             $tracelevel)
2678             if defined $::RD_TRACE;
2679 0         0 $expectation->failed();
2680 0         0 last;
2681             }
2682 21 50       101 Parse::RecDescent::_trace(q{>>Matched subrule: [string]<< (return value: [}
2683             . $_tok . q{]},
2684            
2685             Parse::RecDescent::_tracefirst($text),
2686             q{name},
2687             $tracelevel)
2688             if defined $::RD_TRACE;
2689 21         64 $item{q{string}} = $_tok;
2690 21         41 push @item, $_tok;
2691            
2692             }
2693              
2694 21 50       46 Parse::RecDescent::_trace(q{Trying repeated subrule: [scope]},
2695             Parse::RecDescent::_tracefirst($text),
2696             q{name},
2697             $tracelevel)
2698             if defined $::RD_TRACE;
2699 21         76 $expectation->is(q{scope})->at($text);
2700            
2701 21 50   21   309 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::TM::CTM::CParser::scope, 0, 1, $_noactions,$expectation,sub { \@arg })))
  21         58  
2702             {
2703 0 0       0 Parse::RecDescent::_trace(q{<>},
2704             Parse::RecDescent::_tracefirst($text),
2705             q{name},
2706             $tracelevel)
2707             if defined $::RD_TRACE;
2708 0         0 last;
2709             }
2710 21 50       364 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [scope]<< (}
2711             . @$_tok . q{ times)},
2712            
2713             Parse::RecDescent::_tracefirst($text),
2714             q{name},
2715             $tracelevel)
2716             if defined $::RD_TRACE;
2717 21         42 $item{q{scope(?)}} = $_tok;
2718 21         32 push @item, $_tok;
2719            
2720              
2721              
2722 21 50       47 Parse::RecDescent::_trace(q{Trying repeated subrule: [reifier]},
2723             Parse::RecDescent::_tracefirst($text),
2724             q{name},
2725             $tracelevel)
2726             if defined $::RD_TRACE;
2727 21         69 $expectation->is(q{reifier})->at($text);
2728            
2729 21 50   21   244 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::TM::CTM::CParser::reifier, 0, 1, $_noactions,$expectation,sub { \@arg })))
  21         57  
2730             {
2731 0 0       0 Parse::RecDescent::_trace(q{<>},
2732             Parse::RecDescent::_tracefirst($text),
2733             q{name},
2734             $tracelevel)
2735             if defined $::RD_TRACE;
2736 0         0 last;
2737             }
2738 21 50       263 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [reifier]<< (}
2739             . @$_tok . q{ times)},
2740            
2741             Parse::RecDescent::_tracefirst($text),
2742             q{name},
2743             $tracelevel)
2744             if defined $::RD_TRACE;
2745 21         53 $item{q{reifier(?)}} = $_tok;
2746 21         39 push @item, $_tok;
2747            
2748              
2749              
2750 21 50       44 Parse::RecDescent::_trace(q{Trying action},
2751             Parse::RecDescent::_tracefirst($text),
2752             q{name},
2753             $tracelevel)
2754             if defined $::RD_TRACE;
2755            
2756              
2757 21 50       55 $_tok = ($_noactions) ? 0 : do {
2758 21 100       70 my $type = $item[2]->[0] ? $item[2]->[0] : 'name';
2759 21 100       65 my $scope = $item[4]->[0] ? $item[4]->[0] : 'us';
2760              
2761 21         288 my ($a) = $store->assert ( bless [ undef, # LID
2762             $scope, # SCOPE
2763             $type, # TYPE
2764             TM->NAME, # KIND
2765             [ 'thing', 'value' ], # ROLES
2766             [ $arg[0], $item[3] ],# PLAYERS
2767             undef ], 'Assertion' );
2768 21 100       244 $store->assert(Assertion->new(kind => TM->ASSOC,
2769             type => 'is-subclass-of',
2770             roles => [ qw(subclass superclass) ],
2771             players => [ $type, 'name' ],
2772             scope => undef)) if $type ne 'name';
2773 21 100       234 $store->assert(Assertion->new(kind => TM->ASSOC,
2774             type => 'isa',
2775             roles => [ qw(instance class) ],
2776             players => [ $scope, 'scope' ],
2777             scope => undef)) if $scope ne 'us';
2778 21 100       79 $store->internalize ($item[5]->[0], $a->[TM->LID]) if $item[5]->[0];
2779 21         38 $return = $a;
2780             };
2781 21 50       53 unless (defined $_tok)
2782             {
2783 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
2784             if defined $::RD_TRACE;
2785 0         0 last;
2786             }
2787 21 50       61 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
2788             . $_tok . q{])},
2789             Parse::RecDescent::_tracefirst($text))
2790             if defined $::RD_TRACE;
2791 21         34 push @item, $_tok;
2792            
2793            
2794              
2795              
2796 21 50       48 Parse::RecDescent::_trace(q{>>Matched production: ['-' typing string scope reifier]<<},
2797             Parse::RecDescent::_tracefirst($text),
2798             q{name},
2799             $tracelevel)
2800             if defined $::RD_TRACE;
2801 21         26 $_matched = 1;
2802 21         51 last;
2803             }
2804              
2805              
2806 118 100 66     603 unless ( $_matched || defined($score) )
2807             {
2808            
2809              
2810 97         161 $_[1] = $text; # NOT SURE THIS IS NEEDED
2811 97 50       210 Parse::RecDescent::_trace(q{<>},
2812             Parse::RecDescent::_tracefirst($_[1]),
2813             q{name},
2814             $tracelevel)
2815             if defined $::RD_TRACE;
2816 97         703 return undef;
2817             }
2818 21 50 33     63 if (!defined($return) && defined($score))
2819             {
2820 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2821             q{name},
2822             $tracelevel)
2823             if defined $::RD_TRACE;
2824 0         0 $return = $score_return;
2825             }
2826 21         23 splice @{$thisparser->{errors}}, $err_at;
  21         52  
2827 21 50       48 $return = $item[$#item] unless defined $return;
2828 21 50       51 if (defined $::RD_TRACE)
2829             {
2830 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2831             $return . q{])}, "",
2832             q{name},
2833             $tracelevel);
2834 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
2835             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
2836             Parse::RecDescent::_tracefirst($text),
2837             , q{name},
2838             $tracelevel)
2839             }
2840 21         34 $_[1] = $text;
2841 21         239 return $return;
2842             }
2843              
2844             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
2845             sub Parse::RecDescent::TM::CTM::CParser::template_invocation
2846             {
2847 119     119   199 my $thisparser = $_[0];
2848 1     1   8 use vars q{$tracelevel};
  1         3  
  1         395  
2849 119   50     437 local $tracelevel = ($tracelevel||0)+1;
2850 119         220 $ERRORS = 0;
2851 119         275 my $thisrule = $thisparser->{"rules"}{"template_invocation"};
2852            
2853 119 50       242 Parse::RecDescent::_trace(q{Trying rule: [template_invocation]},
2854             Parse::RecDescent::_tracefirst($_[1]),
2855             q{template_invocation},
2856             $tracelevel)
2857             if defined $::RD_TRACE;
2858              
2859            
2860 119         191 my $err_at = @{$thisparser->{errors}};
  119         228  
2861              
2862 119         221 my $score;
2863             my $score_return;
2864 0         0 my $_tok;
2865 119         258 my $return = undef;
2866 119         236 my $_matched=0;
2867 119         161 my $commit=0;
2868 119         234 my @item = ();
2869 119         212 my %item = ();
2870 119   33     488 my $repeating = defined($_[2]) && $_[2];
2871 119   33     367 my $_noactions = defined($_[3]) && $_[3];
2872 119 50       268 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  119         131  
  119         247  
2873 119 50       648 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2874 119         191 my $text;
2875 119         192 my $lastsep="";
2876 119         399 my $expectation = new Parse::RecDescent::Expectation(q{identifier});
2877 119         899 $expectation->at($_[1]);
2878            
2879 119         500 my $thisline;
2880 119         482 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2881              
2882            
2883              
2884 119   33     1187 while (!$_matched && !$commit)
2885             {
2886            
2887 119 50       274 Parse::RecDescent::_trace(q{Trying production: [identifier '(' ')']},
2888             Parse::RecDescent::_tracefirst($_[1]),
2889             q{template_invocation},
2890             $tracelevel)
2891             if defined $::RD_TRACE;
2892 119         347 my $thisprod = $thisrule->{"prods"}[0];
2893 119         158 $text = $_[1];
2894 119         239 my $_savetext;
2895 119         250 @item = (q{template_invocation});
2896 119         281 %item = (__RULE__ => q{template_invocation});
2897 119         165 my $repcount = 0;
2898              
2899              
2900 119 50       255 Parse::RecDescent::_trace(q{Trying subrule: [identifier]},
2901             Parse::RecDescent::_tracefirst($text),
2902             q{template_invocation},
2903             $tracelevel)
2904             if defined $::RD_TRACE;
2905 1     1   5 if (1) { no strict qw{refs};
  1         1  
  1         1039  
  119         182  
2906 119         330 $expectation->is(q{})->at($text);
2907 119 100   119   1233 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::identifier($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  119         339  
2908             {
2909            
2910 55 50       161 Parse::RecDescent::_trace(q{<>},
2911             Parse::RecDescent::_tracefirst($text),
2912             q{template_invocation},
2913             $tracelevel)
2914             if defined $::RD_TRACE;
2915 55         176 $expectation->failed();
2916 55         202 last;
2917             }
2918 64 50       257 Parse::RecDescent::_trace(q{>>Matched subrule: [identifier]<< (return value: [}
2919             . $_tok . q{]},
2920            
2921             Parse::RecDescent::_tracefirst($text),
2922             q{template_invocation},
2923             $tracelevel)
2924             if defined $::RD_TRACE;
2925 64         142 $item{q{identifier}} = $_tok;
2926 64         100 push @item, $_tok;
2927            
2928             }
2929              
2930 64 50       174 Parse::RecDescent::_trace(q{Trying action},
2931             Parse::RecDescent::_tracefirst($text),
2932             q{template_invocation},
2933             $tracelevel)
2934             if defined $::RD_TRACE;
2935            
2936              
2937 64 50       123 $_tok = ($_noactions) ? 0 : do { $templates{$item[1]} };
  64         121  
2938 64 100       190 unless (defined $_tok)
2939             {
2940 53 50       142 Parse::RecDescent::_trace(q{<> (return value: [undef])})
2941             if defined $::RD_TRACE;
2942 53         87 last;
2943             }
2944 11 50       34 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
2945             . $_tok . q{])},
2946             Parse::RecDescent::_tracefirst($text))
2947             if defined $::RD_TRACE;
2948 11         19 push @item, $_tok;
2949            
2950            
2951              
2952 11 50       28 Parse::RecDescent::_trace(q{Trying terminal: ['(']},
2953             Parse::RecDescent::_tracefirst($text),
2954             q{template_invocation},
2955             $tracelevel)
2956             if defined $::RD_TRACE;
2957 11         19 $lastsep = "";
2958 11         34 $expectation->is(q{'('})->at($text);
2959            
2960              
2961 11 100 33     118 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\(//)
  11 50       137  
2962             {
2963            
2964 0         0 $expectation->failed();
2965 0 0       0 Parse::RecDescent::_trace(qq{<>},
2966             Parse::RecDescent::_tracefirst($text))
2967             if defined $::RD_TRACE;
2968 0         0 last;
2969             }
2970 11 50       35 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2971             . $& . q{])},
2972             Parse::RecDescent::_tracefirst($text))
2973             if defined $::RD_TRACE;
2974 11         35 push @item, $item{__STRING1__}=$&;
2975            
2976              
2977 11 50       23 Parse::RecDescent::_trace(q{Trying operator: []},
2978             Parse::RecDescent::_tracefirst($text),
2979             q{template_invocation},
2980             $tracelevel)
2981             if defined $::RD_TRACE;
2982 11         39 $expectation->is(q{})->at($text);
2983              
2984 11         64 $_tok = undef;
2985 11         13 OPLOOP: while (1)
2986             {
2987 11         14 $repcount = 0;
2988 11         20 my @item;
2989            
2990             # MATCH LEFTARG
2991            
2992 11 50       24 Parse::RecDescent::_trace(q{Trying subrule: [argument]},
2993             Parse::RecDescent::_tracefirst($text),
2994             q{template_invocation},
2995             $tracelevel)
2996             if defined $::RD_TRACE;
2997 1     1   6 if (1) { no strict qw{refs};
  1         3  
  1         541  
  11         14  
2998 11         36 $expectation->is(q{argument})->at($text);
2999 11 100   11   116 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::argument($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  11         37  
3000             {
3001            
3002 1 50       4 Parse::RecDescent::_trace(q{<>},
3003             Parse::RecDescent::_tracefirst($text),
3004             q{template_invocation},
3005             $tracelevel)
3006             if defined $::RD_TRACE;
3007 1         3 $expectation->failed();
3008 1         10 last;
3009             }
3010 10 50       45 Parse::RecDescent::_trace(q{>>Matched subrule: [argument]<< (return value: [}
3011             . $_tok . q{]},
3012            
3013             Parse::RecDescent::_tracefirst($text),
3014             q{template_invocation},
3015             $tracelevel)
3016             if defined $::RD_TRACE;
3017 10         28 $item{q{argument}} = $_tok;
3018 10         24 push @item, $_tok;
3019            
3020             }
3021              
3022              
3023 10         16 $repcount++;
3024              
3025 10         22 my $savetext = $text;
3026 10         15 my $backtrack;
3027              
3028             # MATCH (OP RIGHTARG)(s)
3029 10         31 while ($repcount < 100000000)
3030             {
3031 15         27 $backtrack = 0;
3032            
3033 15 50       33 Parse::RecDescent::_trace(q{Trying terminal: [/,/]}, Parse::RecDescent::_tracefirst($text),
3034             q{template_invocation},
3035             $tracelevel)
3036             if defined $::RD_TRACE;
3037 15         32 $lastsep = "";
3038 15         51 $expectation->is(q{/,/})->at($text);
3039            
3040              
3041 15 100 66     170 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:,)//)
  15 100       153  
3042             {
3043            
3044 10         34 $expectation->failed();
3045 10 50       102 Parse::RecDescent::_trace(q{<>},
3046             Parse::RecDescent::_tracefirst($text))
3047             if defined $::RD_TRACE;
3048              
3049 10         19 last;
3050             }
3051 5 50       16 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3052             . $& . q{])},
3053             Parse::RecDescent::_tracefirst($text))
3054             if defined $::RD_TRACE;
3055 5         16 push @item, $item{__PATTERN1__}=$&;
3056            
3057              
3058 5         14 pop @item;
3059 5 50       18 if (defined $1) {push @item, $item{'argument(s?)'}=$1; $backtrack=1;}
  0         0  
  0         0  
3060            
3061 5 50       13 Parse::RecDescent::_trace(q{Trying subrule: [argument]},
3062             Parse::RecDescent::_tracefirst($text),
3063             q{template_invocation},
3064             $tracelevel)
3065             if defined $::RD_TRACE;
3066 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         1246  
  5         6  
3067 5         18 $expectation->is(q{argument})->at($text);
3068 5 50   5   52 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::argument($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  5         16  
3069             {
3070            
3071 0 0       0 Parse::RecDescent::_trace(q{<>},
3072             Parse::RecDescent::_tracefirst($text),
3073             q{template_invocation},
3074             $tracelevel)
3075             if defined $::RD_TRACE;
3076 0         0 $expectation->failed();
3077 0         0 last;
3078             }
3079 5 50       26 Parse::RecDescent::_trace(q{>>Matched subrule: [argument]<< (return value: [}
3080             . $_tok . q{]},
3081            
3082             Parse::RecDescent::_tracefirst($text),
3083             q{template_invocation},
3084             $tracelevel)
3085             if defined $::RD_TRACE;
3086 5         8 $item{q{argument}} = $_tok;
3087 5         8 push @item, $_tok;
3088            
3089             }
3090              
3091 5         8 $savetext = $text;
3092 5         14 $repcount++;
3093             }
3094 10         21 $text = $savetext;
3095 10 50       25 pop @item if $backtrack;
3096              
3097            
3098 10         25 $_tok = [ @item ];
3099 10         21 last;
3100             }
3101              
3102 11 50       36 unless ($repcount>=0)
3103             {
3104 0 0       0 Parse::RecDescent::_trace(q{<]>>},
3105             Parse::RecDescent::_tracefirst($text),
3106             q{template_invocation},
3107             $tracelevel)
3108             if defined $::RD_TRACE;
3109 0         0 $expectation->failed();
3110 0         0 last;
3111             }
3112 11 50       38 Parse::RecDescent::_trace(q{>>Matched operator: []<< (return value: [}
3113 0 0       0 . qq{@{$_tok||[]}} . q{]},
3114             Parse::RecDescent::_tracefirst($text),
3115             q{template_invocation},
3116             $tracelevel)
3117             if defined $::RD_TRACE;
3118              
3119 11   100     47 push @item, $item{'argument(s?)'}=$_tok||[];
3120              
3121              
3122 11 50       29 Parse::RecDescent::_trace(q{Trying terminal: [')']},
3123             Parse::RecDescent::_tracefirst($text),
3124             q{template_invocation},
3125             $tracelevel)
3126             if defined $::RD_TRACE;
3127 11         17 $lastsep = "";
3128 11         35 $expectation->is(q{')'})->at($text);
3129            
3130              
3131 11 100 66     113 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\)//)
  11 100       137  
3132             {
3133            
3134 3         14 $expectation->failed();
3135 3 50       28 Parse::RecDescent::_trace(qq{<>},
3136             Parse::RecDescent::_tracefirst($text))
3137             if defined $::RD_TRACE;
3138 3         10 last;
3139             }
3140 8 50       51 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3141             . $& . q{])},
3142             Parse::RecDescent::_tracefirst($text))
3143             if defined $::RD_TRACE;
3144 8         30 push @item, $item{__STRING2__}=$&;
3145            
3146              
3147 8 50       20 Parse::RecDescent::_trace(q{Trying action},
3148             Parse::RecDescent::_tracefirst($text),
3149             q{template_invocation},
3150             $tracelevel)
3151             if defined $::RD_TRACE;
3152            
3153              
3154 8 50       15 $_tok = ($_noactions) ? 0 : do {
3155 8         20 my $tmpl = $templates{$item[1]}; # we know we have something
3156 8         30 $text .= "\n\n%backup\n\n" . _expand_tmpl ($tmpl, $item[4]) . "\n\n%restore\n\n";
3157 6         13 $return = 1;
3158             };
3159 6 50       14 unless (defined $_tok)
3160             {
3161 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
3162             if defined $::RD_TRACE;
3163 0         0 last;
3164             }
3165 6 50       15 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
3166             . $_tok . q{])},
3167             Parse::RecDescent::_tracefirst($text))
3168             if defined $::RD_TRACE;
3169 6         9 push @item, $_tok;
3170            
3171            
3172              
3173              
3174 6 50       10 Parse::RecDescent::_trace(q{>>Matched production: [identifier '(' ')']<<},
3175             Parse::RecDescent::_tracefirst($text),
3176             q{template_invocation},
3177             $tracelevel)
3178             if defined $::RD_TRACE;
3179 6         12 $_matched = 1;
3180 6         11 last;
3181             }
3182              
3183              
3184 117 100 66     608 unless ( $_matched || defined($score) )
3185             {
3186            
3187              
3188 111         220 $_[1] = $text; # NOT SURE THIS IS NEEDED
3189 111 50       261 Parse::RecDescent::_trace(q{<>},
3190             Parse::RecDescent::_tracefirst($_[1]),
3191             q{template_invocation},
3192             $tracelevel)
3193             if defined $::RD_TRACE;
3194 111         827 return undef;
3195             }
3196 6 50 33     19 if (!defined($return) && defined($score))
3197             {
3198 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3199             q{template_invocation},
3200             $tracelevel)
3201             if defined $::RD_TRACE;
3202 0         0 $return = $score_return;
3203             }
3204 6         7 splice @{$thisparser->{errors}}, $err_at;
  6         331  
3205 6 50       17 $return = $item[$#item] unless defined $return;
3206 6 50       13 if (defined $::RD_TRACE)
3207             {
3208 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
3209             $return . q{])}, "",
3210             q{template_invocation},
3211             $tracelevel);
3212 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
3213             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3214             Parse::RecDescent::_tracefirst($text),
3215             , q{template_invocation},
3216             $tracelevel)
3217             }
3218 6         12 $_[1] = $text;
3219 6         63 return $return;
3220             }
3221              
3222             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
3223             sub Parse::RecDescent::TM::CTM::CParser::uri
3224             {
3225 0     0   0 my $thisparser = $_[0];
3226 1     1   6 use vars q{$tracelevel};
  1         2  
  1         416  
3227 0   0     0 local $tracelevel = ($tracelevel||0)+1;
3228 0         0 $ERRORS = 0;
3229 0         0 my $thisrule = $thisparser->{"rules"}{"uri"};
3230            
3231 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [uri]},
3232             Parse::RecDescent::_tracefirst($_[1]),
3233             q{uri},
3234             $tracelevel)
3235             if defined $::RD_TRACE;
3236              
3237            
3238 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
3239              
3240 0         0 my $score;
3241             my $score_return;
3242 0         0 my $_tok;
3243 0         0 my $return = undef;
3244 0         0 my $_matched=0;
3245 0         0 my $commit=0;
3246 0         0 my @item = ();
3247 0         0 my %item = ();
3248 0   0     0 my $repeating = defined($_[2]) && $_[2];
3249 0   0     0 my $_noactions = defined($_[3]) && $_[3];
3250 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
3251 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3252 0         0 my $text;
3253 0         0 my $lastsep="";
3254 0         0 my $expectation = new Parse::RecDescent::Expectation(q{string, or /(\\w+:[^\\"\\s)\\]\\>]+)/});
3255 0         0 $expectation->at($_[1]);
3256            
3257 0         0 my $thisline;
3258 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3259              
3260            
3261              
3262 0   0     0 while (!$_matched && !$commit)
3263             {
3264            
3265 0 0       0 Parse::RecDescent::_trace(q{Trying production: [string]},
3266             Parse::RecDescent::_tracefirst($_[1]),
3267             q{uri},
3268             $tracelevel)
3269             if defined $::RD_TRACE;
3270 0         0 my $thisprod = $thisrule->{"prods"}[0];
3271 0         0 $text = $_[1];
3272 0         0 my $_savetext;
3273 0         0 @item = (q{uri});
3274 0         0 %item = (__RULE__ => q{uri});
3275 0         0 my $repcount = 0;
3276              
3277              
3278 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [string]},
3279             Parse::RecDescent::_tracefirst($text),
3280             q{uri},
3281             $tracelevel)
3282             if defined $::RD_TRACE;
3283 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         1079  
  0         0  
3284 0         0 $expectation->is(q{})->at($text);
3285 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::string($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
3286             {
3287            
3288 0 0       0 Parse::RecDescent::_trace(q{<>},
3289             Parse::RecDescent::_tracefirst($text),
3290             q{uri},
3291             $tracelevel)
3292             if defined $::RD_TRACE;
3293 0         0 $expectation->failed();
3294 0         0 last;
3295             }
3296 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [string]<< (return value: [}
3297             . $_tok . q{]},
3298            
3299             Parse::RecDescent::_tracefirst($text),
3300             q{uri},
3301             $tracelevel)
3302             if defined $::RD_TRACE;
3303 0         0 $item{q{string}} = $_tok;
3304 0         0 push @item, $_tok;
3305            
3306             }
3307              
3308              
3309 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [string]<<},
3310             Parse::RecDescent::_tracefirst($text),
3311             q{uri},
3312             $tracelevel)
3313             if defined $::RD_TRACE;
3314 0         0 $_matched = 1;
3315 0         0 last;
3316             }
3317              
3318              
3319 0   0     0 while (!$_matched && !$commit)
3320             {
3321            
3322 0 0       0 Parse::RecDescent::_trace(q{Trying production: [/(\\w+:[^\\"\\s)\\]\\>]+)/]},
3323             Parse::RecDescent::_tracefirst($_[1]),
3324             q{uri},
3325             $tracelevel)
3326             if defined $::RD_TRACE;
3327 0         0 my $thisprod = $thisrule->{"prods"}[1];
3328 0         0 $text = $_[1];
3329 0         0 my $_savetext;
3330 0         0 @item = (q{uri});
3331 0         0 %item = (__RULE__ => q{uri});
3332 0         0 my $repcount = 0;
3333              
3334              
3335 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/(\\w+:[^\\"\\s)\\]\\>]+)/]}, Parse::RecDescent::_tracefirst($text),
3336             q{uri},
3337             $tracelevel)
3338             if defined $::RD_TRACE;
3339 0         0 $lastsep = "";
3340 0         0 $expectation->is(q{})->at($text);
3341            
3342              
3343 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:(\w+:[^\"\s)\]\>]+))//)
  0 0       0  
3344             {
3345            
3346 0         0 $expectation->failed();
3347 0 0       0 Parse::RecDescent::_trace(q{<>},
3348             Parse::RecDescent::_tracefirst($text))
3349             if defined $::RD_TRACE;
3350              
3351 0         0 last;
3352             }
3353 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3354             . $& . q{])},
3355             Parse::RecDescent::_tracefirst($text))
3356             if defined $::RD_TRACE;
3357 0         0 push @item, $item{__PATTERN1__}=$&;
3358            
3359              
3360              
3361 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [/(\\w+:[^\\"\\s)\\]\\>]+)/]<<},
3362             Parse::RecDescent::_tracefirst($text),
3363             q{uri},
3364             $tracelevel)
3365             if defined $::RD_TRACE;
3366 0         0 $_matched = 1;
3367 0         0 last;
3368             }
3369              
3370              
3371 0 0 0     0 unless ( $_matched || defined($score) )
3372             {
3373            
3374              
3375 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
3376 0 0       0 Parse::RecDescent::_trace(q{<>},
3377             Parse::RecDescent::_tracefirst($_[1]),
3378             q{uri},
3379             $tracelevel)
3380             if defined $::RD_TRACE;
3381 0         0 return undef;
3382             }
3383 0 0 0     0 if (!defined($return) && defined($score))
3384             {
3385 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3386             q{uri},
3387             $tracelevel)
3388             if defined $::RD_TRACE;
3389 0         0 $return = $score_return;
3390             }
3391 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
3392 0 0       0 $return = $item[$#item] unless defined $return;
3393 0 0       0 if (defined $::RD_TRACE)
3394             {
3395 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
3396             $return . q{])}, "",
3397             q{uri},
3398             $tracelevel);
3399 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
3400             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3401             Parse::RecDescent::_tracefirst($text),
3402             , q{uri},
3403             $tracelevel)
3404             }
3405 0         0 $_[1] = $text;
3406 0         0 return $return;
3407             }
3408              
3409             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
3410             sub Parse::RecDescent::TM::CTM::CParser::backup_directive
3411             {
3412 192     192   328 my $thisparser = $_[0];
3413 1     1   8 use vars q{$tracelevel};
  1         1  
  1         988  
3414 192   50     603 local $tracelevel = ($tracelevel||0)+1;
3415 192         241 $ERRORS = 0;
3416 192         418 my $thisrule = $thisparser->{"rules"}{"backup_directive"};
3417            
3418 192 50       415 Parse::RecDescent::_trace(q{Trying rule: [backup_directive]},
3419             Parse::RecDescent::_tracefirst($_[1]),
3420             q{backup_directive},
3421             $tracelevel)
3422             if defined $::RD_TRACE;
3423              
3424            
3425 192         264 my $err_at = @{$thisparser->{errors}};
  192         408  
3426              
3427 192         260 my $score;
3428             my $score_return;
3429 0         0 my $_tok;
3430 192         222 my $return = undef;
3431 192         257 my $_matched=0;
3432 192         207 my $commit=0;
3433 192         389 my @item = ();
3434 192         320 my %item = ();
3435 192   33     559 my $repeating = defined($_[2]) && $_[2];
3436 192   33     598 my $_noactions = defined($_[3]) && $_[3];
3437 192 50       384 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  192         283  
  192         416  
3438 192 50       977 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3439 192         245 my $text;
3440 192         312 my $lastsep="";
3441 192         574 my $expectation = new Parse::RecDescent::Expectation(q{'%backup'});
3442 192         1505 $expectation->at($_[1]);
3443            
3444 192         699 my $thisline;
3445 192         760 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3446              
3447            
3448              
3449 192   33     1956 while (!$_matched && !$commit)
3450             {
3451            
3452 192 50       523 Parse::RecDescent::_trace(q{Trying production: ['%backup']},
3453             Parse::RecDescent::_tracefirst($_[1]),
3454             q{backup_directive},
3455             $tracelevel)
3456             if defined $::RD_TRACE;
3457 192         493 my $thisprod = $thisrule->{"prods"}[0];
3458 192         308 $text = $_[1];
3459 192         208 my $_savetext;
3460 192         307 @item = (q{backup_directive});
3461 192         494 %item = (__RULE__ => q{backup_directive});
3462 192         213 my $repcount = 0;
3463              
3464              
3465 192 50       433 Parse::RecDescent::_trace(q{Trying terminal: ['%backup']},
3466             Parse::RecDescent::_tracefirst($text),
3467             q{backup_directive},
3468             $tracelevel)
3469             if defined $::RD_TRACE;
3470 192         230 $lastsep = "";
3471 192         519 $expectation->is(q{})->at($text);
3472            
3473              
3474 192 100 66     1962 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\%backup//)
  192 100       1847  
3475             {
3476            
3477 183         524 $expectation->failed();
3478 183 50       921 Parse::RecDescent::_trace(qq{<>},
3479             Parse::RecDescent::_tracefirst($text))
3480             if defined $::RD_TRACE;
3481 183         366 last;
3482             }
3483 9 50       35 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3484             . $& . q{])},
3485             Parse::RecDescent::_tracefirst($text))
3486             if defined $::RD_TRACE;
3487 9         29 push @item, $item{__STRING1__}=$&;
3488            
3489              
3490 9 50       28 Parse::RecDescent::_trace(q{Trying action},
3491             Parse::RecDescent::_tracefirst($text),
3492             q{backup_directive},
3493             $tracelevel)
3494             if defined $::RD_TRACE;
3495            
3496              
3497 9 50       22 $_tok = ($_noactions) ? 0 : do {
3498 9         35 %prefixes_backup = %prefixes;
3499 9         20 %wildcards_backup = %wildcards;
3500 9         20 %wildcards = ();
3501             };
3502 9 50       21 unless (defined $_tok)
3503             {
3504 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
3505             if defined $::RD_TRACE;
3506 0         0 last;
3507             }
3508 9 50       18 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
3509             . $_tok . q{])},
3510             Parse::RecDescent::_tracefirst($text))
3511             if defined $::RD_TRACE;
3512 9         14 push @item, $_tok;
3513            
3514            
3515              
3516              
3517 9 50       20 Parse::RecDescent::_trace(q{>>Matched production: ['%backup']<<},
3518             Parse::RecDescent::_tracefirst($text),
3519             q{backup_directive},
3520             $tracelevel)
3521             if defined $::RD_TRACE;
3522 9         10 $_matched = 1;
3523 9         18 last;
3524             }
3525              
3526              
3527 192 100 66     903 unless ( $_matched || defined($score) )
3528             {
3529            
3530              
3531 183         290 $_[1] = $text; # NOT SURE THIS IS NEEDED
3532 183 50       407 Parse::RecDescent::_trace(q{<>},
3533             Parse::RecDescent::_tracefirst($_[1]),
3534             q{backup_directive},
3535             $tracelevel)
3536             if defined $::RD_TRACE;
3537 183         1449 return undef;
3538             }
3539 9 50 33     56 if (!defined($return) && defined($score))
3540             {
3541 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3542             q{backup_directive},
3543             $tracelevel)
3544             if defined $::RD_TRACE;
3545 0         0 $return = $score_return;
3546             }
3547 9         15 splice @{$thisparser->{errors}}, $err_at;
  9         18  
3548 9 50       35 $return = $item[$#item] unless defined $return;
3549 9 50       23 if (defined $::RD_TRACE)
3550             {
3551 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
3552             $return . q{])}, "",
3553             q{backup_directive},
3554             $tracelevel);
3555 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
3556             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3557             Parse::RecDescent::_tracefirst($text),
3558             , q{backup_directive},
3559             $tracelevel)
3560             }
3561 9         18 $_[1] = $text;
3562 9         134 return $return;
3563             }
3564              
3565             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
3566             sub Parse::RecDescent::TM::CTM::CParser::reify
3567             {
3568 0     0   0 my $thisparser = $_[0];
3569 1     1   6 use vars q{$tracelevel};
  1         7  
  1         527  
3570 0   0     0 local $tracelevel = ($tracelevel||0)+1;
3571 0         0 $ERRORS = 0;
3572 0         0 my $thisrule = $thisparser->{"rules"}{"reify"};
3573            
3574 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [reify]},
3575             Parse::RecDescent::_tracefirst($_[1]),
3576             q{reify},
3577             $tracelevel)
3578             if defined $::RD_TRACE;
3579              
3580            
3581 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
3582              
3583 0         0 my $score;
3584             my $score_return;
3585 0         0 my $_tok;
3586 0         0 my $return = undef;
3587 0         0 my $_matched=0;
3588 0         0 my $commit=0;
3589 0         0 my @item = ();
3590 0         0 my %item = ();
3591 0   0     0 my $repeating = defined($_[2]) && $_[2];
3592 0   0     0 my $_noactions = defined($_[3]) && $_[3];
3593 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
3594 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3595 0         0 my $text;
3596 0         0 my $lastsep="";
3597 0         0 my $expectation = new Parse::RecDescent::Expectation(q{'~'});
3598 0         0 $expectation->at($_[1]);
3599            
3600 0         0 my $thisline;
3601 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3602              
3603            
3604              
3605 0   0     0 while (!$_matched && !$commit)
3606             {
3607            
3608 0 0       0 Parse::RecDescent::_trace(q{Trying production: ['~' name]},
3609             Parse::RecDescent::_tracefirst($_[1]),
3610             q{reify},
3611             $tracelevel)
3612             if defined $::RD_TRACE;
3613 0         0 my $thisprod = $thisrule->{"prods"}[0];
3614 0         0 $text = $_[1];
3615 0         0 my $_savetext;
3616 0         0 @item = (q{reify});
3617 0         0 %item = (__RULE__ => q{reify});
3618 0         0 my $repcount = 0;
3619              
3620              
3621 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['~']},
3622             Parse::RecDescent::_tracefirst($text),
3623             q{reify},
3624             $tracelevel)
3625             if defined $::RD_TRACE;
3626 0         0 $lastsep = "";
3627 0         0 $expectation->is(q{})->at($text);
3628            
3629              
3630 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\~//)
  0 0       0  
3631             {
3632            
3633 0         0 $expectation->failed();
3634 0 0       0 Parse::RecDescent::_trace(qq{<>},
3635             Parse::RecDescent::_tracefirst($text))
3636             if defined $::RD_TRACE;
3637 0         0 last;
3638             }
3639 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3640             . $& . q{])},
3641             Parse::RecDescent::_tracefirst($text))
3642             if defined $::RD_TRACE;
3643 0         0 push @item, $item{__STRING1__}=$&;
3644            
3645              
3646 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [name]},
3647             Parse::RecDescent::_tracefirst($text),
3648             q{reify},
3649             $tracelevel)
3650             if defined $::RD_TRACE;
3651 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         506  
  0         0  
3652 0         0 $expectation->is(q{name})->at($text);
3653 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
3654             {
3655            
3656 0 0       0 Parse::RecDescent::_trace(q{<>},
3657             Parse::RecDescent::_tracefirst($text),
3658             q{reify},
3659             $tracelevel)
3660             if defined $::RD_TRACE;
3661 0         0 $expectation->failed();
3662 0         0 last;
3663             }
3664 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [name]<< (return value: [}
3665             . $_tok . q{]},
3666            
3667             Parse::RecDescent::_tracefirst($text),
3668             q{reify},
3669             $tracelevel)
3670             if defined $::RD_TRACE;
3671 0         0 $item{q{name}} = $_tok;
3672 0         0 push @item, $_tok;
3673            
3674             }
3675              
3676              
3677 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['~' name]<<},
3678             Parse::RecDescent::_tracefirst($text),
3679             q{reify},
3680             $tracelevel)
3681             if defined $::RD_TRACE;
3682 0         0 $_matched = 1;
3683 0         0 last;
3684             }
3685              
3686              
3687 0 0 0     0 unless ( $_matched || defined($score) )
3688             {
3689            
3690              
3691 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
3692 0 0       0 Parse::RecDescent::_trace(q{<>},
3693             Parse::RecDescent::_tracefirst($_[1]),
3694             q{reify},
3695             $tracelevel)
3696             if defined $::RD_TRACE;
3697 0         0 return undef;
3698             }
3699 0 0 0     0 if (!defined($return) && defined($score))
3700             {
3701 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3702             q{reify},
3703             $tracelevel)
3704             if defined $::RD_TRACE;
3705 0         0 $return = $score_return;
3706             }
3707 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
3708 0 0       0 $return = $item[$#item] unless defined $return;
3709 0 0       0 if (defined $::RD_TRACE)
3710             {
3711 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
3712             $return . q{])}, "",
3713             q{reify},
3714             $tracelevel);
3715 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
3716             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3717             Parse::RecDescent::_tracefirst($text),
3718             , q{reify},
3719             $tracelevel)
3720             }
3721 0         0 $_[1] = $text;
3722 0         0 return $return;
3723             }
3724              
3725             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
3726             sub Parse::RecDescent::TM::CTM::CParser::baseuri_directive
3727             {
3728 0     0   0 my $thisparser = $_[0];
3729 1     1   4 use vars q{$tracelevel};
  1         3  
  1         508  
3730 0   0     0 local $tracelevel = ($tracelevel||0)+1;
3731 0         0 $ERRORS = 0;
3732 0         0 my $thisrule = $thisparser->{"rules"}{"baseuri_directive"};
3733            
3734 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [baseuri_directive]},
3735             Parse::RecDescent::_tracefirst($_[1]),
3736             q{baseuri_directive},
3737             $tracelevel)
3738             if defined $::RD_TRACE;
3739              
3740            
3741 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
3742              
3743 0         0 my $score;
3744             my $score_return;
3745 0         0 my $_tok;
3746 0         0 my $return = undef;
3747 0         0 my $_matched=0;
3748 0         0 my $commit=0;
3749 0         0 my @item = ();
3750 0         0 my %item = ();
3751 0   0     0 my $repeating = defined($_[2]) && $_[2];
3752 0   0     0 my $_noactions = defined($_[3]) && $_[3];
3753 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
3754 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3755 0         0 my $text;
3756 0         0 my $lastsep="";
3757 0         0 my $expectation = new Parse::RecDescent::Expectation(q{'#BASEURI'});
3758 0         0 $expectation->at($_[1]);
3759            
3760 0         0 my $thisline;
3761 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3762              
3763            
3764              
3765 0   0     0 while (!$_matched && !$commit)
3766             {
3767            
3768 0 0       0 Parse::RecDescent::_trace(q{Trying production: ['#BASEURI' uri]},
3769             Parse::RecDescent::_tracefirst($_[1]),
3770             q{baseuri_directive},
3771             $tracelevel)
3772             if defined $::RD_TRACE;
3773 0         0 my $thisprod = $thisrule->{"prods"}[0];
3774 0         0 $text = $_[1];
3775 0         0 my $_savetext;
3776 0         0 @item = (q{baseuri_directive});
3777 0         0 %item = (__RULE__ => q{baseuri_directive});
3778 0         0 my $repcount = 0;
3779              
3780              
3781 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['#BASEURI']},
3782             Parse::RecDescent::_tracefirst($text),
3783             q{baseuri_directive},
3784             $tracelevel)
3785             if defined $::RD_TRACE;
3786 0         0 $lastsep = "";
3787 0         0 $expectation->is(q{})->at($text);
3788            
3789              
3790 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\#BASEURI//)
  0 0       0  
3791             {
3792            
3793 0         0 $expectation->failed();
3794 0 0       0 Parse::RecDescent::_trace(qq{<>},
3795             Parse::RecDescent::_tracefirst($text))
3796             if defined $::RD_TRACE;
3797 0         0 last;
3798             }
3799 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3800             . $& . q{])},
3801             Parse::RecDescent::_tracefirst($text))
3802             if defined $::RD_TRACE;
3803 0         0 push @item, $item{__STRING1__}=$&;
3804            
3805              
3806 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [uri]},
3807             Parse::RecDescent::_tracefirst($text),
3808             q{baseuri_directive},
3809             $tracelevel)
3810             if defined $::RD_TRACE;
3811 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         523  
  0         0  
3812 0         0 $expectation->is(q{uri})->at($text);
3813 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::uri($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
3814             {
3815            
3816 0 0       0 Parse::RecDescent::_trace(q{<>},
3817             Parse::RecDescent::_tracefirst($text),
3818             q{baseuri_directive},
3819             $tracelevel)
3820             if defined $::RD_TRACE;
3821 0         0 $expectation->failed();
3822 0         0 last;
3823             }
3824 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [uri]<< (return value: [}
3825             . $_tok . q{]},
3826            
3827             Parse::RecDescent::_tracefirst($text),
3828             q{baseuri_directive},
3829             $tracelevel)
3830             if defined $::RD_TRACE;
3831 0         0 $item{q{uri}} = $_tok;
3832 0         0 push @item, $_tok;
3833            
3834             }
3835              
3836              
3837 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['#BASEURI' uri]<<},
3838             Parse::RecDescent::_tracefirst($text),
3839             q{baseuri_directive},
3840             $tracelevel)
3841             if defined $::RD_TRACE;
3842 0         0 $_matched = 1;
3843 0         0 last;
3844             }
3845              
3846              
3847 0 0 0     0 unless ( $_matched || defined($score) )
3848             {
3849            
3850              
3851 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
3852 0 0       0 Parse::RecDescent::_trace(q{<>},
3853             Parse::RecDescent::_tracefirst($_[1]),
3854             q{baseuri_directive},
3855             $tracelevel)
3856             if defined $::RD_TRACE;
3857 0         0 return undef;
3858             }
3859 0 0 0     0 if (!defined($return) && defined($score))
3860             {
3861 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3862             q{baseuri_directive},
3863             $tracelevel)
3864             if defined $::RD_TRACE;
3865 0         0 $return = $score_return;
3866             }
3867 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
3868 0 0       0 $return = $item[$#item] unless defined $return;
3869 0 0       0 if (defined $::RD_TRACE)
3870             {
3871 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
3872             $return . q{])}, "",
3873             q{baseuri_directive},
3874             $tracelevel);
3875 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
3876             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3877             Parse::RecDescent::_tracefirst($text),
3878             , q{baseuri_directive},
3879             $tracelevel)
3880             }
3881 0         0 $_[1] = $text;
3882 0         0 return $return;
3883             }
3884              
3885             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
3886             sub Parse::RecDescent::TM::CTM::CParser::role
3887             {
3888 15     15   28 my $thisparser = $_[0];
3889 1     1   5 use vars q{$tracelevel};
  1         2  
  1         436  
3890 15   50     56 local $tracelevel = ($tracelevel||0)+1;
3891 15         17 $ERRORS = 0;
3892 15         38 my $thisrule = $thisparser->{"rules"}{"role"};
3893            
3894 15 50       33 Parse::RecDescent::_trace(q{Trying rule: [role]},
3895             Parse::RecDescent::_tracefirst($_[1]),
3896             q{role},
3897             $tracelevel)
3898             if defined $::RD_TRACE;
3899              
3900            
3901 15         13 my $err_at = @{$thisparser->{errors}};
  15         36  
3902              
3903 15         21 my $score;
3904             my $score_return;
3905 0         0 my $_tok;
3906 15         18 my $return = undef;
3907 15         18 my $_matched=0;
3908 15         26 my $commit=0;
3909 15         30 my @item = ();
3910 15         24 my %item = ();
3911 15   33     48 my $repeating = defined($_[2]) && $_[2];
3912 15   33     43 my $_noactions = defined($_[3]) && $_[3];
3913 15 50       33 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  15         14  
  15         35  
3914 15 50       72 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3915 15         15 my $text;
3916 15         41 my $lastsep="";
3917 15         52 my $expectation = new Parse::RecDescent::Expectation(q{typing});
3918 15         126 $expectation->at($_[1]);
3919            
3920 15         59 my $thisline;
3921 15         103 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3922              
3923            
3924              
3925 15   33     152 while (!$_matched && !$commit)
3926             {
3927            
3928 15 50       34 Parse::RecDescent::_trace(q{Trying production: [typing player]},
3929             Parse::RecDescent::_tracefirst($_[1]),
3930             q{role},
3931             $tracelevel)
3932             if defined $::RD_TRACE;
3933 15         40 my $thisprod = $thisrule->{"prods"}[0];
3934 15         21 $text = $_[1];
3935 15         16 my $_savetext;
3936 15         27 @item = (q{role});
3937 15         29 %item = (__RULE__ => q{role});
3938 15         21 my $repcount = 0;
3939              
3940              
3941 15 50       37 Parse::RecDescent::_trace(q{Trying subrule: [typing]},
3942             Parse::RecDescent::_tracefirst($text),
3943             q{role},
3944             $tracelevel)
3945             if defined $::RD_TRACE;
3946 1     1   7 if (1) { no strict qw{refs};
  1         2  
  1         197  
  15         15  
3947 15         52 $expectation->is(q{})->at($text);
3948 15 100   15   156 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::typing($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  15         39  
3949             {
3950            
3951 1 50       4 Parse::RecDescent::_trace(q{<>},
3952             Parse::RecDescent::_tracefirst($text),
3953             q{role},
3954             $tracelevel)
3955             if defined $::RD_TRACE;
3956 1         5 $expectation->failed();
3957 1         5 last;
3958             }
3959 14 50       56 Parse::RecDescent::_trace(q{>>Matched subrule: [typing]<< (return value: [}
3960             . $_tok . q{]},
3961            
3962             Parse::RecDescent::_tracefirst($text),
3963             q{role},
3964             $tracelevel)
3965             if defined $::RD_TRACE;
3966 14         33 $item{q{typing}} = $_tok;
3967 14         21 push @item, $_tok;
3968            
3969             }
3970              
3971 14 50       27 Parse::RecDescent::_trace(q{Trying subrule: [player]},
3972             Parse::RecDescent::_tracefirst($text),
3973             q{role},
3974             $tracelevel)
3975             if defined $::RD_TRACE;
3976 1     1   6 if (1) { no strict qw{refs};
  1         8  
  1         702  
  14         16  
3977 14         40 $expectation->is(q{player})->at($text);
3978 14 50   14   148 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::player($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  14         30  
3979             {
3980            
3981 0 0       0 Parse::RecDescent::_trace(q{<>},
3982             Parse::RecDescent::_tracefirst($text),
3983             q{role},
3984             $tracelevel)
3985             if defined $::RD_TRACE;
3986 0         0 $expectation->failed();
3987 0         0 last;
3988             }
3989 14 50       47 Parse::RecDescent::_trace(q{>>Matched subrule: [player]<< (return value: [}
3990             . $_tok . q{]},
3991            
3992             Parse::RecDescent::_tracefirst($text),
3993             q{role},
3994             $tracelevel)
3995             if defined $::RD_TRACE;
3996 14         28 $item{q{player}} = $_tok;
3997 14         22 push @item, $_tok;
3998            
3999             }
4000              
4001 14 50       31 Parse::RecDescent::_trace(q{Trying action},
4002             Parse::RecDescent::_tracefirst($text),
4003             q{role},
4004             $tracelevel)
4005             if defined $::RD_TRACE;
4006            
4007              
4008 14 50       30 $_tok = ($_noactions) ? 0 : do { $return = [ $item[1], $item[2] ]; };
  14         39  
4009 14 50       31 unless (defined $_tok)
4010             {
4011 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
4012             if defined $::RD_TRACE;
4013 0         0 last;
4014             }
4015 14 50       28 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
4016             . $_tok . q{])},
4017             Parse::RecDescent::_tracefirst($text))
4018             if defined $::RD_TRACE;
4019 14         20 push @item, $_tok;
4020            
4021            
4022              
4023              
4024 14 50       39 Parse::RecDescent::_trace(q{>>Matched production: [typing player]<<},
4025             Parse::RecDescent::_tracefirst($text),
4026             q{role},
4027             $tracelevel)
4028             if defined $::RD_TRACE;
4029 14         17 $_matched = 1;
4030 14         22 last;
4031             }
4032              
4033              
4034 15 100 66     46 unless ( $_matched || defined($score) )
4035             {
4036            
4037              
4038 1         3 $_[1] = $text; # NOT SURE THIS IS NEEDED
4039 1 50       5 Parse::RecDescent::_trace(q{<>},
4040             Parse::RecDescent::_tracefirst($_[1]),
4041             q{role},
4042             $tracelevel)
4043             if defined $::RD_TRACE;
4044 1         11 return undef;
4045             }
4046 14 50 33     34 if (!defined($return) && defined($score))
4047             {
4048 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4049             q{role},
4050             $tracelevel)
4051             if defined $::RD_TRACE;
4052 0         0 $return = $score_return;
4053             }
4054 14         16 splice @{$thisparser->{errors}}, $err_at;
  14         26  
4055 14 50       37 $return = $item[$#item] unless defined $return;
4056 14 50       30 if (defined $::RD_TRACE)
4057             {
4058 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4059             $return . q{])}, "",
4060             q{role},
4061             $tracelevel);
4062 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
4063             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4064             Parse::RecDescent::_tracefirst($text),
4065             , q{role},
4066             $tracelevel)
4067             }
4068 14         26 $_[1] = $text;
4069 14         160 return $return;
4070             }
4071              
4072             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
4073             sub Parse::RecDescent::TM::CTM::CParser::xtopic
4074             {
4075 0     0   0 my $thisparser = $_[0];
4076 1     1   6 use vars q{$tracelevel};
  1         2  
  1         730  
4077 0   0     0 local $tracelevel = ($tracelevel||0)+1;
4078 0         0 $ERRORS = 0;
4079 0         0 my $thisrule = $thisparser->{"rules"}{"xtopic"};
4080            
4081 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [xtopic]},
4082             Parse::RecDescent::_tracefirst($_[1]),
4083             q{xtopic},
4084             $tracelevel)
4085             if defined $::RD_TRACE;
4086              
4087            
4088 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
4089              
4090 0         0 my $score;
4091             my $score_return;
4092 0         0 my $_tok;
4093 0         0 my $return = undef;
4094 0         0 my $_matched=0;
4095 0         0 my $commit=0;
4096 0         0 my @item = ();
4097 0         0 my %item = ();
4098 0   0     0 my $repeating = defined($_[2]) && $_[2];
4099 0   0     0 my $_noactions = defined($_[3]) && $_[3];
4100 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
4101 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4102 0         0 my $text;
4103 0         0 my $lastsep="";
4104 0         0 my $expectation = new Parse::RecDescent::Expectation(q{'['});
4105 0         0 $expectation->at($_[1]);
4106            
4107 0         0 my $thisline;
4108 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4109              
4110            
4111              
4112 0   0     0 while (!$_matched && !$commit)
4113             {
4114            
4115 0 0       0 Parse::RecDescent::_trace(q{Trying production: ['[' name types topname reify subject indicator ']']},
4116             Parse::RecDescent::_tracefirst($_[1]),
4117             q{xtopic},
4118             $tracelevel)
4119             if defined $::RD_TRACE;
4120 0         0 my $thisprod = $thisrule->{"prods"}[0];
4121 0         0 $text = $_[1];
4122 0         0 my $_savetext;
4123 0         0 @item = (q{xtopic});
4124 0         0 %item = (__RULE__ => q{xtopic});
4125 0         0 my $repcount = 0;
4126              
4127              
4128 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['[']},
4129             Parse::RecDescent::_tracefirst($text),
4130             q{xtopic},
4131             $tracelevel)
4132             if defined $::RD_TRACE;
4133 0         0 $lastsep = "";
4134 0         0 $expectation->is(q{})->at($text);
4135            
4136              
4137 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\[//)
  0 0       0  
4138             {
4139            
4140 0         0 $expectation->failed();
4141 0 0       0 Parse::RecDescent::_trace(qq{<>},
4142             Parse::RecDescent::_tracefirst($text))
4143             if defined $::RD_TRACE;
4144 0         0 last;
4145             }
4146 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4147             . $& . q{])},
4148             Parse::RecDescent::_tracefirst($text))
4149             if defined $::RD_TRACE;
4150 0         0 push @item, $item{__STRING1__}=$&;
4151            
4152              
4153 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [name]},
4154             Parse::RecDescent::_tracefirst($text),
4155             q{xtopic},
4156             $tracelevel)
4157             if defined $::RD_TRACE;
4158 1     1   6 if (1) { no strict qw{refs};
  1         3  
  1         2553  
  0         0  
4159 0         0 $expectation->is(q{name})->at($text);
4160 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
4161             {
4162            
4163 0 0       0 Parse::RecDescent::_trace(q{<>},
4164             Parse::RecDescent::_tracefirst($text),
4165             q{xtopic},
4166             $tracelevel)
4167             if defined $::RD_TRACE;
4168 0         0 $expectation->failed();
4169 0         0 last;
4170             }
4171 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [name]<< (return value: [}
4172             . $_tok . q{]},
4173            
4174             Parse::RecDescent::_tracefirst($text),
4175             q{xtopic},
4176             $tracelevel)
4177             if defined $::RD_TRACE;
4178 0         0 $item{q{name}} = $_tok;
4179 0         0 push @item, $_tok;
4180            
4181             }
4182              
4183 0 0       0 Parse::RecDescent::_trace(q{Trying repeated subrule: [types]},
4184             Parse::RecDescent::_tracefirst($text),
4185             q{xtopic},
4186             $tracelevel)
4187             if defined $::RD_TRACE;
4188 0         0 $expectation->is(q{types})->at($text);
4189            
4190 0 0   0   0 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::TM::CTM::CParser::types, 0, 1, $_noactions,$expectation,sub { \@arg })))
  0         0  
4191             {
4192 0 0       0 Parse::RecDescent::_trace(q{<>},
4193             Parse::RecDescent::_tracefirst($text),
4194             q{xtopic},
4195             $tracelevel)
4196             if defined $::RD_TRACE;
4197 0         0 last;
4198             }
4199 0 0       0 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [types]<< (}
4200             . @$_tok . q{ times)},
4201            
4202             Parse::RecDescent::_tracefirst($text),
4203             q{xtopic},
4204             $tracelevel)
4205             if defined $::RD_TRACE;
4206 0         0 $item{q{types(?)}} = $_tok;
4207 0         0 push @item, $_tok;
4208            
4209              
4210              
4211 0 0       0 Parse::RecDescent::_trace(q{Trying repeated subrule: [topname]},
4212             Parse::RecDescent::_tracefirst($text),
4213             q{xtopic},
4214             $tracelevel)
4215             if defined $::RD_TRACE;
4216 0         0 $expectation->is(q{topname})->at($text);
4217            
4218 0 0   0   0 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::TM::CTM::CParser::topname, 0, 1, $_noactions,$expectation,sub { \@arg })))
  0         0  
4219             {
4220 0 0       0 Parse::RecDescent::_trace(q{<>},
4221             Parse::RecDescent::_tracefirst($text),
4222             q{xtopic},
4223             $tracelevel)
4224             if defined $::RD_TRACE;
4225 0         0 last;
4226             }
4227 0 0       0 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [topname]<< (}
4228             . @$_tok . q{ times)},
4229            
4230             Parse::RecDescent::_tracefirst($text),
4231             q{xtopic},
4232             $tracelevel)
4233             if defined $::RD_TRACE;
4234 0         0 $item{q{topname(?)}} = $_tok;
4235 0         0 push @item, $_tok;
4236            
4237              
4238              
4239 0 0       0 Parse::RecDescent::_trace(q{Trying repeated subrule: [reify]},
4240             Parse::RecDescent::_tracefirst($text),
4241             q{xtopic},
4242             $tracelevel)
4243             if defined $::RD_TRACE;
4244 0         0 $expectation->is(q{reify})->at($text);
4245            
4246 0 0   0   0 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::TM::CTM::CParser::reify, 0, 1, $_noactions,$expectation,sub { \@arg })))
  0         0  
4247             {
4248 0 0       0 Parse::RecDescent::_trace(q{<>},
4249             Parse::RecDescent::_tracefirst($text),
4250             q{xtopic},
4251             $tracelevel)
4252             if defined $::RD_TRACE;
4253 0         0 last;
4254             }
4255 0 0       0 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [reify]<< (}
4256             . @$_tok . q{ times)},
4257            
4258             Parse::RecDescent::_tracefirst($text),
4259             q{xtopic},
4260             $tracelevel)
4261             if defined $::RD_TRACE;
4262 0         0 $item{q{reify(?)}} = $_tok;
4263 0         0 push @item, $_tok;
4264            
4265              
4266              
4267 0 0       0 Parse::RecDescent::_trace(q{Trying repeated subrule: [subject]},
4268             Parse::RecDescent::_tracefirst($text),
4269             q{xtopic},
4270             $tracelevel)
4271             if defined $::RD_TRACE;
4272 0         0 $expectation->is(q{subject})->at($text);
4273            
4274 0 0   0   0 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::TM::CTM::CParser::subject, 0, 1, $_noactions,$expectation,sub { \@arg })))
  0         0  
4275             {
4276 0 0       0 Parse::RecDescent::_trace(q{<>},
4277             Parse::RecDescent::_tracefirst($text),
4278             q{xtopic},
4279             $tracelevel)
4280             if defined $::RD_TRACE;
4281 0         0 last;
4282             }
4283 0 0       0 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [subject]<< (}
4284             . @$_tok . q{ times)},
4285            
4286             Parse::RecDescent::_tracefirst($text),
4287             q{xtopic},
4288             $tracelevel)
4289             if defined $::RD_TRACE;
4290 0         0 $item{q{subject(?)}} = $_tok;
4291 0         0 push @item, $_tok;
4292            
4293              
4294              
4295 0 0       0 Parse::RecDescent::_trace(q{Trying repeated subrule: [indicator]},
4296             Parse::RecDescent::_tracefirst($text),
4297             q{xtopic},
4298             $tracelevel)
4299             if defined $::RD_TRACE;
4300 0         0 $expectation->is(q{indicator})->at($text);
4301            
4302 0 0   0   0 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::TM::CTM::CParser::indicator, 0, 100000000, $_noactions,$expectation,sub { \@arg })))
  0         0  
4303             {
4304 0 0       0 Parse::RecDescent::_trace(q{<>},
4305             Parse::RecDescent::_tracefirst($text),
4306             q{xtopic},
4307             $tracelevel)
4308             if defined $::RD_TRACE;
4309 0         0 last;
4310             }
4311 0 0       0 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [indicator]<< (}
4312             . @$_tok . q{ times)},
4313            
4314             Parse::RecDescent::_tracefirst($text),
4315             q{xtopic},
4316             $tracelevel)
4317             if defined $::RD_TRACE;
4318 0         0 $item{q{indicator(s?)}} = $_tok;
4319 0         0 push @item, $_tok;
4320            
4321              
4322              
4323 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [']']},
4324             Parse::RecDescent::_tracefirst($text),
4325             q{xtopic},
4326             $tracelevel)
4327             if defined $::RD_TRACE;
4328 0         0 $lastsep = "";
4329 0         0 $expectation->is(q{']'})->at($text);
4330            
4331              
4332 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\]//)
  0 0       0  
4333             {
4334            
4335 0         0 $expectation->failed();
4336 0 0       0 Parse::RecDescent::_trace(qq{<>},
4337             Parse::RecDescent::_tracefirst($text))
4338             if defined $::RD_TRACE;
4339 0         0 last;
4340             }
4341 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4342             . $& . q{])},
4343             Parse::RecDescent::_tracefirst($text))
4344             if defined $::RD_TRACE;
4345 0         0 push @item, $item{__STRING2__}=$&;
4346            
4347              
4348 0 0       0 Parse::RecDescent::_trace(q{Trying action},
4349             Parse::RecDescent::_tracefirst($text),
4350             q{xtopic},
4351             $tracelevel)
4352             if defined $::RD_TRACE;
4353            
4354              
4355 0 0       0 $_tok = ($_noactions) ? 0 : do {
4356             #warn "topic ".Dumper \@item;
4357 0         0 my $id = $store->internalize ($item[2] => $item[6]->[0]); # maybe there is a subject addr, maybe not
4358              
4359             # add the subject indicators
4360 0         0 map { $store->internalize ($id => $_ ) } @{$item[7]};
  0         0  
  0         0  
4361              
4362              
4363 0 0 0     0 if ($item[3] and $item[3]->[0]) {
4364 0         0 $store->assert ( map {
4365 0         0 [ undef,
4366             undef,
4367             'isa',
4368             undef,
4369             [ 'class', 'instance' ],
4370             [ $_, $id ],
4371             ] }
4372 0         0 @{$item[3]->[0]} );
4373 0         0 map { $implicits->{'isa-thing'}->{$_}++ } @{$item[3]->[0]}; # the types and the ID are declared implicitely
  0         0  
  0         0  
4374             }
4375             #warn "item 4".Dumper $item[4];
4376 0 0 0     0 if ($item[4] and @{$item[4]}) {
  0         0  
4377 0         0 my $topnames = $item[4]->[0];
4378             #warn "topnames ".Dumper $topnames;
4379 0         0 my ($a) = $store->assert ( map {[ undef, # LID
  0         0  
4380             $topnames->{scope}->[0], # SCOPE
4381             'name', # TYPE
4382             TM->NAME, # KIND
4383             [ 'thing', 'value' ], # ROLES
4384             [ $id, $_ ], # PLAYERS
4385             undef ] }
4386 0         0 @{$topnames->{names}}[0] ); # use the first for a name
4387 0         0 $return = $a;
4388             # TODO (2..3) for the variants
4389              
4390             #warn "basename reify ".Dumper $item[5];
4391             # reification of the basename
4392 0 0       0 $store->internalize ($item[5]->[0], $a->[TM->LID]) if $item[5]->[0];
4393              
4394             {
4395 0         0 map { $implicits->{'isa-scope'}->{ $_ }++ } @{$topnames->{scope}};
  0         0  
  0         0  
  0         0  
4396             }
4397             }
4398              
4399 0         0 $return = $id;
4400             };
4401 0 0       0 unless (defined $_tok)
4402             {
4403 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
4404             if defined $::RD_TRACE;
4405 0         0 last;
4406             }
4407 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
4408             . $_tok . q{])},
4409             Parse::RecDescent::_tracefirst($text))
4410             if defined $::RD_TRACE;
4411 0         0 push @item, $_tok;
4412            
4413            
4414              
4415              
4416 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['[' name types topname reify subject indicator ']']<<},
4417             Parse::RecDescent::_tracefirst($text),
4418             q{xtopic},
4419             $tracelevel)
4420             if defined $::RD_TRACE;
4421 0         0 $_matched = 1;
4422 0         0 last;
4423             }
4424              
4425              
4426 0 0 0     0 unless ( $_matched || defined($score) )
4427             {
4428            
4429              
4430 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
4431 0 0       0 Parse::RecDescent::_trace(q{<>},
4432             Parse::RecDescent::_tracefirst($_[1]),
4433             q{xtopic},
4434             $tracelevel)
4435             if defined $::RD_TRACE;
4436 0         0 return undef;
4437             }
4438 0 0 0     0 if (!defined($return) && defined($score))
4439             {
4440 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4441             q{xtopic},
4442             $tracelevel)
4443             if defined $::RD_TRACE;
4444 0         0 $return = $score_return;
4445             }
4446 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
4447 0 0       0 $return = $item[$#item] unless defined $return;
4448 0 0       0 if (defined $::RD_TRACE)
4449             {
4450 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4451             $return . q{])}, "",
4452             q{xtopic},
4453             $tracelevel);
4454 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
4455             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4456             Parse::RecDescent::_tracefirst($text),
4457             , q{xtopic},
4458             $tracelevel)
4459             }
4460 0         0 $_[1] = $text;
4461 0         0 return $return;
4462             }
4463              
4464             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
4465             sub Parse::RecDescent::TM::CTM::CParser::variable
4466             {
4467 20     20   35 my $thisparser = $_[0];
4468 1     1   7 use vars q{$tracelevel};
  1         2  
  1         894  
4469 20   50     60 local $tracelevel = ($tracelevel||0)+1;
4470 20         25 $ERRORS = 0;
4471 20         48 my $thisrule = $thisparser->{"rules"}{"variable"};
4472            
4473 20 50       42 Parse::RecDescent::_trace(q{Trying rule: [variable]},
4474             Parse::RecDescent::_tracefirst($_[1]),
4475             q{variable},
4476             $tracelevel)
4477             if defined $::RD_TRACE;
4478              
4479            
4480 20         24 my $err_at = @{$thisparser->{errors}};
  20         38  
4481              
4482 20         30 my $score;
4483             my $score_return;
4484 0         0 my $_tok;
4485 20         27 my $return = undef;
4486 20         23 my $_matched=0;
4487 20         31 my $commit=0;
4488 20         32 my @item = ();
4489 20         35 my %item = ();
4490 20   33     89 my $repeating = defined($_[2]) && $_[2];
4491 20   33     86 my $_noactions = defined($_[3]) && $_[3];
4492 20 50       93 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  20         22  
  20         42  
4493 20 50       104 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4494 20         30 my $text;
4495 20         35 my $lastsep="";
4496 20         68 my $expectation = new Parse::RecDescent::Expectation(q{/\\$\\w[\\w-]*/});
4497 20         197 $expectation->at($_[1]);
4498            
4499 20         79 my $thisline;
4500 20         93 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4501              
4502            
4503              
4504 20   33     250 while (!$_matched && !$commit)
4505             {
4506            
4507 20 50       53 Parse::RecDescent::_trace(q{Trying production: [/\\$\\w[\\w-]*/]},
4508             Parse::RecDescent::_tracefirst($_[1]),
4509             q{variable},
4510             $tracelevel)
4511             if defined $::RD_TRACE;
4512 20         48 my $thisprod = $thisrule->{"prods"}[0];
4513 20         32 $text = $_[1];
4514 20         24 my $_savetext;
4515 20         41 @item = (q{variable});
4516 20         47 %item = (__RULE__ => q{variable});
4517 20         39 my $repcount = 0;
4518              
4519              
4520 20 50       52 Parse::RecDescent::_trace(q{Trying terminal: [/\\$\\w[\\w-]*/]}, Parse::RecDescent::_tracefirst($text),
4521             q{variable},
4522             $tracelevel)
4523             if defined $::RD_TRACE;
4524 20         32 $lastsep = "";
4525 20         66 $expectation->is(q{})->at($text);
4526            
4527              
4528 20 100 66     221 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\$\w[\w-]*)//)
  20 100       286  
4529             {
4530            
4531 4         13 $expectation->failed();
4532 4 50       19 Parse::RecDescent::_trace(q{<>},
4533             Parse::RecDescent::_tracefirst($text))
4534             if defined $::RD_TRACE;
4535              
4536 4         9 last;
4537             }
4538 16 50       59 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4539             . $& . q{])},
4540             Parse::RecDescent::_tracefirst($text))
4541             if defined $::RD_TRACE;
4542 16         54 push @item, $item{__PATTERN1__}=$&;
4543            
4544              
4545              
4546 16 50       42 Parse::RecDescent::_trace(q{>>Matched production: [/\\$\\w[\\w-]*/]<<},
4547             Parse::RecDescent::_tracefirst($text),
4548             q{variable},
4549             $tracelevel)
4550             if defined $::RD_TRACE;
4551 16         23 $_matched = 1;
4552 16         39 last;
4553             }
4554              
4555              
4556 20 100 66     81 unless ( $_matched || defined($score) )
4557             {
4558            
4559              
4560 4         8 $_[1] = $text; # NOT SURE THIS IS NEEDED
4561 4 50       10 Parse::RecDescent::_trace(q{<>},
4562             Parse::RecDescent::_tracefirst($_[1]),
4563             q{variable},
4564             $tracelevel)
4565             if defined $::RD_TRACE;
4566 4         32 return undef;
4567             }
4568 16 50 33     89 if (!defined($return) && defined($score))
4569             {
4570 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4571             q{variable},
4572             $tracelevel)
4573             if defined $::RD_TRACE;
4574 0         0 $return = $score_return;
4575             }
4576 16         25 splice @{$thisparser->{errors}}, $err_at;
  16         36  
4577 16 50       58 $return = $item[$#item] unless defined $return;
4578 16 50       43 if (defined $::RD_TRACE)
4579             {
4580 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4581             $return . q{])}, "",
4582             q{variable},
4583             $tracelevel);
4584 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
4585             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4586             Parse::RecDescent::_tracefirst($text),
4587             , q{variable},
4588             $tracelevel)
4589             }
4590 16         28 $_[1] = $text;
4591 16         152 return $return;
4592             }
4593              
4594             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
4595             sub Parse::RecDescent::TM::CTM::CParser::boolean
4596             {
4597 36     36   67 my $thisparser = $_[0];
4598 1     1   5 use vars q{$tracelevel};
  1         3  
  1         1200  
4599 36   50     114 local $tracelevel = ($tracelevel||0)+1;
4600 36         43 $ERRORS = 0;
4601 36         108 my $thisrule = $thisparser->{"rules"}{"boolean"};
4602            
4603 36 50       86 Parse::RecDescent::_trace(q{Trying rule: [boolean]},
4604             Parse::RecDescent::_tracefirst($_[1]),
4605             q{boolean},
4606             $tracelevel)
4607             if defined $::RD_TRACE;
4608              
4609            
4610 36         37 my $err_at = @{$thisparser->{errors}};
  36         83  
4611              
4612 36         44 my $score;
4613             my $score_return;
4614 0         0 my $_tok;
4615 36         39 my $return = undef;
4616 36         48 my $_matched=0;
4617 36         46 my $commit=0;
4618 36         62 my @item = ();
4619 36         56 my %item = ();
4620 36   33     127 my $repeating = defined($_[2]) && $_[2];
4621 36   33     126 my $_noactions = defined($_[3]) && $_[3];
4622 36 50       96 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  36         43  
  36         76  
4623 36 50       141 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4624 36         69 my $text;
4625 36         58 my $lastsep="";
4626 36         118 my $expectation = new Parse::RecDescent::Expectation(q{'true', or 'false'});
4627 36         281 $expectation->at($_[1]);
4628            
4629 36         133 my $thisline;
4630 36         154 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4631              
4632            
4633              
4634 36   33     357 while (!$_matched && !$commit)
4635             {
4636            
4637 36 50       88 Parse::RecDescent::_trace(q{Trying production: ['true']},
4638             Parse::RecDescent::_tracefirst($_[1]),
4639             q{boolean},
4640             $tracelevel)
4641             if defined $::RD_TRACE;
4642 36         97 my $thisprod = $thisrule->{"prods"}[0];
4643 36         77 $text = $_[1];
4644 36         59 my $_savetext;
4645 36         71 @item = (q{boolean});
4646 36         84 %item = (__RULE__ => q{boolean});
4647 36         55 my $repcount = 0;
4648              
4649              
4650 36 50       85 Parse::RecDescent::_trace(q{Trying terminal: ['true']},
4651             Parse::RecDescent::_tracefirst($text),
4652             q{boolean},
4653             $tracelevel)
4654             if defined $::RD_TRACE;
4655 36         59 $lastsep = "";
4656 36         97 $expectation->is(q{})->at($text);
4657            
4658              
4659 36 100 33     403 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Atrue//)
  36 50       432  
4660             {
4661            
4662 36         126 $expectation->failed();
4663 36 50       176 Parse::RecDescent::_trace(qq{<>},
4664             Parse::RecDescent::_tracefirst($text))
4665             if defined $::RD_TRACE;
4666 36         90 last;
4667             }
4668 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4669             . $& . q{])},
4670             Parse::RecDescent::_tracefirst($text))
4671             if defined $::RD_TRACE;
4672 0         0 push @item, $item{__STRING1__}=$&;
4673            
4674              
4675              
4676 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['true']<<},
4677             Parse::RecDescent::_tracefirst($text),
4678             q{boolean},
4679             $tracelevel)
4680             if defined $::RD_TRACE;
4681 0         0 $_matched = 1;
4682 0         0 last;
4683             }
4684              
4685              
4686 36   33     181 while (!$_matched && !$commit)
4687             {
4688            
4689 36 50       78 Parse::RecDescent::_trace(q{Trying production: ['false']},
4690             Parse::RecDescent::_tracefirst($_[1]),
4691             q{boolean},
4692             $tracelevel)
4693             if defined $::RD_TRACE;
4694 36         90 my $thisprod = $thisrule->{"prods"}[1];
4695 36         52 $text = $_[1];
4696 36         43 my $_savetext;
4697 36         76 @item = (q{boolean});
4698 36         88 %item = (__RULE__ => q{boolean});
4699 36         49 my $repcount = 0;
4700              
4701              
4702 36 50       92 Parse::RecDescent::_trace(q{Trying terminal: ['false']},
4703             Parse::RecDescent::_tracefirst($text),
4704             q{boolean},
4705             $tracelevel)
4706             if defined $::RD_TRACE;
4707 36         60 $lastsep = "";
4708 36         109 $expectation->is(q{})->at($text);
4709            
4710              
4711 36 100 33     363 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Afalse//)
  36 50       373  
4712             {
4713            
4714 36         156 $expectation->failed();
4715 36 50       170 Parse::RecDescent::_trace(qq{<>},
4716             Parse::RecDescent::_tracefirst($text))
4717             if defined $::RD_TRACE;
4718 36         75 last;
4719             }
4720 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4721             . $& . q{])},
4722             Parse::RecDescent::_tracefirst($text))
4723             if defined $::RD_TRACE;
4724 0         0 push @item, $item{__STRING1__}=$&;
4725            
4726              
4727              
4728 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['false']<<},
4729             Parse::RecDescent::_tracefirst($text),
4730             q{boolean},
4731             $tracelevel)
4732             if defined $::RD_TRACE;
4733 0         0 $_matched = 1;
4734 0         0 last;
4735             }
4736              
4737              
4738 36 50 33     185 unless ( $_matched || defined($score) )
4739             {
4740            
4741              
4742 36         66 $_[1] = $text; # NOT SURE THIS IS NEEDED
4743 36 50       91 Parse::RecDescent::_trace(q{<>},
4744             Parse::RecDescent::_tracefirst($_[1]),
4745             q{boolean},
4746             $tracelevel)
4747             if defined $::RD_TRACE;
4748 36         282 return undef;
4749             }
4750 0 0 0     0 if (!defined($return) && defined($score))
4751             {
4752 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4753             q{boolean},
4754             $tracelevel)
4755             if defined $::RD_TRACE;
4756 0         0 $return = $score_return;
4757             }
4758 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
4759 0 0       0 $return = $item[$#item] unless defined $return;
4760 0 0       0 if (defined $::RD_TRACE)
4761             {
4762 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4763             $return . q{])}, "",
4764             q{boolean},
4765             $tracelevel);
4766 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
4767             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4768             Parse::RecDescent::_tracefirst($text),
4769             , q{boolean},
4770             $tracelevel)
4771             }
4772 0         0 $_[1] = $text;
4773 0         0 return $return;
4774             }
4775              
4776             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
4777             sub Parse::RecDescent::TM::CTM::CParser::argument
4778             {
4779 19     19   33 my $thisparser = $_[0];
4780 1     1   6 use vars q{$tracelevel};
  1         2  
  1         420  
4781 19   50     68 local $tracelevel = ($tracelevel||0)+1;
4782 19         26 $ERRORS = 0;
4783 19         44 my $thisrule = $thisparser->{"rules"}{"argument"};
4784            
4785 19 50       42 Parse::RecDescent::_trace(q{Trying rule: [argument]},
4786             Parse::RecDescent::_tracefirst($_[1]),
4787             q{argument},
4788             $tracelevel)
4789             if defined $::RD_TRACE;
4790              
4791            
4792 19         31 my $err_at = @{$thisparser->{errors}};
  19         41  
4793              
4794 19         30 my $score;
4795             my $score_return;
4796 0         0 my $_tok;
4797 19         34 my $return = undef;
4798 19         45 my $_matched=0;
4799 19         24 my $commit=0;
4800 19         28 my @item = ();
4801 19         34 my %item = ();
4802 19   33     56 my $repeating = defined($_[2]) && $_[2];
4803 19   33     58 my $_noactions = defined($_[3]) && $_[3];
4804 19 50       37 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  19         26  
  19         33  
4805 19 50       91 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4806 19         24 my $text;
4807 19         26 my $lastsep="";
4808 19         63 my $expectation = new Parse::RecDescent::Expectation(q{literal, or topic_ref});
4809 19         140 $expectation->at($_[1]);
4810            
4811 19         69 my $thisline;
4812 19         83 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4813              
4814            
4815              
4816 19   33     193 while (!$_matched && !$commit)
4817             {
4818            
4819 19 50       45 Parse::RecDescent::_trace(q{Trying production: [literal]},
4820             Parse::RecDescent::_tracefirst($_[1]),
4821             q{argument},
4822             $tracelevel)
4823             if defined $::RD_TRACE;
4824 19         52 my $thisprod = $thisrule->{"prods"}[0];
4825 19         34 $text = $_[1];
4826 19         19 my $_savetext;
4827 19         38 @item = (q{argument});
4828 19         40 %item = (__RULE__ => q{argument});
4829 19         26 my $repcount = 0;
4830              
4831              
4832 19 50       69 Parse::RecDescent::_trace(q{Trying subrule: [literal]},
4833             Parse::RecDescent::_tracefirst($text),
4834             q{argument},
4835             $tracelevel)
4836             if defined $::RD_TRACE;
4837 1     1   5 if (1) { no strict qw{refs};
  1         3  
  1         472  
  19         20  
4838 19         54 $expectation->is(q{})->at($text);
4839 19 100   19   215 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::literal($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  19         63  
4840             {
4841            
4842 12 50       26 Parse::RecDescent::_trace(q{<>},
4843             Parse::RecDescent::_tracefirst($text),
4844             q{argument},
4845             $tracelevel)
4846             if defined $::RD_TRACE;
4847 12         39 $expectation->failed();
4848 12         42 last;
4849             }
4850 7 50       32 Parse::RecDescent::_trace(q{>>Matched subrule: [literal]<< (return value: [}
4851             . $_tok . q{]},
4852            
4853             Parse::RecDescent::_tracefirst($text),
4854             q{argument},
4855             $tracelevel)
4856             if defined $::RD_TRACE;
4857 7         15 $item{q{literal}} = $_tok;
4858 7         13 push @item, $_tok;
4859            
4860             }
4861              
4862 7 50       15 Parse::RecDescent::_trace(q{Trying action},
4863             Parse::RecDescent::_tracefirst($text),
4864             q{argument},
4865             $tracelevel)
4866             if defined $::RD_TRACE;
4867            
4868              
4869 7 50       17 $_tok = ($_noactions) ? 0 : do { $return = $item[1]->[0]; # get only the string value
  7         22  
4870             };
4871 7 50       32 unless (defined $_tok)
4872             {
4873 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
4874             if defined $::RD_TRACE;
4875 0         0 last;
4876             }
4877 7 50       22 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
4878             . $_tok . q{])},
4879             Parse::RecDescent::_tracefirst($text))
4880             if defined $::RD_TRACE;
4881 7         14 push @item, $_tok;
4882            
4883            
4884              
4885              
4886 7 50       18 Parse::RecDescent::_trace(q{>>Matched production: [literal]<<},
4887             Parse::RecDescent::_tracefirst($text),
4888             q{argument},
4889             $tracelevel)
4890             if defined $::RD_TRACE;
4891 7         8 $_matched = 1;
4892 7         13 last;
4893             }
4894              
4895              
4896 19   66     86 while (!$_matched && !$commit)
4897             {
4898            
4899 12 50       30 Parse::RecDescent::_trace(q{Trying production: [topic_ref]},
4900             Parse::RecDescent::_tracefirst($_[1]),
4901             q{argument},
4902             $tracelevel)
4903             if defined $::RD_TRACE;
4904 12         25 my $thisprod = $thisrule->{"prods"}[1];
4905 12         19 $text = $_[1];
4906 12         14 my $_savetext;
4907 12         34 @item = (q{argument});
4908 12         29 %item = (__RULE__ => q{argument});
4909 12         14 my $repcount = 0;
4910              
4911              
4912 12 50       27 Parse::RecDescent::_trace(q{Trying subrule: [topic_ref]},
4913             Parse::RecDescent::_tracefirst($text),
4914             q{argument},
4915             $tracelevel)
4916             if defined $::RD_TRACE;
4917 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         848  
  12         14  
4918 12         31 $expectation->is(q{})->at($text);
4919 12 100   12   129 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::topic_ref($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  12         34  
4920             {
4921            
4922 1 50       3 Parse::RecDescent::_trace(q{<>},
4923             Parse::RecDescent::_tracefirst($text),
4924             q{argument},
4925             $tracelevel)
4926             if defined $::RD_TRACE;
4927 1         3 $expectation->failed();
4928 1         3 last;
4929             }
4930 11 50       59 Parse::RecDescent::_trace(q{>>Matched subrule: [topic_ref]<< (return value: [}
4931             . $_tok . q{]},
4932            
4933             Parse::RecDescent::_tracefirst($text),
4934             q{argument},
4935             $tracelevel)
4936             if defined $::RD_TRACE;
4937 11         30 $item{q{topic_ref}} = $_tok;
4938 11         21 push @item, $_tok;
4939            
4940             }
4941              
4942 11 50       31 Parse::RecDescent::_trace(q{Trying action},
4943             Parse::RecDescent::_tracefirst($text),
4944             q{argument},
4945             $tracelevel)
4946             if defined $::RD_TRACE;
4947            
4948              
4949 11 50       34 $_tok = ($_noactions) ? 0 : do {
4950 11         58 my $bu = $store->baseuri;
4951 11         83 ($return = $item[1]) =~ s/^$bu//; # pretend internal identifier
4952             };
4953 11 50       42 unless (defined $_tok)
4954             {
4955 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
4956             if defined $::RD_TRACE;
4957 0         0 last;
4958             }
4959 11 50       34 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
4960             . $_tok . q{])},
4961             Parse::RecDescent::_tracefirst($text))
4962             if defined $::RD_TRACE;
4963 11         25 push @item, $_tok;
4964            
4965            
4966              
4967              
4968 11 50       36 Parse::RecDescent::_trace(q{>>Matched production: [topic_ref]<<},
4969             Parse::RecDescent::_tracefirst($text),
4970             q{argument},
4971             $tracelevel)
4972             if defined $::RD_TRACE;
4973 11         14 $_matched = 1;
4974 11         15 last;
4975             }
4976              
4977              
4978 19 100 66     71 unless ( $_matched || defined($score) )
4979             {
4980            
4981              
4982 1         1 $_[1] = $text; # NOT SURE THIS IS NEEDED
4983 1 50       3 Parse::RecDescent::_trace(q{<>},
4984             Parse::RecDescent::_tracefirst($_[1]),
4985             q{argument},
4986             $tracelevel)
4987             if defined $::RD_TRACE;
4988 1         7 return undef;
4989             }
4990 18 50 33     67 if (!defined($return) && defined($score))
4991             {
4992 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4993             q{argument},
4994             $tracelevel)
4995             if defined $::RD_TRACE;
4996 0         0 $return = $score_return;
4997             }
4998 18         29 splice @{$thisparser->{errors}}, $err_at;
  18         41  
4999 18 50       60 $return = $item[$#item] unless defined $return;
5000 18 50       47 if (defined $::RD_TRACE)
5001             {
5002 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
5003             $return . q{])}, "",
5004             q{argument},
5005             $tracelevel);
5006 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
5007             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
5008             Parse::RecDescent::_tracefirst($text),
5009             , q{argument},
5010             $tracelevel)
5011             }
5012 18         33 $_[1] = $text;
5013 18         174 return $return;
5014             }
5015              
5016             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
5017             sub Parse::RecDescent::TM::CTM::CParser::occur
5018             {
5019 0     0   0 my $thisparser = $_[0];
5020 1     1   6 use vars q{$tracelevel};
  1         2  
  1         575  
5021 0   0     0 local $tracelevel = ($tracelevel||0)+1;
5022 0         0 $ERRORS = 0;
5023 0         0 my $thisrule = $thisparser->{"rules"}{"occur"};
5024            
5025 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [occur]},
5026             Parse::RecDescent::_tracefirst($_[1]),
5027             q{occur},
5028             $tracelevel)
5029             if defined $::RD_TRACE;
5030              
5031            
5032 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
5033              
5034 0         0 my $score;
5035             my $score_return;
5036 0         0 my $_tok;
5037 0         0 my $return = undef;
5038 0         0 my $_matched=0;
5039 0         0 my $commit=0;
5040 0         0 my @item = ();
5041 0         0 my %item = ();
5042 0   0     0 my $repeating = defined($_[2]) && $_[2];
5043 0   0     0 my $_noactions = defined($_[3]) && $_[3];
5044 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
5045 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
5046 0         0 my $text;
5047 0         0 my $lastsep="";
5048 0         0 my $expectation = new Parse::RecDescent::Expectation(q{'\{'});
5049 0         0 $expectation->at($_[1]);
5050            
5051 0         0 my $thisline;
5052 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
5053              
5054            
5055              
5056 0   0     0 while (!$_matched && !$commit)
5057             {
5058            
5059 0 0       0 Parse::RecDescent::_trace(q{Trying production: ['\{' occ_topic ',' occ_type ',' resource '\}' scope reify]},
5060             Parse::RecDescent::_tracefirst($_[1]),
5061             q{occur},
5062             $tracelevel)
5063             if defined $::RD_TRACE;
5064 0         0 my $thisprod = $thisrule->{"prods"}[0];
5065 0         0 $text = $_[1];
5066 0         0 my $_savetext;
5067 0         0 @item = (q{occur});
5068 0         0 %item = (__RULE__ => q{occur});
5069 0         0 my $repcount = 0;
5070              
5071              
5072 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['\{']},
5073             Parse::RecDescent::_tracefirst($text),
5074             q{occur},
5075             $tracelevel)
5076             if defined $::RD_TRACE;
5077 0         0 $lastsep = "";
5078 0         0 $expectation->is(q{})->at($text);
5079            
5080              
5081 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\{//)
  0 0       0  
5082             {
5083            
5084 0         0 $expectation->failed();
5085 0 0       0 Parse::RecDescent::_trace(qq{<>},
5086             Parse::RecDescent::_tracefirst($text))
5087             if defined $::RD_TRACE;
5088 0         0 last;
5089             }
5090 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5091             . $& . q{])},
5092             Parse::RecDescent::_tracefirst($text))
5093             if defined $::RD_TRACE;
5094 0         0 push @item, $item{__STRING1__}=$&;
5095            
5096              
5097 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [occ_topic]},
5098             Parse::RecDescent::_tracefirst($text),
5099             q{occur},
5100             $tracelevel)
5101             if defined $::RD_TRACE;
5102 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         331  
  0         0  
5103 0         0 $expectation->is(q{occ_topic})->at($text);
5104 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::occ_topic($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
5105             {
5106            
5107 0 0       0 Parse::RecDescent::_trace(q{<>},
5108             Parse::RecDescent::_tracefirst($text),
5109             q{occur},
5110             $tracelevel)
5111             if defined $::RD_TRACE;
5112 0         0 $expectation->failed();
5113 0         0 last;
5114             }
5115 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [occ_topic]<< (return value: [}
5116             . $_tok . q{]},
5117            
5118             Parse::RecDescent::_tracefirst($text),
5119             q{occur},
5120             $tracelevel)
5121             if defined $::RD_TRACE;
5122 0         0 $item{q{occ_topic}} = $_tok;
5123 0         0 push @item, $_tok;
5124            
5125             }
5126              
5127 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [',']},
5128             Parse::RecDescent::_tracefirst($text),
5129             q{occur},
5130             $tracelevel)
5131             if defined $::RD_TRACE;
5132 0         0 $lastsep = "";
5133 0         0 $expectation->is(q{','})->at($text);
5134            
5135              
5136 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\,//)
  0 0       0  
5137             {
5138            
5139 0         0 $expectation->failed();
5140 0 0       0 Parse::RecDescent::_trace(qq{<>},
5141             Parse::RecDescent::_tracefirst($text))
5142             if defined $::RD_TRACE;
5143 0         0 last;
5144             }
5145 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5146             . $& . q{])},
5147             Parse::RecDescent::_tracefirst($text))
5148             if defined $::RD_TRACE;
5149 0         0 push @item, $item{__STRING2__}=$&;
5150            
5151              
5152 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [occ_type]},
5153             Parse::RecDescent::_tracefirst($text),
5154             q{occur},
5155             $tracelevel)
5156             if defined $::RD_TRACE;
5157 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         319  
  0         0  
5158 0         0 $expectation->is(q{occ_type})->at($text);
5159 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::occ_type($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
5160             {
5161            
5162 0 0       0 Parse::RecDescent::_trace(q{<>},
5163             Parse::RecDescent::_tracefirst($text),
5164             q{occur},
5165             $tracelevel)
5166             if defined $::RD_TRACE;
5167 0         0 $expectation->failed();
5168 0         0 last;
5169             }
5170 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [occ_type]<< (return value: [}
5171             . $_tok . q{]},
5172            
5173             Parse::RecDescent::_tracefirst($text),
5174             q{occur},
5175             $tracelevel)
5176             if defined $::RD_TRACE;
5177 0         0 $item{q{occ_type}} = $_tok;
5178 0         0 push @item, $_tok;
5179            
5180             }
5181              
5182 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [',']},
5183             Parse::RecDescent::_tracefirst($text),
5184             q{occur},
5185             $tracelevel)
5186             if defined $::RD_TRACE;
5187 0         0 $lastsep = "";
5188 0         0 $expectation->is(q{','})->at($text);
5189            
5190              
5191 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\,//)
  0 0       0  
5192             {
5193            
5194 0         0 $expectation->failed();
5195 0 0       0 Parse::RecDescent::_trace(qq{<>},
5196             Parse::RecDescent::_tracefirst($text))
5197             if defined $::RD_TRACE;
5198 0         0 last;
5199             }
5200 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5201             . $& . q{])},
5202             Parse::RecDescent::_tracefirst($text))
5203             if defined $::RD_TRACE;
5204 0         0 push @item, $item{__STRING3__}=$&;
5205            
5206              
5207 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [resource]},
5208             Parse::RecDescent::_tracefirst($text),
5209             q{occur},
5210             $tracelevel)
5211             if defined $::RD_TRACE;
5212 1     1   10 if (1) { no strict qw{refs};
  1         2  
  1         1133  
  0         0  
5213 0         0 $expectation->is(q{resource})->at($text);
5214 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::resource($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
5215             {
5216            
5217 0 0       0 Parse::RecDescent::_trace(q{<>},
5218             Parse::RecDescent::_tracefirst($text),
5219             q{occur},
5220             $tracelevel)
5221             if defined $::RD_TRACE;
5222 0         0 $expectation->failed();
5223 0         0 last;
5224             }
5225 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [resource]<< (return value: [}
5226             . $_tok . q{]},
5227            
5228             Parse::RecDescent::_tracefirst($text),
5229             q{occur},
5230             $tracelevel)
5231             if defined $::RD_TRACE;
5232 0         0 $item{q{resource}} = $_tok;
5233 0         0 push @item, $_tok;
5234            
5235             }
5236              
5237 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['\}']},
5238             Parse::RecDescent::_tracefirst($text),
5239             q{occur},
5240             $tracelevel)
5241             if defined $::RD_TRACE;
5242 0         0 $lastsep = "";
5243 0         0 $expectation->is(q{'\}'})->at($text);
5244            
5245              
5246 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\}//)
  0 0       0  
5247             {
5248            
5249 0         0 $expectation->failed();
5250 0 0       0 Parse::RecDescent::_trace(qq{<>},
5251             Parse::RecDescent::_tracefirst($text))
5252             if defined $::RD_TRACE;
5253 0         0 last;
5254             }
5255 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5256             . $& . q{])},
5257             Parse::RecDescent::_tracefirst($text))
5258             if defined $::RD_TRACE;
5259 0         0 push @item, $item{__STRING4__}=$&;
5260            
5261              
5262 0 0       0 Parse::RecDescent::_trace(q{Trying repeated subrule: [scope]},
5263             Parse::RecDescent::_tracefirst($text),
5264             q{occur},
5265             $tracelevel)
5266             if defined $::RD_TRACE;
5267 0         0 $expectation->is(q{scope})->at($text);
5268            
5269 0 0   0   0 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::TM::CTM::CParser::scope, 0, 1, $_noactions,$expectation,sub { \@arg })))
  0         0  
5270             {
5271 0 0       0 Parse::RecDescent::_trace(q{<>},
5272             Parse::RecDescent::_tracefirst($text),
5273             q{occur},
5274             $tracelevel)
5275             if defined $::RD_TRACE;
5276 0         0 last;
5277             }
5278 0 0       0 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [scope]<< (}
5279             . @$_tok . q{ times)},
5280            
5281             Parse::RecDescent::_tracefirst($text),
5282             q{occur},
5283             $tracelevel)
5284             if defined $::RD_TRACE;
5285 0         0 $item{q{scope(?)}} = $_tok;
5286 0         0 push @item, $_tok;
5287            
5288              
5289              
5290 0 0       0 Parse::RecDescent::_trace(q{Trying repeated subrule: [reify]},
5291             Parse::RecDescent::_tracefirst($text),
5292             q{occur},
5293             $tracelevel)
5294             if defined $::RD_TRACE;
5295 0         0 $expectation->is(q{reify})->at($text);
5296            
5297 0 0   0   0 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::TM::CTM::CParser::reify, 0, 1, $_noactions,$expectation,sub { \@arg })))
  0         0  
5298             {
5299 0 0       0 Parse::RecDescent::_trace(q{<>},
5300             Parse::RecDescent::_tracefirst($text),
5301             q{occur},
5302             $tracelevel)
5303             if defined $::RD_TRACE;
5304 0         0 last;
5305             }
5306 0 0       0 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [reify]<< (}
5307             . @$_tok . q{ times)},
5308            
5309             Parse::RecDescent::_tracefirst($text),
5310             q{occur},
5311             $tracelevel)
5312             if defined $::RD_TRACE;
5313 0         0 $item{q{reify(?)}} = $_tok;
5314 0         0 push @item, $_tok;
5315            
5316              
5317              
5318 0 0       0 Parse::RecDescent::_trace(q{Trying action},
5319             Parse::RecDescent::_tracefirst($text),
5320             q{occur},
5321             $tracelevel)
5322             if defined $::RD_TRACE;
5323            
5324              
5325 0 0       0 $_tok = ($_noactions) ? 0 : do {
5326 0         0 my $id = $store->internalize ($item[2]);
5327 0         0 my ($a) = $store->assert ([ undef, # LID
5328             $item[8]->[0], # SCOPE
5329             $item[4], # TYPE (MUST BE DEFINED!)
5330             TM->OCC, # KIND
5331             [ 'thing', 'value' ], # ROLES
5332             [ $id, $item[6] ], # PLAYERS
5333             undef ]);
5334              
5335             { # memorize basename types and scopes as implicitely defined
5336 0 0       0 $implicits->{'isa-scope'}-> { $item[8]->[0] }++ if $item[8]->[0]; # get the bloody scopes and tuck them away
  0         0  
5337 0         0 $implicits->{'subclasses'}->{ 'occurrence' }->{ $item[4] }++;
5338             }
5339              
5340             #warn "reify ".Dumper $item[9];
5341 0 0       0 $store->internalize ($item[9]->[0], $a->[TM->LID]) if $item[9]->[0];
5342              
5343 0         0 $return = $a;
5344             };
5345 0 0       0 unless (defined $_tok)
5346             {
5347 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
5348             if defined $::RD_TRACE;
5349 0         0 last;
5350             }
5351 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
5352             . $_tok . q{])},
5353             Parse::RecDescent::_tracefirst($text))
5354             if defined $::RD_TRACE;
5355 0         0 push @item, $_tok;
5356            
5357            
5358              
5359              
5360 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['\{' occ_topic ',' occ_type ',' resource '\}' scope reify]<<},
5361             Parse::RecDescent::_tracefirst($text),
5362             q{occur},
5363             $tracelevel)
5364             if defined $::RD_TRACE;
5365 0         0 $_matched = 1;
5366 0         0 last;
5367             }
5368              
5369              
5370 0 0 0     0 unless ( $_matched || defined($score) )
5371             {
5372            
5373              
5374 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
5375 0 0       0 Parse::RecDescent::_trace(q{<>},
5376             Parse::RecDescent::_tracefirst($_[1]),
5377             q{occur},
5378             $tracelevel)
5379             if defined $::RD_TRACE;
5380 0         0 return undef;
5381             }
5382 0 0 0     0 if (!defined($return) && defined($score))
5383             {
5384 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
5385             q{occur},
5386             $tracelevel)
5387             if defined $::RD_TRACE;
5388 0         0 $return = $score_return;
5389             }
5390 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
5391 0 0       0 $return = $item[$#item] unless defined $return;
5392 0 0       0 if (defined $::RD_TRACE)
5393             {
5394 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
5395             $return . q{])}, "",
5396             q{occur},
5397             $tracelevel);
5398 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
5399             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
5400             Parse::RecDescent::_tracefirst($text),
5401             , q{occur},
5402             $tracelevel)
5403             }
5404 0         0 $_[1] = $text;
5405 0         0 return $return;
5406             }
5407              
5408             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
5409             sub Parse::RecDescent::TM::CTM::CParser::DATA
5410             {
5411 0     0   0 my $thisparser = $_[0];
5412 1     1   5 use vars q{$tracelevel};
  1         2  
  1         1095  
5413 0   0     0 local $tracelevel = ($tracelevel||0)+1;
5414 0         0 $ERRORS = 0;
5415 0         0 my $thisrule = $thisparser->{"rules"}{"DATA"};
5416            
5417 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [DATA]},
5418             Parse::RecDescent::_tracefirst($_[1]),
5419             q{DATA},
5420             $tracelevel)
5421             if defined $::RD_TRACE;
5422              
5423            
5424 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
5425              
5426 0         0 my $score;
5427             my $score_return;
5428 0         0 my $_tok;
5429 0         0 my $return = undef;
5430 0         0 my $_matched=0;
5431 0         0 my $commit=0;
5432 0         0 my @item = ();
5433 0         0 my %item = ();
5434 0   0     0 my $repeating = defined($_[2]) && $_[2];
5435 0   0     0 my $_noactions = defined($_[3]) && $_[3];
5436 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
5437 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
5438 0         0 my $text;
5439 0         0 my $lastsep="";
5440 0         0 my $expectation = new Parse::RecDescent::Expectation(q{'[['});
5441 0         0 $expectation->at($_[1]);
5442            
5443 0         0 my $thisline;
5444 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
5445              
5446            
5447              
5448 0   0     0 while (!$_matched && !$commit)
5449             {
5450            
5451 0 0       0 Parse::RecDescent::_trace(q{Trying production: ['[[' /.*(?=\\]\\])/sx ']]']},
5452             Parse::RecDescent::_tracefirst($_[1]),
5453             q{DATA},
5454             $tracelevel)
5455             if defined $::RD_TRACE;
5456 0         0 my $thisprod = $thisrule->{"prods"}[0];
5457 0         0 $text = $_[1];
5458 0         0 my $_savetext;
5459 0         0 @item = (q{DATA});
5460 0         0 %item = (__RULE__ => q{DATA});
5461 0         0 my $repcount = 0;
5462              
5463              
5464 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['[[']},
5465             Parse::RecDescent::_tracefirst($text),
5466             q{DATA},
5467             $tracelevel)
5468             if defined $::RD_TRACE;
5469 0         0 $lastsep = "";
5470 0         0 $expectation->is(q{})->at($text);
5471            
5472              
5473 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\[\[//)
  0 0       0  
5474             {
5475            
5476 0         0 $expectation->failed();
5477 0 0       0 Parse::RecDescent::_trace(qq{<>},
5478             Parse::RecDescent::_tracefirst($text))
5479             if defined $::RD_TRACE;
5480 0         0 last;
5481             }
5482 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5483             . $& . q{])},
5484             Parse::RecDescent::_tracefirst($text))
5485             if defined $::RD_TRACE;
5486 0         0 push @item, $item{__STRING1__}=$&;
5487            
5488              
5489 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/.*(?=\\]\\])/sx]}, Parse::RecDescent::_tracefirst($text),
5490             q{DATA},
5491             $tracelevel)
5492             if defined $::RD_TRACE;
5493 0         0 $lastsep = "";
5494 0         0 $expectation->is(q{/.*(?=\\]\\])/sx})->at($text);
5495            
5496              
5497 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:.*(?=\]\]))//sx)
  0 0       0  
5498             {
5499            
5500 0         0 $expectation->failed();
5501 0 0       0 Parse::RecDescent::_trace(q{<>},
5502             Parse::RecDescent::_tracefirst($text))
5503             if defined $::RD_TRACE;
5504              
5505 0         0 last;
5506             }
5507 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5508             . $& . q{])},
5509             Parse::RecDescent::_tracefirst($text))
5510             if defined $::RD_TRACE;
5511 0         0 push @item, $item{__PATTERN1__}=$&;
5512            
5513              
5514 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [']]']},
5515             Parse::RecDescent::_tracefirst($text),
5516             q{DATA},
5517             $tracelevel)
5518             if defined $::RD_TRACE;
5519 0         0 $lastsep = "";
5520 0         0 $expectation->is(q{']]'})->at($text);
5521            
5522              
5523 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\]\]//)
  0 0       0  
5524             {
5525            
5526 0         0 $expectation->failed();
5527 0 0       0 Parse::RecDescent::_trace(qq{<>},
5528             Parse::RecDescent::_tracefirst($text))
5529             if defined $::RD_TRACE;
5530 0         0 last;
5531             }
5532 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5533             . $& . q{])},
5534             Parse::RecDescent::_tracefirst($text))
5535             if defined $::RD_TRACE;
5536 0         0 push @item, $item{__STRING2__}=$&;
5537            
5538              
5539 0 0       0 Parse::RecDescent::_trace(q{Trying action},
5540             Parse::RecDescent::_tracefirst($text),
5541             q{DATA},
5542             $tracelevel)
5543             if defined $::RD_TRACE;
5544            
5545              
5546 0 0       0 $_tok = ($_noactions) ? 0 : do { $return = $item[2]; };
  0         0  
5547 0 0       0 unless (defined $_tok)
5548             {
5549 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
5550             if defined $::RD_TRACE;
5551 0         0 last;
5552             }
5553 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
5554             . $_tok . q{])},
5555             Parse::RecDescent::_tracefirst($text))
5556             if defined $::RD_TRACE;
5557 0         0 push @item, $_tok;
5558            
5559            
5560              
5561              
5562 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['[[' /.*(?=\\]\\])/sx ']]']<<},
5563             Parse::RecDescent::_tracefirst($text),
5564             q{DATA},
5565             $tracelevel)
5566             if defined $::RD_TRACE;
5567 0         0 $_matched = 1;
5568 0         0 last;
5569             }
5570              
5571              
5572 0 0 0     0 unless ( $_matched || defined($score) )
5573             {
5574            
5575              
5576 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
5577 0 0       0 Parse::RecDescent::_trace(q{<>},
5578             Parse::RecDescent::_tracefirst($_[1]),
5579             q{DATA},
5580             $tracelevel)
5581             if defined $::RD_TRACE;
5582 0         0 return undef;
5583             }
5584 0 0 0     0 if (!defined($return) && defined($score))
5585             {
5586 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
5587             q{DATA},
5588             $tracelevel)
5589             if defined $::RD_TRACE;
5590 0         0 $return = $score_return;
5591             }
5592 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
5593 0 0       0 $return = $item[$#item] unless defined $return;
5594 0 0       0 if (defined $::RD_TRACE)
5595             {
5596 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
5597             $return . q{])}, "",
5598             q{DATA},
5599             $tracelevel);
5600 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
5601             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
5602             Parse::RecDescent::_tracefirst($text),
5603             , q{DATA},
5604             $tracelevel)
5605             }
5606 0         0 $_[1] = $text;
5607 0         0 return $return;
5608             }
5609              
5610             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
5611             sub Parse::RecDescent::TM::CTM::CParser::association
5612             {
5613 54     54   104 my $thisparser = $_[0];
5614 1     1   4 use vars q{$tracelevel};
  1         3  
  1         329  
5615 54   50     173 local $tracelevel = ($tracelevel||0)+1;
5616 54         86 $ERRORS = 0;
5617 54         170 my $thisrule = $thisparser->{"rules"}{"association"};
5618            
5619 54 50       146 Parse::RecDescent::_trace(q{Trying rule: [association]},
5620             Parse::RecDescent::_tracefirst($_[1]),
5621             q{association},
5622             $tracelevel)
5623             if defined $::RD_TRACE;
5624              
5625            
5626 54         92 my $err_at = @{$thisparser->{errors}};
  54         120  
5627              
5628 54         84 my $score;
5629             my $score_return;
5630 0         0 my $_tok;
5631 54         69 my $return = undef;
5632 54         62 my $_matched=0;
5633 54         90 my $commit=0;
5634 54         116 my @item = ();
5635 54         106 my %item = ();
5636 54   33     180 my $repeating = defined($_[2]) && $_[2];
5637 54   33     170 my $_noactions = defined($_[3]) && $_[3];
5638 54 50       179 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  54         77  
  54         116  
5639 54 50       314 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
5640 54         74 my $text;
5641 54         94 my $lastsep="";
5642 54         227 my $expectation = new Parse::RecDescent::Expectation(q{topic_identity});
5643 54         453 $expectation->at($_[1]);
5644            
5645 54         216 my $thisline;
5646 54         231 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
5647              
5648            
5649              
5650 54   33     541 while (!$_matched && !$commit)
5651             {
5652            
5653 54 50       139 Parse::RecDescent::_trace(q{Trying production: [topic_identity '(' roles ')' scope reifier]},
5654             Parse::RecDescent::_tracefirst($_[1]),
5655             q{association},
5656             $tracelevel)
5657             if defined $::RD_TRACE;
5658 54         170 my $thisprod = $thisrule->{"prods"}[0];
5659 54         100 $text = $_[1];
5660 54         86 my $_savetext;
5661 54         149 @item = (q{association});
5662 54         161 %item = (__RULE__ => q{association});
5663 54         70 my $repcount = 0;
5664              
5665              
5666 54 50       143 Parse::RecDescent::_trace(q{Trying subrule: [topic_identity]},
5667             Parse::RecDescent::_tracefirst($text),
5668             q{association},
5669             $tracelevel)
5670             if defined $::RD_TRACE;
5671 1     1   5 if (1) { no strict qw{refs};
  1         1  
  1         313  
  54         82  
5672 54         165 $expectation->is(q{})->at($text);
5673 54 100   54   589 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::topic_identity($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  54         142  
5674             {
5675            
5676 40 50       98 Parse::RecDescent::_trace(q{<>},
5677             Parse::RecDescent::_tracefirst($text),
5678             q{association},
5679             $tracelevel)
5680             if defined $::RD_TRACE;
5681 40         111 $expectation->failed();
5682 40         144 last;
5683             }
5684 14 50       78 Parse::RecDescent::_trace(q{>>Matched subrule: [topic_identity]<< (return value: [}
5685             . $_tok . q{]},
5686            
5687             Parse::RecDescent::_tracefirst($text),
5688             q{association},
5689             $tracelevel)
5690             if defined $::RD_TRACE;
5691 14         44 $item{q{topic_identity}} = $_tok;
5692 14         43 push @item, $_tok;
5693            
5694             }
5695              
5696 14 50       50 Parse::RecDescent::_trace(q{Trying terminal: ['(']},
5697             Parse::RecDescent::_tracefirst($text),
5698             q{association},
5699             $tracelevel)
5700             if defined $::RD_TRACE;
5701 14         31 $lastsep = "";
5702 14         51 $expectation->is(q{'('})->at($text);
5703            
5704              
5705 14 100 66     181 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\(//)
  14 100       217  
5706             {
5707            
5708 6         22 $expectation->failed();
5709 6 50       73 Parse::RecDescent::_trace(qq{<>},
5710             Parse::RecDescent::_tracefirst($text))
5711             if defined $::RD_TRACE;
5712 6         18 last;
5713             }
5714 8 50       41 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5715             . $& . q{])},
5716             Parse::RecDescent::_tracefirst($text))
5717             if defined $::RD_TRACE;
5718 8         30 push @item, $item{__STRING1__}=$&;
5719            
5720              
5721 8 50       60 Parse::RecDescent::_trace(q{Trying subrule: [roles]},
5722             Parse::RecDescent::_tracefirst($text),
5723             q{association},
5724             $tracelevel)
5725             if defined $::RD_TRACE;
5726 1     1   4 if (1) { no strict qw{refs};
  1         2  
  1         1762  
  8         13  
5727 8         28 $expectation->is(q{roles})->at($text);
5728 8 100   8   102 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::roles($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  8         27  
5729             {
5730            
5731 1 50       26 Parse::RecDescent::_trace(q{<>},
5732             Parse::RecDescent::_tracefirst($text),
5733             q{association},
5734             $tracelevel)
5735             if defined $::RD_TRACE;
5736 1         6 $expectation->failed();
5737 1         12 last;
5738             }
5739 7 50       39 Parse::RecDescent::_trace(q{>>Matched subrule: [roles]<< (return value: [}
5740             . $_tok . q{]},
5741            
5742             Parse::RecDescent::_tracefirst($text),
5743             q{association},
5744             $tracelevel)
5745             if defined $::RD_TRACE;
5746 7         21 $item{q{roles}} = $_tok;
5747 7         15 push @item, $_tok;
5748            
5749             }
5750              
5751 7 50       17 Parse::RecDescent::_trace(q{Trying terminal: [')']},
5752             Parse::RecDescent::_tracefirst($text),
5753             q{association},
5754             $tracelevel)
5755             if defined $::RD_TRACE;
5756 7         16 $lastsep = "";
5757 7         25 $expectation->is(q{')'})->at($text);
5758            
5759              
5760 7 50 33     91 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\)//)
  7 50       95  
5761             {
5762            
5763 0         0 $expectation->failed();
5764 0 0       0 Parse::RecDescent::_trace(qq{<>},
5765             Parse::RecDescent::_tracefirst($text))
5766             if defined $::RD_TRACE;
5767 0         0 last;
5768             }
5769 7 50       24 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5770             . $& . q{])},
5771             Parse::RecDescent::_tracefirst($text))
5772             if defined $::RD_TRACE;
5773 7         24 push @item, $item{__STRING2__}=$&;
5774            
5775              
5776 7 50       16 Parse::RecDescent::_trace(q{Trying repeated subrule: [scope]},
5777             Parse::RecDescent::_tracefirst($text),
5778             q{association},
5779             $tracelevel)
5780             if defined $::RD_TRACE;
5781 7         26 $expectation->is(q{scope})->at($text);
5782            
5783 7 50   7   105 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::TM::CTM::CParser::scope, 0, 1, $_noactions,$expectation,sub { \@arg })))
  7         22  
5784             {
5785 0 0       0 Parse::RecDescent::_trace(q{<>},
5786             Parse::RecDescent::_tracefirst($text),
5787             q{association},
5788             $tracelevel)
5789             if defined $::RD_TRACE;
5790 0         0 last;
5791             }
5792 7 50       120 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [scope]<< (}
5793             . @$_tok . q{ times)},
5794            
5795             Parse::RecDescent::_tracefirst($text),
5796             q{association},
5797             $tracelevel)
5798             if defined $::RD_TRACE;
5799 7         18 $item{q{scope(?)}} = $_tok;
5800 7         14 push @item, $_tok;
5801            
5802              
5803              
5804 7 50       14 Parse::RecDescent::_trace(q{Trying repeated subrule: [reifier]},
5805             Parse::RecDescent::_tracefirst($text),
5806             q{association},
5807             $tracelevel)
5808             if defined $::RD_TRACE;
5809 7         22 $expectation->is(q{reifier})->at($text);
5810            
5811 7 50   7   95 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::TM::CTM::CParser::reifier, 0, 1, $_noactions,$expectation,sub { \@arg })))
  7         22  
5812             {
5813 0 0       0 Parse::RecDescent::_trace(q{<>},
5814             Parse::RecDescent::_tracefirst($text),
5815             q{association},
5816             $tracelevel)
5817             if defined $::RD_TRACE;
5818 0         0 last;
5819             }
5820 7 50       90 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [reifier]<< (}
5821             . @$_tok . q{ times)},
5822            
5823             Parse::RecDescent::_tracefirst($text),
5824             q{association},
5825             $tracelevel)
5826             if defined $::RD_TRACE;
5827 7         15 $item{q{reifier(?)}} = $_tok;
5828 7         10 push @item, $_tok;
5829            
5830              
5831              
5832 7 50       104 Parse::RecDescent::_trace(q{Trying action},
5833             Parse::RecDescent::_tracefirst($text),
5834             q{association},
5835             $tracelevel)
5836             if defined $::RD_TRACE;
5837            
5838              
5839 7 50       19 $_tok = ($_noactions) ? 0 : do {
5840 7 100       25 my $scope = $item[5]->[0] ? $item[5]->[0] : 'us';
5841 14         47 my ($a) = $store->assert (bless [ undef, # LID
5842             $scope, # SCOPE
5843             $item[1], # TYPE
5844             TM->ASSOC, # KIND
5845 7         18 [ map { $_->[0] } @{$item[3]} ], # ROLES
  14         87  
5846 7         35 [ map { $_->[1] } @{$item[3]} ], # PLAYERS
  7         16  
5847             undef ], 'Assertion');
5848 7         25 $return = $a;
5849 7 100       72 $store->assert(Assertion->new(kind => TM->ASSOC,
5850             type => 'isa',
5851             roles => [ qw(instance class) ],
5852             players => [ $scope, 'scope' ],
5853             scope => undef)) if $scope ne 'us';
5854 7 100       29 $store->internalize ($item[6]->[0], $a->[TM->LID]) if $item[6]->[0];
5855 7         17 $return;
5856             };
5857 7 50       24 unless (defined $_tok)
5858             {
5859 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
5860             if defined $::RD_TRACE;
5861 0         0 last;
5862             }
5863 7 50       14 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
5864             . $_tok . q{])},
5865             Parse::RecDescent::_tracefirst($text))
5866             if defined $::RD_TRACE;
5867 7         14 push @item, $_tok;
5868            
5869            
5870              
5871              
5872 7 50       16 Parse::RecDescent::_trace(q{>>Matched production: [topic_identity '(' roles ')' scope reifier]<<},
5873             Parse::RecDescent::_tracefirst($text),
5874             q{association},
5875             $tracelevel)
5876             if defined $::RD_TRACE;
5877 7         11 $_matched = 1;
5878 7         18 last;
5879             }
5880              
5881              
5882 54 100 66     336 unless ( $_matched || defined($score) )
5883             {
5884            
5885              
5886 47         94 $_[1] = $text; # NOT SURE THIS IS NEEDED
5887 47 50       113 Parse::RecDescent::_trace(q{<>},
5888             Parse::RecDescent::_tracefirst($_[1]),
5889             q{association},
5890             $tracelevel)
5891             if defined $::RD_TRACE;
5892 47         379 return undef;
5893             }
5894 7 50 33     29 if (!defined($return) && defined($score))
5895             {
5896 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
5897             q{association},
5898             $tracelevel)
5899             if defined $::RD_TRACE;
5900 0         0 $return = $score_return;
5901             }
5902 7         12 splice @{$thisparser->{errors}}, $err_at;
  7         19  
5903 7 50       17 $return = $item[$#item] unless defined $return;
5904 7 50       20 if (defined $::RD_TRACE)
5905             {
5906 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
5907             $return . q{])}, "",
5908             q{association},
5909             $tracelevel);
5910 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
5911             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
5912             Parse::RecDescent::_tracefirst($text),
5913             , q{association},
5914             $tracelevel)
5915             }
5916 7         22 $_[1] = $text;
5917 7         117 return $return;
5918             }
5919              
5920             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
5921             sub Parse::RecDescent::TM::CTM::CParser::version
5922             {
5923 50     50   673 my $thisparser = $_[0];
5924 1     1   9 use vars q{$tracelevel};
  1         3  
  1         1048  
5925 50   50     178 local $tracelevel = ($tracelevel||0)+1;
5926 50         72 $ERRORS = 0;
5927 50         143 my $thisrule = $thisparser->{"rules"}{"version"};
5928            
5929 50 50       133 Parse::RecDescent::_trace(q{Trying rule: [version]},
5930             Parse::RecDescent::_tracefirst($_[1]),
5931             q{version},
5932             $tracelevel)
5933             if defined $::RD_TRACE;
5934              
5935            
5936 50         60 my $err_at = @{$thisparser->{errors}};
  50         107  
5937              
5938 50         77 my $score;
5939             my $score_return;
5940 0         0 my $_tok;
5941 50         110 my $return = undef;
5942 50         81 my $_matched=0;
5943 50         84 my $commit=0;
5944 50         88 my @item = ();
5945 50         98 my %item = ();
5946 50   33     199 my $repeating = defined($_[2]) && $_[2];
5947 50   33     189 my $_noactions = defined($_[3]) && $_[3];
5948 50 50       121 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  50         79  
  50         124  
5949 50 50       316 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
5950 50         81 my $text;
5951 50         87 my $lastsep="";
5952 50         180 my $expectation = new Parse::RecDescent::Expectation(q{'TODO'});
5953 50         401 $expectation->at($_[1]);
5954            
5955 50         188 my $thisline;
5956 50         227 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
5957              
5958            
5959              
5960 50   33     627 while (!$_matched && !$commit)
5961             {
5962            
5963 50 50       143 Parse::RecDescent::_trace(q{Trying production: ['TODO']},
5964             Parse::RecDescent::_tracefirst($_[1]),
5965             q{version},
5966             $tracelevel)
5967             if defined $::RD_TRACE;
5968 50         124 my $thisprod = $thisrule->{"prods"}[0];
5969 50         87 $text = $_[1];
5970 50         76 my $_savetext;
5971 50         115 @item = (q{version});
5972 50         136 %item = (__RULE__ => q{version});
5973 50         78 my $repcount = 0;
5974              
5975              
5976 50 50       150 Parse::RecDescent::_trace(q{Trying terminal: ['TODO']},
5977             Parse::RecDescent::_tracefirst($text),
5978             q{version},
5979             $tracelevel)
5980             if defined $::RD_TRACE;
5981 50         73 $lastsep = "";
5982 50         156 $expectation->is(q{})->at($text);
5983            
5984              
5985 50 50 33     569 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\ATODO//)
  50 50       570  
5986             {
5987            
5988 50         186 $expectation->failed();
5989 50 50       234 Parse::RecDescent::_trace(qq{<>},
5990             Parse::RecDescent::_tracefirst($text))
5991             if defined $::RD_TRACE;
5992 50         138 last;
5993             }
5994 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5995             . $& . q{])},
5996             Parse::RecDescent::_tracefirst($text))
5997             if defined $::RD_TRACE;
5998 0         0 push @item, $item{__STRING1__}=$&;
5999            
6000              
6001              
6002 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['TODO']<<},
6003             Parse::RecDescent::_tracefirst($text),
6004             q{version},
6005             $tracelevel)
6006             if defined $::RD_TRACE;
6007 0         0 $_matched = 1;
6008 0         0 last;
6009             }
6010              
6011              
6012 50 50 33     304 unless ( $_matched || defined($score) )
6013             {
6014            
6015              
6016 50         121 $_[1] = $text; # NOT SURE THIS IS NEEDED
6017 50 50       130 Parse::RecDescent::_trace(q{<>},
6018             Parse::RecDescent::_tracefirst($_[1]),
6019             q{version},
6020             $tracelevel)
6021             if defined $::RD_TRACE;
6022 50         396 return undef;
6023             }
6024 0 0 0     0 if (!defined($return) && defined($score))
6025             {
6026 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
6027             q{version},
6028             $tracelevel)
6029             if defined $::RD_TRACE;
6030 0         0 $return = $score_return;
6031             }
6032 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
6033 0 0       0 $return = $item[$#item] unless defined $return;
6034 0 0       0 if (defined $::RD_TRACE)
6035             {
6036 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
6037             $return . q{])}, "",
6038             q{version},
6039             $tracelevel);
6040 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
6041             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
6042             Parse::RecDescent::_tracefirst($text),
6043             , q{version},
6044             $tracelevel)
6045             }
6046 0         0 $_[1] = $text;
6047 0         0 return $return;
6048             }
6049              
6050             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
6051             sub Parse::RecDescent::TM::CTM::CParser::wuri
6052             {
6053 36     36   85 my $thisparser = $_[0];
6054 1     1   7 use vars q{$tracelevel};
  1         2  
  1         676  
6055 36   50     109 local $tracelevel = ($tracelevel||0)+1;
6056 36         42 $ERRORS = 0;
6057 36         93 my $thisrule = $thisparser->{"rules"}{"wuri"};
6058            
6059 36 50       84 Parse::RecDescent::_trace(q{Trying rule: [wuri]},
6060             Parse::RecDescent::_tracefirst($_[1]),
6061             q{wuri},
6062             $tracelevel)
6063             if defined $::RD_TRACE;
6064              
6065            
6066 36         43 my $err_at = @{$thisparser->{errors}};
  36         67  
6067              
6068 36         66 my $score;
6069             my $score_return;
6070 0         0 my $_tok;
6071 36         45 my $return = undef;
6072 36         41 my $_matched=0;
6073 36         38 my $commit=0;
6074 36         64 my @item = ();
6075 36         81 my %item = ();
6076 36   33     115 my $repeating = defined($_[2]) && $_[2];
6077 36   33     114 my $_noactions = defined($_[3]) && $_[3];
6078 36 50       74 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  36         38  
  36         73  
6079 36 50       153 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
6080 36         57 my $text;
6081 36         64 my $lastsep="";
6082 36         128 my $expectation = new Parse::RecDescent::Expectation(q{'<'});
6083 36         288 $expectation->at($_[1]);
6084            
6085 36         135 my $thisline;
6086 36         163 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
6087              
6088            
6089              
6090 36   33     366 while (!$_matched && !$commit)
6091             {
6092            
6093 36 50       96 Parse::RecDescent::_trace(q{Trying production: ['<' iri '>']},
6094             Parse::RecDescent::_tracefirst($_[1]),
6095             q{wuri},
6096             $tracelevel)
6097             if defined $::RD_TRACE;
6098 36         99 my $thisprod = $thisrule->{"prods"}[0];
6099 36         56 $text = $_[1];
6100 36         46 my $_savetext;
6101 36         112 @item = (q{wuri});
6102 36         80 %item = (__RULE__ => q{wuri});
6103 36         60 my $repcount = 0;
6104              
6105              
6106 36 50       84 Parse::RecDescent::_trace(q{Trying terminal: ['<']},
6107             Parse::RecDescent::_tracefirst($text),
6108             q{wuri},
6109             $tracelevel)
6110             if defined $::RD_TRACE;
6111 36         46 $lastsep = "";
6112 36         129 $expectation->is(q{})->at($text);
6113            
6114              
6115 36 100 33     404 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\
  36 50       408  
6116             {
6117            
6118 36         107 $expectation->failed();
6119 36 50       156 Parse::RecDescent::_trace(qq{<>},
6120             Parse::RecDescent::_tracefirst($text))
6121             if defined $::RD_TRACE;
6122 36         75 last;
6123             }
6124 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
6125             . $& . q{])},
6126             Parse::RecDescent::_tracefirst($text))
6127             if defined $::RD_TRACE;
6128 0         0 push @item, $item{__STRING1__}=$&;
6129            
6130              
6131 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [iri]},
6132             Parse::RecDescent::_tracefirst($text),
6133             q{wuri},
6134             $tracelevel)
6135             if defined $::RD_TRACE;
6136 1     1   7 if (1) { no strict qw{refs};
  1         3  
  1         1053  
  0         0  
6137 0         0 $expectation->is(q{iri})->at($text);
6138 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::iri($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
6139             {
6140            
6141 0 0       0 Parse::RecDescent::_trace(q{<>},
6142             Parse::RecDescent::_tracefirst($text),
6143             q{wuri},
6144             $tracelevel)
6145             if defined $::RD_TRACE;
6146 0         0 $expectation->failed();
6147 0         0 last;
6148             }
6149 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [iri]<< (return value: [}
6150             . $_tok . q{]},
6151            
6152             Parse::RecDescent::_tracefirst($text),
6153             q{wuri},
6154             $tracelevel)
6155             if defined $::RD_TRACE;
6156 0         0 $item{q{iri}} = $_tok;
6157 0         0 push @item, $_tok;
6158            
6159             }
6160              
6161 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['>']},
6162             Parse::RecDescent::_tracefirst($text),
6163             q{wuri},
6164             $tracelevel)
6165             if defined $::RD_TRACE;
6166 0         0 $lastsep = "";
6167 0         0 $expectation->is(q{'>'})->at($text);
6168            
6169              
6170 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\>//)
  0 0       0  
6171             {
6172            
6173 0         0 $expectation->failed();
6174 0 0       0 Parse::RecDescent::_trace(qq{<>},
6175             Parse::RecDescent::_tracefirst($text))
6176             if defined $::RD_TRACE;
6177 0         0 last;
6178             }
6179 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
6180             . $& . q{])},
6181             Parse::RecDescent::_tracefirst($text))
6182             if defined $::RD_TRACE;
6183 0         0 push @item, $item{__STRING2__}=$&;
6184            
6185              
6186 0 0       0 Parse::RecDescent::_trace(q{Trying action},
6187             Parse::RecDescent::_tracefirst($text),
6188             q{wuri},
6189             $tracelevel)
6190             if defined $::RD_TRACE;
6191            
6192              
6193 0 0       0 $_tok = ($_noactions) ? 0 : do { $item[2] };
  0         0  
6194 0 0       0 unless (defined $_tok)
6195             {
6196 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
6197             if defined $::RD_TRACE;
6198 0         0 last;
6199             }
6200 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
6201             . $_tok . q{])},
6202             Parse::RecDescent::_tracefirst($text))
6203             if defined $::RD_TRACE;
6204 0         0 push @item, $_tok;
6205            
6206            
6207              
6208              
6209 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['<' iri '>']<<},
6210             Parse::RecDescent::_tracefirst($text),
6211             q{wuri},
6212             $tracelevel)
6213             if defined $::RD_TRACE;
6214 0         0 $_matched = 1;
6215 0         0 last;
6216             }
6217              
6218              
6219 36 50 33     176 unless ( $_matched || defined($score) )
6220             {
6221            
6222              
6223 36         66 $_[1] = $text; # NOT SURE THIS IS NEEDED
6224 36 50       76 Parse::RecDescent::_trace(q{<>},
6225             Parse::RecDescent::_tracefirst($_[1]),
6226             q{wuri},
6227             $tracelevel)
6228             if defined $::RD_TRACE;
6229 36         285 return undef;
6230             }
6231 0 0 0     0 if (!defined($return) && defined($score))
6232             {
6233 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
6234             q{wuri},
6235             $tracelevel)
6236             if defined $::RD_TRACE;
6237 0         0 $return = $score_return;
6238             }
6239 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
6240 0 0       0 $return = $item[$#item] unless defined $return;
6241 0 0       0 if (defined $::RD_TRACE)
6242             {
6243 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
6244             $return . q{])}, "",
6245             q{wuri},
6246             $tracelevel);
6247 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
6248             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
6249             Parse::RecDescent::_tracefirst($text),
6250             , q{wuri},
6251             $tracelevel)
6252             }
6253 0         0 $_[1] = $text;
6254 0         0 return $return;
6255             }
6256              
6257             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
6258             sub Parse::RecDescent::TM::CTM::CParser::occ_type
6259             {
6260 0     0   0 my $thisparser = $_[0];
6261 1     1   7 use vars q{$tracelevel};
  1         3  
  1         651  
6262 0   0     0 local $tracelevel = ($tracelevel||0)+1;
6263 0         0 $ERRORS = 0;
6264 0         0 my $thisrule = $thisparser->{"rules"}{"occ_type"};
6265            
6266 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [occ_type]},
6267             Parse::RecDescent::_tracefirst($_[1]),
6268             q{occ_type},
6269             $tracelevel)
6270             if defined $::RD_TRACE;
6271              
6272            
6273 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
6274              
6275 0         0 my $score;
6276             my $score_return;
6277 0         0 my $_tok;
6278 0         0 my $return = undef;
6279 0         0 my $_matched=0;
6280 0         0 my $commit=0;
6281 0         0 my @item = ();
6282 0         0 my %item = ();
6283 0   0     0 my $repeating = defined($_[2]) && $_[2];
6284 0   0     0 my $_noactions = defined($_[3]) && $_[3];
6285 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
6286 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
6287 0         0 my $text;
6288 0         0 my $lastsep="";
6289 0         0 my $expectation = new Parse::RecDescent::Expectation(q{name});
6290 0         0 $expectation->at($_[1]);
6291            
6292 0         0 my $thisline;
6293 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
6294              
6295            
6296              
6297 0   0     0 while (!$_matched && !$commit)
6298             {
6299            
6300 0 0       0 Parse::RecDescent::_trace(q{Trying production: [name]},
6301             Parse::RecDescent::_tracefirst($_[1]),
6302             q{occ_type},
6303             $tracelevel)
6304             if defined $::RD_TRACE;
6305 0         0 my $thisprod = $thisrule->{"prods"}[0];
6306 0         0 $text = $_[1];
6307 0         0 my $_savetext;
6308 0         0 @item = (q{occ_type});
6309 0         0 %item = (__RULE__ => q{occ_type});
6310 0         0 my $repcount = 0;
6311              
6312              
6313 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [name]},
6314             Parse::RecDescent::_tracefirst($text),
6315             q{occ_type},
6316             $tracelevel)
6317             if defined $::RD_TRACE;
6318 1     1   6 if (1) { no strict qw{refs};
  1         3  
  1         556  
  0         0  
6319 0         0 $expectation->is(q{})->at($text);
6320 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
6321             {
6322            
6323 0 0       0 Parse::RecDescent::_trace(q{<>},
6324             Parse::RecDescent::_tracefirst($text),
6325             q{occ_type},
6326             $tracelevel)
6327             if defined $::RD_TRACE;
6328 0         0 $expectation->failed();
6329 0         0 last;
6330             }
6331 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [name]<< (return value: [}
6332             . $_tok . q{]},
6333            
6334             Parse::RecDescent::_tracefirst($text),
6335             q{occ_type},
6336             $tracelevel)
6337             if defined $::RD_TRACE;
6338 0         0 $item{q{name}} = $_tok;
6339 0         0 push @item, $_tok;
6340            
6341             }
6342              
6343              
6344 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [name]<<},
6345             Parse::RecDescent::_tracefirst($text),
6346             q{occ_type},
6347             $tracelevel)
6348             if defined $::RD_TRACE;
6349 0         0 $_matched = 1;
6350 0         0 last;
6351             }
6352              
6353              
6354 0 0 0     0 unless ( $_matched || defined($score) )
6355             {
6356            
6357              
6358 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
6359 0 0       0 Parse::RecDescent::_trace(q{<>},
6360             Parse::RecDescent::_tracefirst($_[1]),
6361             q{occ_type},
6362             $tracelevel)
6363             if defined $::RD_TRACE;
6364 0         0 return undef;
6365             }
6366 0 0 0     0 if (!defined($return) && defined($score))
6367             {
6368 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
6369             q{occ_type},
6370             $tracelevel)
6371             if defined $::RD_TRACE;
6372 0         0 $return = $score_return;
6373             }
6374 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
6375 0 0       0 $return = $item[$#item] unless defined $return;
6376 0 0       0 if (defined $::RD_TRACE)
6377             {
6378 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
6379             $return . q{])}, "",
6380             q{occ_type},
6381             $tracelevel);
6382 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
6383             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
6384             Parse::RecDescent::_tracefirst($text),
6385             , q{occ_type},
6386             $tracelevel)
6387             }
6388 0         0 $_[1] = $text;
6389 0         0 return $return;
6390             }
6391              
6392             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
6393             sub Parse::RecDescent::TM::CTM::CParser::resource
6394             {
6395 0     0   0 my $thisparser = $_[0];
6396 1     1   6 use vars q{$tracelevel};
  1         1  
  1         428  
6397 0   0     0 local $tracelevel = ($tracelevel||0)+1;
6398 0         0 $ERRORS = 0;
6399 0         0 my $thisrule = $thisparser->{"rules"}{"resource"};
6400            
6401 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [resource]},
6402             Parse::RecDescent::_tracefirst($_[1]),
6403             q{resource},
6404             $tracelevel)
6405             if defined $::RD_TRACE;
6406              
6407            
6408 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
6409              
6410 0         0 my $score;
6411             my $score_return;
6412 0         0 my $_tok;
6413 0         0 my $return = undef;
6414 0         0 my $_matched=0;
6415 0         0 my $commit=0;
6416 0         0 my @item = ();
6417 0         0 my %item = ();
6418 0   0     0 my $repeating = defined($_[2]) && $_[2];
6419 0   0     0 my $_noactions = defined($_[3]) && $_[3];
6420 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
6421 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
6422 0         0 my $text;
6423 0         0 my $lastsep="";
6424 0         0 my $expectation = new Parse::RecDescent::Expectation(q{uri, or DATA});
6425 0         0 $expectation->at($_[1]);
6426            
6427 0         0 my $thisline;
6428 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
6429              
6430            
6431              
6432 0   0     0 while (!$_matched && !$commit)
6433             {
6434            
6435 0 0       0 Parse::RecDescent::_trace(q{Trying production: [uri]},
6436             Parse::RecDescent::_tracefirst($_[1]),
6437             q{resource},
6438             $tracelevel)
6439             if defined $::RD_TRACE;
6440 0         0 my $thisprod = $thisrule->{"prods"}[0];
6441 0         0 $text = $_[1];
6442 0         0 my $_savetext;
6443 0         0 @item = (q{resource});
6444 0         0 %item = (__RULE__ => q{resource});
6445 0         0 my $repcount = 0;
6446              
6447              
6448 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [uri]},
6449             Parse::RecDescent::_tracefirst($text),
6450             q{resource},
6451             $tracelevel)
6452             if defined $::RD_TRACE;
6453 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         472  
  0         0  
6454 0         0 $expectation->is(q{})->at($text);
6455 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::uri($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
6456             {
6457            
6458 0 0       0 Parse::RecDescent::_trace(q{<>},
6459             Parse::RecDescent::_tracefirst($text),
6460             q{resource},
6461             $tracelevel)
6462             if defined $::RD_TRACE;
6463 0         0 $expectation->failed();
6464 0         0 last;
6465             }
6466 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [uri]<< (return value: [}
6467             . $_tok . q{]},
6468            
6469             Parse::RecDescent::_tracefirst($text),
6470             q{resource},
6471             $tracelevel)
6472             if defined $::RD_TRACE;
6473 0         0 $item{q{uri}} = $_tok;
6474 0         0 push @item, $_tok;
6475            
6476             }
6477              
6478 0 0       0 Parse::RecDescent::_trace(q{Trying action},
6479             Parse::RecDescent::_tracefirst($text),
6480             q{resource},
6481             $tracelevel)
6482             if defined $::RD_TRACE;
6483            
6484              
6485 0 0       0 $_tok = ($_noactions) ? 0 : do { $return = new TM::Literal ($item[1], 'xsd:uri') };
  0         0  
6486 0 0       0 unless (defined $_tok)
6487             {
6488 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
6489             if defined $::RD_TRACE;
6490 0         0 last;
6491             }
6492 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
6493             . $_tok . q{])},
6494             Parse::RecDescent::_tracefirst($text))
6495             if defined $::RD_TRACE;
6496 0         0 push @item, $_tok;
6497            
6498            
6499              
6500              
6501 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [uri]<<},
6502             Parse::RecDescent::_tracefirst($text),
6503             q{resource},
6504             $tracelevel)
6505             if defined $::RD_TRACE;
6506 0         0 $_matched = 1;
6507 0         0 last;
6508             }
6509              
6510              
6511 0   0     0 while (!$_matched && !$commit)
6512             {
6513            
6514 0 0       0 Parse::RecDescent::_trace(q{Trying production: [DATA]},
6515             Parse::RecDescent::_tracefirst($_[1]),
6516             q{resource},
6517             $tracelevel)
6518             if defined $::RD_TRACE;
6519 0         0 my $thisprod = $thisrule->{"prods"}[1];
6520 0         0 $text = $_[1];
6521 0         0 my $_savetext;
6522 0         0 @item = (q{resource});
6523 0         0 %item = (__RULE__ => q{resource});
6524 0         0 my $repcount = 0;
6525              
6526              
6527 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [DATA]},
6528             Parse::RecDescent::_tracefirst($text),
6529             q{resource},
6530             $tracelevel)
6531             if defined $::RD_TRACE;
6532 1     1   8 if (1) { no strict qw{refs};
  1         11  
  1         734  
  0         0  
6533 0         0 $expectation->is(q{})->at($text);
6534 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::DATA($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
6535             {
6536            
6537 0 0       0 Parse::RecDescent::_trace(q{<>},
6538             Parse::RecDescent::_tracefirst($text),
6539             q{resource},
6540             $tracelevel)
6541             if defined $::RD_TRACE;
6542 0         0 $expectation->failed();
6543 0         0 last;
6544             }
6545 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [DATA]<< (return value: [}
6546             . $_tok . q{]},
6547            
6548             Parse::RecDescent::_tracefirst($text),
6549             q{resource},
6550             $tracelevel)
6551             if defined $::RD_TRACE;
6552 0         0 $item{q{DATA}} = $_tok;
6553 0         0 push @item, $_tok;
6554            
6555             }
6556              
6557 0 0       0 Parse::RecDescent::_trace(q{Trying action},
6558             Parse::RecDescent::_tracefirst($text),
6559             q{resource},
6560             $tracelevel)
6561             if defined $::RD_TRACE;
6562            
6563              
6564 0 0       0 $_tok = ($_noactions) ? 0 : do { $return = new TM::Literal ($item[1], 'xsd:string') };
  0         0  
6565 0 0       0 unless (defined $_tok)
6566             {
6567 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
6568             if defined $::RD_TRACE;
6569 0         0 last;
6570             }
6571 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
6572             . $_tok . q{])},
6573             Parse::RecDescent::_tracefirst($text))
6574             if defined $::RD_TRACE;
6575 0         0 push @item, $_tok;
6576            
6577            
6578              
6579              
6580 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [DATA]<<},
6581             Parse::RecDescent::_tracefirst($text),
6582             q{resource},
6583             $tracelevel)
6584             if defined $::RD_TRACE;
6585 0         0 $_matched = 1;
6586 0         0 last;
6587             }
6588              
6589              
6590 0 0 0     0 unless ( $_matched || defined($score) )
6591             {
6592            
6593              
6594 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
6595 0 0       0 Parse::RecDescent::_trace(q{<>},
6596             Parse::RecDescent::_tracefirst($_[1]),
6597             q{resource},
6598             $tracelevel)
6599             if defined $::RD_TRACE;
6600 0         0 return undef;
6601             }
6602 0 0 0     0 if (!defined($return) && defined($score))
6603             {
6604 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
6605             q{resource},
6606             $tracelevel)
6607             if defined $::RD_TRACE;
6608 0         0 $return = $score_return;
6609             }
6610 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
6611 0 0       0 $return = $item[$#item] unless defined $return;
6612 0 0       0 if (defined $::RD_TRACE)
6613             {
6614 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
6615             $return . q{])}, "",
6616             q{resource},
6617             $tracelevel);
6618 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
6619             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
6620             Parse::RecDescent::_tracefirst($text),
6621             , q{resource},
6622             $tracelevel)
6623             }
6624 0         0 $_[1] = $text;
6625 0         0 return $return;
6626             }
6627              
6628             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
6629             sub Parse::RecDescent::TM::CTM::CParser::occurrence
6630             {
6631 97     97   193 my $thisparser = $_[0];
6632 1     1   7 use vars q{$tracelevel};
  1         2  
  1         1096  
6633 97   50     298 local $tracelevel = ($tracelevel||0)+1;
6634 97         160 $ERRORS = 0;
6635 97         226 my $thisrule = $thisparser->{"rules"}{"occurrence"};
6636            
6637 97 50       251 Parse::RecDescent::_trace(q{Trying rule: [occurrence]},
6638             Parse::RecDescent::_tracefirst($_[1]),
6639             q{occurrence},
6640             $tracelevel)
6641             if defined $::RD_TRACE;
6642              
6643            
6644 97         99 my $err_at = @{$thisparser->{errors}};
  97         165  
6645              
6646 97         136 my $score;
6647             my $score_return;
6648 0         0 my $_tok;
6649 97         132 my $return = undef;
6650 97         128 my $_matched=0;
6651 97         114 my $commit=0;
6652 97         161 my @item = ();
6653 97         157 my %item = ();
6654 97   33     304 my $repeating = defined($_[2]) && $_[2];
6655 97   33     346 my $_noactions = defined($_[3]) && $_[3];
6656 97 50       216 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  97         112  
  97         164  
6657 97 50       358 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
6658 97         120 my $text;
6659 97         162 my $lastsep="";
6660 97         305 my $expectation = new Parse::RecDescent::Expectation(q{type});
6661 97         765 $expectation->at($_[1]);
6662            
6663 97         382 my $thisline;
6664 97         420 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
6665              
6666            
6667              
6668 97   33     925 while (!$_matched && !$commit)
6669             {
6670            
6671 97 50       282 Parse::RecDescent::_trace(q{Trying production: [type ':' iri_literal scope reifier]},
6672             Parse::RecDescent::_tracefirst($_[1]),
6673             q{occurrence},
6674             $tracelevel)
6675             if defined $::RD_TRACE;
6676 97         321 my $thisprod = $thisrule->{"prods"}[0];
6677 97         150 $text = $_[1];
6678 97         96 my $_savetext;
6679 97         183 @item = (q{occurrence});
6680 97         213 %item = (__RULE__ => q{occurrence});
6681 97         163 my $repcount = 0;
6682              
6683              
6684 97 50       197 Parse::RecDescent::_trace(q{Trying subrule: [type]},
6685             Parse::RecDescent::_tracefirst($text),
6686             q{occurrence},
6687             $tracelevel)
6688             if defined $::RD_TRACE;
6689 1     1   9 if (1) { no strict qw{refs};
  1         2  
  1         476  
  97         106  
6690 97         277 $expectation->is(q{})->at($text);
6691 97 100   97   1113 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::type($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  97         270  
6692             {
6693            
6694 70 50       148 Parse::RecDescent::_trace(q{<>},
6695             Parse::RecDescent::_tracefirst($text),
6696             q{occurrence},
6697             $tracelevel)
6698             if defined $::RD_TRACE;
6699 70         181 $expectation->failed();
6700 70         252 last;
6701             }
6702 27 50       198 Parse::RecDescent::_trace(q{>>Matched subrule: [type]<< (return value: [}
6703             . $_tok . q{]},
6704            
6705             Parse::RecDescent::_tracefirst($text),
6706             q{occurrence},
6707             $tracelevel)
6708             if defined $::RD_TRACE;
6709 27         57 $item{q{type}} = $_tok;
6710 27         50 push @item, $_tok;
6711            
6712             }
6713              
6714 27 50       82 Parse::RecDescent::_trace(q{Trying terminal: [':']},
6715             Parse::RecDescent::_tracefirst($text),
6716             q{occurrence},
6717             $tracelevel)
6718             if defined $::RD_TRACE;
6719 27         52 $lastsep = "";
6720 27         93 $expectation->is(q{':'})->at($text);
6721            
6722              
6723 27 100 66     355 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\://)
  27 100       504  
6724             {
6725            
6726 1         4 $expectation->failed();
6727 1 50       13 Parse::RecDescent::_trace(qq{<>},
6728             Parse::RecDescent::_tracefirst($text))
6729             if defined $::RD_TRACE;
6730 1         3 last;
6731             }
6732 26 50       96 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
6733             . $& . q{])},
6734             Parse::RecDescent::_tracefirst($text))
6735             if defined $::RD_TRACE;
6736 26         90 push @item, $item{__STRING1__}=$&;
6737            
6738              
6739 26 50       65 Parse::RecDescent::_trace(q{Trying subrule: [iri_literal]},
6740             Parse::RecDescent::_tracefirst($text),
6741             q{occurrence},
6742             $tracelevel)
6743             if defined $::RD_TRACE;
6744 1     1   18 if (1) { no strict qw{refs};
  1         9  
  1         1490  
  26         34  
6745 26         102 $expectation->is(q{iri_literal})->at($text);
6746 26 50   26   319 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::iri_literal($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  26         80  
6747             {
6748            
6749 0 0       0 Parse::RecDescent::_trace(q{<>},
6750             Parse::RecDescent::_tracefirst($text),
6751             q{occurrence},
6752             $tracelevel)
6753             if defined $::RD_TRACE;
6754 0         0 $expectation->failed();
6755 0         0 last;
6756             }
6757 26 50       125 Parse::RecDescent::_trace(q{>>Matched subrule: [iri_literal]<< (return value: [}
6758             . $_tok . q{]},
6759            
6760             Parse::RecDescent::_tracefirst($text),
6761             q{occurrence},
6762             $tracelevel)
6763             if defined $::RD_TRACE;
6764 26         59 $item{q{iri_literal}} = $_tok;
6765 26         48 push @item, $_tok;
6766            
6767             }
6768              
6769 26 50       61 Parse::RecDescent::_trace(q{Trying repeated subrule: [scope]},
6770             Parse::RecDescent::_tracefirst($text),
6771             q{occurrence},
6772             $tracelevel)
6773             if defined $::RD_TRACE;
6774 26         85 $expectation->is(q{scope})->at($text);
6775            
6776 26 50   26   352 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::TM::CTM::CParser::scope, 0, 1, $_noactions,$expectation,sub { \@arg })))
  26         77  
6777             {
6778 0 0       0 Parse::RecDescent::_trace(q{<>},
6779             Parse::RecDescent::_tracefirst($text),
6780             q{occurrence},
6781             $tracelevel)
6782             if defined $::RD_TRACE;
6783 0         0 last;
6784             }
6785 26 50       408 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [scope]<< (}
6786             . @$_tok . q{ times)},
6787            
6788             Parse::RecDescent::_tracefirst($text),
6789             q{occurrence},
6790             $tracelevel)
6791             if defined $::RD_TRACE;
6792 26         65 $item{q{scope(?)}} = $_tok;
6793 26         44 push @item, $_tok;
6794            
6795              
6796              
6797 26 50       69 Parse::RecDescent::_trace(q{Trying repeated subrule: [reifier]},
6798             Parse::RecDescent::_tracefirst($text),
6799             q{occurrence},
6800             $tracelevel)
6801             if defined $::RD_TRACE;
6802 26         92 $expectation->is(q{reifier})->at($text);
6803            
6804 26 50   26   328 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::TM::CTM::CParser::reifier, 0, 1, $_noactions,$expectation,sub { \@arg })))
  26         106  
6805             {
6806 0 0       0 Parse::RecDescent::_trace(q{<>},
6807             Parse::RecDescent::_tracefirst($text),
6808             q{occurrence},
6809             $tracelevel)
6810             if defined $::RD_TRACE;
6811 0         0 last;
6812             }
6813 26 50       378 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [reifier]<< (}
6814             . @$_tok . q{ times)},
6815            
6816             Parse::RecDescent::_tracefirst($text),
6817             q{occurrence},
6818             $tracelevel)
6819             if defined $::RD_TRACE;
6820 26         76 $item{q{reifier(?)}} = $_tok;
6821 26         59 push @item, $_tok;
6822            
6823              
6824              
6825 26 50       63 Parse::RecDescent::_trace(q{Trying action},
6826             Parse::RecDescent::_tracefirst($text),
6827             q{occurrence},
6828             $tracelevel)
6829             if defined $::RD_TRACE;
6830            
6831              
6832 26 50       57 $_tok = ($_noactions) ? 0 : do {
6833 26         48 my $type = $item[1];
6834 26 100       84 my $scope = $item[4]->[0] ? $item[4]->[0] : 'us';
6835              
6836 26         413 my ($a) = $store->assert ( bless [ undef, # LID
6837             $scope, # SCOPE
6838             $type, # TYPE
6839             TM->OCC, # KIND
6840             [ 'thing', 'value' ], # ROLES
6841             [ $arg[0], $item[3] ],# PLAYERS
6842             undef ], 'Assertion' );
6843 26 50       1346 $store->assert(Assertion->new(kind => TM->ASSOC,
6844             type => 'is-subclass-of',
6845             roles => [ qw(subclass superclass) ],
6846             players => [ $type, 'occurrence' ],
6847             scope => undef)) if $type ne 'occurrence';
6848 26 100       207 $store->assert(Assertion->new(kind => TM->ASSOC,
6849             type => 'isa',
6850             roles => [ qw(instance class) ],
6851             players => [ $scope, 'scope' ],
6852             scope => undef)) if $scope ne 'us';
6853 26 100       102 $store->internalize ($item[5]->[0], $a->[TM->LID]) if $item[5]->[0];
6854 26         55 $return = $a;
6855             };
6856 26 50       76 unless (defined $_tok)
6857             {
6858 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
6859             if defined $::RD_TRACE;
6860 0         0 last;
6861             }
6862 26 50       64 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
6863             . $_tok . q{])},
6864             Parse::RecDescent::_tracefirst($text))
6865             if defined $::RD_TRACE;
6866 26         51 push @item, $_tok;
6867            
6868            
6869              
6870              
6871 26 50       61 Parse::RecDescent::_trace(q{>>Matched production: [type ':' iri_literal scope reifier]<<},
6872             Parse::RecDescent::_tracefirst($text),
6873             q{occurrence},
6874             $tracelevel)
6875             if defined $::RD_TRACE;
6876 26         45 $_matched = 1;
6877 26         67 last;
6878             }
6879              
6880              
6881 97 100 66     544 unless ( $_matched || defined($score) )
6882             {
6883            
6884              
6885 71         141 $_[1] = $text; # NOT SURE THIS IS NEEDED
6886 71 50       167 Parse::RecDescent::_trace(q{<>},
6887             Parse::RecDescent::_tracefirst($_[1]),
6888             q{occurrence},
6889             $tracelevel)
6890             if defined $::RD_TRACE;
6891 71         480 return undef;
6892             }
6893 26 50 33     96 if (!defined($return) && defined($score))
6894             {
6895 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
6896             q{occurrence},
6897             $tracelevel)
6898             if defined $::RD_TRACE;
6899 0         0 $return = $score_return;
6900             }
6901 26         31 splice @{$thisparser->{errors}}, $err_at;
  26         75  
6902 26 50       74 $return = $item[$#item] unless defined $return;
6903 26 50       82 if (defined $::RD_TRACE)
6904             {
6905 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
6906             $return . q{])}, "",
6907             q{occurrence},
6908             $tracelevel);
6909 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
6910             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
6911             Parse::RecDescent::_tracefirst($text),
6912             , q{occurrence},
6913             $tracelevel)
6914             }
6915 26         56 $_[1] = $text;
6916 26         327 return $return;
6917             }
6918              
6919             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
6920             sub Parse::RecDescent::TM::CTM::CParser::_alternation_1_of_production_1_of_rule_string
6921             {
6922 1     1   22 my $thisparser = $_[0];
6923 1     1   7 use vars q{$tracelevel};
  1         2  
  1         993  
6924 1   50     6 local $tracelevel = ($tracelevel||0)+1;
6925 1         3 $ERRORS = 0;
6926 1         5 my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_string"};
6927            
6928 1 50       6 Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_string]},
6929             Parse::RecDescent::_tracefirst($_[1]),
6930             q{_alternation_1_of_production_1_of_rule_string},
6931             $tracelevel)
6932             if defined $::RD_TRACE;
6933              
6934            
6935 1         2 my $err_at = @{$thisparser->{errors}};
  1         3  
6936              
6937 1         2 my $score;
6938             my $score_return;
6939 0         0 my $_tok;
6940 1         3 my $return = undef;
6941 1         2 my $_matched=0;
6942 1         2 my $commit=0;
6943 1         3 my @item = ();
6944 1         3 my %item = ();
6945 1   33     9 my $repeating = defined($_[2]) && $_[2];
6946 1   33     7 my $_noactions = defined($_[3]) && $_[3];
6947 1 50       6 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  1         3  
  1         7  
6948 1 50       7 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
6949 1         3 my $text;
6950 1         3 my $lastsep="";
6951 1         5 my $expectation = new Parse::RecDescent::Expectation(q{'^^'});
6952 1         12 $expectation->at($_[1]);
6953            
6954 1         5 my $thisline;
6955 1         6 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
6956              
6957            
6958              
6959 1   33     39 while (!$_matched && !$commit)
6960             {
6961            
6962 1 50       6 Parse::RecDescent::_trace(q{Trying production: ['^^' iri]},
6963             Parse::RecDescent::_tracefirst($_[1]),
6964             q{_alternation_1_of_production_1_of_rule_string},
6965             $tracelevel)
6966             if defined $::RD_TRACE;
6967 1         5 my $thisprod = $thisrule->{"prods"}[0];
6968 1         2 $text = $_[1];
6969 1         2 my $_savetext;
6970 1         5 @item = (q{_alternation_1_of_production_1_of_rule_string});
6971 1         36 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_string});
6972 1         3 my $repcount = 0;
6973              
6974              
6975 1 50       4 Parse::RecDescent::_trace(q{Trying terminal: ['^^']},
6976             Parse::RecDescent::_tracefirst($text),
6977             q{_alternation_1_of_production_1_of_rule_string},
6978             $tracelevel)
6979             if defined $::RD_TRACE;
6980 1         3 $lastsep = "";
6981 1         4 $expectation->is(q{})->at($text);
6982            
6983              
6984 1 50 33     50 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\^\^//)
  1 50       20  
6985             {
6986            
6987 0         0 $expectation->failed();
6988 0 0       0 Parse::RecDescent::_trace(qq{<>},
6989             Parse::RecDescent::_tracefirst($text))
6990             if defined $::RD_TRACE;
6991 0         0 last;
6992             }
6993 1 50       7 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
6994             . $& . q{])},
6995             Parse::RecDescent::_tracefirst($text))
6996             if defined $::RD_TRACE;
6997 1         4 push @item, $item{__STRING1__}=$&;
6998            
6999              
7000 1 50       4 Parse::RecDescent::_trace(q{Trying subrule: [iri]},
7001             Parse::RecDescent::_tracefirst($text),
7002             q{_alternation_1_of_production_1_of_rule_string},
7003             $tracelevel)
7004             if defined $::RD_TRACE;
7005 1     1   7 if (1) { no strict qw{refs};
  1         3  
  1         615  
  1         2  
7006 1         5 $expectation->is(q{iri})->at($text);
7007 1 50   1   15 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::iri($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  1         3  
7008             {
7009            
7010 0 0       0 Parse::RecDescent::_trace(q{<>},
7011             Parse::RecDescent::_tracefirst($text),
7012             q{_alternation_1_of_production_1_of_rule_string},
7013             $tracelevel)
7014             if defined $::RD_TRACE;
7015 0         0 $expectation->failed();
7016 0         0 last;
7017             }
7018 1 50       6 Parse::RecDescent::_trace(q{>>Matched subrule: [iri]<< (return value: [}
7019             . $_tok . q{]},
7020            
7021             Parse::RecDescent::_tracefirst($text),
7022             q{_alternation_1_of_production_1_of_rule_string},
7023             $tracelevel)
7024             if defined $::RD_TRACE;
7025 1         3 $item{q{iri}} = $_tok;
7026 1         2 push @item, $_tok;
7027            
7028             }
7029              
7030              
7031 1 50       5 Parse::RecDescent::_trace(q{>>Matched production: ['^^' iri]<<},
7032             Parse::RecDescent::_tracefirst($text),
7033             q{_alternation_1_of_production_1_of_rule_string},
7034             $tracelevel)
7035             if defined $::RD_TRACE;
7036 1         3 $_matched = 1;
7037 1         2 last;
7038             }
7039              
7040              
7041 1 50 33     6 unless ( $_matched || defined($score) )
7042             {
7043            
7044              
7045 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
7046 0 0       0 Parse::RecDescent::_trace(q{<>},
7047             Parse::RecDescent::_tracefirst($_[1]),
7048             q{_alternation_1_of_production_1_of_rule_string},
7049             $tracelevel)
7050             if defined $::RD_TRACE;
7051 0         0 return undef;
7052             }
7053 1 50 33     10 if (!defined($return) && defined($score))
7054             {
7055 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
7056             q{_alternation_1_of_production_1_of_rule_string},
7057             $tracelevel)
7058             if defined $::RD_TRACE;
7059 0         0 $return = $score_return;
7060             }
7061 1         3 splice @{$thisparser->{errors}}, $err_at;
  1         3  
7062 1 50       5 $return = $item[$#item] unless defined $return;
7063 1 50       5 if (defined $::RD_TRACE)
7064             {
7065 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
7066             $return . q{])}, "",
7067             q{_alternation_1_of_production_1_of_rule_string},
7068             $tracelevel);
7069 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
7070             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
7071             Parse::RecDescent::_tracefirst($text),
7072             , q{_alternation_1_of_production_1_of_rule_string},
7073             $tracelevel)
7074             }
7075 1         10 $_[1] = $text;
7076 1         11 return $return;
7077             }
7078              
7079             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
7080             sub Parse::RecDescent::TM::CTM::CParser::version_directive
7081             {
7082 0     0   0 my $thisparser = $_[0];
7083 1     1   7 use vars q{$tracelevel};
  1         8  
  1         641  
7084 0   0     0 local $tracelevel = ($tracelevel||0)+1;
7085 0         0 $ERRORS = 0;
7086 0         0 my $thisrule = $thisparser->{"rules"}{"version_directive"};
7087            
7088 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [version_directive]},
7089             Parse::RecDescent::_tracefirst($_[1]),
7090             q{version_directive},
7091             $tracelevel)
7092             if defined $::RD_TRACE;
7093              
7094            
7095 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
7096              
7097 0         0 my $score;
7098             my $score_return;
7099 0         0 my $_tok;
7100 0         0 my $return = undef;
7101 0         0 my $_matched=0;
7102 0         0 my $commit=0;
7103 0         0 my @item = ();
7104 0         0 my %item = ();
7105 0   0     0 my $repeating = defined($_[2]) && $_[2];
7106 0   0     0 my $_noactions = defined($_[3]) && $_[3];
7107 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
7108 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
7109 0         0 my $text;
7110 0         0 my $lastsep="";
7111 0         0 my $expectation = new Parse::RecDescent::Expectation(q{'#VERSION'});
7112 0         0 $expectation->at($_[1]);
7113            
7114 0         0 my $thisline;
7115 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
7116              
7117            
7118              
7119 0   0     0 while (!$_matched && !$commit)
7120             {
7121            
7122 0 0       0 Parse::RecDescent::_trace(q{Trying production: ['#VERSION' string]},
7123             Parse::RecDescent::_tracefirst($_[1]),
7124             q{version_directive},
7125             $tracelevel)
7126             if defined $::RD_TRACE;
7127 0         0 my $thisprod = $thisrule->{"prods"}[0];
7128 0         0 $text = $_[1];
7129 0         0 my $_savetext;
7130 0         0 @item = (q{version_directive});
7131 0         0 %item = (__RULE__ => q{version_directive});
7132 0         0 my $repcount = 0;
7133              
7134              
7135 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['#VERSION']},
7136             Parse::RecDescent::_tracefirst($text),
7137             q{version_directive},
7138             $tracelevel)
7139             if defined $::RD_TRACE;
7140 0         0 $lastsep = "";
7141 0         0 $expectation->is(q{})->at($text);
7142            
7143              
7144 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\#VERSION//)
  0 0       0  
7145             {
7146            
7147 0         0 $expectation->failed();
7148 0 0       0 Parse::RecDescent::_trace(qq{<>},
7149             Parse::RecDescent::_tracefirst($text))
7150             if defined $::RD_TRACE;
7151 0         0 last;
7152             }
7153 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
7154             . $& . q{])},
7155             Parse::RecDescent::_tracefirst($text))
7156             if defined $::RD_TRACE;
7157 0         0 push @item, $item{__STRING1__}=$&;
7158            
7159              
7160 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [string]},
7161             Parse::RecDescent::_tracefirst($text),
7162             q{version_directive},
7163             $tracelevel)
7164             if defined $::RD_TRACE;
7165 1     1   7 if (1) { no strict qw{refs};
  1         4  
  1         765  
  0         0  
7166 0         0 $expectation->is(q{string})->at($text);
7167 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::string($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
7168             {
7169            
7170 0 0       0 Parse::RecDescent::_trace(q{<>},
7171             Parse::RecDescent::_tracefirst($text),
7172             q{version_directive},
7173             $tracelevel)
7174             if defined $::RD_TRACE;
7175 0         0 $expectation->failed();
7176 0         0 last;
7177             }
7178 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [string]<< (return value: [}
7179             . $_tok . q{]},
7180            
7181             Parse::RecDescent::_tracefirst($text),
7182             q{version_directive},
7183             $tracelevel)
7184             if defined $::RD_TRACE;
7185 0         0 $item{q{string}} = $_tok;
7186 0         0 push @item, $_tok;
7187            
7188             }
7189              
7190 0 0       0 Parse::RecDescent::_trace(q{Trying action},
7191             Parse::RecDescent::_tracefirst($text),
7192             q{version_directive},
7193             $tracelevel)
7194             if defined $::RD_TRACE;
7195            
7196              
7197 0 0       0 $_tok = ($_noactions) ? 0 : do {
7198 0         0 my $version = $item[2];
7199 0 0       0 $log->logdie (__PACKAGE__ . ": VERSION not supported '$version'") unless $version =~ /^1\.[23]$/;
7200             };
7201 0 0       0 unless (defined $_tok)
7202             {
7203 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
7204             if defined $::RD_TRACE;
7205 0         0 last;
7206             }
7207 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
7208             . $_tok . q{])},
7209             Parse::RecDescent::_tracefirst($text))
7210             if defined $::RD_TRACE;
7211 0         0 push @item, $_tok;
7212            
7213            
7214              
7215              
7216 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['#VERSION' string]<<},
7217             Parse::RecDescent::_tracefirst($text),
7218             q{version_directive},
7219             $tracelevel)
7220             if defined $::RD_TRACE;
7221 0         0 $_matched = 1;
7222 0         0 last;
7223             }
7224              
7225              
7226 0 0 0     0 unless ( $_matched || defined($score) )
7227             {
7228            
7229              
7230 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
7231 0 0       0 Parse::RecDescent::_trace(q{<>},
7232             Parse::RecDescent::_tracefirst($_[1]),
7233             q{version_directive},
7234             $tracelevel)
7235             if defined $::RD_TRACE;
7236 0         0 return undef;
7237             }
7238 0 0 0     0 if (!defined($return) && defined($score))
7239             {
7240 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
7241             q{version_directive},
7242             $tracelevel)
7243             if defined $::RD_TRACE;
7244 0         0 $return = $score_return;
7245             }
7246 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
7247 0 0       0 $return = $item[$#item] unless defined $return;
7248 0 0       0 if (defined $::RD_TRACE)
7249             {
7250 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
7251             $return . q{])}, "",
7252             q{version_directive},
7253             $tracelevel);
7254 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
7255             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
7256             Parse::RecDescent::_tracefirst($text),
7257             , q{version_directive},
7258             $tracelevel)
7259             }
7260 0         0 $_[1] = $text;
7261 0         0 return $return;
7262             }
7263              
7264             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
7265             sub Parse::RecDescent::TM::CTM::CParser::indicator
7266             {
7267 0     0   0 my $thisparser = $_[0];
7268 1     1   7 use vars q{$tracelevel};
  1         2  
  1         640  
7269 0   0     0 local $tracelevel = ($tracelevel||0)+1;
7270 0         0 $ERRORS = 0;
7271 0         0 my $thisrule = $thisparser->{"rules"}{"indicator"};
7272            
7273 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [indicator]},
7274             Parse::RecDescent::_tracefirst($_[1]),
7275             q{indicator},
7276             $tracelevel)
7277             if defined $::RD_TRACE;
7278              
7279            
7280 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
7281              
7282 0         0 my $score;
7283             my $score_return;
7284 0         0 my $_tok;
7285 0         0 my $return = undef;
7286 0         0 my $_matched=0;
7287 0         0 my $commit=0;
7288 0         0 my @item = ();
7289 0         0 my %item = ();
7290 0   0     0 my $repeating = defined($_[2]) && $_[2];
7291 0   0     0 my $_noactions = defined($_[3]) && $_[3];
7292 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
7293 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
7294 0         0 my $text;
7295 0         0 my $lastsep="";
7296 0         0 my $expectation = new Parse::RecDescent::Expectation(q{'@'});
7297 0         0 $expectation->at($_[1]);
7298            
7299 0         0 my $thisline;
7300 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
7301              
7302            
7303              
7304 0   0     0 while (!$_matched && !$commit)
7305             {
7306            
7307 0 0       0 Parse::RecDescent::_trace(q{Trying production: ['@' uri]},
7308             Parse::RecDescent::_tracefirst($_[1]),
7309             q{indicator},
7310             $tracelevel)
7311             if defined $::RD_TRACE;
7312 0         0 my $thisprod = $thisrule->{"prods"}[0];
7313 0         0 $text = $_[1];
7314 0         0 my $_savetext;
7315 0         0 @item = (q{indicator});
7316 0         0 %item = (__RULE__ => q{indicator});
7317 0         0 my $repcount = 0;
7318              
7319              
7320 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['@']},
7321             Parse::RecDescent::_tracefirst($text),
7322             q{indicator},
7323             $tracelevel)
7324             if defined $::RD_TRACE;
7325 0         0 $lastsep = "";
7326 0         0 $expectation->is(q{})->at($text);
7327            
7328              
7329 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\@//)
  0 0       0  
7330             {
7331            
7332 0         0 $expectation->failed();
7333 0 0       0 Parse::RecDescent::_trace(qq{<>},
7334             Parse::RecDescent::_tracefirst($text))
7335             if defined $::RD_TRACE;
7336 0         0 last;
7337             }
7338 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
7339             . $& . q{])},
7340             Parse::RecDescent::_tracefirst($text))
7341             if defined $::RD_TRACE;
7342 0         0 push @item, $item{__STRING1__}=$&;
7343            
7344              
7345 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [uri]},
7346             Parse::RecDescent::_tracefirst($text),
7347             q{indicator},
7348             $tracelevel)
7349             if defined $::RD_TRACE;
7350 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         886  
  0         0  
7351 0         0 $expectation->is(q{uri})->at($text);
7352 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::uri($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
7353             {
7354            
7355 0 0       0 Parse::RecDescent::_trace(q{<>},
7356             Parse::RecDescent::_tracefirst($text),
7357             q{indicator},
7358             $tracelevel)
7359             if defined $::RD_TRACE;
7360 0         0 $expectation->failed();
7361 0         0 last;
7362             }
7363 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [uri]<< (return value: [}
7364             . $_tok . q{]},
7365            
7366             Parse::RecDescent::_tracefirst($text),
7367             q{indicator},
7368             $tracelevel)
7369             if defined $::RD_TRACE;
7370 0         0 $item{q{uri}} = $_tok;
7371 0         0 push @item, $_tok;
7372            
7373             }
7374              
7375 0 0       0 Parse::RecDescent::_trace(q{Trying action},
7376             Parse::RecDescent::_tracefirst($text),
7377             q{indicator},
7378             $tracelevel)
7379             if defined $::RD_TRACE;
7380            
7381              
7382 0 0       0 $_tok = ($_noactions) ? 0 : do { $return = \ $item[2]; };
  0         0  
7383 0 0       0 unless (defined $_tok)
7384             {
7385 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
7386             if defined $::RD_TRACE;
7387 0         0 last;
7388             }
7389 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
7390             . $_tok . q{])},
7391             Parse::RecDescent::_tracefirst($text))
7392             if defined $::RD_TRACE;
7393 0         0 push @item, $_tok;
7394            
7395            
7396              
7397              
7398 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['@' uri]<<},
7399             Parse::RecDescent::_tracefirst($text),
7400             q{indicator},
7401             $tracelevel)
7402             if defined $::RD_TRACE;
7403 0         0 $_matched = 1;
7404 0         0 last;
7405             }
7406              
7407              
7408 0 0 0     0 unless ( $_matched || defined($score) )
7409             {
7410            
7411              
7412 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
7413 0 0       0 Parse::RecDescent::_trace(q{<>},
7414             Parse::RecDescent::_tracefirst($_[1]),
7415             q{indicator},
7416             $tracelevel)
7417             if defined $::RD_TRACE;
7418 0         0 return undef;
7419             }
7420 0 0 0     0 if (!defined($return) && defined($score))
7421             {
7422 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
7423             q{indicator},
7424             $tracelevel)
7425             if defined $::RD_TRACE;
7426 0         0 $return = $score_return;
7427             }
7428 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
7429 0 0       0 $return = $item[$#item] unless defined $return;
7430 0 0       0 if (defined $::RD_TRACE)
7431             {
7432 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
7433             $return . q{])}, "",
7434             q{indicator},
7435             $tracelevel);
7436 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
7437             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
7438             Parse::RecDescent::_tracefirst($text),
7439             , q{indicator},
7440             $tracelevel)
7441             }
7442 0         0 $_[1] = $text;
7443 0         0 return $return;
7444             }
7445              
7446             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
7447             sub Parse::RecDescent::TM::CTM::CParser::qname
7448             {
7449 471     471   681 my $thisparser = $_[0];
7450 1     1   7 use vars q{$tracelevel};
  1         1  
  1         1536  
7451 471   50     1405 local $tracelevel = ($tracelevel||0)+1;
7452 471         568 $ERRORS = 0;
7453 471         931 my $thisrule = $thisparser->{"rules"}{"qname"};
7454            
7455 471 50       921 Parse::RecDescent::_trace(q{Trying rule: [qname]},
7456             Parse::RecDescent::_tracefirst($_[1]),
7457             q{qname},
7458             $tracelevel)
7459             if defined $::RD_TRACE;
7460              
7461            
7462 471         493 my $err_at = @{$thisparser->{errors}};
  471         816  
7463              
7464 471         570 my $score;
7465             my $score_return;
7466 0         0 my $_tok;
7467 471         483 my $return = undef;
7468 471         486 my $_matched=0;
7469 471         449 my $commit=0;
7470 471         692 my @item = ();
7471 471         626 my %item = ();
7472 471   33     1233 my $repeating = defined($_[2]) && $_[2];
7473 471   33     1156 my $_noactions = defined($_[3]) && $_[3];
7474 471 50       829 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  471         483  
  471         771  
7475 471 50       1722 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
7476 471         540 my $text;
7477 471         612 my $lastsep="";
7478 471         1303 my $expectation = new Parse::RecDescent::Expectation(q{/(\\w[\\w-]+):(\\w[\\w-]+)/});
7479 471         3908 $expectation->at($_[1]);
7480            
7481 471         1749 my $thisline;
7482 471         1805 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
7483              
7484            
7485              
7486 471   33     4376 while (!$_matched && !$commit)
7487             {
7488            
7489 471 50       849 Parse::RecDescent::_trace(q{Trying production: [/(\\w[\\w-]+):(\\w[\\w-]+)/]},
7490             Parse::RecDescent::_tracefirst($_[1]),
7491             q{qname},
7492             $tracelevel)
7493             if defined $::RD_TRACE;
7494 471         991 my $thisprod = $thisrule->{"prods"}[0];
7495 471         675 $text = $_[1];
7496 471         496 my $_savetext;
7497 471         807 @item = (q{qname});
7498 471         865 %item = (__RULE__ => q{qname});
7499 471         609 my $repcount = 0;
7500              
7501              
7502 471 50       917 Parse::RecDescent::_trace(q{Trying terminal: [/(\\w[\\w-]+):(\\w[\\w-]+)/]}, Parse::RecDescent::_tracefirst($text),
7503             q{qname},
7504             $tracelevel)
7505             if defined $::RD_TRACE;
7506 471         519 $lastsep = "";
7507 471         1302 $expectation->is(q{})->at($text);
7508            
7509              
7510 471 100 66     4721 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:(\w[\w-]+):(\w[\w-]+))//)
  471 100       4652  
7511             {
7512            
7513 456         5209 $expectation->failed();
7514 456 50       2246 Parse::RecDescent::_trace(q{<>},
7515             Parse::RecDescent::_tracefirst($text))
7516             if defined $::RD_TRACE;
7517              
7518 456         860 last;
7519             }
7520 15 50       51 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
7521             . $& . q{])},
7522             Parse::RecDescent::_tracefirst($text))
7523             if defined $::RD_TRACE;
7524 15         50 push @item, $item{__PATTERN1__}=$&;
7525            
7526              
7527 15 50       42 Parse::RecDescent::_trace(q{Trying action},
7528             Parse::RecDescent::_tracefirst($text),
7529             q{qname},
7530             $tracelevel)
7531             if defined $::RD_TRACE;
7532            
7533              
7534 15 50       38 $_tok = ($_noactions) ? 0 : do {
7535             # ^^^^^^^^^^ ^^^^^^^^^^
7536             # identifier:identifier , but wo blanks
7537 15 50       58 die "undefined prefix '$item[1]'" unless $prefixes{$1};
7538 15         70 $return = $prefixes{$1}.$2;
7539             };
7540 15 50       44 unless (defined $_tok)
7541             {
7542 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
7543             if defined $::RD_TRACE;
7544 0         0 last;
7545             }
7546 15 50       33 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
7547             . $_tok . q{])},
7548             Parse::RecDescent::_tracefirst($text))
7549             if defined $::RD_TRACE;
7550 15         43 push @item, $_tok;
7551            
7552            
7553              
7554              
7555 15 50       31 Parse::RecDescent::_trace(q{>>Matched production: [/(\\w[\\w-]+):(\\w[\\w-]+)/]<<},
7556             Parse::RecDescent::_tracefirst($text),
7557             q{qname},
7558             $tracelevel)
7559             if defined $::RD_TRACE;
7560 15         19 $_matched = 1;
7561 15         30 last;
7562             }
7563              
7564              
7565 471 100 66     2068 unless ( $_matched || defined($score) )
7566             {
7567            
7568              
7569 456         764 $_[1] = $text; # NOT SURE THIS IS NEEDED
7570 456 50       1031 Parse::RecDescent::_trace(q{<>},
7571             Parse::RecDescent::_tracefirst($_[1]),
7572             q{qname},
7573             $tracelevel)
7574             if defined $::RD_TRACE;
7575 456         3398 return undef;
7576             }
7577 15 50 33     63 if (!defined($return) && defined($score))
7578             {
7579 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
7580             q{qname},
7581             $tracelevel)
7582             if defined $::RD_TRACE;
7583 0         0 $return = $score_return;
7584             }
7585 15         20 splice @{$thisparser->{errors}}, $err_at;
  15         38  
7586 15 50       37 $return = $item[$#item] unless defined $return;
7587 15 50       30 if (defined $::RD_TRACE)
7588             {
7589 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
7590             $return . q{])}, "",
7591             q{qname},
7592             $tracelevel);
7593 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
7594             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
7595             Parse::RecDescent::_tracefirst($text),
7596             , q{qname},
7597             $tracelevel)
7598             }
7599 15         31 $_[1] = $text;
7600 15         149 return $return;
7601             }
7602              
7603             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
7604             sub Parse::RecDescent::TM::CTM::CParser::decimal
7605             {
7606 45     45   77 my $thisparser = $_[0];
7607 1     1   8 use vars q{$tracelevel};
  1         2  
  1         1077  
7608 45   50     135 local $tracelevel = ($tracelevel||0)+1;
7609 45         77 $ERRORS = 0;
7610 45         118 my $thisrule = $thisparser->{"rules"}{"decimal"};
7611            
7612 45 50       93 Parse::RecDescent::_trace(q{Trying rule: [decimal]},
7613             Parse::RecDescent::_tracefirst($_[1]),
7614             q{decimal},
7615             $tracelevel)
7616             if defined $::RD_TRACE;
7617              
7618            
7619 45         82 my $err_at = @{$thisparser->{errors}};
  45         118  
7620              
7621 45         69 my $score;
7622             my $score_return;
7623 0         0 my $_tok;
7624 45         81 my $return = undef;
7625 45         54 my $_matched=0;
7626 45         61 my $commit=0;
7627 45         90 my @item = ();
7628 45         91 my %item = ();
7629 45   33     150 my $repeating = defined($_[2]) && $_[2];
7630 45   33     147 my $_noactions = defined($_[3]) && $_[3];
7631 45 50       123 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  45         50  
  45         92  
7632 45 50       176 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
7633 45         57 my $text;
7634 45         92 my $lastsep="";
7635 45         150 my $expectation = new Parse::RecDescent::Expectation(q{/-?\\d+\\.\\d+/});
7636 45         352 $expectation->at($_[1]);
7637            
7638 45         180 my $thisline;
7639 45         169 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
7640              
7641            
7642              
7643 45   33     468 while (!$_matched && !$commit)
7644             {
7645            
7646 45 50       95 Parse::RecDescent::_trace(q{Trying production: [/-?\\d+\\.\\d+/]},
7647             Parse::RecDescent::_tracefirst($_[1]),
7648             q{decimal},
7649             $tracelevel)
7650             if defined $::RD_TRACE;
7651 45         125 my $thisprod = $thisrule->{"prods"}[0];
7652 45         67 $text = $_[1];
7653 45         58 my $_savetext;
7654 45         108 @item = (q{decimal});
7655 45         110 %item = (__RULE__ => q{decimal});
7656 45         57 my $repcount = 0;
7657              
7658              
7659 45 50       95 Parse::RecDescent::_trace(q{Trying terminal: [/-?\\d+\\.\\d+/]}, Parse::RecDescent::_tracefirst($text),
7660             q{decimal},
7661             $tracelevel)
7662             if defined $::RD_TRACE;
7663 45         83 $lastsep = "";
7664 45         150 $expectation->is(q{})->at($text);
7665            
7666              
7667 45 100 33     513 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:-?\d+\.\d+)//)
  45 50       1236  
7668             {
7669            
7670 45         196 $expectation->failed();
7671 45 50       191 Parse::RecDescent::_trace(q{<>},
7672             Parse::RecDescent::_tracefirst($text))
7673             if defined $::RD_TRACE;
7674              
7675 45         98 last;
7676             }
7677 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
7678             . $& . q{])},
7679             Parse::RecDescent::_tracefirst($text))
7680             if defined $::RD_TRACE;
7681 0         0 push @item, $item{__PATTERN1__}=$&;
7682            
7683              
7684              
7685 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [/-?\\d+\\.\\d+/]<<},
7686             Parse::RecDescent::_tracefirst($text),
7687             q{decimal},
7688             $tracelevel)
7689             if defined $::RD_TRACE;
7690 0         0 $_matched = 1;
7691 0         0 last;
7692             }
7693              
7694              
7695 45 50 33     246 unless ( $_matched || defined($score) )
7696             {
7697            
7698              
7699 45         71 $_[1] = $text; # NOT SURE THIS IS NEEDED
7700 45 50       88 Parse::RecDescent::_trace(q{<>},
7701             Parse::RecDescent::_tracefirst($_[1]),
7702             q{decimal},
7703             $tracelevel)
7704             if defined $::RD_TRACE;
7705 45         335 return undef;
7706             }
7707 0 0 0     0 if (!defined($return) && defined($score))
7708             {
7709 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
7710             q{decimal},
7711             $tracelevel)
7712             if defined $::RD_TRACE;
7713 0         0 $return = $score_return;
7714             }
7715 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
7716 0 0       0 $return = $item[$#item] unless defined $return;
7717 0 0       0 if (defined $::RD_TRACE)
7718             {
7719 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
7720             $return . q{])}, "",
7721             q{decimal},
7722             $tracelevel);
7723 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
7724             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
7725             Parse::RecDescent::_tracefirst($text),
7726             , q{decimal},
7727             $tracelevel)
7728             }
7729 0         0 $_[1] = $text;
7730 0         0 return $return;
7731             }
7732              
7733             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
7734             sub Parse::RecDescent::TM::CTM::CParser::basesortdispname
7735             {
7736 0     0   0 my $thisparser = $_[0];
7737 1     1   8 use vars q{$tracelevel};
  1         3  
  1         511  
7738 0   0     0 local $tracelevel = ($tracelevel||0)+1;
7739 0         0 $ERRORS = 0;
7740 0         0 my $thisrule = $thisparser->{"rules"}{"basesortdispname"};
7741            
7742 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [basesortdispname]},
7743             Parse::RecDescent::_tracefirst($_[1]),
7744             q{basesortdispname},
7745             $tracelevel)
7746             if defined $::RD_TRACE;
7747              
7748            
7749 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
7750              
7751 0         0 my $score;
7752             my $score_return;
7753 0         0 my $_tok;
7754 0         0 my $return = undef;
7755 0         0 my $_matched=0;
7756 0         0 my $commit=0;
7757 0         0 my @item = ();
7758 0         0 my %item = ();
7759 0   0     0 my $repeating = defined($_[2]) && $_[2];
7760 0   0     0 my $_noactions = defined($_[3]) && $_[3];
7761 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
7762 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
7763 0         0 my $text;
7764 0         0 my $lastsep="";
7765 0         0 my $expectation = new Parse::RecDescent::Expectation(q{});
7766 0         0 $expectation->at($_[1]);
7767            
7768 0         0 my $thisline;
7769 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
7770              
7771            
7772              
7773 0   0     0 while (!$_matched && !$commit)
7774             {
7775            
7776 0 0       0 Parse::RecDescent::_trace(q{Trying production: []},
7777             Parse::RecDescent::_tracefirst($_[1]),
7778             q{basesortdispname},
7779             $tracelevel)
7780             if defined $::RD_TRACE;
7781 0         0 my $thisprod = $thisrule->{"prods"}[0];
7782 0         0 $text = $_[1];
7783 0         0 my $_savetext;
7784 0         0 @item = (q{basesortdispname});
7785 0         0 %item = (__RULE__ => q{basesortdispname});
7786 0         0 my $repcount = 0;
7787              
7788              
7789 0 0       0 Parse::RecDescent::_trace(q{Trying operator: []},
7790             Parse::RecDescent::_tracefirst($text),
7791             q{basesortdispname},
7792             $tracelevel)
7793             if defined $::RD_TRACE;
7794 0         0 $expectation->is(q{})->at($text);
7795              
7796 0         0 $_tok = undef;
7797 0         0 OPLOOP: while (1)
7798             {
7799 0         0 $repcount = 0;
7800 0         0 my @item;
7801            
7802             # MATCH LEFTARG
7803            
7804 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [basename]},
7805             Parse::RecDescent::_tracefirst($text),
7806             q{basesortdispname},
7807             $tracelevel)
7808             if defined $::RD_TRACE;
7809 1     1   6 if (1) { no strict qw{refs};
  1         3  
  1         479  
  0         0  
7810 0         0 $expectation->is(q{basename})->at($text);
7811 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::basename($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
7812             {
7813            
7814 0 0       0 Parse::RecDescent::_trace(q{<>},
7815             Parse::RecDescent::_tracefirst($text),
7816             q{basesortdispname},
7817             $tracelevel)
7818             if defined $::RD_TRACE;
7819 0         0 $expectation->failed();
7820 0         0 last;
7821             }
7822 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [basename]<< (return value: [}
7823             . $_tok . q{]},
7824            
7825             Parse::RecDescent::_tracefirst($text),
7826             q{basesortdispname},
7827             $tracelevel)
7828             if defined $::RD_TRACE;
7829 0         0 $item{q{basename}} = $_tok;
7830 0         0 push @item, $_tok;
7831            
7832             }
7833              
7834              
7835 0         0 $repcount++;
7836              
7837 0         0 my $savetext = $text;
7838 0         0 my $backtrack;
7839              
7840             # MATCH (OP RIGHTARG)(s)
7841 0         0 while ($repcount < 100000000)
7842             {
7843 0         0 $backtrack = 0;
7844            
7845 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [';']},
7846             Parse::RecDescent::_tracefirst($text),
7847             q{basesortdispname},
7848             $tracelevel)
7849             if defined $::RD_TRACE;
7850 0         0 $lastsep = "";
7851 0         0 $expectation->is(q{';'})->at($text);
7852            
7853              
7854 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\;//)
  0 0       0  
7855             {
7856            
7857 0         0 $expectation->failed();
7858 0 0       0 Parse::RecDescent::_trace(qq{<>},
7859             Parse::RecDescent::_tracefirst($text))
7860             if defined $::RD_TRACE;
7861 0         0 last;
7862             }
7863 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
7864             . $& . q{])},
7865             Parse::RecDescent::_tracefirst($text))
7866             if defined $::RD_TRACE;
7867 0         0 push @item, $item{__STRING1__}=$&;
7868            
7869              
7870 0         0 pop @item;
7871            
7872            
7873 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [basename]},
7874             Parse::RecDescent::_tracefirst($text),
7875             q{basesortdispname},
7876             $tracelevel)
7877             if defined $::RD_TRACE;
7878 1     1   7 if (1) { no strict qw{refs};
  1         3  
  1         1788  
  0         0  
7879 0         0 $expectation->is(q{basename})->at($text);
7880 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::basename($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
7881             {
7882            
7883 0 0       0 Parse::RecDescent::_trace(q{<>},
7884             Parse::RecDescent::_tracefirst($text),
7885             q{basesortdispname},
7886             $tracelevel)
7887             if defined $::RD_TRACE;
7888 0         0 $expectation->failed();
7889 0         0 last;
7890             }
7891 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [basename]<< (return value: [}
7892             . $_tok . q{]},
7893            
7894             Parse::RecDescent::_tracefirst($text),
7895             q{basesortdispname},
7896             $tracelevel)
7897             if defined $::RD_TRACE;
7898 0         0 $item{q{basename}} = $_tok;
7899 0         0 push @item, $_tok;
7900            
7901             }
7902              
7903 0         0 $savetext = $text;
7904 0         0 $repcount++;
7905             }
7906 0         0 $text = $savetext;
7907 0 0       0 pop @item if $backtrack;
7908              
7909 0 0       0 unless (@item) { undef $_tok; last }
  0         0  
  0         0  
7910 0         0 $_tok = [ @item ];
7911 0         0 last;
7912             }
7913              
7914 0 0       0 unless ($repcount>=1)
7915             {
7916 0 0       0 Parse::RecDescent::_trace(q{<]>>},
7917             Parse::RecDescent::_tracefirst($text),
7918             q{basesortdispname},
7919             $tracelevel)
7920             if defined $::RD_TRACE;
7921 0         0 $expectation->failed();
7922 0         0 last;
7923             }
7924 0 0       0 Parse::RecDescent::_trace(q{>>Matched operator: []<< (return value: [}
7925 0 0       0 . qq{@{$_tok||[]}} . q{]},
7926             Parse::RecDescent::_tracefirst($text),
7927             q{basesortdispname},
7928             $tracelevel)
7929             if defined $::RD_TRACE;
7930              
7931 0   0     0 push @item, $item{__DIRECTIVE1__}=$_tok||[];
7932              
7933              
7934              
7935 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: []<<},
7936             Parse::RecDescent::_tracefirst($text),
7937             q{basesortdispname},
7938             $tracelevel)
7939             if defined $::RD_TRACE;
7940 0         0 $_matched = 1;
7941 0         0 last;
7942             }
7943              
7944              
7945 0 0 0     0 unless ( $_matched || defined($score) )
7946             {
7947            
7948              
7949 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
7950 0 0       0 Parse::RecDescent::_trace(q{<>},
7951             Parse::RecDescent::_tracefirst($_[1]),
7952             q{basesortdispname},
7953             $tracelevel)
7954             if defined $::RD_TRACE;
7955 0         0 return undef;
7956             }
7957 0 0 0     0 if (!defined($return) && defined($score))
7958             {
7959 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
7960             q{basesortdispname},
7961             $tracelevel)
7962             if defined $::RD_TRACE;
7963 0         0 $return = $score_return;
7964             }
7965 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
7966 0 0       0 $return = $item[$#item] unless defined $return;
7967 0 0       0 if (defined $::RD_TRACE)
7968             {
7969 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
7970             $return . q{])}, "",
7971             q{basesortdispname},
7972             $tracelevel);
7973 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
7974             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
7975             Parse::RecDescent::_tracefirst($text),
7976             , q{basesortdispname},
7977             $tracelevel)
7978             }
7979 0         0 $_[1] = $text;
7980 0         0 return $return;
7981             }
7982              
7983             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
7984             sub Parse::RecDescent::TM::CTM::CParser::_alternation_1_of_production_1_of_rule_include_directive
7985             {
7986 1     1   2 my $thisparser = $_[0];
7987 1     1   9 use vars q{$tracelevel};
  1         1  
  1         1258  
7988 1   50     4 local $tracelevel = ($tracelevel||0)+1;
7989 1         2 $ERRORS = 0;
7990 1         4 my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_include_directive"};
7991            
7992 1 50       4 Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_include_directive]},
7993             Parse::RecDescent::_tracefirst($_[1]),
7994             q{_alternation_1_of_production_1_of_rule_include_directive},
7995             $tracelevel)
7996             if defined $::RD_TRACE;
7997              
7998            
7999 1         1 my $err_at = @{$thisparser->{errors}};
  1         2  
8000              
8001 1         3 my $score;
8002             my $score_return;
8003 0         0 my $_tok;
8004 1         2 my $return = undef;
8005 1         2 my $_matched=0;
8006 1         2 my $commit=0;
8007 1         3 my @item = ();
8008 1         1 my %item = ();
8009 1   33     7 my $repeating = defined($_[2]) && $_[2];
8010 1   33     65 my $_noactions = defined($_[3]) && $_[3];
8011 1 50       5 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  1         2  
  1         3  
8012 1 50       9 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
8013 1         1 my $text;
8014 1         3 my $lastsep="";
8015 1         5 my $expectation = new Parse::RecDescent::Expectation(q{/^inline:.*?\\n/, or iri});
8016 1         9 $expectation->at($_[1]);
8017            
8018 1         5 my $thisline;
8019 1         19 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
8020              
8021            
8022              
8023 1   33     15 while (!$_matched && !$commit)
8024             {
8025            
8026 1 50       3 Parse::RecDescent::_trace(q{Trying production: [/^inline:.*?\\n/]},
8027             Parse::RecDescent::_tracefirst($_[1]),
8028             q{_alternation_1_of_production_1_of_rule_include_directive},
8029             $tracelevel)
8030             if defined $::RD_TRACE;
8031 1         4 my $thisprod = $thisrule->{"prods"}[0];
8032 1         3 $text = $_[1];
8033 1         2 my $_savetext;
8034 1         3 @item = (q{_alternation_1_of_production_1_of_rule_include_directive});
8035 1         3 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_include_directive});
8036 1         2 my $repcount = 0;
8037              
8038              
8039 1 50       4 Parse::RecDescent::_trace(q{Trying terminal: [/^inline:.*?\\n/]}, Parse::RecDescent::_tracefirst($text),
8040             q{_alternation_1_of_production_1_of_rule_include_directive},
8041             $tracelevel)
8042             if defined $::RD_TRACE;
8043 1         2 $lastsep = "";
8044 1         6 $expectation->is(q{})->at($text);
8045            
8046              
8047 1 50 33     37 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:^inline:.*?\n)//)
  1 50       23  
8048             {
8049            
8050 0         0 $expectation->failed();
8051 0 0       0 Parse::RecDescent::_trace(q{<>},
8052             Parse::RecDescent::_tracefirst($text))
8053             if defined $::RD_TRACE;
8054              
8055 0         0 last;
8056             }
8057 1 50       6 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
8058             . $& . q{])},
8059             Parse::RecDescent::_tracefirst($text))
8060             if defined $::RD_TRACE;
8061 1         4 push @item, $item{__PATTERN1__}=$&;
8062            
8063              
8064              
8065 1 50       6 Parse::RecDescent::_trace(q{>>Matched production: [/^inline:.*?\\n/]<<},
8066             Parse::RecDescent::_tracefirst($text),
8067             q{_alternation_1_of_production_1_of_rule_include_directive},
8068             $tracelevel)
8069             if defined $::RD_TRACE;
8070 1         2 $_matched = 1;
8071 1         3 last;
8072             }
8073              
8074              
8075 1   33     5 while (!$_matched && !$commit)
8076             {
8077            
8078 0 0       0 Parse::RecDescent::_trace(q{Trying production: [iri]},
8079             Parse::RecDescent::_tracefirst($_[1]),
8080             q{_alternation_1_of_production_1_of_rule_include_directive},
8081             $tracelevel)
8082             if defined $::RD_TRACE;
8083 0         0 my $thisprod = $thisrule->{"prods"}[1];
8084 0         0 $text = $_[1];
8085 0         0 my $_savetext;
8086 0         0 @item = (q{_alternation_1_of_production_1_of_rule_include_directive});
8087 0         0 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_include_directive});
8088 0         0 my $repcount = 0;
8089              
8090              
8091 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [iri]},
8092             Parse::RecDescent::_tracefirst($text),
8093             q{_alternation_1_of_production_1_of_rule_include_directive},
8094             $tracelevel)
8095             if defined $::RD_TRACE;
8096 1     1   10 if (1) { no strict qw{refs};
  1         2  
  1         548  
  0         0  
8097 0         0 $expectation->is(q{})->at($text);
8098 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::iri($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
8099             {
8100            
8101 0 0       0 Parse::RecDescent::_trace(q{<>},
8102             Parse::RecDescent::_tracefirst($text),
8103             q{_alternation_1_of_production_1_of_rule_include_directive},
8104             $tracelevel)
8105             if defined $::RD_TRACE;
8106 0         0 $expectation->failed();
8107 0         0 last;
8108             }
8109 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [iri]<< (return value: [}
8110             . $_tok . q{]},
8111            
8112             Parse::RecDescent::_tracefirst($text),
8113             q{_alternation_1_of_production_1_of_rule_include_directive},
8114             $tracelevel)
8115             if defined $::RD_TRACE;
8116 0         0 $item{q{iri}} = $_tok;
8117 0         0 push @item, $_tok;
8118            
8119             }
8120              
8121              
8122 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [iri]<<},
8123             Parse::RecDescent::_tracefirst($text),
8124             q{_alternation_1_of_production_1_of_rule_include_directive},
8125             $tracelevel)
8126             if defined $::RD_TRACE;
8127 0         0 $_matched = 1;
8128 0         0 last;
8129             }
8130              
8131              
8132 1 50 33     6 unless ( $_matched || defined($score) )
8133             {
8134            
8135              
8136 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
8137 0 0       0 Parse::RecDescent::_trace(q{<>},
8138             Parse::RecDescent::_tracefirst($_[1]),
8139             q{_alternation_1_of_production_1_of_rule_include_directive},
8140             $tracelevel)
8141             if defined $::RD_TRACE;
8142 0         0 return undef;
8143             }
8144 1 50 33     10 if (!defined($return) && defined($score))
8145             {
8146 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
8147             q{_alternation_1_of_production_1_of_rule_include_directive},
8148             $tracelevel)
8149             if defined $::RD_TRACE;
8150 0         0 $return = $score_return;
8151             }
8152 1         2 splice @{$thisparser->{errors}}, $err_at;
  1         3  
8153 1 50       5 $return = $item[$#item] unless defined $return;
8154 1 50       4 if (defined $::RD_TRACE)
8155             {
8156 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
8157             $return . q{])}, "",
8158             q{_alternation_1_of_production_1_of_rule_include_directive},
8159             $tracelevel);
8160 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
8161             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
8162             Parse::RecDescent::_tracefirst($text),
8163             , q{_alternation_1_of_production_1_of_rule_include_directive},
8164             $tracelevel)
8165             }
8166 1         3 $_[1] = $text;
8167 1         10 return $return;
8168             }
8169              
8170             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
8171             sub Parse::RecDescent::TM::CTM::CParser::anonymous_wildcard
8172             {
8173 173     173   254 my $thisparser = $_[0];
8174 1     1   7 use vars q{$tracelevel};
  1         2  
  1         938  
8175 173   50     537 local $tracelevel = ($tracelevel||0)+1;
8176 173         279 $ERRORS = 0;
8177 173         377 my $thisrule = $thisparser->{"rules"}{"anonymous_wildcard"};
8178            
8179 173 50       403 Parse::RecDescent::_trace(q{Trying rule: [anonymous_wildcard]},
8180             Parse::RecDescent::_tracefirst($_[1]),
8181             q{anonymous_wildcard},
8182             $tracelevel)
8183             if defined $::RD_TRACE;
8184              
8185            
8186 173         192 my $err_at = @{$thisparser->{errors}};
  173         338  
8187              
8188 173         220 my $score;
8189             my $score_return;
8190 0         0 my $_tok;
8191 173         178 my $return = undef;
8192 173         214 my $_matched=0;
8193 173         208 my $commit=0;
8194 173         237 my @item = ();
8195 173         254 my %item = ();
8196 173   33     560 my $repeating = defined($_[2]) && $_[2];
8197 173   33     501 my $_noactions = defined($_[3]) && $_[3];
8198 173 50       417 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  173         187  
  173         333  
8199 173 50       656 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
8200 173         218 my $text;
8201 173         240 my $lastsep="";
8202 173         626 my $expectation = new Parse::RecDescent::Expectation(q{'?'});
8203 173         1251 $expectation->at($_[1]);
8204            
8205 173         670 my $thisline;
8206 173         727 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
8207              
8208            
8209              
8210 173   33     1609 while (!$_matched && !$commit)
8211             {
8212            
8213 173 50       394 Parse::RecDescent::_trace(q{Trying production: ['?']},
8214             Parse::RecDescent::_tracefirst($_[1]),
8215             q{anonymous_wildcard},
8216             $tracelevel)
8217             if defined $::RD_TRACE;
8218 173         458 my $thisprod = $thisrule->{"prods"}[0];
8219 173         241 $text = $_[1];
8220 173         213 my $_savetext;
8221 173         371 @item = (q{anonymous_wildcard});
8222 173         325 %item = (__RULE__ => q{anonymous_wildcard});
8223 173         203 my $repcount = 0;
8224              
8225              
8226 173 50       360 Parse::RecDescent::_trace(q{Trying terminal: ['?']},
8227             Parse::RecDescent::_tracefirst($text),
8228             q{anonymous_wildcard},
8229             $tracelevel)
8230             if defined $::RD_TRACE;
8231 173         293 $lastsep = "";
8232 173         481 $expectation->is(q{})->at($text);
8233            
8234              
8235 173 100 66     1793 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\?//)
  173 100       1727  
8236             {
8237            
8238 171         453 $expectation->failed();
8239 171 50       705 Parse::RecDescent::_trace(qq{<>},
8240             Parse::RecDescent::_tracefirst($text))
8241             if defined $::RD_TRACE;
8242 171         356 last;
8243             }
8244 2 50       8 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
8245             . $& . q{])},
8246             Parse::RecDescent::_tracefirst($text))
8247             if defined $::RD_TRACE;
8248 2         9 push @item, $item{__STRING1__}=$&;
8249            
8250              
8251 2 50       6 Parse::RecDescent::_trace(q{Trying action},
8252             Parse::RecDescent::_tracefirst($text),
8253             q{anonymous_wildcard},
8254             $tracelevel)
8255             if defined $::RD_TRACE;
8256            
8257              
8258 2 50       6 $_tok = ($_noactions) ? 0 : do { $return = $store->internalize (sprintf "uuid-%010d", $TM::toplet_ctr++); };
  2         30  
8259 2 50       9 unless (defined $_tok)
8260             {
8261 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
8262             if defined $::RD_TRACE;
8263 0         0 last;
8264             }
8265 2 50       7 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
8266             . $_tok . q{])},
8267             Parse::RecDescent::_tracefirst($text))
8268             if defined $::RD_TRACE;
8269 2         4 push @item, $_tok;
8270            
8271            
8272              
8273              
8274 2 50       6 Parse::RecDescent::_trace(q{>>Matched production: ['?']<<},
8275             Parse::RecDescent::_tracefirst($text),
8276             q{anonymous_wildcard},
8277             $tracelevel)
8278             if defined $::RD_TRACE;
8279 2         2 $_matched = 1;
8280 2         5 last;
8281             }
8282              
8283              
8284 173 100 66     950 unless ( $_matched || defined($score) )
8285             {
8286            
8287              
8288 171         339 $_[1] = $text; # NOT SURE THIS IS NEEDED
8289 171 50       361 Parse::RecDescent::_trace(q{<>},
8290             Parse::RecDescent::_tracefirst($_[1]),
8291             q{anonymous_wildcard},
8292             $tracelevel)
8293             if defined $::RD_TRACE;
8294 171         1200 return undef;
8295             }
8296 2 50 33     9 if (!defined($return) && defined($score))
8297             {
8298 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
8299             q{anonymous_wildcard},
8300             $tracelevel)
8301             if defined $::RD_TRACE;
8302 0         0 $return = $score_return;
8303             }
8304 2         3 splice @{$thisparser->{errors}}, $err_at;
  2         6  
8305 2 50       6 $return = $item[$#item] unless defined $return;
8306 2 50       6 if (defined $::RD_TRACE)
8307             {
8308 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
8309             $return . q{])}, "",
8310             q{anonymous_wildcard},
8311             $tracelevel);
8312 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
8313             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
8314             Parse::RecDescent::_tracefirst($text),
8315             , q{anonymous_wildcard},
8316             $tracelevel)
8317             }
8318 2         18 $_[1] = $text;
8319 2         17 return $return;
8320             }
8321              
8322             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
8323             sub Parse::RecDescent::TM::CTM::CParser::_alternation_1_of_production_1_of_rule_topic_tail
8324             {
8325 143     143   220 my $thisparser = $_[0];
8326 1     1   5 use vars q{$tracelevel};
  1         2  
  1         459  
8327 143   50     394 local $tracelevel = ($tracelevel||0)+1;
8328 143         206 $ERRORS = 0;
8329 143         310 my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_topic_tail"};
8330            
8331 143 50       338 Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_topic_tail]},
8332             Parse::RecDescent::_tracefirst($_[1]),
8333             q{_alternation_1_of_production_1_of_rule_topic_tail},
8334             $tracelevel)
8335             if defined $::RD_TRACE;
8336              
8337            
8338 143         213 my $err_at = @{$thisparser->{errors}};
  143         245  
8339              
8340 143         216 my $score;
8341             my $score_return;
8342 0         0 my $_tok;
8343 143         170 my $return = undef;
8344 143         153 my $_matched=0;
8345 143         159 my $commit=0;
8346 143         223 my @item = ();
8347 143         214 my %item = ();
8348 143   33     482 my $repeating = defined($_[2]) && $_[2];
8349 143   33     430 my $_noactions = defined($_[3]) && $_[3];
8350 143 50       298 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  143         151  
  143         266  
8351 143 50       504 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
8352 143         177 my $text;
8353 143         289 my $lastsep="";
8354 143         449 my $expectation = new Parse::RecDescent::Expectation(q{instance_of, or kind_of, or topic_template_invocation, or subject_identifier, or subject_locator, or assignment});
8355 143         1050 $expectation->at($_[1]);
8356            
8357 143         536 my $thisline;
8358 143         537 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
8359              
8360            
8361              
8362 143   33     1406 while (!$_matched && !$commit)
8363             {
8364            
8365 143 50       356 Parse::RecDescent::_trace(q{Trying production: [instance_of]},
8366             Parse::RecDescent::_tracefirst($_[1]),
8367             q{_alternation_1_of_production_1_of_rule_topic_tail},
8368             $tracelevel)
8369             if defined $::RD_TRACE;
8370 143         366 my $thisprod = $thisrule->{"prods"}[0];
8371 143         228 $text = $_[1];
8372 143         155 my $_savetext;
8373 143         289 @item = (q{_alternation_1_of_production_1_of_rule_topic_tail});
8374 143         314 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_topic_tail});
8375 143         211 my $repcount = 0;
8376              
8377              
8378 143 50       343 Parse::RecDescent::_trace(q{Trying subrule: [instance_of]},
8379             Parse::RecDescent::_tracefirst($text),
8380             q{_alternation_1_of_production_1_of_rule_topic_tail},
8381             $tracelevel)
8382             if defined $::RD_TRACE;
8383 1     1   6 if (1) { no strict qw{refs};
  1         3  
  1         361  
  143         164  
8384 143         398 $expectation->is(q{})->at($text);
8385 143 100   143   1476 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::instance_of($thisparser,$text,$repeating,$_noactions,sub { return [$arg[0]] })))
  143         439  
8386             {
8387            
8388 131 50       443 Parse::RecDescent::_trace(q{<>},
8389             Parse::RecDescent::_tracefirst($text),
8390             q{_alternation_1_of_production_1_of_rule_topic_tail},
8391             $tracelevel)
8392             if defined $::RD_TRACE;
8393 131         420 $expectation->failed();
8394 131         483 last;
8395             }
8396 12 50       58 Parse::RecDescent::_trace(q{>>Matched subrule: [instance_of]<< (return value: [}
8397             . $_tok . q{]},
8398            
8399             Parse::RecDescent::_tracefirst($text),
8400             q{_alternation_1_of_production_1_of_rule_topic_tail},
8401             $tracelevel)
8402             if defined $::RD_TRACE;
8403 12         32 $item{q{instance_of}} = $_tok;
8404 12         26 push @item, $_tok;
8405            
8406             }
8407              
8408              
8409 12 50       37 Parse::RecDescent::_trace(q{>>Matched production: [instance_of]<<},
8410             Parse::RecDescent::_tracefirst($text),
8411             q{_alternation_1_of_production_1_of_rule_topic_tail},
8412             $tracelevel)
8413             if defined $::RD_TRACE;
8414 12         20 $_matched = 1;
8415 12         24 last;
8416             }
8417              
8418              
8419 143   66     728 while (!$_matched && !$commit)
8420             {
8421            
8422 131 50       283 Parse::RecDescent::_trace(q{Trying production: [kind_of]},
8423             Parse::RecDescent::_tracefirst($_[1]),
8424             q{_alternation_1_of_production_1_of_rule_topic_tail},
8425             $tracelevel)
8426             if defined $::RD_TRACE;
8427 131         281 my $thisprod = $thisrule->{"prods"}[1];
8428 131         201 $text = $_[1];
8429 131         177 my $_savetext;
8430 131         248 @item = (q{_alternation_1_of_production_1_of_rule_topic_tail});
8431 131         279 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_topic_tail});
8432 131         167 my $repcount = 0;
8433              
8434              
8435 131 50       308 Parse::RecDescent::_trace(q{Trying subrule: [kind_of]},
8436             Parse::RecDescent::_tracefirst($text),
8437             q{_alternation_1_of_production_1_of_rule_topic_tail},
8438             $tracelevel)
8439             if defined $::RD_TRACE;
8440 1     1   6 if (1) { no strict qw{refs};
  1         3  
  1         456  
  131         128  
8441 131         345 $expectation->is(q{})->at($text);
8442 131 100   131   1466 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::kind_of($thisparser,$text,$repeating,$_noactions,sub { return [$arg[0]] })))
  131         407  
8443             {
8444            
8445 129 50       329 Parse::RecDescent::_trace(q{<>},
8446             Parse::RecDescent::_tracefirst($text),
8447             q{_alternation_1_of_production_1_of_rule_topic_tail},
8448             $tracelevel)
8449             if defined $::RD_TRACE;
8450 129         397 $expectation->failed();
8451 129         498 last;
8452             }
8453 2 50       11 Parse::RecDescent::_trace(q{>>Matched subrule: [kind_of]<< (return value: [}
8454             . $_tok . q{]},
8455            
8456             Parse::RecDescent::_tracefirst($text),
8457             q{_alternation_1_of_production_1_of_rule_topic_tail},
8458             $tracelevel)
8459             if defined $::RD_TRACE;
8460 2         5 $item{q{kind_of}} = $_tok;
8461 2         4 push @item, $_tok;
8462            
8463             }
8464              
8465              
8466 2 50       9 Parse::RecDescent::_trace(q{>>Matched production: [kind_of]<<},
8467             Parse::RecDescent::_tracefirst($text),
8468             q{_alternation_1_of_production_1_of_rule_topic_tail},
8469             $tracelevel)
8470             if defined $::RD_TRACE;
8471 2         4 $_matched = 1;
8472 2         4 last;
8473             }
8474              
8475              
8476 143   66     822 while (!$_matched && !$commit)
8477             {
8478            
8479 129 50       279 Parse::RecDescent::_trace(q{Trying production: [topic_template_invocation]},
8480             Parse::RecDescent::_tracefirst($_[1]),
8481             q{_alternation_1_of_production_1_of_rule_topic_tail},
8482             $tracelevel)
8483             if defined $::RD_TRACE;
8484 129         336 my $thisprod = $thisrule->{"prods"}[2];
8485 129         175 $text = $_[1];
8486 129         177 my $_savetext;
8487 129         276 @item = (q{_alternation_1_of_production_1_of_rule_topic_tail});
8488 129         340 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_topic_tail});
8489 129         158 my $repcount = 0;
8490              
8491              
8492 129 50       270 Parse::RecDescent::_trace(q{Trying subrule: [topic_template_invocation]},
8493             Parse::RecDescent::_tracefirst($text),
8494             q{_alternation_1_of_production_1_of_rule_topic_tail},
8495             $tracelevel)
8496             if defined $::RD_TRACE;
8497 1     1   7 if (1) { no strict qw{refs};
  1         2  
  1         438  
  129         143  
8498 129         362 $expectation->is(q{})->at($text);
8499 129 100   129   1478 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::topic_template_invocation($thisparser,$text,$repeating,$_noactions,sub { return [$arg[0]] })))
  129         423  
8500             {
8501            
8502 126 50       291 Parse::RecDescent::_trace(q{<>},
8503             Parse::RecDescent::_tracefirst($text),
8504             q{_alternation_1_of_production_1_of_rule_topic_tail},
8505             $tracelevel)
8506             if defined $::RD_TRACE;
8507 126         441 $expectation->failed();
8508 126         637 last;
8509             }
8510 3 50       16 Parse::RecDescent::_trace(q{>>Matched subrule: [topic_template_invocation]<< (return value: [}
8511             . $_tok . q{]},
8512            
8513             Parse::RecDescent::_tracefirst($text),
8514             q{_alternation_1_of_production_1_of_rule_topic_tail},
8515             $tracelevel)
8516             if defined $::RD_TRACE;
8517 3         10 $item{q{topic_template_invocation}} = $_tok;
8518 3         6 push @item, $_tok;
8519            
8520             }
8521              
8522              
8523 3 50       9 Parse::RecDescent::_trace(q{>>Matched production: [topic_template_invocation]<<},
8524             Parse::RecDescent::_tracefirst($text),
8525             q{_alternation_1_of_production_1_of_rule_topic_tail},
8526             $tracelevel)
8527             if defined $::RD_TRACE;
8528 3         6 $_matched = 1;
8529 3         6 last;
8530             }
8531              
8532              
8533 143   66     686 while (!$_matched && !$commit)
8534             {
8535            
8536 126 50       280 Parse::RecDescent::_trace(q{Trying production: [subject_identifier]},
8537             Parse::RecDescent::_tracefirst($_[1]),
8538             q{_alternation_1_of_production_1_of_rule_topic_tail},
8539             $tracelevel)
8540             if defined $::RD_TRACE;
8541 126         329 my $thisprod = $thisrule->{"prods"}[3];
8542 126         195 $text = $_[1];
8543 126         162 my $_savetext;
8544 126         348 @item = (q{_alternation_1_of_production_1_of_rule_topic_tail});
8545 126         345 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_topic_tail});
8546 126         174 my $repcount = 0;
8547              
8548              
8549 126 50       323 Parse::RecDescent::_trace(q{Trying subrule: [subject_identifier]},
8550             Parse::RecDescent::_tracefirst($text),
8551             q{_alternation_1_of_production_1_of_rule_topic_tail},
8552             $tracelevel)
8553             if defined $::RD_TRACE;
8554 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         970  
  126         210  
8555 126         390 $expectation->is(q{})->at($text);
8556 126 100   126   1244 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::subject_identifier($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  126         361  
8557             {
8558            
8559 123 50       269 Parse::RecDescent::_trace(q{<>},
8560             Parse::RecDescent::_tracefirst($text),
8561             q{_alternation_1_of_production_1_of_rule_topic_tail},
8562             $tracelevel)
8563             if defined $::RD_TRACE;
8564 123         469 $expectation->failed();
8565 123         444 last;
8566             }
8567 3 50       16 Parse::RecDescent::_trace(q{>>Matched subrule: [subject_identifier]<< (return value: [}
8568             . $_tok . q{]},
8569            
8570             Parse::RecDescent::_tracefirst($text),
8571             q{_alternation_1_of_production_1_of_rule_topic_tail},
8572             $tracelevel)
8573             if defined $::RD_TRACE;
8574 3         9 $item{q{subject_identifier}} = $_tok;
8575 3         8 push @item, $_tok;
8576            
8577             }
8578              
8579 3 50       12 Parse::RecDescent::_trace(q{Trying action},
8580             Parse::RecDescent::_tracefirst($text),
8581             q{_alternation_1_of_production_1_of_rule_topic_tail},
8582             $tracelevel)
8583             if defined $::RD_TRACE;
8584            
8585              
8586 3 100       11 $_tok = ($_noactions) ? 0 : do { $return = undef if $text =~ /^\s*:/s };
  3 50       29  
8587 3 100       12 unless (defined $_tok)
8588             {
8589 2 50       5 Parse::RecDescent::_trace(q{<> (return value: [undef])})
8590             if defined $::RD_TRACE;
8591 2         7 last;
8592             }
8593 1 50       4 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
8594             . $_tok . q{])},
8595             Parse::RecDescent::_tracefirst($text))
8596             if defined $::RD_TRACE;
8597 1         4 push @item, $_tok;
8598 1         4 $item{__ACTION1__}=$_tok;
8599            
8600              
8601 1 50       5 Parse::RecDescent::_trace(q{Trying action},
8602             Parse::RecDescent::_tracefirst($text),
8603             q{_alternation_1_of_production_1_of_rule_topic_tail},
8604             $tracelevel)
8605             if defined $::RD_TRACE;
8606            
8607              
8608 1 50       4 $_tok = ($_noactions) ? 0 : do { $store->internalize ($arg[0], $item[1]); };
  1         7  
8609 1 50       5 unless (defined $_tok)
8610             {
8611 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
8612             if defined $::RD_TRACE;
8613 0         0 last;
8614             }
8615 1 50       4 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
8616             . $_tok . q{])},
8617             Parse::RecDescent::_tracefirst($text))
8618             if defined $::RD_TRACE;
8619 1         3 push @item, $_tok;
8620 1         3 $item{__ACTION2__}=$_tok;
8621            
8622              
8623              
8624 1 50       6 Parse::RecDescent::_trace(q{>>Matched production: [subject_identifier]<<},
8625             Parse::RecDescent::_tracefirst($text),
8626             q{_alternation_1_of_production_1_of_rule_topic_tail},
8627             $tracelevel)
8628             if defined $::RD_TRACE;
8629 1         3 $_matched = 1;
8630 1         2 last;
8631             }
8632              
8633              
8634 143   66     820 while (!$_matched && !$commit)
8635             {
8636            
8637 125 50       357 Parse::RecDescent::_trace(q{Trying production: [subject_locator]},
8638             Parse::RecDescent::_tracefirst($_[1]),
8639             q{_alternation_1_of_production_1_of_rule_topic_tail},
8640             $tracelevel)
8641             if defined $::RD_TRACE;
8642 125         314 my $thisprod = $thisrule->{"prods"}[4];
8643 125         208 $text = $_[1];
8644 125         187 my $_savetext;
8645 125         300 @item = (q{_alternation_1_of_production_1_of_rule_topic_tail});
8646 125         308 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_topic_tail});
8647 125         175 my $repcount = 0;
8648              
8649              
8650 125 50       295 Parse::RecDescent::_trace(q{Trying subrule: [subject_locator]},
8651             Parse::RecDescent::_tracefirst($text),
8652             q{_alternation_1_of_production_1_of_rule_topic_tail},
8653             $tracelevel)
8654             if defined $::RD_TRACE;
8655 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         891  
  125         181  
8656 125         381 $expectation->is(q{})->at($text);
8657 125 100   125   1519 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::subject_locator($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  125         304  
8658             {
8659            
8660 118 50       242 Parse::RecDescent::_trace(q{<>},
8661             Parse::RecDescent::_tracefirst($text),
8662             q{_alternation_1_of_production_1_of_rule_topic_tail},
8663             $tracelevel)
8664             if defined $::RD_TRACE;
8665 118         347 $expectation->failed();
8666 118         449 last;
8667             }
8668 7 50       34 Parse::RecDescent::_trace(q{>>Matched subrule: [subject_locator]<< (return value: [}
8669             . $_tok . q{]},
8670            
8671             Parse::RecDescent::_tracefirst($text),
8672             q{_alternation_1_of_production_1_of_rule_topic_tail},
8673             $tracelevel)
8674             if defined $::RD_TRACE;
8675 7         18 $item{q{subject_locator}} = $_tok;
8676 7         13 push @item, $_tok;
8677            
8678             }
8679              
8680 7 50       21 Parse::RecDescent::_trace(q{Trying action},
8681             Parse::RecDescent::_tracefirst($text),
8682             q{_alternation_1_of_production_1_of_rule_topic_tail},
8683             $tracelevel)
8684             if defined $::RD_TRACE;
8685            
8686              
8687 7 50       17 $_tok = ($_noactions) ? 0 : do { $return = undef if $text =~ /^\s*:/s };
  7 50       41  
8688 7 50       27 unless (defined $_tok)
8689             {
8690 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
8691             if defined $::RD_TRACE;
8692 0         0 last;
8693             }
8694 7 50       18 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
8695             . $_tok . q{])},
8696             Parse::RecDescent::_tracefirst($text))
8697             if defined $::RD_TRACE;
8698 7         16 push @item, $_tok;
8699 7         20 $item{__ACTION1__}=$_tok;
8700            
8701              
8702 7 50       17 Parse::RecDescent::_trace(q{Trying action},
8703             Parse::RecDescent::_tracefirst($text),
8704             q{_alternation_1_of_production_1_of_rule_topic_tail},
8705             $tracelevel)
8706             if defined $::RD_TRACE;
8707            
8708              
8709 7 50       17 $_tok = ($_noactions) ? 0 : do { $store->internalize ($arg[0], $item[1]); };
  7         39  
8710 7 50       23 unless (defined $_tok)
8711             {
8712 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
8713             if defined $::RD_TRACE;
8714 0         0 last;
8715             }
8716 7 50       18 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
8717             . $_tok . q{])},
8718             Parse::RecDescent::_tracefirst($text))
8719             if defined $::RD_TRACE;
8720 7         12 push @item, $_tok;
8721 7         15 $item{__ACTION2__}=$_tok;
8722            
8723              
8724              
8725 7 50       21 Parse::RecDescent::_trace(q{>>Matched production: [subject_locator]<<},
8726             Parse::RecDescent::_tracefirst($text),
8727             q{_alternation_1_of_production_1_of_rule_topic_tail},
8728             $tracelevel)
8729             if defined $::RD_TRACE;
8730 7         12 $_matched = 1;
8731 7         10 last;
8732             }
8733              
8734              
8735 143   66     737 while (!$_matched && !$commit)
8736             {
8737            
8738 118 50       324 Parse::RecDescent::_trace(q{Trying production: [assignment]},
8739             Parse::RecDescent::_tracefirst($_[1]),
8740             q{_alternation_1_of_production_1_of_rule_topic_tail},
8741             $tracelevel)
8742             if defined $::RD_TRACE;
8743 118         334 my $thisprod = $thisrule->{"prods"}[5];
8744 118         193 $text = $_[1];
8745 118         258 my $_savetext;
8746 118         280 @item = (q{_alternation_1_of_production_1_of_rule_topic_tail});
8747 118         326 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_topic_tail});
8748 118         149 my $repcount = 0;
8749              
8750              
8751 118 50       247 Parse::RecDescent::_trace(q{Trying subrule: [assignment]},
8752             Parse::RecDescent::_tracefirst($text),
8753             q{_alternation_1_of_production_1_of_rule_topic_tail},
8754             $tracelevel)
8755             if defined $::RD_TRACE;
8756 1     1   15 if (1) { no strict qw{refs};
  1         2  
  1         719  
  118         176  
8757 118         445 $expectation->is(q{})->at($text);
8758 118 100   118   1235 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::assignment($thisparser,$text,$repeating,$_noactions,sub { return [$arg[0]] })))
  118         437  
8759             {
8760            
8761 71 50       164 Parse::RecDescent::_trace(q{<>},
8762             Parse::RecDescent::_tracefirst($text),
8763             q{_alternation_1_of_production_1_of_rule_topic_tail},
8764             $tracelevel)
8765             if defined $::RD_TRACE;
8766 71         225 $expectation->failed();
8767 71         280 last;
8768             }
8769 47 50       240 Parse::RecDescent::_trace(q{>>Matched subrule: [assignment]<< (return value: [}
8770             . $_tok . q{]},
8771            
8772             Parse::RecDescent::_tracefirst($text),
8773             q{_alternation_1_of_production_1_of_rule_topic_tail},
8774             $tracelevel)
8775             if defined $::RD_TRACE;
8776 47         129 $item{q{assignment}} = $_tok;
8777 47         117 push @item, $_tok;
8778            
8779             }
8780              
8781              
8782 47 50       155 Parse::RecDescent::_trace(q{>>Matched production: [assignment]<<},
8783             Parse::RecDescent::_tracefirst($text),
8784             q{_alternation_1_of_production_1_of_rule_topic_tail},
8785             $tracelevel)
8786             if defined $::RD_TRACE;
8787 47         90 $_matched = 1;
8788 47         118 last;
8789             }
8790              
8791              
8792 143 100 66     720 unless ( $_matched || defined($score) )
8793             {
8794            
8795              
8796 71         147 $_[1] = $text; # NOT SURE THIS IS NEEDED
8797 71 50       178 Parse::RecDescent::_trace(q{<>},
8798             Parse::RecDescent::_tracefirst($_[1]),
8799             q{_alternation_1_of_production_1_of_rule_topic_tail},
8800             $tracelevel)
8801             if defined $::RD_TRACE;
8802 71         820 return undef;
8803             }
8804 72 50 33     445 if (!defined($return) && defined($score))
8805             {
8806 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
8807             q{_alternation_1_of_production_1_of_rule_topic_tail},
8808             $tracelevel)
8809             if defined $::RD_TRACE;
8810 0         0 $return = $score_return;
8811             }
8812 72         109 splice @{$thisparser->{errors}}, $err_at;
  72         163  
8813 72 50       242 $return = $item[$#item] unless defined $return;
8814 72 50       203 if (defined $::RD_TRACE)
8815             {
8816 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
8817             $return . q{])}, "",
8818             q{_alternation_1_of_production_1_of_rule_topic_tail},
8819             $tracelevel);
8820 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
8821             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
8822             Parse::RecDescent::_tracefirst($text),
8823             , q{_alternation_1_of_production_1_of_rule_topic_tail},
8824             $tracelevel)
8825             }
8826 72         130 $_[1] = $text;
8827 72         809 return $return;
8828             }
8829              
8830             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
8831             sub Parse::RecDescent::TM::CTM::CParser::literal
8832             {
8833 45     45   93 my $thisparser = $_[0];
8834 1     1   8 use vars q{$tracelevel};
  1         9  
  1         1616  
8835 45   50     139 local $tracelevel = ($tracelevel||0)+1;
8836 45         66 $ERRORS = 0;
8837 45         225 my $thisrule = $thisparser->{"rules"}{"literal"};
8838            
8839 45 50       105 Parse::RecDescent::_trace(q{Trying rule: [literal]},
8840             Parse::RecDescent::_tracefirst($_[1]),
8841             q{literal},
8842             $tracelevel)
8843             if defined $::RD_TRACE;
8844              
8845            
8846 45         52 my $err_at = @{$thisparser->{errors}};
  45         86  
8847              
8848 45         71 my $score;
8849             my $score_return;
8850 0         0 my $_tok;
8851 45         77 my $return = undef;
8852 45         63 my $_matched=0;
8853 45         45 my $commit=0;
8854 45         72 my @item = ();
8855 45         67 my %item = ();
8856 45   33     156 my $repeating = defined($_[2]) && $_[2];
8857 45   33     159 my $_noactions = defined($_[3]) && $_[3];
8858 45 50       105 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  45         57  
  45         85  
8859 45 50       189 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
8860 45         58 my $text;
8861 45         61 my $lastsep="";
8862 45         153 my $expectation = new Parse::RecDescent::Expectation(q{decimal, or integer, or boolean, or wuri, or string});
8863 45         347 $expectation->at($_[1]);
8864            
8865 45         173 my $thisline;
8866 45         197 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
8867              
8868            
8869              
8870 45   33     448 while (!$_matched && !$commit)
8871             {
8872            
8873 45 50       113 Parse::RecDescent::_trace(q{Trying production: [decimal]},
8874             Parse::RecDescent::_tracefirst($_[1]),
8875             q{literal},
8876             $tracelevel)
8877             if defined $::RD_TRACE;
8878 45         118 my $thisprod = $thisrule->{"prods"}[0];
8879 45         72 $text = $_[1];
8880 45         51 my $_savetext;
8881 45         122 @item = (q{literal});
8882 45         104 %item = (__RULE__ => q{literal});
8883 45         70 my $repcount = 0;
8884              
8885              
8886 45 50       89 Parse::RecDescent::_trace(q{Trying subrule: [decimal]},
8887             Parse::RecDescent::_tracefirst($text),
8888             q{literal},
8889             $tracelevel)
8890             if defined $::RD_TRACE;
8891 1     1   8 if (1) { no strict qw{refs};
  1         2  
  1         474  
  45         61  
8892 45         130 $expectation->is(q{})->at($text);
8893 45 50   45   498 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::decimal($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  45         119  
8894             {
8895            
8896 45 50       125 Parse::RecDescent::_trace(q{<>},
8897             Parse::RecDescent::_tracefirst($text),
8898             q{literal},
8899             $tracelevel)
8900             if defined $::RD_TRACE;
8901 45         133 $expectation->failed();
8902 45         165 last;
8903             }
8904 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [decimal]<< (return value: [}
8905             . $_tok . q{]},
8906            
8907             Parse::RecDescent::_tracefirst($text),
8908             q{literal},
8909             $tracelevel)
8910             if defined $::RD_TRACE;
8911 0         0 $item{q{decimal}} = $_tok;
8912 0         0 push @item, $_tok;
8913            
8914             }
8915              
8916 0 0       0 Parse::RecDescent::_trace(q{Trying action},
8917             Parse::RecDescent::_tracefirst($text),
8918             q{literal},
8919             $tracelevel)
8920             if defined $::RD_TRACE;
8921            
8922              
8923 0 0       0 $_tok = ($_noactions) ? 0 : do { $return = new TM::Literal ($item[1], TM::Literal->DECIMAL); };
  0         0  
8924 0 0       0 unless (defined $_tok)
8925             {
8926 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
8927             if defined $::RD_TRACE;
8928 0         0 last;
8929             }
8930 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
8931             . $_tok . q{])},
8932             Parse::RecDescent::_tracefirst($text))
8933             if defined $::RD_TRACE;
8934 0         0 push @item, $_tok;
8935            
8936            
8937              
8938              
8939 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [decimal]<<},
8940             Parse::RecDescent::_tracefirst($text),
8941             q{literal},
8942             $tracelevel)
8943             if defined $::RD_TRACE;
8944 0         0 $_matched = 1;
8945 0         0 last;
8946             }
8947              
8948              
8949 45   33     243 while (!$_matched && !$commit)
8950             {
8951            
8952 45 50       124 Parse::RecDescent::_trace(q{Trying production: [integer]},
8953             Parse::RecDescent::_tracefirst($_[1]),
8954             q{literal},
8955             $tracelevel)
8956             if defined $::RD_TRACE;
8957 45         114 my $thisprod = $thisrule->{"prods"}[1];
8958 45         70 $text = $_[1];
8959 45         72 my $_savetext;
8960 45         107 @item = (q{literal});
8961 45         101 %item = (__RULE__ => q{literal});
8962 45         101 my $repcount = 0;
8963              
8964              
8965 45 50       103 Parse::RecDescent::_trace(q{Trying subrule: [integer]},
8966             Parse::RecDescent::_tracefirst($text),
8967             q{literal},
8968             $tracelevel)
8969             if defined $::RD_TRACE;
8970 1     1   7 if (1) { no strict qw{refs};
  1         2  
  1         480  
  45         45  
8971 45         140 $expectation->is(q{})->at($text);
8972 45 100   45   501 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::integer($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  45         112  
8973             {
8974            
8975 36 50       96 Parse::RecDescent::_trace(q{<>},
8976             Parse::RecDescent::_tracefirst($text),
8977             q{literal},
8978             $tracelevel)
8979             if defined $::RD_TRACE;
8980 36         119 $expectation->failed();
8981 36         146 last;
8982             }
8983 9 50       39 Parse::RecDescent::_trace(q{>>Matched subrule: [integer]<< (return value: [}
8984             . $_tok . q{]},
8985            
8986             Parse::RecDescent::_tracefirst($text),
8987             q{literal},
8988             $tracelevel)
8989             if defined $::RD_TRACE;
8990 9         37 $item{q{integer}} = $_tok;
8991 9         23 push @item, $_tok;
8992            
8993             }
8994              
8995 9 50       21 Parse::RecDescent::_trace(q{Trying action},
8996             Parse::RecDescent::_tracefirst($text),
8997             q{literal},
8998             $tracelevel)
8999             if defined $::RD_TRACE;
9000            
9001              
9002 9 50       20 $_tok = ($_noactions) ? 0 : do { $return = new TM::Literal ($item[1], TM::Literal->INTEGER); };
  9         97  
9003 9 50       21 unless (defined $_tok)
9004             {
9005 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
9006             if defined $::RD_TRACE;
9007 0         0 last;
9008             }
9009 9 50       28 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
9010             . $_tok . q{])},
9011             Parse::RecDescent::_tracefirst($text))
9012             if defined $::RD_TRACE;
9013 9         12 push @item, $_tok;
9014            
9015            
9016              
9017              
9018 9 50       19 Parse::RecDescent::_trace(q{>>Matched production: [integer]<<},
9019             Parse::RecDescent::_tracefirst($text),
9020             q{literal},
9021             $tracelevel)
9022             if defined $::RD_TRACE;
9023 9         11 $_matched = 1;
9024 9         14 last;
9025             }
9026              
9027              
9028 45   66     232 while (!$_matched && !$commit)
9029             {
9030            
9031 36 50       74 Parse::RecDescent::_trace(q{Trying production: [boolean]},
9032             Parse::RecDescent::_tracefirst($_[1]),
9033             q{literal},
9034             $tracelevel)
9035             if defined $::RD_TRACE;
9036 36         109 my $thisprod = $thisrule->{"prods"}[2];
9037 36         69 $text = $_[1];
9038 36         41 my $_savetext;
9039 36         106 @item = (q{literal});
9040 36         89 %item = (__RULE__ => q{literal});
9041 36         52 my $repcount = 0;
9042              
9043              
9044 36 50       98 Parse::RecDescent::_trace(q{Trying subrule: [boolean]},
9045             Parse::RecDescent::_tracefirst($text),
9046             q{literal},
9047             $tracelevel)
9048             if defined $::RD_TRACE;
9049 1     1   6 if (1) { no strict qw{refs};
  1         120  
  1         637  
  36         44  
9050 36         119 $expectation->is(q{})->at($text);
9051 36 50   36   421 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::boolean($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  36         90  
9052             {
9053            
9054 36 50       81 Parse::RecDescent::_trace(q{<>},
9055             Parse::RecDescent::_tracefirst($text),
9056             q{literal},
9057             $tracelevel)
9058             if defined $::RD_TRACE;
9059 36         104 $expectation->failed();
9060 36         140 last;
9061             }
9062 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [boolean]<< (return value: [}
9063             . $_tok . q{]},
9064            
9065             Parse::RecDescent::_tracefirst($text),
9066             q{literal},
9067             $tracelevel)
9068             if defined $::RD_TRACE;
9069 0         0 $item{q{boolean}} = $_tok;
9070 0         0 push @item, $_tok;
9071            
9072             }
9073              
9074 0 0       0 Parse::RecDescent::_trace(q{Trying action},
9075             Parse::RecDescent::_tracefirst($text),
9076             q{literal},
9077             $tracelevel)
9078             if defined $::RD_TRACE;
9079            
9080              
9081 0 0       0 $_tok = ($_noactions) ? 0 : do { $return = new TM::Literal ($item[1], TM::Literal->BOOLEAN); };
  0         0  
9082 0 0       0 unless (defined $_tok)
9083             {
9084 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
9085             if defined $::RD_TRACE;
9086 0         0 last;
9087             }
9088 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
9089             . $_tok . q{])},
9090             Parse::RecDescent::_tracefirst($text))
9091             if defined $::RD_TRACE;
9092 0         0 push @item, $_tok;
9093            
9094            
9095              
9096              
9097 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [boolean]<<},
9098             Parse::RecDescent::_tracefirst($text),
9099             q{literal},
9100             $tracelevel)
9101             if defined $::RD_TRACE;
9102 0         0 $_matched = 1;
9103 0         0 last;
9104             }
9105              
9106              
9107 45   66     220 while (!$_matched && !$commit)
9108             {
9109            
9110 36 50       81 Parse::RecDescent::_trace(q{Trying production: [wuri]},
9111             Parse::RecDescent::_tracefirst($_[1]),
9112             q{literal},
9113             $tracelevel)
9114             if defined $::RD_TRACE;
9115 36         87 my $thisprod = $thisrule->{"prods"}[3];
9116 36         57 $text = $_[1];
9117 36         55 my $_savetext;
9118 36         93 @item = (q{literal});
9119 36         98 %item = (__RULE__ => q{literal});
9120 36         49 my $repcount = 0;
9121              
9122              
9123 36 50       85 Parse::RecDescent::_trace(q{Trying subrule: [wuri]},
9124             Parse::RecDescent::_tracefirst($text),
9125             q{literal},
9126             $tracelevel)
9127             if defined $::RD_TRACE;
9128 1     1   7 if (1) { no strict qw{refs};
  1         2  
  1         756  
  36         46  
9129 36         114 $expectation->is(q{})->at($text);
9130 36 50   36   425 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::wuri($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  36         105  
9131             {
9132            
9133 36 50       99 Parse::RecDescent::_trace(q{<>},
9134             Parse::RecDescent::_tracefirst($text),
9135             q{literal},
9136             $tracelevel)
9137             if defined $::RD_TRACE;
9138 36         100 $expectation->failed();
9139 36         132 last;
9140             }
9141 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [wuri]<< (return value: [}
9142             . $_tok . q{]},
9143            
9144             Parse::RecDescent::_tracefirst($text),
9145             q{literal},
9146             $tracelevel)
9147             if defined $::RD_TRACE;
9148 0         0 $item{q{wuri}} = $_tok;
9149 0         0 push @item, $_tok;
9150            
9151             }
9152              
9153 0 0       0 Parse::RecDescent::_trace(q{Trying action},
9154             Parse::RecDescent::_tracefirst($text),
9155             q{literal},
9156             $tracelevel)
9157             if defined $::RD_TRACE;
9158            
9159              
9160 0 0       0 $_tok = ($_noactions) ? 0 : do { $return = new TM::Literal ($item[1], TM::Literal->URI); };
  0         0  
9161 0 0       0 unless (defined $_tok)
9162             {
9163 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
9164             if defined $::RD_TRACE;
9165 0         0 last;
9166             }
9167 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
9168             . $_tok . q{])},
9169             Parse::RecDescent::_tracefirst($text))
9170             if defined $::RD_TRACE;
9171 0         0 push @item, $_tok;
9172            
9173            
9174              
9175              
9176 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [wuri]<<},
9177             Parse::RecDescent::_tracefirst($text),
9178             q{literal},
9179             $tracelevel)
9180             if defined $::RD_TRACE;
9181 0         0 $_matched = 1;
9182 0         0 last;
9183             }
9184              
9185              
9186 45   66     236 while (!$_matched && !$commit)
9187             {
9188            
9189 36 50       95 Parse::RecDescent::_trace(q{Trying production: [string]},
9190             Parse::RecDescent::_tracefirst($_[1]),
9191             q{literal},
9192             $tracelevel)
9193             if defined $::RD_TRACE;
9194 36         94 my $thisprod = $thisrule->{"prods"}[4];
9195 36         69 $text = $_[1];
9196 36         45 my $_savetext;
9197 36         97 @item = (q{literal});
9198 36         92 %item = (__RULE__ => q{literal});
9199 36         211 my $repcount = 0;
9200              
9201              
9202 36 50       91 Parse::RecDescent::_trace(q{Trying subrule: [string]},
9203             Parse::RecDescent::_tracefirst($text),
9204             q{literal},
9205             $tracelevel)
9206             if defined $::RD_TRACE;
9207 1     1   7 if (1) { no strict qw{refs};
  1         2  
  1         756  
  36         45  
9208 36         114 $expectation->is(q{})->at($text);
9209 36 100   36   538 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::string($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  36         107  
9210             {
9211            
9212 26 50       56 Parse::RecDescent::_trace(q{<>},
9213             Parse::RecDescent::_tracefirst($text),
9214             q{literal},
9215             $tracelevel)
9216             if defined $::RD_TRACE;
9217 26         78 $expectation->failed();
9218 26         91 last;
9219             }
9220 10 50       66 Parse::RecDescent::_trace(q{>>Matched subrule: [string]<< (return value: [}
9221             . $_tok . q{]},
9222            
9223             Parse::RecDescent::_tracefirst($text),
9224             q{literal},
9225             $tracelevel)
9226             if defined $::RD_TRACE;
9227 10         39 $item{q{string}} = $_tok;
9228 10         30 push @item, $_tok;
9229            
9230             }
9231              
9232              
9233 10 50       37 Parse::RecDescent::_trace(q{>>Matched production: [string]<<},
9234             Parse::RecDescent::_tracefirst($text),
9235             q{literal},
9236             $tracelevel)
9237             if defined $::RD_TRACE;
9238 10         21 $_matched = 1;
9239 10         22 last;
9240             }
9241              
9242              
9243 45 100 66     242 unless ( $_matched || defined($score) )
9244             {
9245            
9246              
9247 26         43 $_[1] = $text; # NOT SURE THIS IS NEEDED
9248 26 50       57 Parse::RecDescent::_trace(q{<>},
9249             Parse::RecDescent::_tracefirst($_[1]),
9250             q{literal},
9251             $tracelevel)
9252             if defined $::RD_TRACE;
9253 26         185 return undef;
9254             }
9255 19 50 66     91 if (!defined($return) && defined($score))
9256             {
9257 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
9258             q{literal},
9259             $tracelevel)
9260             if defined $::RD_TRACE;
9261 0         0 $return = $score_return;
9262             }
9263 19         23 splice @{$thisparser->{errors}}, $err_at;
  19         48  
9264 19 100       61 $return = $item[$#item] unless defined $return;
9265 19 50       44 if (defined $::RD_TRACE)
9266             {
9267 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
9268             $return . q{])}, "",
9269             q{literal},
9270             $tracelevel);
9271 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
9272             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
9273             Parse::RecDescent::_tracefirst($text),
9274             , q{literal},
9275             $tracelevel)
9276             }
9277 19         32 $_[1] = $text;
9278 19         167 return $return;
9279             }
9280              
9281             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
9282             sub Parse::RecDescent::TM::CTM::CParser::prefix_directive
9283             {
9284 209     209   288 my $thisparser = $_[0];
9285 1     1   5 use vars q{$tracelevel};
  1         3  
  1         618  
9286 209   50     576 local $tracelevel = ($tracelevel||0)+1;
9287 209         255 $ERRORS = 0;
9288 209         473 my $thisrule = $thisparser->{"rules"}{"prefix_directive"};
9289            
9290 209 50       417 Parse::RecDescent::_trace(q{Trying rule: [prefix_directive]},
9291             Parse::RecDescent::_tracefirst($_[1]),
9292             q{prefix_directive},
9293             $tracelevel)
9294             if defined $::RD_TRACE;
9295              
9296            
9297 209         233 my $err_at = @{$thisparser->{errors}};
  209         382  
9298              
9299 209         270 my $score;
9300             my $score_return;
9301 0         0 my $_tok;
9302 209         306 my $return = undef;
9303 209         354 my $_matched=0;
9304 209         247 my $commit=0;
9305 209         396 my @item = ();
9306 209         278 my %item = ();
9307 209   33     607 my $repeating = defined($_[2]) && $_[2];
9308 209   33     610 my $_noactions = defined($_[3]) && $_[3];
9309 209 50       431 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  209         221  
  209         412  
9310 209 50       1103 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
9311 209         257 my $text;
9312 209         449 my $lastsep="";
9313 209         764 my $expectation = new Parse::RecDescent::Expectation(q{'%prefix'});
9314 209         1666 $expectation->at($_[1]);
9315            
9316 209         799 my $thisline;
9317 209         782 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
9318              
9319            
9320              
9321 209   33     1976 while (!$_matched && !$commit)
9322             {
9323            
9324 209 50       424 Parse::RecDescent::_trace(q{Trying production: ['%prefix' identifier reference]},
9325             Parse::RecDescent::_tracefirst($_[1]),
9326             q{prefix_directive},
9327             $tracelevel)
9328             if defined $::RD_TRACE;
9329 209         476 my $thisprod = $thisrule->{"prods"}[0];
9330 209         313 $text = $_[1];
9331 209         213 my $_savetext;
9332 209         396 @item = (q{prefix_directive});
9333 209         421 %item = (__RULE__ => q{prefix_directive});
9334 209         265 my $repcount = 0;
9335              
9336              
9337 209 50       422 Parse::RecDescent::_trace(q{Trying terminal: ['%prefix']},
9338             Parse::RecDescent::_tracefirst($text),
9339             q{prefix_directive},
9340             $tracelevel)
9341             if defined $::RD_TRACE;
9342 209         334 $lastsep = "";
9343 209         595 $expectation->is(q{})->at($text);
9344            
9345              
9346 209 100 66     2169 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\%prefix//)
  209 100       2166  
9347             {
9348            
9349 201         665 $expectation->failed();
9350 201 50       845 Parse::RecDescent::_trace(qq{<>},
9351             Parse::RecDescent::_tracefirst($text))
9352             if defined $::RD_TRACE;
9353 201         404 last;
9354             }
9355 8 50       32 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
9356             . $& . q{])},
9357             Parse::RecDescent::_tracefirst($text))
9358             if defined $::RD_TRACE;
9359 8         41 push @item, $item{__STRING1__}=$&;
9360            
9361              
9362 8 50       28 Parse::RecDescent::_trace(q{Trying subrule: [identifier]},
9363             Parse::RecDescent::_tracefirst($text),
9364             q{prefix_directive},
9365             $tracelevel)
9366             if defined $::RD_TRACE;
9367 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         221  
  8         15  
9368 8         32 $expectation->is(q{identifier})->at($text);
9369 8 50   8   99 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::identifier($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  8         32  
9370             {
9371            
9372 0 0       0 Parse::RecDescent::_trace(q{<>},
9373             Parse::RecDescent::_tracefirst($text),
9374             q{prefix_directive},
9375             $tracelevel)
9376             if defined $::RD_TRACE;
9377 0         0 $expectation->failed();
9378 0         0 last;
9379             }
9380 8 50       38 Parse::RecDescent::_trace(q{>>Matched subrule: [identifier]<< (return value: [}
9381             . $_tok . q{]},
9382            
9383             Parse::RecDescent::_tracefirst($text),
9384             q{prefix_directive},
9385             $tracelevel)
9386             if defined $::RD_TRACE;
9387 8         20 $item{q{identifier}} = $_tok;
9388 8         46 push @item, $_tok;
9389            
9390             }
9391              
9392 8 50       25 Parse::RecDescent::_trace(q{Trying subrule: [reference]},
9393             Parse::RecDescent::_tracefirst($text),
9394             q{prefix_directive},
9395             $tracelevel)
9396             if defined $::RD_TRACE;
9397 1     1   6 if (1) { no strict qw{refs};
  1         10  
  1         733  
  8         10  
9398 8         26 $expectation->is(q{reference})->at($text);
9399 8 50   8   94 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::reference($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  8         31  
9400             {
9401            
9402 0 0       0 Parse::RecDescent::_trace(q{<>},
9403             Parse::RecDescent::_tracefirst($text),
9404             q{prefix_directive},
9405             $tracelevel)
9406             if defined $::RD_TRACE;
9407 0         0 $expectation->failed();
9408 0         0 last;
9409             }
9410 8 50       34 Parse::RecDescent::_trace(q{>>Matched subrule: [reference]<< (return value: [}
9411             . $_tok . q{]},
9412            
9413             Parse::RecDescent::_tracefirst($text),
9414             q{prefix_directive},
9415             $tracelevel)
9416             if defined $::RD_TRACE;
9417 8         26 $item{q{reference}} = $_tok;
9418 8         19 push @item, $_tok;
9419            
9420             }
9421              
9422 8 50       27 Parse::RecDescent::_trace(q{Trying action},
9423             Parse::RecDescent::_tracefirst($text),
9424             q{prefix_directive},
9425             $tracelevel)
9426             if defined $::RD_TRACE;
9427            
9428              
9429 8 50       23 $_tok = ($_noactions) ? 0 : do {
9430 8         12 my $uri = $item[3];
9431 8         26 $prefixes{$item[2]} = $uri;
9432             };
9433 8 50       25 unless (defined $_tok)
9434             {
9435 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
9436             if defined $::RD_TRACE;
9437 0         0 last;
9438             }
9439 8 50       21 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
9440             . $_tok . q{])},
9441             Parse::RecDescent::_tracefirst($text))
9442             if defined $::RD_TRACE;
9443 8         13 push @item, $_tok;
9444            
9445            
9446              
9447              
9448 8 50       19 Parse::RecDescent::_trace(q{>>Matched production: ['%prefix' identifier reference]<<},
9449             Parse::RecDescent::_tracefirst($text),
9450             q{prefix_directive},
9451             $tracelevel)
9452             if defined $::RD_TRACE;
9453 8         10 $_matched = 1;
9454 8         19 last;
9455             }
9456              
9457              
9458 209 100 66     1133 unless ( $_matched || defined($score) )
9459             {
9460            
9461              
9462 201         356 $_[1] = $text; # NOT SURE THIS IS NEEDED
9463 201 50       458 Parse::RecDescent::_trace(q{<>},
9464             Parse::RecDescent::_tracefirst($_[1]),
9465             q{prefix_directive},
9466             $tracelevel)
9467             if defined $::RD_TRACE;
9468 201         1559 return undef;
9469             }
9470 8 50 33     49 if (!defined($return) && defined($score))
9471             {
9472 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
9473             q{prefix_directive},
9474             $tracelevel)
9475             if defined $::RD_TRACE;
9476 0         0 $return = $score_return;
9477             }
9478 8         14 splice @{$thisparser->{errors}}, $err_at;
  8         18  
9479 8 50       28 $return = $item[$#item] unless defined $return;
9480 8 50       22 if (defined $::RD_TRACE)
9481             {
9482 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
9483             $return . q{])}, "",
9484             q{prefix_directive},
9485             $tracelevel);
9486 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
9487             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
9488             Parse::RecDescent::_tracefirst($text),
9489             , q{prefix_directive},
9490             $tracelevel)
9491             }
9492 8         21 $_[1] = $text;
9493 8         76 return $return;
9494             }
9495              
9496             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
9497             sub Parse::RecDescent::TM::CTM::CParser::_alternation_1_of_production_1_of_rule_topicmapid_directive
9498             {
9499 0     0   0 my $thisparser = $_[0];
9500 1     1   6 use vars q{$tracelevel};
  1         2  
  1         1768  
9501 0   0     0 local $tracelevel = ($tracelevel||0)+1;
9502 0         0 $ERRORS = 0;
9503 0         0 my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_topicmapid_directive"};
9504            
9505 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_topicmapid_directive]},
9506             Parse::RecDescent::_tracefirst($_[1]),
9507             q{_alternation_1_of_production_1_of_rule_topicmapid_directive},
9508             $tracelevel)
9509             if defined $::RD_TRACE;
9510              
9511            
9512 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
9513              
9514 0         0 my $score;
9515             my $score_return;
9516 0         0 my $_tok;
9517 0         0 my $return = undef;
9518 0         0 my $_matched=0;
9519 0         0 my $commit=0;
9520 0         0 my @item = ();
9521 0         0 my %item = ();
9522 0   0     0 my $repeating = defined($_[2]) && $_[2];
9523 0   0     0 my $_noactions = defined($_[3]) && $_[3];
9524 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
9525 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
9526 0         0 my $text;
9527 0         0 my $lastsep="";
9528 0         0 my $expectation = new Parse::RecDescent::Expectation(q{name, or reify});
9529 0         0 $expectation->at($_[1]);
9530            
9531 0         0 my $thisline;
9532 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
9533              
9534            
9535              
9536 0   0     0 while (!$_matched && !$commit)
9537             {
9538            
9539 0 0       0 Parse::RecDescent::_trace(q{Trying production: [name]},
9540             Parse::RecDescent::_tracefirst($_[1]),
9541             q{_alternation_1_of_production_1_of_rule_topicmapid_directive},
9542             $tracelevel)
9543             if defined $::RD_TRACE;
9544 0         0 my $thisprod = $thisrule->{"prods"}[0];
9545 0         0 $text = $_[1];
9546 0         0 my $_savetext;
9547 0         0 @item = (q{_alternation_1_of_production_1_of_rule_topicmapid_directive});
9548 0         0 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_topicmapid_directive});
9549 0         0 my $repcount = 0;
9550              
9551              
9552 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [name]},
9553             Parse::RecDescent::_tracefirst($text),
9554             q{_alternation_1_of_production_1_of_rule_topicmapid_directive},
9555             $tracelevel)
9556             if defined $::RD_TRACE;
9557 1     1   9 if (1) { no strict qw{refs};
  1         2  
  1         417  
  0         0  
9558 0         0 $expectation->is(q{})->at($text);
9559 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::name($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
9560             {
9561            
9562 0 0       0 Parse::RecDescent::_trace(q{<>},
9563             Parse::RecDescent::_tracefirst($text),
9564             q{_alternation_1_of_production_1_of_rule_topicmapid_directive},
9565             $tracelevel)
9566             if defined $::RD_TRACE;
9567 0         0 $expectation->failed();
9568 0         0 last;
9569             }
9570 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [name]<< (return value: [}
9571             . $_tok . q{]},
9572            
9573             Parse::RecDescent::_tracefirst($text),
9574             q{_alternation_1_of_production_1_of_rule_topicmapid_directive},
9575             $tracelevel)
9576             if defined $::RD_TRACE;
9577 0         0 $item{q{name}} = $_tok;
9578 0         0 push @item, $_tok;
9579            
9580             }
9581              
9582              
9583 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [name]<<},
9584             Parse::RecDescent::_tracefirst($text),
9585             q{_alternation_1_of_production_1_of_rule_topicmapid_directive},
9586             $tracelevel)
9587             if defined $::RD_TRACE;
9588 0         0 $_matched = 1;
9589 0         0 last;
9590             }
9591              
9592              
9593 0   0     0 while (!$_matched && !$commit)
9594             {
9595            
9596 0 0       0 Parse::RecDescent::_trace(q{Trying production: [reify]},
9597             Parse::RecDescent::_tracefirst($_[1]),
9598             q{_alternation_1_of_production_1_of_rule_topicmapid_directive},
9599             $tracelevel)
9600             if defined $::RD_TRACE;
9601 0         0 my $thisprod = $thisrule->{"prods"}[1];
9602 0         0 $text = $_[1];
9603 0         0 my $_savetext;
9604 0         0 @item = (q{_alternation_1_of_production_1_of_rule_topicmapid_directive});
9605 0         0 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_topicmapid_directive});
9606 0         0 my $repcount = 0;
9607              
9608              
9609 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [reify]},
9610             Parse::RecDescent::_tracefirst($text),
9611             q{_alternation_1_of_production_1_of_rule_topicmapid_directive},
9612             $tracelevel)
9613             if defined $::RD_TRACE;
9614 1     1   7 if (1) { no strict qw{refs};
  1         5  
  1         760  
  0         0  
9615 0         0 $expectation->is(q{})->at($text);
9616 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::reify($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
9617             {
9618            
9619 0 0       0 Parse::RecDescent::_trace(q{<>},
9620             Parse::RecDescent::_tracefirst($text),
9621             q{_alternation_1_of_production_1_of_rule_topicmapid_directive},
9622             $tracelevel)
9623             if defined $::RD_TRACE;
9624 0         0 $expectation->failed();
9625 0         0 last;
9626             }
9627 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [reify]<< (return value: [}
9628             . $_tok . q{]},
9629            
9630             Parse::RecDescent::_tracefirst($text),
9631             q{_alternation_1_of_production_1_of_rule_topicmapid_directive},
9632             $tracelevel)
9633             if defined $::RD_TRACE;
9634 0         0 $item{q{reify}} = $_tok;
9635 0         0 push @item, $_tok;
9636            
9637             }
9638              
9639              
9640 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [reify]<<},
9641             Parse::RecDescent::_tracefirst($text),
9642             q{_alternation_1_of_production_1_of_rule_topicmapid_directive},
9643             $tracelevel)
9644             if defined $::RD_TRACE;
9645 0         0 $_matched = 1;
9646 0         0 last;
9647             }
9648              
9649              
9650 0 0 0     0 unless ( $_matched || defined($score) )
9651             {
9652            
9653              
9654 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
9655 0 0       0 Parse::RecDescent::_trace(q{<>},
9656             Parse::RecDescent::_tracefirst($_[1]),
9657             q{_alternation_1_of_production_1_of_rule_topicmapid_directive},
9658             $tracelevel)
9659             if defined $::RD_TRACE;
9660 0         0 return undef;
9661             }
9662 0 0 0     0 if (!defined($return) && defined($score))
9663             {
9664 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
9665             q{_alternation_1_of_production_1_of_rule_topicmapid_directive},
9666             $tracelevel)
9667             if defined $::RD_TRACE;
9668 0         0 $return = $score_return;
9669             }
9670 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
9671 0 0       0 $return = $item[$#item] unless defined $return;
9672 0 0       0 if (defined $::RD_TRACE)
9673             {
9674 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
9675             $return . q{])}, "",
9676             q{_alternation_1_of_production_1_of_rule_topicmapid_directive},
9677             $tracelevel);
9678 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
9679             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
9680             Parse::RecDescent::_tracefirst($text),
9681             , q{_alternation_1_of_production_1_of_rule_topicmapid_directive},
9682             $tracelevel)
9683             }
9684 0         0 $_[1] = $text;
9685 0         0 return $return;
9686             }
9687              
9688             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
9689             sub Parse::RecDescent::TM::CTM::CParser::identifier
9690             {
9691 602     602   1035 my $thisparser = $_[0];
9692 1     1   9 use vars q{$tracelevel};
  1         3  
  1         1095  
9693 602   50     1656 local $tracelevel = ($tracelevel||0)+1;
9694 602         878 $ERRORS = 0;
9695 602         1125 my $thisrule = $thisparser->{"rules"}{"identifier"};
9696            
9697 602 50       1304 Parse::RecDescent::_trace(q{Trying rule: [identifier]},
9698             Parse::RecDescent::_tracefirst($_[1]),
9699             q{identifier},
9700             $tracelevel)
9701             if defined $::RD_TRACE;
9702              
9703            
9704 602         602 my $err_at = @{$thisparser->{errors}};
  602         1094  
9705              
9706 602         784 my $score;
9707             my $score_return;
9708 0         0 my $_tok;
9709 602         713 my $return = undef;
9710 602         766 my $_matched=0;
9711 602         595 my $commit=0;
9712 602         804 my @item = ();
9713 602         794 my %item = ();
9714 602   33     2081 my $repeating = defined($_[2]) && $_[2];
9715 602   33     1622 my $_noactions = defined($_[3]) && $_[3];
9716 602 50       1030 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  602         569  
  602         1282  
9717 602 50       17979 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
9718 602         771 my $text;
9719 602         946 my $lastsep="";
9720 602         1876 my $expectation = new Parse::RecDescent::Expectation(q{/\\w[\\w-]*/});
9721 602         10160 $expectation->at($_[1]);
9722            
9723 602         2179 my $thisline;
9724 602         2753 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
9725              
9726            
9727              
9728 602   33     5262 while (!$_matched && !$commit)
9729             {
9730            
9731 602 50       1166 Parse::RecDescent::_trace(q{Trying production: [/\\w[\\w-]*/]},
9732             Parse::RecDescent::_tracefirst($_[1]),
9733             q{identifier},
9734             $tracelevel)
9735             if defined $::RD_TRACE;
9736 602         1167 my $thisprod = $thisrule->{"prods"}[0];
9737 602         816 $text = $_[1];
9738 602         615 my $_savetext;
9739 602         1090 @item = (q{identifier});
9740 602         1216 %item = (__RULE__ => q{identifier});
9741 602         630 my $repcount = 0;
9742              
9743              
9744 602 50       1063 Parse::RecDescent::_trace(q{Trying terminal: [/\\w[\\w-]*/]}, Parse::RecDescent::_tracefirst($text),
9745             q{identifier},
9746             $tracelevel)
9747             if defined $::RD_TRACE;
9748 602         811 $lastsep = "";
9749 602         1507 $expectation->is(q{})->at($text);
9750            
9751              
9752 602 100 66     5670 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\w[\w-]*)//)
  602 100       5849  
9753             {
9754            
9755 339         969 $expectation->failed();
9756 339 50       1520 Parse::RecDescent::_trace(q{<>},
9757             Parse::RecDescent::_tracefirst($text))
9758             if defined $::RD_TRACE;
9759              
9760 339         750 last;
9761             }
9762 263 50       1416 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
9763             . $& . q{])},
9764             Parse::RecDescent::_tracefirst($text))
9765             if defined $::RD_TRACE;
9766 263         868 push @item, $item{__PATTERN1__}=$&;
9767            
9768              
9769              
9770 263 50       513 Parse::RecDescent::_trace(q{>>Matched production: [/\\w[\\w-]*/]<<},
9771             Parse::RecDescent::_tracefirst($text),
9772             q{identifier},
9773             $tracelevel)
9774             if defined $::RD_TRACE;
9775 263         333 $_matched = 1;
9776 263         461 last;
9777             }
9778              
9779              
9780 602 100 66     2050 unless ( $_matched || defined($score) )
9781             {
9782            
9783              
9784 339         483 $_[1] = $text; # NOT SURE THIS IS NEEDED
9785 339 50       639 Parse::RecDescent::_trace(q{<>},
9786             Parse::RecDescent::_tracefirst($_[1]),
9787             q{identifier},
9788             $tracelevel)
9789             if defined $::RD_TRACE;
9790 339         2799 return undef;
9791             }
9792 263 50 33     1150 if (!defined($return) && defined($score))
9793             {
9794 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
9795             q{identifier},
9796             $tracelevel)
9797             if defined $::RD_TRACE;
9798 0         0 $return = $score_return;
9799             }
9800 263         335 splice @{$thisparser->{errors}}, $err_at;
  263         577  
9801 263 50       754 $return = $item[$#item] unless defined $return;
9802 263 50       558 if (defined $::RD_TRACE)
9803             {
9804 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
9805             $return . q{])}, "",
9806             q{identifier},
9807             $tracelevel);
9808 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
9809             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
9810             Parse::RecDescent::_tracefirst($text),
9811             , q{identifier},
9812             $tracelevel)
9813             }
9814 263         390 $_[1] = $text;
9815 263         2158 return $return;
9816             }
9817              
9818             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
9819             sub Parse::RecDescent::TM::CTM::CParser::kind_of
9820             {
9821 131     131   207 my $thisparser = $_[0];
9822 1     1   7 use vars q{$tracelevel};
  1         2  
  1         615  
9823 131   50     346 local $tracelevel = ($tracelevel||0)+1;
9824 131         159 $ERRORS = 0;
9825 131         300 my $thisrule = $thisparser->{"rules"}{"kind_of"};
9826            
9827 131 50       334 Parse::RecDescent::_trace(q{Trying rule: [kind_of]},
9828             Parse::RecDescent::_tracefirst($_[1]),
9829             q{kind_of},
9830             $tracelevel)
9831             if defined $::RD_TRACE;
9832              
9833            
9834 131         152 my $err_at = @{$thisparser->{errors}};
  131         229  
9835              
9836 131         218 my $score;
9837             my $score_return;
9838 0         0 my $_tok;
9839 131         181 my $return = undef;
9840 131         143 my $_matched=0;
9841 131         194 my $commit=0;
9842 131         272 my @item = ();
9843 131         203 my %item = ();
9844 131   33     390 my $repeating = defined($_[2]) && $_[2];
9845 131   33     426 my $_noactions = defined($_[3]) && $_[3];
9846 131 50       300 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  131         172  
  131         237  
9847 131 50       553 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
9848 131         206 my $text;
9849 131         200 my $lastsep="";
9850 131         470 my $expectation = new Parse::RecDescent::Expectation(q{'ako'});
9851 131         1016 $expectation->at($_[1]);
9852            
9853 131         518 my $thisline;
9854 131         549 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
9855              
9856            
9857              
9858 131   33     1300 while (!$_matched && !$commit)
9859             {
9860            
9861 131 50       315 Parse::RecDescent::_trace(q{Trying production: ['ako' topic_ref]},
9862             Parse::RecDescent::_tracefirst($_[1]),
9863             q{kind_of},
9864             $tracelevel)
9865             if defined $::RD_TRACE;
9866 131         364 my $thisprod = $thisrule->{"prods"}[0];
9867 131         213 $text = $_[1];
9868 131         234 my $_savetext;
9869 131         293 @item = (q{kind_of});
9870 131         306 %item = (__RULE__ => q{kind_of});
9871 131         210 my $repcount = 0;
9872              
9873              
9874 131 50       334 Parse::RecDescent::_trace(q{Trying terminal: ['ako']},
9875             Parse::RecDescent::_tracefirst($text),
9876             q{kind_of},
9877             $tracelevel)
9878             if defined $::RD_TRACE;
9879 131         176 $lastsep = "";
9880 131         336 $expectation->is(q{})->at($text);
9881            
9882              
9883 131 100 66     1398 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Aako//)
  131 100       1311  
9884             {
9885            
9886 129         381 $expectation->failed();
9887 129 50       574 Parse::RecDescent::_trace(qq{<>},
9888             Parse::RecDescent::_tracefirst($text))
9889             if defined $::RD_TRACE;
9890 129         278 last;
9891             }
9892 2 50       9 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
9893             . $& . q{])},
9894             Parse::RecDescent::_tracefirst($text))
9895             if defined $::RD_TRACE;
9896 2         9 push @item, $item{__STRING1__}=$&;
9897            
9898              
9899 2 50       7 Parse::RecDescent::_trace(q{Trying subrule: [topic_ref]},
9900             Parse::RecDescent::_tracefirst($text),
9901             q{kind_of},
9902             $tracelevel)
9903             if defined $::RD_TRACE;
9904 1     1   7 if (1) { no strict qw{refs};
  1         2  
  1         747  
  2         3  
9905 2         10 $expectation->is(q{topic_ref})->at($text);
9906 2 50   2   27 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::topic_ref($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  2         8  
9907             {
9908            
9909 0 0       0 Parse::RecDescent::_trace(q{<>},
9910             Parse::RecDescent::_tracefirst($text),
9911             q{kind_of},
9912             $tracelevel)
9913             if defined $::RD_TRACE;
9914 0         0 $expectation->failed();
9915 0         0 last;
9916             }
9917 2 50       12 Parse::RecDescent::_trace(q{>>Matched subrule: [topic_ref]<< (return value: [}
9918             . $_tok . q{]},
9919            
9920             Parse::RecDescent::_tracefirst($text),
9921             q{kind_of},
9922             $tracelevel)
9923             if defined $::RD_TRACE;
9924 2         15 $item{q{topic_ref}} = $_tok;
9925 2         4 push @item, $_tok;
9926            
9927             }
9928              
9929 2 50       9 Parse::RecDescent::_trace(q{Trying action},
9930             Parse::RecDescent::_tracefirst($text),
9931             q{kind_of},
9932             $tracelevel)
9933             if defined $::RD_TRACE;
9934            
9935              
9936 2 50       8 $_tok = ($_noactions) ? 0 : do { $store->assert ( [ undef,
  2         49  
9937             undef,
9938             'is-subclass-of',
9939             undef,
9940             [ qw(subclass superclass) ],
9941             [ $arg[0], $item[2] ],
9942             ] ); };
9943 2 50       11 unless (defined $_tok)
9944             {
9945 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
9946             if defined $::RD_TRACE;
9947 0         0 last;
9948             }
9949 2 50       8 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
9950             . $_tok . q{])},
9951             Parse::RecDescent::_tracefirst($text))
9952             if defined $::RD_TRACE;
9953 2         5 push @item, $_tok;
9954            
9955            
9956              
9957              
9958 2 50       7 Parse::RecDescent::_trace(q{>>Matched production: ['ako' topic_ref]<<},
9959             Parse::RecDescent::_tracefirst($text),
9960             q{kind_of},
9961             $tracelevel)
9962             if defined $::RD_TRACE;
9963 2         4 $_matched = 1;
9964 2         5 last;
9965             }
9966              
9967              
9968 131 100 66     625 unless ( $_matched || defined($score) )
9969             {
9970            
9971              
9972 129         200 $_[1] = $text; # NOT SURE THIS IS NEEDED
9973 129 50       318 Parse::RecDescent::_trace(q{<>},
9974             Parse::RecDescent::_tracefirst($_[1]),
9975             q{kind_of},
9976             $tracelevel)
9977             if defined $::RD_TRACE;
9978 129         887 return undef;
9979             }
9980 2 50 33     15 if (!defined($return) && defined($score))
9981             {
9982 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
9983             q{kind_of},
9984             $tracelevel)
9985             if defined $::RD_TRACE;
9986 0         0 $return = $score_return;
9987             }
9988 2         4 splice @{$thisparser->{errors}}, $err_at;
  2         6  
9989 2 50       10 $return = $item[$#item] unless defined $return;
9990 2 50       8 if (defined $::RD_TRACE)
9991             {
9992 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
9993             $return . q{])}, "",
9994             q{kind_of},
9995             $tracelevel);
9996 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
9997             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
9998             Parse::RecDescent::_tracefirst($text),
9999             , q{kind_of},
10000             $tracelevel)
10001             }
10002 2         5 $_[1] = $text;
10003 2         19 return $return;
10004             }
10005              
10006             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
10007             sub Parse::RecDescent::TM::CTM::CParser::integer
10008             {
10009 45     45   91 my $thisparser = $_[0];
10010 1     1   6 use vars q{$tracelevel};
  1         2  
  1         920  
10011 45   50     136 local $tracelevel = ($tracelevel||0)+1;
10012 45         70 $ERRORS = 0;
10013 45         113 my $thisrule = $thisparser->{"rules"}{"integer"};
10014            
10015 45 50       124 Parse::RecDescent::_trace(q{Trying rule: [integer]},
10016             Parse::RecDescent::_tracefirst($_[1]),
10017             q{integer},
10018             $tracelevel)
10019             if defined $::RD_TRACE;
10020              
10021            
10022 45         44 my $err_at = @{$thisparser->{errors}};
  45         108  
10023              
10024 45         63 my $score;
10025             my $score_return;
10026 0         0 my $_tok;
10027 45         67 my $return = undef;
10028 45         44 my $_matched=0;
10029 45         59 my $commit=0;
10030 45         105 my @item = ();
10031 45         79 my %item = ();
10032 45   33     149 my $repeating = defined($_[2]) && $_[2];
10033 45   33     158 my $_noactions = defined($_[3]) && $_[3];
10034 45 50       92 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  45         55  
  45         134  
10035 45 50       199 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
10036 45         60 my $text;
10037 45         68 my $lastsep="";
10038 45         138 my $expectation = new Parse::RecDescent::Expectation(q{/-?\\d+/});
10039 45         351 $expectation->at($_[1]);
10040            
10041 45         169 my $thisline;
10042 45         186 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
10043              
10044            
10045              
10046 45   33     443 while (!$_matched && !$commit)
10047             {
10048            
10049 45 50       166 Parse::RecDescent::_trace(q{Trying production: [/-?\\d+/]},
10050             Parse::RecDescent::_tracefirst($_[1]),
10051             q{integer},
10052             $tracelevel)
10053             if defined $::RD_TRACE;
10054 45         132 my $thisprod = $thisrule->{"prods"}[0];
10055 45         103 $text = $_[1];
10056 45         50 my $_savetext;
10057 45         92 @item = (q{integer});
10058 45         117 %item = (__RULE__ => q{integer});
10059 45         62 my $repcount = 0;
10060              
10061              
10062 45 50       94 Parse::RecDescent::_trace(q{Trying terminal: [/-?\\d+/]}, Parse::RecDescent::_tracefirst($text),
10063             q{integer},
10064             $tracelevel)
10065             if defined $::RD_TRACE;
10066 45         121 $lastsep = "";
10067 45         149 $expectation->is(q{})->at($text);
10068            
10069              
10070 45 100 66     482 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:-?\d+)//)
  45 100       510  
10071             {
10072            
10073 36         124 $expectation->failed();
10074 36 50       168 Parse::RecDescent::_trace(q{<>},
10075             Parse::RecDescent::_tracefirst($text))
10076             if defined $::RD_TRACE;
10077              
10078 36         95 last;
10079             }
10080 9 50       25 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
10081             . $& . q{])},
10082             Parse::RecDescent::_tracefirst($text))
10083             if defined $::RD_TRACE;
10084 9         36 push @item, $item{__PATTERN1__}=$&;
10085            
10086              
10087              
10088 9 50       19 Parse::RecDescent::_trace(q{>>Matched production: [/-?\\d+/]<<},
10089             Parse::RecDescent::_tracefirst($text),
10090             q{integer},
10091             $tracelevel)
10092             if defined $::RD_TRACE;
10093 9         16 $_matched = 1;
10094 9         15 last;
10095             }
10096              
10097              
10098 45 100 66     220 unless ( $_matched || defined($score) )
10099             {
10100            
10101              
10102 36         57 $_[1] = $text; # NOT SURE THIS IS NEEDED
10103 36 50       83 Parse::RecDescent::_trace(q{<>},
10104             Parse::RecDescent::_tracefirst($_[1]),
10105             q{integer},
10106             $tracelevel)
10107             if defined $::RD_TRACE;
10108 36         261 return undef;
10109             }
10110 9 50 33     58 if (!defined($return) && defined($score))
10111             {
10112 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
10113             q{integer},
10114             $tracelevel)
10115             if defined $::RD_TRACE;
10116 0         0 $return = $score_return;
10117             }
10118 9         19 splice @{$thisparser->{errors}}, $err_at;
  9         20  
10119 9 50       25 $return = $item[$#item] unless defined $return;
10120 9 50       21 if (defined $::RD_TRACE)
10121             {
10122 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
10123             $return . q{])}, "",
10124             q{integer},
10125             $tracelevel);
10126 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
10127             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
10128             Parse::RecDescent::_tracefirst($text),
10129             , q{integer},
10130             $tracelevel)
10131             }
10132 9         18 $_[1] = $text;
10133 9         78 return $return;
10134             }
10135              
10136             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
10137             sub Parse::RecDescent::TM::CTM::CParser::topic_template_invocation
10138             {
10139 129     129   219 my $thisparser = $_[0];
10140 1     1   7 use vars q{$tracelevel};
  1         2  
  1         337  
10141 129   50     707 local $tracelevel = ($tracelevel||0)+1;
10142 129         189 $ERRORS = 0;
10143 129         313 my $thisrule = $thisparser->{"rules"}{"topic_template_invocation"};
10144            
10145 129 50       301 Parse::RecDescent::_trace(q{Trying rule: [topic_template_invocation]},
10146             Parse::RecDescent::_tracefirst($_[1]),
10147             q{topic_template_invocation},
10148             $tracelevel)
10149             if defined $::RD_TRACE;
10150              
10151            
10152 129         135 my $err_at = @{$thisparser->{errors}};
  129         301  
10153              
10154 129         216 my $score;
10155             my $score_return;
10156 0         0 my $_tok;
10157 129         258 my $return = undef;
10158 129         131 my $_matched=0;
10159 129         163 my $commit=0;
10160 129         259 my @item = ();
10161 129         214 my %item = ();
10162 129   33     383 my $repeating = defined($_[2]) && $_[2];
10163 129   33     410 my $_noactions = defined($_[3]) && $_[3];
10164 129 50       275 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  129         162  
  129         227  
10165 129 50       459 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
10166 129         144 my $text;
10167 129         199 my $lastsep="";
10168 129         405 my $expectation = new Parse::RecDescent::Expectation(q{identifier});
10169 129         1101 $expectation->at($_[1]);
10170            
10171 129         536 my $thisline;
10172 129         537 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
10173              
10174            
10175              
10176 129   33     1332 while (!$_matched && !$commit)
10177             {
10178            
10179 129 50       310 Parse::RecDescent::_trace(q{Trying production: [identifier '(' ')']},
10180             Parse::RecDescent::_tracefirst($_[1]),
10181             q{topic_template_invocation},
10182             $tracelevel)
10183             if defined $::RD_TRACE;
10184 129         328 my $thisprod = $thisrule->{"prods"}[0];
10185 129         213 $text = $_[1];
10186 129         144 my $_savetext;
10187 129         230 @item = (q{topic_template_invocation});
10188 129         4308 %item = (__RULE__ => q{topic_template_invocation});
10189 129         168 my $repcount = 0;
10190              
10191              
10192 129 50       262 Parse::RecDescent::_trace(q{Trying subrule: [identifier]},
10193             Parse::RecDescent::_tracefirst($text),
10194             q{topic_template_invocation},
10195             $tracelevel)
10196             if defined $::RD_TRACE;
10197 1     1   4 if (1) { no strict qw{refs};
  1         3  
  1         891  
  129         147  
10198 129         518 $expectation->is(q{})->at($text);
10199 129 100   129   1573 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::identifier($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  129         541  
10200             {
10201            
10202 98 50       220 Parse::RecDescent::_trace(q{<>},
10203             Parse::RecDescent::_tracefirst($text),
10204             q{topic_template_invocation},
10205             $tracelevel)
10206             if defined $::RD_TRACE;
10207 98         278 $expectation->failed();
10208 98         363 last;
10209             }
10210 31 50       179 Parse::RecDescent::_trace(q{>>Matched subrule: [identifier]<< (return value: [}
10211             . $_tok . q{]},
10212            
10213             Parse::RecDescent::_tracefirst($text),
10214             q{topic_template_invocation},
10215             $tracelevel)
10216             if defined $::RD_TRACE;
10217 31         84 $item{q{identifier}} = $_tok;
10218 31         63 push @item, $_tok;
10219            
10220             }
10221              
10222 31 50       125 Parse::RecDescent::_trace(q{Trying action},
10223             Parse::RecDescent::_tracefirst($text),
10224             q{topic_template_invocation},
10225             $tracelevel)
10226             if defined $::RD_TRACE;
10227            
10228              
10229 31 50       110 $_tok = ($_noactions) ? 0 : do { $templates{$item[1]} };
  31         81  
10230 31 100       98 unless (defined $_tok)
10231             {
10232 28 50       72 Parse::RecDescent::_trace(q{<> (return value: [undef])})
10233             if defined $::RD_TRACE;
10234 28         62 last;
10235             }
10236 3 50       13 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
10237             . $_tok . q{])},
10238             Parse::RecDescent::_tracefirst($text))
10239             if defined $::RD_TRACE;
10240 3         7 push @item, $_tok;
10241            
10242            
10243              
10244 3 50       11 Parse::RecDescent::_trace(q{Trying terminal: ['(']},
10245             Parse::RecDescent::_tracefirst($text),
10246             q{topic_template_invocation},
10247             $tracelevel)
10248             if defined $::RD_TRACE;
10249 3         7 $lastsep = "";
10250 3         12 $expectation->is(q{'('})->at($text);
10251            
10252              
10253 3 50 33     89 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\(//)
  3 50       48  
10254             {
10255            
10256 0         0 $expectation->failed();
10257 0 0       0 Parse::RecDescent::_trace(qq{<>},
10258             Parse::RecDescent::_tracefirst($text))
10259             if defined $::RD_TRACE;
10260 0         0 last;
10261             }
10262 3 50       15 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
10263             . $& . q{])},
10264             Parse::RecDescent::_tracefirst($text))
10265             if defined $::RD_TRACE;
10266 3         11 push @item, $item{__STRING1__}=$&;
10267            
10268              
10269 3 50       11 Parse::RecDescent::_trace(q{Trying operator: []},
10270             Parse::RecDescent::_tracefirst($text),
10271             q{topic_template_invocation},
10272             $tracelevel)
10273             if defined $::RD_TRACE;
10274 3         12 $expectation->is(q{})->at($text);
10275              
10276 3         20 $_tok = undef;
10277 3         5 OPLOOP: while (1)
10278             {
10279 3         5 $repcount = 0;
10280 3         6 my @item;
10281            
10282             # MATCH LEFTARG
10283            
10284 3 50       11 Parse::RecDescent::_trace(q{Trying subrule: [argument]},
10285             Parse::RecDescent::_tracefirst($text),
10286             q{topic_template_invocation},
10287             $tracelevel)
10288             if defined $::RD_TRACE;
10289 1     1   7 if (1) { no strict qw{refs};
  1         3  
  1         564  
  3         6  
10290 3         11 $expectation->is(q{argument})->at($text);
10291 3 50   3   39 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::argument($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  3         11  
10292             {
10293            
10294 0 0       0 Parse::RecDescent::_trace(q{<>},
10295             Parse::RecDescent::_tracefirst($text),
10296             q{topic_template_invocation},
10297             $tracelevel)
10298             if defined $::RD_TRACE;
10299 0         0 $expectation->failed();
10300 0         0 last;
10301             }
10302 3 50       17 Parse::RecDescent::_trace(q{>>Matched subrule: [argument]<< (return value: [}
10303             . $_tok . q{]},
10304            
10305             Parse::RecDescent::_tracefirst($text),
10306             q{topic_template_invocation},
10307             $tracelevel)
10308             if defined $::RD_TRACE;
10309 3         8 $item{q{argument}} = $_tok;
10310 3         8 push @item, $_tok;
10311            
10312             }
10313              
10314              
10315 3         5 $repcount++;
10316              
10317 3         7 my $savetext = $text;
10318 3         5 my $backtrack;
10319              
10320             # MATCH (OP RIGHTARG)(s)
10321 3         25 while ($repcount < 100000000)
10322             {
10323 3         7 $backtrack = 0;
10324            
10325 3 50       10 Parse::RecDescent::_trace(q{Trying terminal: [/,/]}, Parse::RecDescent::_tracefirst($text),
10326             q{topic_template_invocation},
10327             $tracelevel)
10328             if defined $::RD_TRACE;
10329 3         7 $lastsep = "";
10330 3         11 $expectation->is(q{/,/})->at($text);
10331            
10332              
10333 3 50 33     45 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:,)//)
  3 50       34  
10334             {
10335            
10336 3         12 $expectation->failed();
10337 3 50       35 Parse::RecDescent::_trace(q{<>},
10338             Parse::RecDescent::_tracefirst($text))
10339             if defined $::RD_TRACE;
10340              
10341 3         7 last;
10342             }
10343 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
10344             . $& . q{])},
10345             Parse::RecDescent::_tracefirst($text))
10346             if defined $::RD_TRACE;
10347 0         0 push @item, $item{__PATTERN1__}=$&;
10348            
10349              
10350 0         0 pop @item;
10351 0 0       0 if (defined $1) {push @item, $item{'argument(s)'}=$1; $backtrack=1;}
  0         0  
  0         0  
10352            
10353 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [argument]},
10354             Parse::RecDescent::_tracefirst($text),
10355             q{topic_template_invocation},
10356             $tracelevel)
10357             if defined $::RD_TRACE;
10358 1     1   7 if (1) { no strict qw{refs};
  1         2  
  1         1708  
  0         0  
10359 0         0 $expectation->is(q{argument})->at($text);
10360 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::argument($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
10361             {
10362            
10363 0 0       0 Parse::RecDescent::_trace(q{<>},
10364             Parse::RecDescent::_tracefirst($text),
10365             q{topic_template_invocation},
10366             $tracelevel)
10367             if defined $::RD_TRACE;
10368 0         0 $expectation->failed();
10369 0         0 last;
10370             }
10371 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [argument]<< (return value: [}
10372             . $_tok . q{]},
10373            
10374             Parse::RecDescent::_tracefirst($text),
10375             q{topic_template_invocation},
10376             $tracelevel)
10377             if defined $::RD_TRACE;
10378 0         0 $item{q{argument}} = $_tok;
10379 0         0 push @item, $_tok;
10380            
10381             }
10382              
10383 0         0 $savetext = $text;
10384 0         0 $repcount++;
10385             }
10386 3         9 $text = $savetext;
10387 3 50       10 pop @item if $backtrack;
10388              
10389 3 50       10 unless (@item) { undef $_tok; last }
  0         0  
  0         0  
10390 3         8 $_tok = [ @item ];
10391 3         6 last;
10392             }
10393              
10394 3 50       10 unless ($repcount>=1)
10395             {
10396 0 0       0 Parse::RecDescent::_trace(q{<]>>},
10397             Parse::RecDescent::_tracefirst($text),
10398             q{topic_template_invocation},
10399             $tracelevel)
10400             if defined $::RD_TRACE;
10401 0         0 $expectation->failed();
10402 0         0 last;
10403             }
10404 3 50       9 Parse::RecDescent::_trace(q{>>Matched operator: []<< (return value: [}
10405 0 0       0 . qq{@{$_tok||[]}} . q{]},
10406             Parse::RecDescent::_tracefirst($text),
10407             q{topic_template_invocation},
10408             $tracelevel)
10409             if defined $::RD_TRACE;
10410              
10411 3   50     14 push @item, $item{'argument(s)'}=$_tok||[];
10412              
10413              
10414 3 50       9 Parse::RecDescent::_trace(q{Trying terminal: [')']},
10415             Parse::RecDescent::_tracefirst($text),
10416             q{topic_template_invocation},
10417             $tracelevel)
10418             if defined $::RD_TRACE;
10419 3         5 $lastsep = "";
10420 3         9 $expectation->is(q{')'})->at($text);
10421            
10422              
10423 3 50 33     46 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\)//)
  3 50       40  
10424             {
10425            
10426 0         0 $expectation->failed();
10427 0 0       0 Parse::RecDescent::_trace(qq{<>},
10428             Parse::RecDescent::_tracefirst($text))
10429             if defined $::RD_TRACE;
10430 0         0 last;
10431             }
10432 3 50       10 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
10433             . $& . q{])},
10434             Parse::RecDescent::_tracefirst($text))
10435             if defined $::RD_TRACE;
10436 3         12 push @item, $item{__STRING2__}=$&;
10437            
10438              
10439 3 50       8 Parse::RecDescent::_trace(q{Trying action},
10440             Parse::RecDescent::_tracefirst($text),
10441             q{topic_template_invocation},
10442             $tracelevel)
10443             if defined $::RD_TRACE;
10444            
10445              
10446 3 50       9 $_tok = ($_noactions) ? 0 : do {
10447 3         7 my $tmpl = $templates{$item[1]};
10448             # warn Dumper $templates{$item[1]};
10449             # warn Dumper $item[4];
10450              
10451 3         14 my $bu = $store->baseuri;
10452 3         39 $arg[0] =~ s/^$bu//; # pretend internal identifier
10453 3         6 unshift @{ $item[4] }, $arg[0]; # add topic as first param
  3         10  
10454              
10455 3         12 $text .= "\n\n%backup\n\n" . _expand_tmpl ($tmpl, $item[4]) . "\n\n%restore\n\n";
10456 3         9 $return = 1;
10457              
10458             sub _expand_tmpl {
10459 11     11   29 my $tmpl = shift;
10460 11         31 my $name = $tmpl->{name};
10461 11         23 my $body = $tmpl->{body};
10462 11         21 my $params = $tmpl->{params};
10463 11         15 my $args = shift;
10464 11         13 my %P; # formal -> actual
10465 11         24 foreach my $fp (@$params) {
10466 18 100       150 $P{$fp} = shift @$args
10467             or die "too few arguments for '$name'";
10468             }
10469 10 100       115 die "too many arguments for '$name'" if @$args;
10470              
10471 9         31 foreach my $p (keys %P) {
10472 14         40 $p =~ s/\$//; # remove $, so that regexp below works
10473 14         299 $body =~ s/\$$p/$P{'$'.$p}/g;
10474             }
10475 9         54 return "\n" . $body . "\n"; # extend the text at the end;
10476             }
10477             };
10478 3 50       12 unless (defined $_tok)
10479             {
10480 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
10481             if defined $::RD_TRACE;
10482 0         0 last;
10483             }
10484 3 50       11 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
10485             . $_tok . q{])},
10486             Parse::RecDescent::_tracefirst($text))
10487             if defined $::RD_TRACE;
10488 3         7 push @item, $_tok;
10489            
10490            
10491              
10492              
10493 3 50       8 Parse::RecDescent::_trace(q{>>Matched production: [identifier '(' ')']<<},
10494             Parse::RecDescent::_tracefirst($text),
10495             q{topic_template_invocation},
10496             $tracelevel)
10497             if defined $::RD_TRACE;
10498 3         4 $_matched = 1;
10499 3         9 last;
10500             }
10501              
10502              
10503 129 100 66     786 unless ( $_matched || defined($score) )
10504             {
10505            
10506              
10507 126         191 $_[1] = $text; # NOT SURE THIS IS NEEDED
10508 126 50       278 Parse::RecDescent::_trace(q{<>},
10509             Parse::RecDescent::_tracefirst($_[1]),
10510             q{topic_template_invocation},
10511             $tracelevel)
10512             if defined $::RD_TRACE;
10513 126         832 return undef;
10514             }
10515 3 50 33     12 if (!defined($return) && defined($score))
10516             {
10517 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
10518             q{topic_template_invocation},
10519             $tracelevel)
10520             if defined $::RD_TRACE;
10521 0         0 $return = $score_return;
10522             }
10523 3         4 splice @{$thisparser->{errors}}, $err_at;
  3         8  
10524 3 50       18 $return = $item[$#item] unless defined $return;
10525 3 50       10 if (defined $::RD_TRACE)
10526             {
10527 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
10528             $return . q{])}, "",
10529             q{topic_template_invocation},
10530             $tracelevel);
10531 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
10532             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
10533             Parse::RecDescent::_tracefirst($text),
10534             , q{topic_template_invocation},
10535             $tracelevel)
10536             }
10537 3         7 $_[1] = $text;
10538 3         39 return $return;
10539             }
10540              
10541             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
10542             sub Parse::RecDescent::TM::CTM::CParser::startrule
10543             {
10544 50     50   4104 my $thisparser = $_[0];
10545 1     1   9 use vars q{$tracelevel};
  1         2  
  1         601  
10546 50   50     409 local $tracelevel = ($tracelevel||0)+1;
10547 50         132 $ERRORS = 0;
10548 50         161 my $thisrule = $thisparser->{"rules"}{"startrule"};
10549            
10550 50 50       196 Parse::RecDescent::_trace(q{Trying rule: [startrule]},
10551             Parse::RecDescent::_tracefirst($_[1]),
10552             q{startrule},
10553             $tracelevel)
10554             if defined $::RD_TRACE;
10555              
10556            
10557 50         133 my $err_at = @{$thisparser->{errors}};
  50         173  
10558              
10559 50         115 my $score;
10560             my $score_return;
10561 0         0 my $_tok;
10562 50         90 my $return = undef;
10563 50         112 my $_matched=0;
10564 50         93 my $commit=0;
10565 50         124 my @item = ();
10566 50         130 my %item = ();
10567 50   33     221 my $repeating = defined($_[2]) && $_[2];
10568 50   33     193 my $_noactions = defined($_[3]) && $_[3];
10569 50 50       221 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  50         100  
  50         194  
10570 50 50       722 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
10571 50         98 my $text;
10572 50         206 my $lastsep="";
10573 50         336 my $expectation = new Parse::RecDescent::Expectation(q{});
10574 50         680 $expectation->at($_[1]);
10575            
10576 50         296 my $thisline;
10577 50         460 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
10578              
10579            
10580              
10581 50   33     864 while (!$_matched && !$commit)
10582             {
10583            
10584 50 50       184 Parse::RecDescent::_trace(q{Trying production: [topicmap]},
10585             Parse::RecDescent::_tracefirst($_[1]),
10586             q{startrule},
10587             $tracelevel)
10588             if defined $::RD_TRACE;
10589 50         162 my $thisprod = $thisrule->{"prods"}[0];
10590 50         112 $text = $_[1];
10591 50         93 my $_savetext;
10592 50         147 @item = (q{startrule});
10593 50         198 %item = (__RULE__ => q{startrule});
10594 50         93 my $repcount = 0;
10595              
10596              
10597 50 50       232 Parse::RecDescent::_trace(q{Trying action},
10598             Parse::RecDescent::_tracefirst($text),
10599             q{startrule},
10600             $tracelevel)
10601             if defined $::RD_TRACE;
10602            
10603              
10604 50 50       184 $_tok = ($_noactions) ? 0 : do { $store = $arg[0];
  50         132  
10605 50         1462 $log = $arg[1];
10606 50         129 $implicits = $arg[2];
10607 50         468 %prefixes = ('xsd' => TM::Literal->XSD);
10608 50         182 %templates = ();
10609 50         151 %wildcards = ();
10610             };
10611 50 50       188 unless (defined $_tok)
10612             {
10613 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
10614             if defined $::RD_TRACE;
10615 0         0 last;
10616             }
10617 50 50       191 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
10618             . $_tok . q{])},
10619             Parse::RecDescent::_tracefirst($text))
10620             if defined $::RD_TRACE;
10621 50         108 push @item, $_tok;
10622 50         130 $item{__ACTION1__}=$_tok;
10623            
10624              
10625 50 50       173 Parse::RecDescent::_trace(q{Trying subrule: [topicmap]},
10626             Parse::RecDescent::_tracefirst($text),
10627             q{startrule},
10628             $tracelevel)
10629             if defined $::RD_TRACE;
10630 1     1   6 if (1) { no strict qw{refs};
  1         8  
  1         538  
  50         106  
10631 50         224 $expectation->is(q{topicmap})->at($text);
10632 50 50   50   721 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::topicmap($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  50         194  
10633             {
10634            
10635 0 0       0 Parse::RecDescent::_trace(q{<>},
10636             Parse::RecDescent::_tracefirst($text),
10637             q{startrule},
10638             $tracelevel)
10639             if defined $::RD_TRACE;
10640 0         0 $expectation->failed();
10641 0         0 last;
10642             }
10643 47 50       323 Parse::RecDescent::_trace(q{>>Matched subrule: [topicmap]<< (return value: [}
10644             . $_tok . q{]},
10645            
10646             Parse::RecDescent::_tracefirst($text),
10647             q{startrule},
10648             $tracelevel)
10649             if defined $::RD_TRACE;
10650 47         139 $item{q{topicmap}} = $_tok;
10651 47         106 push @item, $_tok;
10652            
10653             }
10654              
10655              
10656 47 50       175 Parse::RecDescent::_trace(q{>>Matched production: [topicmap]<<},
10657             Parse::RecDescent::_tracefirst($text),
10658             q{startrule},
10659             $tracelevel)
10660             if defined $::RD_TRACE;
10661 47         92 $_matched = 1;
10662 47         115 last;
10663             }
10664              
10665              
10666 47 50 33     161 unless ( $_matched || defined($score) )
10667             {
10668            
10669              
10670 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
10671 0 0       0 Parse::RecDescent::_trace(q{<>},
10672             Parse::RecDescent::_tracefirst($_[1]),
10673             q{startrule},
10674             $tracelevel)
10675             if defined $::RD_TRACE;
10676 0         0 return undef;
10677             }
10678 47 50 33     252 if (!defined($return) && defined($score))
10679             {
10680 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
10681             q{startrule},
10682             $tracelevel)
10683             if defined $::RD_TRACE;
10684 0         0 $return = $score_return;
10685             }
10686 47         78 splice @{$thisparser->{errors}}, $err_at;
  47         146  
10687 47 50       162 $return = $item[$#item] unless defined $return;
10688 47 50       124 if (defined $::RD_TRACE)
10689             {
10690 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
10691             $return . q{])}, "",
10692             q{startrule},
10693             $tracelevel);
10694 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
10695             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
10696             Parse::RecDescent::_tracefirst($text),
10697             , q{startrule},
10698             $tracelevel)
10699             }
10700 47         108 $_[1] = $text;
10701 47         661 return $return;
10702             }
10703              
10704             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
10705             sub Parse::RecDescent::TM::CTM::CParser::_alternation_1_of_production_2_of_rule_string
10706             {
10707 30     30   498 my $thisparser = $_[0];
10708 1     1   6 use vars q{$tracelevel};
  1         2  
  1         546  
10709 30   50     86 local $tracelevel = ($tracelevel||0)+1;
10710 30         43 $ERRORS = 0;
10711 30         88 my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_2_of_rule_string"};
10712            
10713 30 50       68 Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_2_of_rule_string]},
10714             Parse::RecDescent::_tracefirst($_[1]),
10715             q{_alternation_1_of_production_2_of_rule_string},
10716             $tracelevel)
10717             if defined $::RD_TRACE;
10718              
10719            
10720 30         33 my $err_at = @{$thisparser->{errors}};
  30         67  
10721              
10722 30         55 my $score;
10723             my $score_return;
10724 0         0 my $_tok;
10725 30         42 my $return = undef;
10726 30         38 my $_matched=0;
10727 30         37 my $commit=0;
10728 30         59 my @item = ();
10729 30         43 my %item = ();
10730 30   33     101 my $repeating = defined($_[2]) && $_[2];
10731 30   33     112 my $_noactions = defined($_[3]) && $_[3];
10732 30 50       84 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  30         52  
  30         67  
10733 30 50       117 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
10734 30         44 my $text;
10735 30         58 my $lastsep="";
10736 30         99 my $expectation = new Parse::RecDescent::Expectation(q{'^^'});
10737 30         256 $expectation->at($_[1]);
10738            
10739 30         121 my $thisline;
10740 30         141 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
10741              
10742            
10743              
10744 30   33     336 while (!$_matched && !$commit)
10745             {
10746            
10747 30 50       75 Parse::RecDescent::_trace(q{Trying production: ['^^' iri]},
10748             Parse::RecDescent::_tracefirst($_[1]),
10749             q{_alternation_1_of_production_2_of_rule_string},
10750             $tracelevel)
10751             if defined $::RD_TRACE;
10752 30         91 my $thisprod = $thisrule->{"prods"}[0];
10753 30         136 $text = $_[1];
10754 30         41 my $_savetext;
10755 30         64 @item = (q{_alternation_1_of_production_2_of_rule_string});
10756 30         75 %item = (__RULE__ => q{_alternation_1_of_production_2_of_rule_string});
10757 30         46 my $repcount = 0;
10758              
10759              
10760 30 50       64 Parse::RecDescent::_trace(q{Trying terminal: ['^^']},
10761             Parse::RecDescent::_tracefirst($text),
10762             q{_alternation_1_of_production_2_of_rule_string},
10763             $tracelevel)
10764             if defined $::RD_TRACE;
10765 30         44 $lastsep = "";
10766 30         91 $expectation->is(q{})->at($text);
10767            
10768              
10769 30 100 66     352 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\^\^//)
  30 100       355  
10770             {
10771            
10772 28         89 $expectation->failed();
10773 28 50       138 Parse::RecDescent::_trace(qq{<>},
10774             Parse::RecDescent::_tracefirst($text))
10775             if defined $::RD_TRACE;
10776 28         68 last;
10777             }
10778 2 50       11 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
10779             . $& . q{])},
10780             Parse::RecDescent::_tracefirst($text))
10781             if defined $::RD_TRACE;
10782 2         9 push @item, $item{__STRING1__}=$&;
10783            
10784              
10785 2 50       9 Parse::RecDescent::_trace(q{Trying subrule: [iri]},
10786             Parse::RecDescent::_tracefirst($text),
10787             q{_alternation_1_of_production_2_of_rule_string},
10788             $tracelevel)
10789             if defined $::RD_TRACE;
10790 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         522  
  2         2  
10791 2         9 $expectation->is(q{iri})->at($text);
10792 2 50   2   23 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::iri($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  2         6  
10793             {
10794            
10795 0 0       0 Parse::RecDescent::_trace(q{<>},
10796             Parse::RecDescent::_tracefirst($text),
10797             q{_alternation_1_of_production_2_of_rule_string},
10798             $tracelevel)
10799             if defined $::RD_TRACE;
10800 0         0 $expectation->failed();
10801 0         0 last;
10802             }
10803 2 50       13 Parse::RecDescent::_trace(q{>>Matched subrule: [iri]<< (return value: [}
10804             . $_tok . q{]},
10805            
10806             Parse::RecDescent::_tracefirst($text),
10807             q{_alternation_1_of_production_2_of_rule_string},
10808             $tracelevel)
10809             if defined $::RD_TRACE;
10810 2         5 $item{q{iri}} = $_tok;
10811 2         5 push @item, $_tok;
10812            
10813             }
10814              
10815              
10816 2 50       7 Parse::RecDescent::_trace(q{>>Matched production: ['^^' iri]<<},
10817             Parse::RecDescent::_tracefirst($text),
10818             q{_alternation_1_of_production_2_of_rule_string},
10819             $tracelevel)
10820             if defined $::RD_TRACE;
10821 2         4 $_matched = 1;
10822 2         6 last;
10823             }
10824              
10825              
10826 30 100 66     160 unless ( $_matched || defined($score) )
10827             {
10828            
10829              
10830 28         48 $_[1] = $text; # NOT SURE THIS IS NEEDED
10831 28 50       67 Parse::RecDescent::_trace(q{<>},
10832             Parse::RecDescent::_tracefirst($_[1]),
10833             q{_alternation_1_of_production_2_of_rule_string},
10834             $tracelevel)
10835             if defined $::RD_TRACE;
10836 28         192 return undef;
10837             }
10838 2 50 33     18 if (!defined($return) && defined($score))
10839             {
10840 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
10841             q{_alternation_1_of_production_2_of_rule_string},
10842             $tracelevel)
10843             if defined $::RD_TRACE;
10844 0         0 $return = $score_return;
10845             }
10846 2         5 splice @{$thisparser->{errors}}, $err_at;
  2         6  
10847 2 50       10 $return = $item[$#item] unless defined $return;
10848 2 50       9 if (defined $::RD_TRACE)
10849             {
10850 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
10851             $return . q{])}, "",
10852             q{_alternation_1_of_production_2_of_rule_string},
10853             $tracelevel);
10854 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
10855             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
10856             Parse::RecDescent::_tracefirst($text),
10857             , q{_alternation_1_of_production_2_of_rule_string},
10858             $tracelevel)
10859             }
10860 2         5 $_[1] = $text;
10861 2         19 return $return;
10862             }
10863              
10864             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
10865             sub Parse::RecDescent::TM::CTM::CParser::roles
10866             {
10867 8     8   15 my $thisparser = $_[0];
10868 1     1   10 use vars q{$tracelevel};
  1         1  
  1         427  
10869 8   50     39 local $tracelevel = ($tracelevel||0)+1;
10870 8         16 $ERRORS = 0;
10871 8         20 my $thisrule = $thisparser->{"rules"}{"roles"};
10872            
10873 8 50       28 Parse::RecDescent::_trace(q{Trying rule: [roles]},
10874             Parse::RecDescent::_tracefirst($_[1]),
10875             q{roles},
10876             $tracelevel)
10877             if defined $::RD_TRACE;
10878              
10879            
10880 8         15 my $err_at = @{$thisparser->{errors}};
  8         21  
10881              
10882 8         18 my $score;
10883             my $score_return;
10884 0         0 my $_tok;
10885 8         14 my $return = undef;
10886 8         12 my $_matched=0;
10887 8         10 my $commit=0;
10888 8         18 my @item = ();
10889 8         15 my %item = ();
10890 8   33     33 my $repeating = defined($_[2]) && $_[2];
10891 8   33     29 my $_noactions = defined($_[3]) && $_[3];
10892 8 50       25 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  8         14  
  8         16  
10893 8 50       56 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
10894 8         10 my $text;
10895 8         16 my $lastsep="";
10896 8         33 my $expectation = new Parse::RecDescent::Expectation(q{});
10897 8         70 $expectation->at($_[1]);
10898            
10899 8         32 my $thisline;
10900 8         36 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
10901              
10902            
10903              
10904 8   33     95 while (!$_matched && !$commit)
10905             {
10906            
10907 8 50       50 Parse::RecDescent::_trace(q{Trying production: []},
10908             Parse::RecDescent::_tracefirst($_[1]),
10909             q{roles},
10910             $tracelevel)
10911             if defined $::RD_TRACE;
10912 8         24 my $thisprod = $thisrule->{"prods"}[0];
10913 8         16 $text = $_[1];
10914 8         11 my $_savetext;
10915 8         19 @item = (q{roles});
10916 8         20 %item = (__RULE__ => q{roles});
10917 8         9 my $repcount = 0;
10918              
10919              
10920 8 50       22 Parse::RecDescent::_trace(q{Trying operator: []},
10921             Parse::RecDescent::_tracefirst($text),
10922             q{roles},
10923             $tracelevel)
10924             if defined $::RD_TRACE;
10925 8         28 $expectation->is(q{})->at($text);
10926              
10927 8         51 $_tok = undef;
10928 8         10 OPLOOP: while (1)
10929             {
10930 8         11 $repcount = 0;
10931 8         12 my @item;
10932            
10933             # MATCH LEFTARG
10934            
10935 8 50       22 Parse::RecDescent::_trace(q{Trying subrule: [role]},
10936             Parse::RecDescent::_tracefirst($text),
10937             q{roles},
10938             $tracelevel)
10939             if defined $::RD_TRACE;
10940 1     1   6 if (1) { no strict qw{refs};
  1         3  
  1         624  
  8         9  
10941 8         27 $expectation->is(q{role})->at($text);
10942 8 100   8   95 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::role($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  8         21  
10943             {
10944            
10945 1 50       6 Parse::RecDescent::_trace(q{<>},
10946             Parse::RecDescent::_tracefirst($text),
10947             q{roles},
10948             $tracelevel)
10949             if defined $::RD_TRACE;
10950 1         5 $expectation->failed();
10951 1         12 last;
10952             }
10953 7 50       33 Parse::RecDescent::_trace(q{>>Matched subrule: [role]<< (return value: [}
10954             . $_tok . q{]},
10955            
10956             Parse::RecDescent::_tracefirst($text),
10957             q{roles},
10958             $tracelevel)
10959             if defined $::RD_TRACE;
10960 7         21 $item{q{role}} = $_tok;
10961 7         11 push @item, $_tok;
10962            
10963             }
10964              
10965              
10966 7         11 $repcount++;
10967              
10968 7         10 my $savetext = $text;
10969 7         10 my $backtrack;
10970              
10971             # MATCH (OP RIGHTARG)(s)
10972 7         21 while ($repcount < 100000000)
10973             {
10974 14         18 $backtrack = 0;
10975            
10976 14 50       34 Parse::RecDescent::_trace(q{Trying terminal: [/,/]}, Parse::RecDescent::_tracefirst($text),
10977             q{roles},
10978             $tracelevel)
10979             if defined $::RD_TRACE;
10980 14         25 $lastsep = "";
10981 14         48 $expectation->is(q{/,/})->at($text);
10982            
10983              
10984 14 50 66     178 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:,)//)
  14 100       143  
10985             {
10986            
10987 7         27 $expectation->failed();
10988 7 50       83 Parse::RecDescent::_trace(q{<>},
10989             Parse::RecDescent::_tracefirst($text))
10990             if defined $::RD_TRACE;
10991              
10992 7         17 last;
10993             }
10994 7 50       30 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
10995             . $& . q{])},
10996             Parse::RecDescent::_tracefirst($text))
10997             if defined $::RD_TRACE;
10998 7         27 push @item, $item{__PATTERN1__}=$&;
10999            
11000              
11001 7         11 pop @item;
11002 7 50       25 if (defined $1) {push @item, $item{'role(s)'}=$1; $backtrack=1;}
  0         0  
  0         0  
11003            
11004 7 50       17 Parse::RecDescent::_trace(q{Trying subrule: [role]},
11005             Parse::RecDescent::_tracefirst($text),
11006             q{roles},
11007             $tracelevel)
11008             if defined $::RD_TRACE;
11009 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         837  
  7         11  
11010 7         21 $expectation->is(q{role})->at($text);
11011 7 50   7   80 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::role($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  7         18  
11012             {
11013            
11014 0 0       0 Parse::RecDescent::_trace(q{<>},
11015             Parse::RecDescent::_tracefirst($text),
11016             q{roles},
11017             $tracelevel)
11018             if defined $::RD_TRACE;
11019 0         0 $expectation->failed();
11020 0         0 last;
11021             }
11022 7 50       33 Parse::RecDescent::_trace(q{>>Matched subrule: [role]<< (return value: [}
11023             . $_tok . q{]},
11024            
11025             Parse::RecDescent::_tracefirst($text),
11026             q{roles},
11027             $tracelevel)
11028             if defined $::RD_TRACE;
11029 7         15 $item{q{role}} = $_tok;
11030 7         13 push @item, $_tok;
11031            
11032             }
11033              
11034 7         10 $savetext = $text;
11035 7         22 $repcount++;
11036             }
11037 7         14 $text = $savetext;
11038 7 50       18 pop @item if $backtrack;
11039              
11040 7 50       21 unless (@item) { undef $_tok; last }
  0         0  
  0         0  
11041 7         17 $_tok = [ @item ];
11042 7         14 last;
11043             }
11044              
11045 8 100       28 unless ($repcount>=1)
11046             {
11047 1 50       5 Parse::RecDescent::_trace(q{<]>>},
11048             Parse::RecDescent::_tracefirst($text),
11049             q{roles},
11050             $tracelevel)
11051             if defined $::RD_TRACE;
11052 1         4 $expectation->failed();
11053 1         7 last;
11054             }
11055 7 50       19 Parse::RecDescent::_trace(q{>>Matched operator: []<< (return value: [}
11056 0 0       0 . qq{@{$_tok||[]}} . q{]},
11057             Parse::RecDescent::_tracefirst($text),
11058             q{roles},
11059             $tracelevel)
11060             if defined $::RD_TRACE;
11061              
11062 7   50     32 push @item, $item{'role(s)'}=$_tok||[];
11063              
11064              
11065              
11066 7 50       29 Parse::RecDescent::_trace(q{>>Matched production: []<<},
11067             Parse::RecDescent::_tracefirst($text),
11068             q{roles},
11069             $tracelevel)
11070             if defined $::RD_TRACE;
11071 7         8 $_matched = 1;
11072 7         17 last;
11073             }
11074              
11075              
11076 8 100 66     33 unless ( $_matched || defined($score) )
11077             {
11078            
11079              
11080 1         2 $_[1] = $text; # NOT SURE THIS IS NEEDED
11081 1 50       5 Parse::RecDescent::_trace(q{<>},
11082             Parse::RecDescent::_tracefirst($_[1]),
11083             q{roles},
11084             $tracelevel)
11085             if defined $::RD_TRACE;
11086 1         11 return undef;
11087             }
11088 7 50 33     40 if (!defined($return) && defined($score))
11089             {
11090 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
11091             q{roles},
11092             $tracelevel)
11093             if defined $::RD_TRACE;
11094 0         0 $return = $score_return;
11095             }
11096 7         10 splice @{$thisparser->{errors}}, $err_at;
  7         18  
11097 7 50       20 $return = $item[$#item] unless defined $return;
11098 7 50       22 if (defined $::RD_TRACE)
11099             {
11100 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
11101             $return . q{])}, "",
11102             q{roles},
11103             $tracelevel);
11104 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
11105             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
11106             Parse::RecDescent::_tracefirst($text),
11107             , q{roles},
11108             $tracelevel)
11109             }
11110 7         14 $_[1] = $text;
11111 7         75 return $return;
11112             }
11113              
11114             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
11115             sub Parse::RecDescent::TM::CTM::CParser::template
11116             {
11117 132     132   269 my $thisparser = $_[0];
11118 1     1   7 use vars q{$tracelevel};
  1         2  
  1         615  
11119 132   50     456 local $tracelevel = ($tracelevel||0)+1;
11120 132         221 $ERRORS = 0;
11121 132         342 my $thisrule = $thisparser->{"rules"}{"template"};
11122            
11123 132 50       310 Parse::RecDescent::_trace(q{Trying rule: [template]},
11124             Parse::RecDescent::_tracefirst($_[1]),
11125             q{template},
11126             $tracelevel)
11127             if defined $::RD_TRACE;
11128              
11129            
11130 132         154 my $err_at = @{$thisparser->{errors}};
  132         304  
11131              
11132 132         191 my $score;
11133             my $score_return;
11134 0         0 my $_tok;
11135 132         153 my $return = undef;
11136 132         156 my $_matched=0;
11137 132         160 my $commit=0;
11138 132         222 my @item = ();
11139 132         239 my %item = ();
11140 132   33     463 my $repeating = defined($_[2]) && $_[2];
11141 132   33     426 my $_noactions = defined($_[3]) && $_[3];
11142 132 50       330 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  132         140  
  132         255  
11143 132 50       673 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
11144 132         214 my $text;
11145 132         230 my $lastsep="";
11146 132         504 my $expectation = new Parse::RecDescent::Expectation(q{'def'});
11147 132         1087 $expectation->at($_[1]);
11148            
11149 132         581 my $thisline;
11150 132         558 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
11151              
11152            
11153              
11154 132   33     1340 while (!$_matched && !$commit)
11155             {
11156            
11157 132 50       304 Parse::RecDescent::_trace(q{Trying production: ['def' identifier parameters /(.*?)(?=\\bend\\n)/s 'end']},
11158             Parse::RecDescent::_tracefirst($_[1]),
11159             q{template},
11160             $tracelevel)
11161             if defined $::RD_TRACE;
11162 132         360 my $thisprod = $thisrule->{"prods"}[0];
11163 132         219 $text = $_[1];
11164 132         149 my $_savetext;
11165 132         266 @item = (q{template});
11166 132         276 %item = (__RULE__ => q{template});
11167 132         145 my $repcount = 0;
11168              
11169              
11170 132 50       299 Parse::RecDescent::_trace(q{Trying terminal: ['def']},
11171             Parse::RecDescent::_tracefirst($text),
11172             q{template},
11173             $tracelevel)
11174             if defined $::RD_TRACE;
11175 132         168 $lastsep = "";
11176 132         330 $expectation->is(q{})->at($text);
11177            
11178              
11179 132 100 66     1412 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Adef//)
  132 100       1455  
11180             {
11181            
11182 119         394 $expectation->failed();
11183 119 50       484 Parse::RecDescent::_trace(qq{<>},
11184             Parse::RecDescent::_tracefirst($text))
11185             if defined $::RD_TRACE;
11186 119         239 last;
11187             }
11188 13 50       49 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
11189             . $& . q{])},
11190             Parse::RecDescent::_tracefirst($text))
11191             if defined $::RD_TRACE;
11192 13         61 push @item, $item{__STRING1__}=$&;
11193            
11194              
11195 13 50       43 Parse::RecDescent::_trace(q{Trying subrule: [identifier]},
11196             Parse::RecDescent::_tracefirst($text),
11197             q{template},
11198             $tracelevel)
11199             if defined $::RD_TRACE;
11200 1     1   7 if (1) { no strict qw{refs};
  1         2  
  1         246  
  13         18  
11201 13         53 $expectation->is(q{identifier})->at($text);
11202 13 50   13   147 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::identifier($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  13         39  
11203             {
11204            
11205 0 0       0 Parse::RecDescent::_trace(q{<>},
11206             Parse::RecDescent::_tracefirst($text),
11207             q{template},
11208             $tracelevel)
11209             if defined $::RD_TRACE;
11210 0         0 $expectation->failed();
11211 0         0 last;
11212             }
11213 13 50       70 Parse::RecDescent::_trace(q{>>Matched subrule: [identifier]<< (return value: [}
11214             . $_tok . q{]},
11215            
11216             Parse::RecDescent::_tracefirst($text),
11217             q{template},
11218             $tracelevel)
11219             if defined $::RD_TRACE;
11220 13         36 $item{q{identifier}} = $_tok;
11221 13         28 push @item, $_tok;
11222            
11223             }
11224              
11225 13 50       32 Parse::RecDescent::_trace(q{Trying subrule: [parameters]},
11226             Parse::RecDescent::_tracefirst($text),
11227             q{template},
11228             $tracelevel)
11229             if defined $::RD_TRACE;
11230 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         1087  
  13         18  
11231 13         40 $expectation->is(q{parameters})->at($text);
11232 13 50   13   145 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::parameters($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  13         40  
11233             {
11234            
11235 0 0       0 Parse::RecDescent::_trace(q{<>},
11236             Parse::RecDescent::_tracefirst($text),
11237             q{template},
11238             $tracelevel)
11239             if defined $::RD_TRACE;
11240 0         0 $expectation->failed();
11241 0         0 last;
11242             }
11243 13 50       53 Parse::RecDescent::_trace(q{>>Matched subrule: [parameters]<< (return value: [}
11244             . $_tok . q{]},
11245            
11246             Parse::RecDescent::_tracefirst($text),
11247             q{template},
11248             $tracelevel)
11249             if defined $::RD_TRACE;
11250 13         29 $item{q{parameters}} = $_tok;
11251 13         28 push @item, $_tok;
11252            
11253             }
11254              
11255 13 50       35 Parse::RecDescent::_trace(q{Trying terminal: [/(.*?)(?=\\bend\\n)/s]}, Parse::RecDescent::_tracefirst($text),
11256             q{template},
11257             $tracelevel)
11258             if defined $::RD_TRACE;
11259 13         23 $lastsep = "";
11260 13         40 $expectation->is(q{/(.*?)(?=\\bend\\n)/s})->at($text);
11261            
11262              
11263 13 50 33     159 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:(.*?)(?=\bend\n))//s)
  13 50       243  
11264             {
11265            
11266 0         0 $expectation->failed();
11267 0 0       0 Parse::RecDescent::_trace(q{<>},
11268             Parse::RecDescent::_tracefirst($text))
11269             if defined $::RD_TRACE;
11270              
11271 0         0 last;
11272             }
11273 13 50       44 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
11274             . $& . q{])},
11275             Parse::RecDescent::_tracefirst($text))
11276             if defined $::RD_TRACE;
11277 13         66 push @item, $item{__PATTERN1__}=$&;
11278            
11279              
11280 13 50       38 Parse::RecDescent::_trace(q{Trying terminal: ['end']},
11281             Parse::RecDescent::_tracefirst($text),
11282             q{template},
11283             $tracelevel)
11284             if defined $::RD_TRACE;
11285 13         25 $lastsep = "";
11286 13         39 $expectation->is(q{'end'})->at($text);
11287            
11288              
11289 13 50 33     151 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Aend//)
  13 50       145  
11290             {
11291            
11292 0         0 $expectation->failed();
11293 0 0       0 Parse::RecDescent::_trace(qq{<>},
11294             Parse::RecDescent::_tracefirst($text))
11295             if defined $::RD_TRACE;
11296 0         0 last;
11297             }
11298 13 50       37 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
11299             . $& . q{])},
11300             Parse::RecDescent::_tracefirst($text))
11301             if defined $::RD_TRACE;
11302 13         44 push @item, $item{__STRING2__}=$&;
11303            
11304              
11305 13 50       35 Parse::RecDescent::_trace(q{Trying action},
11306             Parse::RecDescent::_tracefirst($text),
11307             q{template},
11308             $tracelevel)
11309             if defined $::RD_TRACE;
11310            
11311              
11312 13 50       30 $_tok = ($_noactions) ? 0 : do {
11313 13         75 my $return = {
11314             name => $item[2],
11315             params => $item[3],
11316             body => $item[4],
11317             };
11318 13 100       91 $templates{$return->{name}}
11319             and die "template '".$return->{name}."' already defined";
11320 12         37 $templates{$return->{name}} = $return;
11321             };
11322 12 50       39 unless (defined $_tok)
11323             {
11324 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
11325             if defined $::RD_TRACE;
11326 0         0 last;
11327             }
11328 12 50       71 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
11329             . $_tok . q{])},
11330             Parse::RecDescent::_tracefirst($text))
11331             if defined $::RD_TRACE;
11332 12         21 push @item, $_tok;
11333            
11334            
11335              
11336              
11337 12 50       28 Parse::RecDescent::_trace(q{>>Matched production: ['def' identifier parameters /(.*?)(?=\\bend\\n)/s 'end']<<},
11338             Parse::RecDescent::_tracefirst($text),
11339             q{template},
11340             $tracelevel)
11341             if defined $::RD_TRACE;
11342 12         28 $_matched = 1;
11343 12         26 last;
11344             }
11345              
11346              
11347 131 100 66     708 unless ( $_matched || defined($score) )
11348             {
11349            
11350              
11351 119         245 $_[1] = $text; # NOT SURE THIS IS NEEDED
11352 119 50       272 Parse::RecDescent::_trace(q{<>},
11353             Parse::RecDescent::_tracefirst($_[1]),
11354             q{template},
11355             $tracelevel)
11356             if defined $::RD_TRACE;
11357 119         903 return undef;
11358             }
11359 12 50 33     67 if (!defined($return) && defined($score))
11360             {
11361 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
11362             q{template},
11363             $tracelevel)
11364             if defined $::RD_TRACE;
11365 0         0 $return = $score_return;
11366             }
11367 12         21 splice @{$thisparser->{errors}}, $err_at;
  12         29  
11368 12 50       34 $return = $item[$#item] unless defined $return;
11369 12 50       30 if (defined $::RD_TRACE)
11370             {
11371 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
11372             $return . q{])}, "",
11373             q{template},
11374             $tracelevel);
11375 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
11376             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
11377             Parse::RecDescent::_tracefirst($text),
11378             , q{template},
11379             $tracelevel)
11380             }
11381 12         20 $_[1] = $text;
11382 12         125 return $return;
11383             }
11384              
11385             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
11386             sub Parse::RecDescent::TM::CTM::CParser::assignment
11387             {
11388 118     118   256 my $thisparser = $_[0];
11389 1     1   6 use vars q{$tracelevel};
  1         2  
  1         383  
11390 118   50     363 local $tracelevel = ($tracelevel||0)+1;
11391 118         142 $ERRORS = 0;
11392 118         324 my $thisrule = $thisparser->{"rules"}{"assignment"};
11393            
11394 118 50       306 Parse::RecDescent::_trace(q{Trying rule: [assignment]},
11395             Parse::RecDescent::_tracefirst($_[1]),
11396             q{assignment},
11397             $tracelevel)
11398             if defined $::RD_TRACE;
11399              
11400            
11401 118         125 my $err_at = @{$thisparser->{errors}};
  118         252  
11402              
11403 118         190 my $score;
11404             my $score_return;
11405 0         0 my $_tok;
11406 118         138 my $return = undef;
11407 118         165 my $_matched=0;
11408 118         160 my $commit=0;
11409 118         185 my @item = ();
11410 118         234 my %item = ();
11411 118   33     355 my $repeating = defined($_[2]) && $_[2];
11412 118   33     448 my $_noactions = defined($_[3]) && $_[3];
11413 118 50       279 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  118         147  
  118         252  
11414 118 50       488 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
11415 118         174 my $text;
11416 118         173 my $lastsep="";
11417 118         493 my $expectation = new Parse::RecDescent::Expectation(q{name, or occurrence});
11418 118         945 $expectation->at($_[1]);
11419            
11420 118         486 my $thisline;
11421 118         549 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
11422              
11423            
11424              
11425 118   33     1181 while (!$_matched && !$commit)
11426             {
11427            
11428 118 50       323 Parse::RecDescent::_trace(q{Trying production: [name]},
11429             Parse::RecDescent::_tracefirst($_[1]),
11430             q{assignment},
11431             $tracelevel)
11432             if defined $::RD_TRACE;
11433 118         324 my $thisprod = $thisrule->{"prods"}[0];
11434 118         202 $text = $_[1];
11435 118         168 my $_savetext;
11436 118         234 @item = (q{assignment});
11437 118         262 %item = (__RULE__ => q{assignment});
11438 118         159 my $repcount = 0;
11439              
11440              
11441 118 50       246 Parse::RecDescent::_trace(q{Trying subrule: [name]},
11442             Parse::RecDescent::_tracefirst($text),
11443             q{assignment},
11444             $tracelevel)
11445             if defined $::RD_TRACE;
11446 1     1   5 if (1) { no strict qw{refs};
  1         3  
  1         398  
  118         144  
11447 118         343 $expectation->is(q{})->at($text);
11448 118 100   118   1662 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::name($thisparser,$text,$repeating,$_noactions,sub { return [$arg[0]] })))
  118         377  
11449             {
11450            
11451 97 50       210 Parse::RecDescent::_trace(q{<>},
11452             Parse::RecDescent::_tracefirst($text),
11453             q{assignment},
11454             $tracelevel)
11455             if defined $::RD_TRACE;
11456 97         290 $expectation->failed();
11457 97         334 last;
11458             }
11459 21 50       122 Parse::RecDescent::_trace(q{>>Matched subrule: [name]<< (return value: [}
11460             . $_tok . q{]},
11461            
11462             Parse::RecDescent::_tracefirst($text),
11463             q{assignment},
11464             $tracelevel)
11465             if defined $::RD_TRACE;
11466 21         58 $item{q{name}} = $_tok;
11467 21         45 push @item, $_tok;
11468            
11469             }
11470              
11471              
11472 21 50       51 Parse::RecDescent::_trace(q{>>Matched production: [name]<<},
11473             Parse::RecDescent::_tracefirst($text),
11474             q{assignment},
11475             $tracelevel)
11476             if defined $::RD_TRACE;
11477 21         41 $_matched = 1;
11478 21         49 last;
11479             }
11480              
11481              
11482 118   66     630 while (!$_matched && !$commit)
11483             {
11484            
11485 97 50       231 Parse::RecDescent::_trace(q{Trying production: [occurrence]},
11486             Parse::RecDescent::_tracefirst($_[1]),
11487             q{assignment},
11488             $tracelevel)
11489             if defined $::RD_TRACE;
11490 97         237 my $thisprod = $thisrule->{"prods"}[1];
11491 97         190 $text = $_[1];
11492 97         124 my $_savetext;
11493 97         236 @item = (q{assignment});
11494 97         222 %item = (__RULE__ => q{assignment});
11495 97         120 my $repcount = 0;
11496              
11497              
11498 97 50       219 Parse::RecDescent::_trace(q{Trying subrule: [occurrence]},
11499             Parse::RecDescent::_tracefirst($text),
11500             q{assignment},
11501             $tracelevel)
11502             if defined $::RD_TRACE;
11503 1     1   8 if (1) { no strict qw{refs};
  1         4  
  1         7147  
  97         117  
11504 97         269 $expectation->is(q{})->at($text);
11505 97 100   97   1063 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::occurrence($thisparser,$text,$repeating,$_noactions,sub { return [$arg[0]] })))
  97         310  
11506             {
11507            
11508 71 50       159 Parse::RecDescent::_trace(q{<>},
11509             Parse::RecDescent::_tracefirst($text),
11510             q{assignment},
11511             $tracelevel)
11512             if defined $::RD_TRACE;
11513 71         201 $expectation->failed();
11514 71         246 last;
11515             }
11516 26 50       154 Parse::RecDescent::_trace(q{>>Matched subrule: [occurrence]<< (return value: [}
11517             . $_tok . q{]},
11518            
11519             Parse::RecDescent::_tracefirst($text),
11520             q{assignment},
11521             $tracelevel)
11522             if defined $::RD_TRACE;
11523 26         148 $item{q{occurrence}} = $_tok;
11524 26         56 push @item, $_tok;
11525            
11526             }
11527              
11528              
11529 26 50       102 Parse::RecDescent::_trace(q{>>Matched production: [occurrence]<<},
11530             Parse::RecDescent::_tracefirst($text),
11531             q{assignment},
11532             $tracelevel)
11533             if defined $::RD_TRACE;
11534 26         36 $_matched = 1;
11535 26         78 last;
11536             }
11537              
11538              
11539 118 100 66     630 unless ( $_matched || defined($score) )
11540             {
11541            
11542              
11543 71         148 $_[1] = $text; # NOT SURE THIS IS NEEDED
11544 71 50       151 Parse::RecDescent::_trace(q{<>},
11545             Parse::RecDescent::_tracefirst($_[1]),
11546             q{assignment},
11547             $tracelevel)
11548             if defined $::RD_TRACE;
11549 71         501 return undef;
11550             }
11551 47 50 33     302 if (!defined($return) && defined($score))
11552             {
11553 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
11554             q{assignment},
11555             $tracelevel)
11556             if defined $::RD_TRACE;
11557 0         0 $return = $score_return;
11558             }
11559 47         71 splice @{$thisparser->{errors}}, $err_at;
  47         117  
11560 47 50       145 $return = $item[$#item] unless defined $return;
11561 47 50       120 if (defined $::RD_TRACE)
11562             {
11563 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
11564             $return . q{])}, "",
11565             q{assignment},
11566             $tracelevel);
11567 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
11568             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
11569             Parse::RecDescent::_tracefirst($text),
11570             , q{assignment},
11571             $tracelevel)
11572             }
11573 47         102 $_[1] = $text;
11574 47         521 return $return;
11575             }
11576              
11577             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
11578             sub Parse::RecDescent::TM::CTM::CParser::iri_literal
11579             {
11580 26     26   45 my $thisparser = $_[0];
11581 1     1   12 use vars q{$tracelevel};
  1         2  
  1         367  
11582 26   50     109 local $tracelevel = ($tracelevel||0)+1;
11583 26         54 $ERRORS = 0;
11584 26         64 my $thisrule = $thisparser->{"rules"}{"iri_literal"};
11585            
11586 26 50       61 Parse::RecDescent::_trace(q{Trying rule: [iri_literal]},
11587             Parse::RecDescent::_tracefirst($_[1]),
11588             q{iri_literal},
11589             $tracelevel)
11590             if defined $::RD_TRACE;
11591              
11592            
11593 26         29 my $err_at = @{$thisparser->{errors}};
  26         53  
11594              
11595 26         46 my $score;
11596             my $score_return;
11597 0         0 my $_tok;
11598 26         32 my $return = undef;
11599 26         40 my $_matched=0;
11600 26         30 my $commit=0;
11601 26         44 my @item = ();
11602 26         44 my %item = ();
11603 26   33     87 my $repeating = defined($_[2]) && $_[2];
11604 26   33     96 my $_noactions = defined($_[3]) && $_[3];
11605 26 50       65 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  26         26  
  26         59  
11606 26 50       113 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
11607 26         25 my $text;
11608 26         48 my $lastsep="";
11609 26         92 my $expectation = new Parse::RecDescent::Expectation(q{literal, or iri});
11610 26         241 $expectation->at($_[1]);
11611            
11612 26         93 my $thisline;
11613 26         124 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
11614              
11615            
11616              
11617 26   33     304 while (!$_matched && !$commit)
11618             {
11619            
11620 26 50       78 Parse::RecDescent::_trace(q{Trying production: [literal]},
11621             Parse::RecDescent::_tracefirst($_[1]),
11622             q{iri_literal},
11623             $tracelevel)
11624             if defined $::RD_TRACE;
11625 26         84 my $thisprod = $thisrule->{"prods"}[0];
11626 26         36 $text = $_[1];
11627 26         44 my $_savetext;
11628 26         59 @item = (q{iri_literal});
11629 26         64 %item = (__RULE__ => q{iri_literal});
11630 26         36 my $repcount = 0;
11631              
11632              
11633 26 50       74 Parse::RecDescent::_trace(q{Trying subrule: [literal]},
11634             Parse::RecDescent::_tracefirst($text),
11635             q{iri_literal},
11636             $tracelevel)
11637             if defined $::RD_TRACE;
11638 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         276  
  26         31  
11639 26         87 $expectation->is(q{})->at($text);
11640 26 100   26   290 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::literal($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  26         68  
11641             {
11642            
11643 14 50       50 Parse::RecDescent::_trace(q{<>},
11644             Parse::RecDescent::_tracefirst($text),
11645             q{iri_literal},
11646             $tracelevel)
11647             if defined $::RD_TRACE;
11648 14         42 $expectation->failed();
11649 14         55 last;
11650             }
11651 12 50       58 Parse::RecDescent::_trace(q{>>Matched subrule: [literal]<< (return value: [}
11652             . $_tok . q{]},
11653            
11654             Parse::RecDescent::_tracefirst($text),
11655             q{iri_literal},
11656             $tracelevel)
11657             if defined $::RD_TRACE;
11658 12         32 $item{q{literal}} = $_tok;
11659 12         25 push @item, $_tok;
11660            
11661             }
11662              
11663              
11664 12 50       34 Parse::RecDescent::_trace(q{>>Matched production: [literal]<<},
11665             Parse::RecDescent::_tracefirst($text),
11666             q{iri_literal},
11667             $tracelevel)
11668             if defined $::RD_TRACE;
11669 12         17 $_matched = 1;
11670 12         22 last;
11671             }
11672              
11673              
11674 26   66     138 while (!$_matched && !$commit)
11675             {
11676            
11677 14 50       49 Parse::RecDescent::_trace(q{Trying production: [iri]},
11678             Parse::RecDescent::_tracefirst($_[1]),
11679             q{iri_literal},
11680             $tracelevel)
11681             if defined $::RD_TRACE;
11682 14         40 my $thisprod = $thisrule->{"prods"}[1];
11683 14         26 $text = $_[1];
11684 14         14 my $_savetext;
11685 14         37 @item = (q{iri_literal});
11686 14         33 %item = (__RULE__ => q{iri_literal});
11687 14         26 my $repcount = 0;
11688              
11689              
11690 14 50       38 Parse::RecDescent::_trace(q{Trying subrule: [iri]},
11691             Parse::RecDescent::_tracefirst($text),
11692             q{iri_literal},
11693             $tracelevel)
11694             if defined $::RD_TRACE;
11695 1     1   4 if (1) { no strict qw{refs};
  1         2  
  1         518  
  14         15  
11696 14         40 $expectation->is(q{})->at($text);
11697 14 50   14   157 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::iri($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  14         42  
11698             {
11699            
11700 0 0       0 Parse::RecDescent::_trace(q{<>},
11701             Parse::RecDescent::_tracefirst($text),
11702             q{iri_literal},
11703             $tracelevel)
11704             if defined $::RD_TRACE;
11705 0         0 $expectation->failed();
11706 0         0 last;
11707             }
11708 14 50       54 Parse::RecDescent::_trace(q{>>Matched subrule: [iri]<< (return value: [}
11709             . $_tok . q{]},
11710            
11711             Parse::RecDescent::_tracefirst($text),
11712             q{iri_literal},
11713             $tracelevel)
11714             if defined $::RD_TRACE;
11715 14         30 $item{q{iri}} = $_tok;
11716 14         23 push @item, $_tok;
11717            
11718             }
11719              
11720 14 50       31 Parse::RecDescent::_trace(q{Trying action},
11721             Parse::RecDescent::_tracefirst($text),
11722             q{iri_literal},
11723             $tracelevel)
11724             if defined $::RD_TRACE;
11725            
11726              
11727 14 50       22 $_tok = ($_noactions) ? 0 : do { $return = new TM::Literal ($item[1], TM::Literal->URI); };
  14         172  
11728 14 50       43 unless (defined $_tok)
11729             {
11730 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
11731             if defined $::RD_TRACE;
11732 0         0 last;
11733             }
11734 14 50       28 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
11735             . $_tok . q{])},
11736             Parse::RecDescent::_tracefirst($text))
11737             if defined $::RD_TRACE;
11738 14         30 push @item, $_tok;
11739            
11740            
11741              
11742              
11743 14 50       67 Parse::RecDescent::_trace(q{>>Matched production: [iri]<<},
11744             Parse::RecDescent::_tracefirst($text),
11745             q{iri_literal},
11746             $tracelevel)
11747             if defined $::RD_TRACE;
11748 14         18 $_matched = 1;
11749 14         31 last;
11750             }
11751              
11752              
11753 26 50 33     81 unless ( $_matched || defined($score) )
11754             {
11755            
11756              
11757 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
11758 0 0       0 Parse::RecDescent::_trace(q{<>},
11759             Parse::RecDescent::_tracefirst($_[1]),
11760             q{iri_literal},
11761             $tracelevel)
11762             if defined $::RD_TRACE;
11763 0         0 return undef;
11764             }
11765 26 50 66     109 if (!defined($return) && defined($score))
11766             {
11767 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
11768             q{iri_literal},
11769             $tracelevel)
11770             if defined $::RD_TRACE;
11771 0         0 $return = $score_return;
11772             }
11773 26         36 splice @{$thisparser->{errors}}, $err_at;
  26         66  
11774 26 100       82 $return = $item[$#item] unless defined $return;
11775 26 50       58 if (defined $::RD_TRACE)
11776             {
11777 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
11778             $return . q{])}, "",
11779             q{iri_literal},
11780             $tracelevel);
11781 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
11782             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
11783             Parse::RecDescent::_tracefirst($text),
11784             , q{iri_literal},
11785             $tracelevel)
11786             }
11787 26         66 $_[1] = $text;
11788 26         214 return $return;
11789             }
11790              
11791             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
11792             sub Parse::RecDescent::TM::CTM::CParser::subject_identifier
11793             {
11794 475     475   715 my $thisparser = $_[0];
11795 1     1   4 use vars q{$tracelevel};
  1         3  
  1         371  
11796 475   50     1373 local $tracelevel = ($tracelevel||0)+1;
11797 475         481 $ERRORS = 0;
11798 475         912 my $thisrule = $thisparser->{"rules"}{"subject_identifier"};
11799            
11800 475 50       869 Parse::RecDescent::_trace(q{Trying rule: [subject_identifier]},
11801             Parse::RecDescent::_tracefirst($_[1]),
11802             q{subject_identifier},
11803             $tracelevel)
11804             if defined $::RD_TRACE;
11805              
11806            
11807 475         464 my $err_at = @{$thisparser->{errors}};
  475         842  
11808              
11809 475         642 my $score;
11810             my $score_return;
11811 0         0 my $_tok;
11812 475         511 my $return = undef;
11813 475         571 my $_matched=0;
11814 475         532 my $commit=0;
11815 475         825 my @item = ();
11816 475         777 my %item = ();
11817 475   33     1280 my $repeating = defined($_[2]) && $_[2];
11818 475   33     1405 my $_noactions = defined($_[3]) && $_[3];
11819 475 50       835 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  475         502  
  475         1033  
11820 475 50       1864 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
11821 475         482 my $text;
11822 475         583 my $lastsep="";
11823 475         1363 my $expectation = new Parse::RecDescent::Expectation(q{iri});
11824 475         3664 $expectation->at($_[1]);
11825            
11826 475         1789 my $thisline;
11827 475         1952 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
11828              
11829            
11830              
11831 475   33     4096 while (!$_matched && !$commit)
11832             {
11833            
11834 475 50       920 Parse::RecDescent::_trace(q{Trying production: [iri]},
11835             Parse::RecDescent::_tracefirst($_[1]),
11836             q{subject_identifier},
11837             $tracelevel)
11838             if defined $::RD_TRACE;
11839 475         884 my $thisprod = $thisrule->{"prods"}[0];
11840 475         750 $text = $_[1];
11841 475         467 my $_savetext;
11842 475         849 @item = (q{subject_identifier});
11843 475         815 %item = (__RULE__ => q{subject_identifier});
11844 475         612 my $repcount = 0;
11845              
11846              
11847 475 50       976 Parse::RecDescent::_trace(q{Trying subrule: [iri]},
11848             Parse::RecDescent::_tracefirst($text),
11849             q{subject_identifier},
11850             $tracelevel)
11851             if defined $::RD_TRACE;
11852 1     1   6 if (1) { no strict qw{refs};
  1         3  
  1         674  
  475         458  
11853 475         1222 $expectation->is(q{})->at($text);
11854 475 100   475   4614 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::iri($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  475         1207  
11855             {
11856            
11857 456 50       914 Parse::RecDescent::_trace(q{<>},
11858             Parse::RecDescent::_tracefirst($text),
11859             q{subject_identifier},
11860             $tracelevel)
11861             if defined $::RD_TRACE;
11862 456         1284 $expectation->failed();
11863 456         1608 last;
11864             }
11865 19 50       86 Parse::RecDescent::_trace(q{>>Matched subrule: [iri]<< (return value: [}
11866             . $_tok . q{]},
11867            
11868             Parse::RecDescent::_tracefirst($text),
11869             q{subject_identifier},
11870             $tracelevel)
11871             if defined $::RD_TRACE;
11872 19         42 $item{q{iri}} = $_tok;
11873 19         34 push @item, $_tok;
11874            
11875             }
11876              
11877 19 50       48 Parse::RecDescent::_trace(q{Trying action},
11878             Parse::RecDescent::_tracefirst($text),
11879             q{subject_identifier},
11880             $tracelevel)
11881             if defined $::RD_TRACE;
11882            
11883              
11884 19 50       47 $_tok = ($_noactions) ? 0 : do { $return = \ $item[1]; };
  19         38  
11885 19 50       50 unless (defined $_tok)
11886             {
11887 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
11888             if defined $::RD_TRACE;
11889 0         0 last;
11890             }
11891 19 50       59 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
11892             . $_tok . q{])},
11893             Parse::RecDescent::_tracefirst($text))
11894             if defined $::RD_TRACE;
11895 19         40 push @item, $_tok;
11896            
11897            
11898              
11899              
11900 19 50       50 Parse::RecDescent::_trace(q{>>Matched production: [iri]<<},
11901             Parse::RecDescent::_tracefirst($text),
11902             q{subject_identifier},
11903             $tracelevel)
11904             if defined $::RD_TRACE;
11905 19         31 $_matched = 1;
11906 19         30 last;
11907             }
11908              
11909              
11910 475 100 66     2644 unless ( $_matched || defined($score) )
11911             {
11912            
11913              
11914 456         621 $_[1] = $text; # NOT SURE THIS IS NEEDED
11915 456 50       874 Parse::RecDescent::_trace(q{<>},
11916             Parse::RecDescent::_tracefirst($_[1]),
11917             q{subject_identifier},
11918             $tracelevel)
11919             if defined $::RD_TRACE;
11920 456         16467 return undef;
11921             }
11922 19 50 33     76 if (!defined($return) && defined($score))
11923             {
11924 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
11925             q{subject_identifier},
11926             $tracelevel)
11927             if defined $::RD_TRACE;
11928 0         0 $return = $score_return;
11929             }
11930 19         27 splice @{$thisparser->{errors}}, $err_at;
  19         51  
11931 19 50       57 $return = $item[$#item] unless defined $return;
11932 19 50       51 if (defined $::RD_TRACE)
11933             {
11934 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
11935             $return . q{])}, "",
11936             q{subject_identifier},
11937             $tracelevel);
11938 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
11939             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
11940             Parse::RecDescent::_tracefirst($text),
11941             , q{subject_identifier},
11942             $tracelevel)
11943             }
11944 19         36 $_[1] = $text;
11945 19         152 return $return;
11946             }
11947              
11948             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
11949             sub Parse::RecDescent::TM::CTM::CParser::parameters
11950             {
11951 13     13   27 my $thisparser = $_[0];
11952 1     1   6 use vars q{$tracelevel};
  1         4  
  1         758  
11953 13   50     56 local $tracelevel = ($tracelevel||0)+1;
11954 13         20 $ERRORS = 0;
11955 13         41 my $thisrule = $thisparser->{"rules"}{"parameters"};
11956            
11957 13 50       40 Parse::RecDescent::_trace(q{Trying rule: [parameters]},
11958             Parse::RecDescent::_tracefirst($_[1]),
11959             q{parameters},
11960             $tracelevel)
11961             if defined $::RD_TRACE;
11962              
11963            
11964 13         19 my $err_at = @{$thisparser->{errors}};
  13         30  
11965              
11966 13         18 my $score;
11967             my $score_return;
11968 0         0 my $_tok;
11969 13         22 my $return = undef;
11970 13         19 my $_matched=0;
11971 13         20 my $commit=0;
11972 13         25 my @item = ();
11973 13         38 my %item = ();
11974 13   33     52 my $repeating = defined($_[2]) && $_[2];
11975 13   33     48 my $_noactions = defined($_[3]) && $_[3];
11976 13 50       45 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  13         16  
  13         24  
11977 13 50       74 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
11978 13         19 my $text;
11979 13         34 my $lastsep="";
11980 13         51 my $expectation = new Parse::RecDescent::Expectation(q{'('});
11981 13         105 $expectation->at($_[1]);
11982            
11983 13         49 my $thisline;
11984 13         62 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
11985              
11986            
11987              
11988 13   33     147 while (!$_matched && !$commit)
11989             {
11990            
11991 13 50       45 Parse::RecDescent::_trace(q{Trying production: ['(' ')']},
11992             Parse::RecDescent::_tracefirst($_[1]),
11993             q{parameters},
11994             $tracelevel)
11995             if defined $::RD_TRACE;
11996 13         34 my $thisprod = $thisrule->{"prods"}[0];
11997 13         21 $text = $_[1];
11998 13         20 my $_savetext;
11999 13         33 @item = (q{parameters});
12000 13         37 %item = (__RULE__ => q{parameters});
12001 13         18 my $repcount = 0;
12002              
12003              
12004 13 50       38 Parse::RecDescent::_trace(q{Trying terminal: ['(']},
12005             Parse::RecDescent::_tracefirst($text),
12006             q{parameters},
12007             $tracelevel)
12008             if defined $::RD_TRACE;
12009 13         31 $lastsep = "";
12010 13         39 $expectation->is(q{})->at($text);
12011            
12012              
12013 13 100 33     167 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\(//)
  13 50       197  
12014             {
12015            
12016 0         0 $expectation->failed();
12017 0 0       0 Parse::RecDescent::_trace(qq{<>},
12018             Parse::RecDescent::_tracefirst($text))
12019             if defined $::RD_TRACE;
12020 0         0 last;
12021             }
12022 13 50       48 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
12023             . $& . q{])},
12024             Parse::RecDescent::_tracefirst($text))
12025             if defined $::RD_TRACE;
12026 13         50 push @item, $item{__STRING1__}=$&;
12027            
12028              
12029 13 50       40 Parse::RecDescent::_trace(q{Trying operator: []},
12030             Parse::RecDescent::_tracefirst($text),
12031             q{parameters},
12032             $tracelevel)
12033             if defined $::RD_TRACE;
12034 13         43 $expectation->is(q{})->at($text);
12035              
12036 13         88 $_tok = undef;
12037 13         22 OPLOOP: while (1)
12038             {
12039 13         22 $repcount = 0;
12040 13         21 my @item;
12041            
12042             # MATCH LEFTARG
12043            
12044 13 50       34 Parse::RecDescent::_trace(q{Trying subrule: [variable]},
12045             Parse::RecDescent::_tracefirst($text),
12046             q{parameters},
12047             $tracelevel)
12048             if defined $::RD_TRACE;
12049 1     1   8 if (1) { no strict qw{refs};
  1         5  
  1         605  
  13         15  
12050 13         39 $expectation->is(q{variable})->at($text);
12051 13 100   13   153 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::variable($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  13         46  
12052             {
12053            
12054 4 50       9 Parse::RecDescent::_trace(q{<>},
12055             Parse::RecDescent::_tracefirst($text),
12056             q{parameters},
12057             $tracelevel)
12058             if defined $::RD_TRACE;
12059 4         13 $expectation->failed();
12060 4         37 last;
12061             }
12062 9 50       45 Parse::RecDescent::_trace(q{>>Matched subrule: [variable]<< (return value: [}
12063             . $_tok . q{]},
12064            
12065             Parse::RecDescent::_tracefirst($text),
12066             q{parameters},
12067             $tracelevel)
12068             if defined $::RD_TRACE;
12069 9         25 $item{q{variable}} = $_tok;
12070 9         20 push @item, $_tok;
12071            
12072             }
12073              
12074              
12075 9         17 $repcount++;
12076              
12077 9         20 my $savetext = $text;
12078 9         14 my $backtrack;
12079              
12080             # MATCH (OP RIGHTARG)(s)
12081 9         29 while ($repcount < 100000000)
12082             {
12083 16         24 $backtrack = 0;
12084            
12085 16 50       34 Parse::RecDescent::_trace(q{Trying terminal: [/,/]}, Parse::RecDescent::_tracefirst($text),
12086             q{parameters},
12087             $tracelevel)
12088             if defined $::RD_TRACE;
12089 16         23 $lastsep = "";
12090 16         49 $expectation->is(q{/,/})->at($text);
12091            
12092              
12093 16 50 66     189 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:,)//)
  16 100       178  
12094             {
12095            
12096 9         31 $expectation->failed();
12097 9 50       101 Parse::RecDescent::_trace(q{<>},
12098             Parse::RecDescent::_tracefirst($text))
12099             if defined $::RD_TRACE;
12100              
12101 9         20 last;
12102             }
12103 7 50       28 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
12104             . $& . q{])},
12105             Parse::RecDescent::_tracefirst($text))
12106             if defined $::RD_TRACE;
12107 7         27 push @item, $item{__PATTERN1__}=$&;
12108            
12109              
12110 7         14 pop @item;
12111 7 50       25 if (defined $1) {push @item, $item{'variable(s?)'}=$1; $backtrack=1;}
  0         0  
  0         0  
12112            
12113 7 50       21 Parse::RecDescent::_trace(q{Trying subrule: [variable]},
12114             Parse::RecDescent::_tracefirst($text),
12115             q{parameters},
12116             $tracelevel)
12117             if defined $::RD_TRACE;
12118 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         1095  
  7         10  
12119 7         33 $expectation->is(q{variable})->at($text);
12120 7 50   7   77 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::variable($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  7         19  
12121             {
12122            
12123 0 0       0 Parse::RecDescent::_trace(q{<>},
12124             Parse::RecDescent::_tracefirst($text),
12125             q{parameters},
12126             $tracelevel)
12127             if defined $::RD_TRACE;
12128 0         0 $expectation->failed();
12129 0         0 last;
12130             }
12131 7 50       32 Parse::RecDescent::_trace(q{>>Matched subrule: [variable]<< (return value: [}
12132             . $_tok . q{]},
12133            
12134             Parse::RecDescent::_tracefirst($text),
12135             q{parameters},
12136             $tracelevel)
12137             if defined $::RD_TRACE;
12138 7         18 $item{q{variable}} = $_tok;
12139 7         14 push @item, $_tok;
12140            
12141             }
12142              
12143 7         11 $savetext = $text;
12144 7         19 $repcount++;
12145             }
12146 9         24 $text = $savetext;
12147 9 50       26 pop @item if $backtrack;
12148              
12149            
12150 9         20 $_tok = [ @item ];
12151 9         22 last;
12152             }
12153              
12154 13 50       56 unless ($repcount>=0)
12155             {
12156 0 0       0 Parse::RecDescent::_trace(q{<]>>},
12157             Parse::RecDescent::_tracefirst($text),
12158             q{parameters},
12159             $tracelevel)
12160             if defined $::RD_TRACE;
12161 0         0 $expectation->failed();
12162 0         0 last;
12163             }
12164 13 50       34 Parse::RecDescent::_trace(q{>>Matched operator: []<< (return value: [}
12165 0 0       0 . qq{@{$_tok||[]}} . q{]},
12166             Parse::RecDescent::_tracefirst($text),
12167             q{parameters},
12168             $tracelevel)
12169             if defined $::RD_TRACE;
12170              
12171 13   100     61 push @item, $item{'variable(s?)'}=$_tok||[];
12172              
12173              
12174 13 50       37 Parse::RecDescent::_trace(q{Trying terminal: [')']},
12175             Parse::RecDescent::_tracefirst($text),
12176             q{parameters},
12177             $tracelevel)
12178             if defined $::RD_TRACE;
12179 13         29 $lastsep = "";
12180 13         40 $expectation->is(q{')'})->at($text);
12181            
12182              
12183 13 50 33     137 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\)//)
  13 50       157  
12184             {
12185            
12186 0         0 $expectation->failed();
12187 0 0       0 Parse::RecDescent::_trace(qq{<>},
12188             Parse::RecDescent::_tracefirst($text))
12189             if defined $::RD_TRACE;
12190 0         0 last;
12191             }
12192 13 50       42 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
12193             . $& . q{])},
12194             Parse::RecDescent::_tracefirst($text))
12195             if defined $::RD_TRACE;
12196 13         47 push @item, $item{__STRING2__}=$&;
12197            
12198              
12199 13 50       35 Parse::RecDescent::_trace(q{Trying action},
12200             Parse::RecDescent::_tracefirst($text),
12201             q{parameters},
12202             $tracelevel)
12203             if defined $::RD_TRACE;
12204            
12205              
12206 13 50       37 $_tok = ($_noactions) ? 0 : do { $return = $item[2]; };
  13         25  
12207 13 50       34 unless (defined $_tok)
12208             {
12209 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
12210             if defined $::RD_TRACE;
12211 0         0 last;
12212             }
12213 13 50       31 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
12214             . $_tok . q{])},
12215             Parse::RecDescent::_tracefirst($text))
12216             if defined $::RD_TRACE;
12217 13         18 push @item, $_tok;
12218            
12219            
12220              
12221              
12222 13 50       29 Parse::RecDescent::_trace(q{>>Matched production: ['(' ')']<<},
12223             Parse::RecDescent::_tracefirst($text),
12224             q{parameters},
12225             $tracelevel)
12226             if defined $::RD_TRACE;
12227 13         15 $_matched = 1;
12228 13         39 last;
12229             }
12230              
12231              
12232 13 50 33     39 unless ( $_matched || defined($score) )
12233             {
12234            
12235              
12236 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
12237 0 0       0 Parse::RecDescent::_trace(q{<>},
12238             Parse::RecDescent::_tracefirst($_[1]),
12239             q{parameters},
12240             $tracelevel)
12241             if defined $::RD_TRACE;
12242 0         0 return undef;
12243             }
12244 13 50 33     49 if (!defined($return) && defined($score))
12245             {
12246 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
12247             q{parameters},
12248             $tracelevel)
12249             if defined $::RD_TRACE;
12250 0         0 $return = $score_return;
12251             }
12252 13         18 splice @{$thisparser->{errors}}, $err_at;
  13         27  
12253 13 50       38 $return = $item[$#item] unless defined $return;
12254 13 50       33 if (defined $::RD_TRACE)
12255             {
12256 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
12257             $return . q{])}, "",
12258             q{parameters},
12259             $tracelevel);
12260 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
12261             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
12262             Parse::RecDescent::_tracefirst($text),
12263             , q{parameters},
12264             $tracelevel)
12265             }
12266 13         29 $_[1] = $text;
12267 13         121 return $return;
12268             }
12269              
12270             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
12271             sub Parse::RecDescent::TM::CTM::CParser::typing
12272             {
12273 36     36   363 my $thisparser = $_[0];
12274 1     1   7 use vars q{$tracelevel};
  1         2  
  1         437  
12275 36   50     142 local $tracelevel = ($tracelevel||0)+1;
12276 36         49 $ERRORS = 0;
12277 36         127 my $thisrule = $thisparser->{"rules"}{"typing"};
12278            
12279 36 50       108 Parse::RecDescent::_trace(q{Trying rule: [typing]},
12280             Parse::RecDescent::_tracefirst($_[1]),
12281             q{typing},
12282             $tracelevel)
12283             if defined $::RD_TRACE;
12284              
12285            
12286 36         58 my $err_at = @{$thisparser->{errors}};
  36         78  
12287              
12288 36         82 my $score;
12289             my $score_return;
12290 0         0 my $_tok;
12291 36         50 my $return = undef;
12292 36         56 my $_matched=0;
12293 36         54 my $commit=0;
12294 36         74 my @item = ();
12295 36         72 my %item = ();
12296 36   33     154 my $repeating = defined($_[2]) && $_[2];
12297 36   33     155 my $_noactions = defined($_[3]) && $_[3];
12298 36 50       95 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  36         56  
  36         85  
12299 36 50       196 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
12300 36         46 my $text;
12301 36         60 my $lastsep="";
12302 36         119 my $expectation = new Parse::RecDescent::Expectation(q{type});
12303 36         296 $expectation->at($_[1]);
12304            
12305 36         130 my $thisline;
12306 36         159 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
12307              
12308            
12309              
12310 36   33     404 while (!$_matched && !$commit)
12311             {
12312            
12313 36 50       125 Parse::RecDescent::_trace(q{Trying production: [type ':']},
12314             Parse::RecDescent::_tracefirst($_[1]),
12315             q{typing},
12316             $tracelevel)
12317             if defined $::RD_TRACE;
12318 36         109 my $thisprod = $thisrule->{"prods"}[0];
12319 36         63 $text = $_[1];
12320 36         47 my $_savetext;
12321 36         108 @item = (q{typing});
12322 36         90 %item = (__RULE__ => q{typing});
12323 36         60 my $repcount = 0;
12324              
12325              
12326 36 50       113 Parse::RecDescent::_trace(q{Trying subrule: [type]},
12327             Parse::RecDescent::_tracefirst($text),
12328             q{typing},
12329             $tracelevel)
12330             if defined $::RD_TRACE;
12331 1     1   7 if (1) { no strict qw{refs};
  1         3  
  1         756  
  36         57  
12332 36         123 $expectation->is(q{})->at($text);
12333 36 100   36   392 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::type($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  36         108  
12334             {
12335            
12336 19 50       58 Parse::RecDescent::_trace(q{<>},
12337             Parse::RecDescent::_tracefirst($text),
12338             q{typing},
12339             $tracelevel)
12340             if defined $::RD_TRACE;
12341 19         56 $expectation->failed();
12342 19         72 last;
12343             }
12344 17 50       80 Parse::RecDescent::_trace(q{>>Matched subrule: [type]<< (return value: [}
12345             . $_tok . q{]},
12346            
12347             Parse::RecDescent::_tracefirst($text),
12348             q{typing},
12349             $tracelevel)
12350             if defined $::RD_TRACE;
12351 17         35 $item{q{type}} = $_tok;
12352 17         30 push @item, $_tok;
12353            
12354             }
12355              
12356 17 50       45 Parse::RecDescent::_trace(q{Trying terminal: [':']},
12357             Parse::RecDescent::_tracefirst($text),
12358             q{typing},
12359             $tracelevel)
12360             if defined $::RD_TRACE;
12361 17         24 $lastsep = "";
12362 17         57 $expectation->is(q{':'})->at($text);
12363            
12364              
12365 17 100 33     219 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\://)
  17 50       275  
12366             {
12367            
12368 0         0 $expectation->failed();
12369 0 0       0 Parse::RecDescent::_trace(qq{<>},
12370             Parse::RecDescent::_tracefirst($text))
12371             if defined $::RD_TRACE;
12372 0         0 last;
12373             }
12374 17 50       56 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
12375             . $& . q{])},
12376             Parse::RecDescent::_tracefirst($text))
12377             if defined $::RD_TRACE;
12378 17         59 push @item, $item{__STRING1__}=$&;
12379            
12380              
12381 17 50       45 Parse::RecDescent::_trace(q{Trying action},
12382             Parse::RecDescent::_tracefirst($text),
12383             q{typing},
12384             $tracelevel)
12385             if defined $::RD_TRACE;
12386            
12387              
12388 17 50       40 $_tok = ($_noactions) ? 0 : do { $return = $item[1]; };
  17         36  
12389 17 50       50 unless (defined $_tok)
12390             {
12391 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
12392             if defined $::RD_TRACE;
12393 0         0 last;
12394             }
12395 17 50       44 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
12396             . $_tok . q{])},
12397             Parse::RecDescent::_tracefirst($text))
12398             if defined $::RD_TRACE;
12399 17         26 push @item, $_tok;
12400            
12401            
12402              
12403              
12404 17 50       36 Parse::RecDescent::_trace(q{>>Matched production: [type ':']<<},
12405             Parse::RecDescent::_tracefirst($text),
12406             q{typing},
12407             $tracelevel)
12408             if defined $::RD_TRACE;
12409 17         23 $_matched = 1;
12410 17         31 last;
12411             }
12412              
12413              
12414 36 100 66     204 unless ( $_matched || defined($score) )
12415             {
12416            
12417              
12418 19         70 $_[1] = $text; # NOT SURE THIS IS NEEDED
12419 19 50       61 Parse::RecDescent::_trace(q{<>},
12420             Parse::RecDescent::_tracefirst($_[1]),
12421             q{typing},
12422             $tracelevel)
12423             if defined $::RD_TRACE;
12424 19         151 return undef;
12425             }
12426 17 50 33     61 if (!defined($return) && defined($score))
12427             {
12428 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
12429             q{typing},
12430             $tracelevel)
12431             if defined $::RD_TRACE;
12432 0         0 $return = $score_return;
12433             }
12434 17         27 splice @{$thisparser->{errors}}, $err_at;
  17         59  
12435 17 50       45 $return = $item[$#item] unless defined $return;
12436 17 50       40 if (defined $::RD_TRACE)
12437             {
12438 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
12439             $return . q{])}, "",
12440             q{typing},
12441             $tracelevel);
12442 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
12443             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
12444             Parse::RecDescent::_tracefirst($text),
12445             , q{typing},
12446             $tracelevel)
12447             }
12448 17         31 $_[1] = $text;
12449 17         150 return $return;
12450             }
12451              
12452             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
12453             sub Parse::RecDescent::TM::CTM::CParser::type
12454             {
12455 133     133   286 my $thisparser = $_[0];
12456 1     1   6 use vars q{$tracelevel};
  1         1  
  1         436  
12457 133   50     435 local $tracelevel = ($tracelevel||0)+1;
12458 133         176 $ERRORS = 0;
12459 133         423 my $thisrule = $thisparser->{"rules"}{"type"};
12460            
12461 133 50       271 Parse::RecDescent::_trace(q{Trying rule: [type]},
12462             Parse::RecDescent::_tracefirst($_[1]),
12463             q{type},
12464             $tracelevel)
12465             if defined $::RD_TRACE;
12466              
12467            
12468 133         134 my $err_at = @{$thisparser->{errors}};
  133         272  
12469              
12470 133         173 my $score;
12471             my $score_return;
12472 0         0 my $_tok;
12473 133         208 my $return = undef;
12474 133         152 my $_matched=0;
12475 133         169 my $commit=0;
12476 133         194 my @item = ();
12477 133         226 my %item = ();
12478 133   33     401 my $repeating = defined($_[2]) && $_[2];
12479 133   33     447 my $_noactions = defined($_[3]) && $_[3];
12480 133 50       320 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  133         193  
  133         313  
12481 133 50       441 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
12482 133         211 my $text;
12483 133         224 my $lastsep="";
12484 133         449 my $expectation = new Parse::RecDescent::Expectation(q{topic_ref});
12485 133         1178 $expectation->at($_[1]);
12486            
12487 133         465 my $thisline;
12488 133         532 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
12489              
12490            
12491              
12492 133   33     1408 while (!$_matched && !$commit)
12493             {
12494            
12495 133 50       296 Parse::RecDescent::_trace(q{Trying production: [topic_ref]},
12496             Parse::RecDescent::_tracefirst($_[1]),
12497             q{type},
12498             $tracelevel)
12499             if defined $::RD_TRACE;
12500 133         346 my $thisprod = $thisrule->{"prods"}[0];
12501 133         232 $text = $_[1];
12502 133         186 my $_savetext;
12503 133         282 @item = (q{type});
12504 133         314 %item = (__RULE__ => q{type});
12505 133         152 my $repcount = 0;
12506              
12507              
12508 133 50       278 Parse::RecDescent::_trace(q{Trying subrule: [topic_ref]},
12509             Parse::RecDescent::_tracefirst($text),
12510             q{type},
12511             $tracelevel)
12512             if defined $::RD_TRACE;
12513 1     1   7 if (1) { no strict qw{refs};
  1         4  
  1         559  
  133         134  
12514 133         431 $expectation->is(q{})->at($text);
12515 133 100   133   1459 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::topic_ref($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  133         333  
12516             {
12517            
12518 89 50       228 Parse::RecDescent::_trace(q{<>},
12519             Parse::RecDescent::_tracefirst($text),
12520             q{type},
12521             $tracelevel)
12522             if defined $::RD_TRACE;
12523 89         292 $expectation->failed();
12524 89         315 last;
12525             }
12526 44 50       208 Parse::RecDescent::_trace(q{>>Matched subrule: [topic_ref]<< (return value: [}
12527             . $_tok . q{]},
12528            
12529             Parse::RecDescent::_tracefirst($text),
12530             q{type},
12531             $tracelevel)
12532             if defined $::RD_TRACE;
12533 44         117 $item{q{topic_ref}} = $_tok;
12534 44         94 push @item, $_tok;
12535            
12536             }
12537              
12538              
12539 44 50       137 Parse::RecDescent::_trace(q{>>Matched production: [topic_ref]<<},
12540             Parse::RecDescent::_tracefirst($text),
12541             q{type},
12542             $tracelevel)
12543             if defined $::RD_TRACE;
12544 44         75 $_matched = 1;
12545 44         79 last;
12546             }
12547              
12548              
12549 133 100 66     660 unless ( $_matched || defined($score) )
12550             {
12551            
12552              
12553 89         147 $_[1] = $text; # NOT SURE THIS IS NEEDED
12554 89 50       417 Parse::RecDescent::_trace(q{<>},
12555             Parse::RecDescent::_tracefirst($_[1]),
12556             q{type},
12557             $tracelevel)
12558             if defined $::RD_TRACE;
12559 89         675 return undef;
12560             }
12561 44 50 33     338 if (!defined($return) && defined($score))
12562             {
12563 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
12564             q{type},
12565             $tracelevel)
12566             if defined $::RD_TRACE;
12567 0         0 $return = $score_return;
12568             }
12569 44         72 splice @{$thisparser->{errors}}, $err_at;
  44         104  
12570 44 50       170 $return = $item[$#item] unless defined $return;
12571 44 50       133 if (defined $::RD_TRACE)
12572             {
12573 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
12574             $return . q{])}, "",
12575             q{type},
12576             $tracelevel);
12577 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
12578             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
12579             Parse::RecDescent::_tracefirst($text),
12580             , q{type},
12581             $tracelevel)
12582             }
12583 44         94 $_[1] = $text;
12584 44         421 return $return;
12585             }
12586              
12587             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
12588             sub Parse::RecDescent::TM::CTM::CParser::prolog
12589             {
12590 50     50   90 my $thisparser = $_[0];
12591 1     1   7 use vars q{$tracelevel};
  1         3  
  1         1097  
12592 50   50     168 local $tracelevel = ($tracelevel||0)+1;
12593 50         96 $ERRORS = 0;
12594 50         147 my $thisrule = $thisparser->{"rules"}{"prolog"};
12595            
12596 50 50       135 Parse::RecDescent::_trace(q{Trying rule: [prolog]},
12597             Parse::RecDescent::_tracefirst($_[1]),
12598             q{prolog},
12599             $tracelevel)
12600             if defined $::RD_TRACE;
12601              
12602            
12603 50         66 my $err_at = @{$thisparser->{errors}};
  50         117  
12604              
12605 50         83 my $score;
12606             my $score_return;
12607 0         0 my $_tok;
12608 50         77 my $return = undef;
12609 50         93 my $_matched=0;
12610 50         89 my $commit=0;
12611 50         105 my @item = ();
12612 50         100 my %item = ();
12613 50   33     224 my $repeating = defined($_[2]) && $_[2];
12614 50   33     180 my $_noactions = defined($_[3]) && $_[3];
12615 50 50       188 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  50         81  
  50         130  
12616 50 50       328 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
12617 50         146 my $text;
12618 50         87 my $lastsep="";
12619 50         250 my $expectation = new Parse::RecDescent::Expectation(q{encoding});
12620 50         434 $expectation->at($_[1]);
12621            
12622 50         222 my $thisline;
12623 50         256 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
12624              
12625            
12626              
12627 50   33     586 while (!$_matched && !$commit)
12628             {
12629            
12630 50 50       128 Parse::RecDescent::_trace(q{Trying production: [encoding version]},
12631             Parse::RecDescent::_tracefirst($_[1]),
12632             q{prolog},
12633             $tracelevel)
12634             if defined $::RD_TRACE;
12635 50         119 my $thisprod = $thisrule->{"prods"}[0];
12636 50         109 $text = $_[1];
12637 50         81 my $_savetext;
12638 50         135 @item = (q{prolog});
12639 50         156 %item = (__RULE__ => q{prolog});
12640 50         91 my $repcount = 0;
12641              
12642              
12643 50 50       153 Parse::RecDescent::_trace(q{Trying repeated subrule: [encoding]},
12644             Parse::RecDescent::_tracefirst($text),
12645             q{prolog},
12646             $tracelevel)
12647             if defined $::RD_TRACE;
12648 50         207 $expectation->is(q{})->at($text);
12649            
12650 50 50   50   695 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::TM::CTM::CParser::encoding, 0, 1, $_noactions,$expectation,sub { \@arg })))
  50         153  
12651             {
12652 0 0       0 Parse::RecDescent::_trace(q{<>},
12653             Parse::RecDescent::_tracefirst($text),
12654             q{prolog},
12655             $tracelevel)
12656             if defined $::RD_TRACE;
12657 0         0 last;
12658             }
12659 50 50       837 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [encoding]<< (}
12660             . @$_tok . q{ times)},
12661            
12662             Parse::RecDescent::_tracefirst($text),
12663             q{prolog},
12664             $tracelevel)
12665             if defined $::RD_TRACE;
12666 50         129 $item{q{encoding(?)}} = $_tok;
12667 50         77 push @item, $_tok;
12668            
12669              
12670              
12671 50 50       170 Parse::RecDescent::_trace(q{Trying repeated subrule: [version]},
12672             Parse::RecDescent::_tracefirst($text),
12673             q{prolog},
12674             $tracelevel)
12675             if defined $::RD_TRACE;
12676 50         161 $expectation->is(q{version})->at($text);
12677            
12678 50 50   50   621 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::TM::CTM::CParser::version, 0, 1, $_noactions,$expectation,sub { \@arg })))
  50         141  
12679             {
12680 0 0       0 Parse::RecDescent::_trace(q{<>},
12681             Parse::RecDescent::_tracefirst($text),
12682             q{prolog},
12683             $tracelevel)
12684             if defined $::RD_TRACE;
12685 0         0 last;
12686             }
12687 50 50       654 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [version]<< (}
12688             . @$_tok . q{ times)},
12689            
12690             Parse::RecDescent::_tracefirst($text),
12691             q{prolog},
12692             $tracelevel)
12693             if defined $::RD_TRACE;
12694 50         153 $item{q{version(?)}} = $_tok;
12695 50         93 push @item, $_tok;
12696            
12697              
12698              
12699              
12700 50 50       124 Parse::RecDescent::_trace(q{>>Matched production: [encoding version]<<},
12701             Parse::RecDescent::_tracefirst($text),
12702             q{prolog},
12703             $tracelevel)
12704             if defined $::RD_TRACE;
12705 50         66 $_matched = 1;
12706 50         78 last;
12707             }
12708              
12709              
12710 50 50 33     175 unless ( $_matched || defined($score) )
12711             {
12712            
12713              
12714 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
12715 0 0       0 Parse::RecDescent::_trace(q{<>},
12716             Parse::RecDescent::_tracefirst($_[1]),
12717             q{prolog},
12718             $tracelevel)
12719             if defined $::RD_TRACE;
12720 0         0 return undef;
12721             }
12722 50 50 33     242 if (!defined($return) && defined($score))
12723             {
12724 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
12725             q{prolog},
12726             $tracelevel)
12727             if defined $::RD_TRACE;
12728 0         0 $return = $score_return;
12729             }
12730 50         68 splice @{$thisparser->{errors}}, $err_at;
  50         165  
12731 50 50       174 $return = $item[$#item] unless defined $return;
12732 50 50       131 if (defined $::RD_TRACE)
12733             {
12734 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
12735             $return . q{])}, "",
12736             q{prolog},
12737             $tracelevel);
12738 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
12739             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
12740             Parse::RecDescent::_tracefirst($text),
12741             , q{prolog},
12742             $tracelevel)
12743             }
12744 50         91 $_[1] = $text;
12745 50         611 return $return;
12746             }
12747              
12748             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
12749             sub Parse::RecDescent::TM::CTM::CParser::types
12750             {
12751 0     0   0 my $thisparser = $_[0];
12752 1     1   8 use vars q{$tracelevel};
  1         2  
  1         1484  
12753 0   0     0 local $tracelevel = ($tracelevel||0)+1;
12754 0         0 $ERRORS = 0;
12755 0         0 my $thisrule = $thisparser->{"rules"}{"types"};
12756            
12757 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [types]},
12758             Parse::RecDescent::_tracefirst($_[1]),
12759             q{types},
12760             $tracelevel)
12761             if defined $::RD_TRACE;
12762              
12763            
12764 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
12765              
12766 0         0 my $score;
12767             my $score_return;
12768 0         0 my $_tok;
12769 0         0 my $return = undef;
12770 0         0 my $_matched=0;
12771 0         0 my $commit=0;
12772 0         0 my @item = ();
12773 0         0 my %item = ();
12774 0   0     0 my $repeating = defined($_[2]) && $_[2];
12775 0   0     0 my $_noactions = defined($_[3]) && $_[3];
12776 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
12777 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
12778 0         0 my $text;
12779 0         0 my $lastsep="";
12780 0         0 my $expectation = new Parse::RecDescent::Expectation(q{':'});
12781 0         0 $expectation->at($_[1]);
12782            
12783 0         0 my $thisline;
12784 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
12785              
12786            
12787              
12788 0   0     0 while (!$_matched && !$commit)
12789             {
12790            
12791 0 0       0 Parse::RecDescent::_trace(q{Trying production: [':' name]},
12792             Parse::RecDescent::_tracefirst($_[1]),
12793             q{types},
12794             $tracelevel)
12795             if defined $::RD_TRACE;
12796 0         0 my $thisprod = $thisrule->{"prods"}[0];
12797 0         0 $text = $_[1];
12798 0         0 my $_savetext;
12799 0         0 @item = (q{types});
12800 0         0 %item = (__RULE__ => q{types});
12801 0         0 my $repcount = 0;
12802              
12803              
12804 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [':']},
12805             Parse::RecDescent::_tracefirst($text),
12806             q{types},
12807             $tracelevel)
12808             if defined $::RD_TRACE;
12809 0         0 $lastsep = "";
12810 0         0 $expectation->is(q{})->at($text);
12811            
12812              
12813 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\://)
  0 0       0  
12814             {
12815            
12816 0         0 $expectation->failed();
12817 0 0       0 Parse::RecDescent::_trace(qq{<>},
12818             Parse::RecDescent::_tracefirst($text))
12819             if defined $::RD_TRACE;
12820 0         0 last;
12821             }
12822 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
12823             . $& . q{])},
12824             Parse::RecDescent::_tracefirst($text))
12825             if defined $::RD_TRACE;
12826 0         0 push @item, $item{__STRING1__}=$&;
12827            
12828              
12829 0 0       0 Parse::RecDescent::_trace(q{Trying repeated subrule: [name]},
12830             Parse::RecDescent::_tracefirst($text),
12831             q{types},
12832             $tracelevel)
12833             if defined $::RD_TRACE;
12834 0         0 $expectation->is(q{name})->at($text);
12835            
12836 0 0   0   0 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::TM::CTM::CParser::name, 1, 100000000, $_noactions,$expectation,sub { \@arg })))
  0         0  
12837             {
12838 0 0       0 Parse::RecDescent::_trace(q{<>},
12839             Parse::RecDescent::_tracefirst($text),
12840             q{types},
12841             $tracelevel)
12842             if defined $::RD_TRACE;
12843 0         0 last;
12844             }
12845 0 0       0 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [name]<< (}
12846             . @$_tok . q{ times)},
12847            
12848             Parse::RecDescent::_tracefirst($text),
12849             q{types},
12850             $tracelevel)
12851             if defined $::RD_TRACE;
12852 0         0 $item{q{name(s)}} = $_tok;
12853 0         0 push @item, $_tok;
12854            
12855              
12856              
12857 0 0       0 Parse::RecDescent::_trace(q{Trying action},
12858             Parse::RecDescent::_tracefirst($text),
12859             q{types},
12860             $tracelevel)
12861             if defined $::RD_TRACE;
12862            
12863              
12864 0 0       0 $_tok = ($_noactions) ? 0 : do { $return = $item[2]; };
  0         0  
12865 0 0       0 unless (defined $_tok)
12866             {
12867 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
12868             if defined $::RD_TRACE;
12869 0         0 last;
12870             }
12871 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
12872             . $_tok . q{])},
12873             Parse::RecDescent::_tracefirst($text))
12874             if defined $::RD_TRACE;
12875 0         0 push @item, $_tok;
12876            
12877            
12878              
12879              
12880 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [':' name]<<},
12881             Parse::RecDescent::_tracefirst($text),
12882             q{types},
12883             $tracelevel)
12884             if defined $::RD_TRACE;
12885 0         0 $_matched = 1;
12886 0         0 last;
12887             }
12888              
12889              
12890 0 0 0     0 unless ( $_matched || defined($score) )
12891             {
12892            
12893              
12894 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
12895 0 0       0 Parse::RecDescent::_trace(q{<>},
12896             Parse::RecDescent::_tracefirst($_[1]),
12897             q{types},
12898             $tracelevel)
12899             if defined $::RD_TRACE;
12900 0         0 return undef;
12901             }
12902 0 0 0     0 if (!defined($return) && defined($score))
12903             {
12904 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
12905             q{types},
12906             $tracelevel)
12907             if defined $::RD_TRACE;
12908 0         0 $return = $score_return;
12909             }
12910 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
12911 0 0       0 $return = $item[$#item] unless defined $return;
12912 0 0       0 if (defined $::RD_TRACE)
12913             {
12914 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
12915             $return . q{])}, "",
12916             q{types},
12917             $tracelevel);
12918 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
12919             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
12920             Parse::RecDescent::_tracefirst($text),
12921             , q{types},
12922             $tracelevel)
12923             }
12924 0         0 $_[1] = $text;
12925 0         0 return $return;
12926             }
12927              
12928             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
12929             sub Parse::RecDescent::TM::CTM::CParser::include_directive
12930             {
12931 183     183   332 my $thisparser = $_[0];
12932 1     1   7 use vars q{$tracelevel};
  1         2  
  1         650  
12933 183   50     513 local $tracelevel = ($tracelevel||0)+1;
12934 183         244 $ERRORS = 0;
12935 183         465 my $thisrule = $thisparser->{"rules"}{"include_directive"};
12936            
12937 183 50       402 Parse::RecDescent::_trace(q{Trying rule: [include_directive]},
12938             Parse::RecDescent::_tracefirst($_[1]),
12939             q{include_directive},
12940             $tracelevel)
12941             if defined $::RD_TRACE;
12942              
12943            
12944 183         236 my $err_at = @{$thisparser->{errors}};
  183         328  
12945              
12946 183         259 my $score;
12947             my $score_return;
12948 0         0 my $_tok;
12949 183         253 my $return = undef;
12950 183         296 my $_matched=0;
12951 183         214 my $commit=0;
12952 183         271 my @item = ();
12953 183         382 my %item = ();
12954 183   33     583 my $repeating = defined($_[2]) && $_[2];
12955 183   33     591 my $_noactions = defined($_[3]) && $_[3];
12956 183 50       1441 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  183         215  
  183         335  
12957 183 50       918 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
12958 183         267 my $text;
12959 183         270 my $lastsep="";
12960 183         567 my $expectation = new Parse::RecDescent::Expectation(q{'%include'});
12961 183         1437 $expectation->at($_[1]);
12962            
12963 183         686 my $thisline;
12964 183         758 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
12965              
12966            
12967              
12968 183   33     1718 while (!$_matched && !$commit)
12969             {
12970            
12971 183 50       460 Parse::RecDescent::_trace(q{Trying production: ['%include' /^inline:.*?\\n/, or iri]},
12972             Parse::RecDescent::_tracefirst($_[1]),
12973             q{include_directive},
12974             $tracelevel)
12975             if defined $::RD_TRACE;
12976 183         559 my $thisprod = $thisrule->{"prods"}[0];
12977 183         280 $text = $_[1];
12978 183         224 my $_savetext;
12979 183         348 @item = (q{include_directive});
12980 183         399 %item = (__RULE__ => q{include_directive});
12981 183         225 my $repcount = 0;
12982              
12983              
12984 183 50       453 Parse::RecDescent::_trace(q{Trying terminal: ['%include']},
12985             Parse::RecDescent::_tracefirst($text),
12986             q{include_directive},
12987             $tracelevel)
12988             if defined $::RD_TRACE;
12989 183         308 $lastsep = "";
12990 183         543 $expectation->is(q{})->at($text);
12991            
12992              
12993 183 100 66     1849 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\%include//)
  183 100       1944  
12994             {
12995            
12996 182         497 $expectation->failed();
12997 182 50       828 Parse::RecDescent::_trace(qq{<>},
12998             Parse::RecDescent::_tracefirst($text))
12999             if defined $::RD_TRACE;
13000 182         371 last;
13001             }
13002 1 50       5 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
13003             . $& . q{])},
13004             Parse::RecDescent::_tracefirst($text))
13005             if defined $::RD_TRACE;
13006 1         4 push @item, $item{__STRING1__}=$&;
13007            
13008              
13009 1 50       4 Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_include_directive]},
13010             Parse::RecDescent::_tracefirst($text),
13011             q{include_directive},
13012             $tracelevel)
13013             if defined $::RD_TRACE;
13014 1     1   137 if (1) { no strict qw{refs};
  1         3  
  1         279  
  1         1  
13015 1         5 $expectation->is(q{/^inline:.*?\\n/, or iri})->at($text);
13016 1 50   1   13 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::_alternation_1_of_production_1_of_rule_include_directive($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  1         3  
13017             {
13018            
13019 0 0       0 Parse::RecDescent::_trace(q{<>},
13020             Parse::RecDescent::_tracefirst($text),
13021             q{include_directive},
13022             $tracelevel)
13023             if defined $::RD_TRACE;
13024 0         0 $expectation->failed();
13025 0         0 last;
13026             }
13027 1 50       5 Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_include_directive]<< (return value: [}
13028             . $_tok . q{]},
13029            
13030             Parse::RecDescent::_tracefirst($text),
13031             q{include_directive},
13032             $tracelevel)
13033             if defined $::RD_TRACE;
13034 1         3 $item{q{_alternation_1_of_production_1_of_rule_include_directive}} = $_tok;
13035 1         3 push @item, $_tok;
13036            
13037             }
13038              
13039 1 50       4 Parse::RecDescent::_trace(q{Trying action},
13040             Parse::RecDescent::_tracefirst($text),
13041             q{include_directive},
13042             $tracelevel)
13043             if defined $::RD_TRACE;
13044            
13045              
13046 1 50       5 $_tok = ($_noactions) ? 0 : do {
13047 1         1 my $src = $item[2];
13048 1         2 my $include; # we are trying to figure that one out
13049 1 50       5 if ($src =~ /^inline:(.*)/s) {
13050 1         3 $include = $1;
13051             } else { # we try our luck with LWP
13052 1     1   1063 use LWP::Simple;
  1         81383  
  1         9  
13053 0 0       0 $include = get($1) or
13054             $TM::log->logdie (__PACKAGE__ .": unable to load '$1'\n");
13055             }
13056 1         3 $text = $include . $text;
13057             };
13058 1 50       3 unless (defined $_tok)
13059             {
13060 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
13061             if defined $::RD_TRACE;
13062 0         0 last;
13063             }
13064 1 50       5 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
13065             . $_tok . q{])},
13066             Parse::RecDescent::_tracefirst($text))
13067             if defined $::RD_TRACE;
13068 1         2 push @item, $_tok;
13069            
13070            
13071              
13072              
13073 1 50       3 Parse::RecDescent::_trace(q{>>Matched production: ['%include' /^inline:.*?\\n/, or iri]<<},
13074             Parse::RecDescent::_tracefirst($text),
13075             q{include_directive},
13076             $tracelevel)
13077             if defined $::RD_TRACE;
13078 1         2 $_matched = 1;
13079 1         2 last;
13080             }
13081              
13082              
13083 183 100 66     881 unless ( $_matched || defined($score) )
13084             {
13085            
13086              
13087 182         325 $_[1] = $text; # NOT SURE THIS IS NEEDED
13088 182 50       395 Parse::RecDescent::_trace(q{<>},
13089             Parse::RecDescent::_tracefirst($_[1]),
13090             q{include_directive},
13091             $tracelevel)
13092             if defined $::RD_TRACE;
13093 182         1438 return undef;
13094             }
13095 1 50 33     9 if (!defined($return) && defined($score))
13096             {
13097 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
13098             q{include_directive},
13099             $tracelevel)
13100             if defined $::RD_TRACE;
13101 0         0 $return = $score_return;
13102             }
13103 1         1 splice @{$thisparser->{errors}}, $err_at;
  1         3  
13104 1 50       5 $return = $item[$#item] unless defined $return;
13105 1 50       5 if (defined $::RD_TRACE)
13106             {
13107 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
13108             $return . q{])}, "",
13109             q{include_directive},
13110             $tracelevel);
13111 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
13112             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
13113             Parse::RecDescent::_tracefirst($text),
13114             , q{include_directive},
13115             $tracelevel)
13116             }
13117 1         3 $_[1] = $text;
13118 1         10 return $return;
13119             }
13120              
13121             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
13122             sub Parse::RecDescent::TM::CTM::CParser::topic_ref
13123             {
13124 184     184   305 my $thisparser = $_[0];
13125 1     1   1074 use vars q{$tracelevel};
  1         2  
  1         372  
13126 184   50     609 local $tracelevel = ($tracelevel||0)+1;
13127 184         276 $ERRORS = 0;
13128 184         437 my $thisrule = $thisparser->{"rules"}{"topic_ref"};
13129            
13130 184 50       421 Parse::RecDescent::_trace(q{Trying rule: [topic_ref]},
13131             Parse::RecDescent::_tracefirst($_[1]),
13132             q{topic_ref},
13133             $tracelevel)
13134             if defined $::RD_TRACE;
13135              
13136            
13137 184         181 my $err_at = @{$thisparser->{errors}};
  184         386  
13138              
13139 184         236 my $score;
13140             my $score_return;
13141 0         0 my $_tok;
13142 184         214 my $return = undef;
13143 184         227 my $_matched=0;
13144 184         200 my $commit=0;
13145 184         306 my @item = ();
13146 184         290 my %item = ();
13147 184   33     499 my $repeating = defined($_[2]) && $_[2];
13148 184   33     589 my $_noactions = defined($_[3]) && $_[3];
13149 184 50       423 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  184         222  
  184         375  
13150 184 50       651 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
13151 184         236 my $text;
13152 184         244 my $lastsep="";
13153 184         622 my $expectation = new Parse::RecDescent::Expectation(q{topic_identity, or embedded_topic});
13154 184         1480 $expectation->at($_[1]);
13155            
13156 184         696 my $thisline;
13157 184         760 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
13158              
13159            
13160              
13161 184   33     1876 while (!$_matched && !$commit)
13162             {
13163            
13164 184 50       469 Parse::RecDescent::_trace(q{Trying production: [topic_identity]},
13165             Parse::RecDescent::_tracefirst($_[1]),
13166             q{topic_ref},
13167             $tracelevel)
13168             if defined $::RD_TRACE;
13169 184         467 my $thisprod = $thisrule->{"prods"}[0];
13170 184         259 $text = $_[1];
13171 184         209 my $_savetext;
13172 184         327 @item = (q{topic_ref});
13173 184         384 %item = (__RULE__ => q{topic_ref});
13174 184         222 my $repcount = 0;
13175              
13176              
13177 184 50       439 Parse::RecDescent::_trace(q{Trying subrule: [topic_identity]},
13178             Parse::RecDescent::_tracefirst($text),
13179             q{topic_ref},
13180             $tracelevel)
13181             if defined $::RD_TRACE;
13182 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         448  
  184         188  
13183 184         611 $expectation->is(q{})->at($text);
13184 184 100   184   1891 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::topic_identity($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  184         507  
13185             {
13186            
13187 91 50       265 Parse::RecDescent::_trace(q{<>},
13188             Parse::RecDescent::_tracefirst($text),
13189             q{topic_ref},
13190             $tracelevel)
13191             if defined $::RD_TRACE;
13192 91         287 $expectation->failed();
13193 91         331 last;
13194             }
13195 93 50       481 Parse::RecDescent::_trace(q{>>Matched subrule: [topic_identity]<< (return value: [}
13196             . $_tok . q{]},
13197            
13198             Parse::RecDescent::_tracefirst($text),
13199             q{topic_ref},
13200             $tracelevel)
13201             if defined $::RD_TRACE;
13202 93         258 $item{q{topic_identity}} = $_tok;
13203 93         165 push @item, $_tok;
13204            
13205             }
13206              
13207 93 50       246 Parse::RecDescent::_trace(q{Trying action},
13208             Parse::RecDescent::_tracefirst($text),
13209             q{topic_ref},
13210             $tracelevel)
13211             if defined $::RD_TRACE;
13212            
13213              
13214 93 50       195 $_tok = ($_noactions) ? 0 : do { $return = ref ($item[1]) ? $store->internalize (undef, $item[1]) : $item[1]; };
  93 50       307  
13215 93 50       263 unless (defined $_tok)
13216             {
13217 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
13218             if defined $::RD_TRACE;
13219 0         0 last;
13220             }
13221 93 50       278 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
13222             . $_tok . q{])},
13223             Parse::RecDescent::_tracefirst($text))
13224             if defined $::RD_TRACE;
13225 93         198 push @item, $_tok;
13226            
13227            
13228              
13229              
13230 93 50       230 Parse::RecDescent::_trace(q{>>Matched production: [topic_identity]<<},
13231             Parse::RecDescent::_tracefirst($text),
13232             q{topic_ref},
13233             $tracelevel)
13234             if defined $::RD_TRACE;
13235 93         143 $_matched = 1;
13236 93         176 last;
13237             }
13238              
13239              
13240 184   66     731 while (!$_matched && !$commit)
13241             {
13242            
13243 91 50       201 Parse::RecDescent::_trace(q{Trying production: [embedded_topic]},
13244             Parse::RecDescent::_tracefirst($_[1]),
13245             q{topic_ref},
13246             $tracelevel)
13247             if defined $::RD_TRACE;
13248 91         227 my $thisprod = $thisrule->{"prods"}[1];
13249 91         160 $text = $_[1];
13250 91         96 my $_savetext;
13251 91         179 @item = (q{topic_ref});
13252 91         204 %item = (__RULE__ => q{topic_ref});
13253 91         173 my $repcount = 0;
13254              
13255              
13256 91 50       180 Parse::RecDescent::_trace(q{Trying subrule: [embedded_topic]},
13257             Parse::RecDescent::_tracefirst($text),
13258             q{topic_ref},
13259             $tracelevel)
13260             if defined $::RD_TRACE;
13261 1     1   7 if (1) { no strict qw{refs};
  1         1  
  1         471  
  91         122  
13262 91         262 $expectation->is(q{})->at($text);
13263 91 100   91   1069 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::embedded_topic($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  91         226  
13264             {
13265            
13266 90 50       243 Parse::RecDescent::_trace(q{<>},
13267             Parse::RecDescent::_tracefirst($text),
13268             q{topic_ref},
13269             $tracelevel)
13270             if defined $::RD_TRACE;
13271 90         250 $expectation->failed();
13272 90         322 last;
13273             }
13274 1 50       7 Parse::RecDescent::_trace(q{>>Matched subrule: [embedded_topic]<< (return value: [}
13275             . $_tok . q{]},
13276            
13277             Parse::RecDescent::_tracefirst($text),
13278             q{topic_ref},
13279             $tracelevel)
13280             if defined $::RD_TRACE;
13281 1         3 $item{q{embedded_topic}} = $_tok;
13282 1         2 push @item, $_tok;
13283            
13284             }
13285              
13286              
13287 1 50       5 Parse::RecDescent::_trace(q{>>Matched production: [embedded_topic]<<},
13288             Parse::RecDescent::_tracefirst($text),
13289             q{topic_ref},
13290             $tracelevel)
13291             if defined $::RD_TRACE;
13292 1         2 $_matched = 1;
13293 1         2 last;
13294             }
13295              
13296              
13297 184 100 66     816 unless ( $_matched || defined($score) )
13298             {
13299            
13300              
13301 90         140 $_[1] = $text; # NOT SURE THIS IS NEEDED
13302 90 50       191 Parse::RecDescent::_trace(q{<>},
13303             Parse::RecDescent::_tracefirst($_[1]),
13304             q{topic_ref},
13305             $tracelevel)
13306             if defined $::RD_TRACE;
13307 90         626 return undef;
13308             }
13309 94 50 66     377 if (!defined($return) && defined($score))
13310             {
13311 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
13312             q{topic_ref},
13313             $tracelevel)
13314             if defined $::RD_TRACE;
13315 0         0 $return = $score_return;
13316             }
13317 94         120 splice @{$thisparser->{errors}}, $err_at;
  94         229  
13318 94 100       237 $return = $item[$#item] unless defined $return;
13319 94 50       260 if (defined $::RD_TRACE)
13320             {
13321 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
13322             $return . q{])}, "",
13323             q{topic_ref},
13324             $tracelevel);
13325 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
13326             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
13327             Parse::RecDescent::_tracefirst($text),
13328             , q{topic_ref},
13329             $tracelevel)
13330             }
13331 94         197 $_[1] = $text;
13332 94         760 return $return;
13333             }
13334              
13335             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
13336             sub Parse::RecDescent::TM::CTM::CParser::topname
13337             {
13338 0     0   0 my $thisparser = $_[0];
13339 1     1   11 use vars q{$tracelevel};
  1         4  
  1         516  
13340 0   0     0 local $tracelevel = ($tracelevel||0)+1;
13341 0         0 $ERRORS = 0;
13342 0         0 my $thisrule = $thisparser->{"rules"}{"topname"};
13343            
13344 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [topname]},
13345             Parse::RecDescent::_tracefirst($_[1]),
13346             q{topname},
13347             $tracelevel)
13348             if defined $::RD_TRACE;
13349              
13350            
13351 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
13352              
13353 0         0 my $score;
13354             my $score_return;
13355 0         0 my $_tok;
13356 0         0 my $return = undef;
13357 0         0 my $_matched=0;
13358 0         0 my $commit=0;
13359 0         0 my @item = ();
13360 0         0 my %item = ();
13361 0   0     0 my $repeating = defined($_[2]) && $_[2];
13362 0   0     0 my $_noactions = defined($_[3]) && $_[3];
13363 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
13364 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
13365 0         0 my $text;
13366 0         0 my $lastsep="";
13367 0         0 my $expectation = new Parse::RecDescent::Expectation(q{'='});
13368 0         0 $expectation->at($_[1]);
13369            
13370 0         0 my $thisline;
13371 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
13372              
13373            
13374              
13375 0   0     0 while (!$_matched && !$commit)
13376             {
13377            
13378 0 0       0 Parse::RecDescent::_trace(q{Trying production: ['=' basesortdispname scope]},
13379             Parse::RecDescent::_tracefirst($_[1]),
13380             q{topname},
13381             $tracelevel)
13382             if defined $::RD_TRACE;
13383 0         0 my $thisprod = $thisrule->{"prods"}[0];
13384 0         0 $text = $_[1];
13385 0         0 my $_savetext;
13386 0         0 @item = (q{topname});
13387 0         0 %item = (__RULE__ => q{topname});
13388 0         0 my $repcount = 0;
13389              
13390              
13391 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['=']},
13392             Parse::RecDescent::_tracefirst($text),
13393             q{topname},
13394             $tracelevel)
13395             if defined $::RD_TRACE;
13396 0         0 $lastsep = "";
13397 0         0 $expectation->is(q{})->at($text);
13398            
13399              
13400 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\=//)
  0 0       0  
13401             {
13402            
13403 0         0 $expectation->failed();
13404 0 0       0 Parse::RecDescent::_trace(qq{<>},
13405             Parse::RecDescent::_tracefirst($text))
13406             if defined $::RD_TRACE;
13407 0         0 last;
13408             }
13409 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
13410             . $& . q{])},
13411             Parse::RecDescent::_tracefirst($text))
13412             if defined $::RD_TRACE;
13413 0         0 push @item, $item{__STRING1__}=$&;
13414            
13415              
13416 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [basesortdispname]},
13417             Parse::RecDescent::_tracefirst($text),
13418             q{topname},
13419             $tracelevel)
13420             if defined $::RD_TRACE;
13421 1     1   6 if (1) { no strict qw{refs};
  1         3  
  1         748  
  0         0  
13422 0         0 $expectation->is(q{basesortdispname})->at($text);
13423 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::basesortdispname($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
13424             {
13425            
13426 0 0       0 Parse::RecDescent::_trace(q{<>},
13427             Parse::RecDescent::_tracefirst($text),
13428             q{topname},
13429             $tracelevel)
13430             if defined $::RD_TRACE;
13431 0         0 $expectation->failed();
13432 0         0 last;
13433             }
13434 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [basesortdispname]<< (return value: [}
13435             . $_tok . q{]},
13436            
13437             Parse::RecDescent::_tracefirst($text),
13438             q{topname},
13439             $tracelevel)
13440             if defined $::RD_TRACE;
13441 0         0 $item{q{basesortdispname}} = $_tok;
13442 0         0 push @item, $_tok;
13443            
13444             }
13445              
13446 0 0       0 Parse::RecDescent::_trace(q{Trying repeated subrule: [scope]},
13447             Parse::RecDescent::_tracefirst($text),
13448             q{topname},
13449             $tracelevel)
13450             if defined $::RD_TRACE;
13451 0         0 $expectation->is(q{scope})->at($text);
13452            
13453 0 0   0   0 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::TM::CTM::CParser::scope, 0, 1, $_noactions,$expectation,sub { \@arg })))
  0         0  
13454             {
13455 0 0       0 Parse::RecDescent::_trace(q{<>},
13456             Parse::RecDescent::_tracefirst($text),
13457             q{topname},
13458             $tracelevel)
13459             if defined $::RD_TRACE;
13460 0         0 last;
13461             }
13462 0 0       0 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [scope]<< (}
13463             . @$_tok . q{ times)},
13464            
13465             Parse::RecDescent::_tracefirst($text),
13466             q{topname},
13467             $tracelevel)
13468             if defined $::RD_TRACE;
13469 0         0 $item{q{scope(?)}} = $_tok;
13470 0         0 push @item, $_tok;
13471            
13472              
13473              
13474 0 0       0 Parse::RecDescent::_trace(q{Trying action},
13475             Parse::RecDescent::_tracefirst($text),
13476             q{topname},
13477             $tracelevel)
13478             if defined $::RD_TRACE;
13479            
13480              
13481 0 0       0 $_tok = ($_noactions) ? 0 : do {
13482             #warn "basenames".Dumper \@item;
13483 0         0 $return = {
13484             scope => $item[3],
13485             names => $item[2],
13486             };
13487             };
13488 0 0       0 unless (defined $_tok)
13489             {
13490 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
13491             if defined $::RD_TRACE;
13492 0         0 last;
13493             }
13494 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
13495             . $_tok . q{])},
13496             Parse::RecDescent::_tracefirst($text))
13497             if defined $::RD_TRACE;
13498 0         0 push @item, $_tok;
13499            
13500            
13501              
13502              
13503 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['=' basesortdispname scope]<<},
13504             Parse::RecDescent::_tracefirst($text),
13505             q{topname},
13506             $tracelevel)
13507             if defined $::RD_TRACE;
13508 0         0 $_matched = 1;
13509 0         0 last;
13510             }
13511              
13512              
13513 0 0 0     0 unless ( $_matched || defined($score) )
13514             {
13515            
13516              
13517 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
13518 0 0       0 Parse::RecDescent::_trace(q{<>},
13519             Parse::RecDescent::_tracefirst($_[1]),
13520             q{topname},
13521             $tracelevel)
13522             if defined $::RD_TRACE;
13523 0         0 return undef;
13524             }
13525 0 0 0     0 if (!defined($return) && defined($score))
13526             {
13527 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
13528             q{topname},
13529             $tracelevel)
13530             if defined $::RD_TRACE;
13531 0         0 $return = $score_return;
13532             }
13533 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
13534 0 0       0 $return = $item[$#item] unless defined $return;
13535 0 0       0 if (defined $::RD_TRACE)
13536             {
13537 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
13538             $return . q{])}, "",
13539             q{topname},
13540             $tracelevel);
13541 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
13542             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
13543             Parse::RecDescent::_tracefirst($text),
13544             , q{topname},
13545             $tracelevel)
13546             }
13547 0         0 $_[1] = $text;
13548 0         0 return $return;
13549             }
13550              
13551             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
13552             sub Parse::RecDescent::TM::CTM::CParser::topic_tail
13553             {
13554 143     143   2208 my $thisparser = $_[0];
13555 1     1   5 use vars q{$tracelevel};
  1         1  
  1         382  
13556 143   50     402 local $tracelevel = ($tracelevel||0)+1;
13557 143         203 $ERRORS = 0;
13558 143         411 my $thisrule = $thisparser->{"rules"}{"topic_tail"};
13559            
13560 143 50       329 Parse::RecDescent::_trace(q{Trying rule: [topic_tail]},
13561             Parse::RecDescent::_tracefirst($_[1]),
13562             q{topic_tail},
13563             $tracelevel)
13564             if defined $::RD_TRACE;
13565              
13566            
13567 143         176 my $err_at = @{$thisparser->{errors}};
  143         303  
13568              
13569 143         209 my $score;
13570             my $score_return;
13571 0         0 my $_tok;
13572 143         164 my $return = undef;
13573 143         201 my $_matched=0;
13574 143         194 my $commit=0;
13575 143         254 my @item = ();
13576 143         233 my %item = ();
13577 143   33     509 my $repeating = defined($_[2]) && $_[2];
13578 143   33     524 my $_noactions = defined($_[3]) && $_[3];
13579 143 50       326 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  143         169  
  143         329  
13580 143 50       557 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
13581 143         162 my $text;
13582 143         214 my $lastsep="";
13583 143         513 my $expectation = new Parse::RecDescent::Expectation(q{instance_of, or kind_of, or topic_template_invocation, or subject_identifier, or subject_locator, or assignment});
13584 143         5477 $expectation->at($_[1]);
13585            
13586 143         550 my $thisline;
13587 143         628 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
13588              
13589            
13590              
13591 143   33     1452 while (!$_matched && !$commit)
13592             {
13593            
13594 143 50       312 Parse::RecDescent::_trace(q{Trying production: [instance_of, or kind_of, or topic_template_invocation, or subject_identifier, or subject_locator, or assignment /;?/]},
13595             Parse::RecDescent::_tracefirst($_[1]),
13596             q{topic_tail},
13597             $tracelevel)
13598             if defined $::RD_TRACE;
13599 143         373 my $thisprod = $thisrule->{"prods"}[0];
13600 143         237 $text = $_[1];
13601 143         234 my $_savetext;
13602 143         278 @item = (q{topic_tail});
13603 143         320 %item = (__RULE__ => q{topic_tail});
13604 143         213 my $repcount = 0;
13605              
13606              
13607 143 50       312 Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_topic_tail]},
13608             Parse::RecDescent::_tracefirst($text),
13609             q{topic_tail},
13610             $tracelevel)
13611             if defined $::RD_TRACE;
13612 1     1   6 if (1) { no strict qw{refs};
  1         1  
  1         692  
  143         173  
13613 143         429 $expectation->is(q{})->at($text);
13614 143 100   143   1514 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::_alternation_1_of_production_1_of_rule_topic_tail($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  143         403  
13615             {
13616            
13617 71 50       164 Parse::RecDescent::_trace(q{<>},
13618             Parse::RecDescent::_tracefirst($text),
13619             q{topic_tail},
13620             $tracelevel)
13621             if defined $::RD_TRACE;
13622 71         220 $expectation->failed();
13623 71         348 last;
13624             }
13625 72 50       413 Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_topic_tail]<< (return value: [}
13626             . $_tok . q{]},
13627            
13628             Parse::RecDescent::_tracefirst($text),
13629             q{topic_tail},
13630             $tracelevel)
13631             if defined $::RD_TRACE;
13632 72         209 $item{q{_alternation_1_of_production_1_of_rule_topic_tail}} = $_tok;
13633 72         143 push @item, $_tok;
13634            
13635             }
13636              
13637 72 50       212 Parse::RecDescent::_trace(q{Trying terminal: [/;?/]}, Parse::RecDescent::_tracefirst($text),
13638             q{topic_tail},
13639             $tracelevel)
13640             if defined $::RD_TRACE;
13641 72         151 $lastsep = "";
13642 72         274 $expectation->is(q{/;?/})->at($text);
13643            
13644              
13645 72 100 33     988 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:;?)//)
  72 50       922  
13646             {
13647            
13648 0         0 $expectation->failed();
13649 0 0       0 Parse::RecDescent::_trace(q{<>},
13650             Parse::RecDescent::_tracefirst($text))
13651             if defined $::RD_TRACE;
13652              
13653 0         0 last;
13654             }
13655 72 50       252 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
13656             . $& . q{])},
13657             Parse::RecDescent::_tracefirst($text))
13658             if defined $::RD_TRACE;
13659 72         241 push @item, $item{__PATTERN1__}=$&;
13660            
13661              
13662              
13663 72 50       155 Parse::RecDescent::_trace(q{>>Matched production: [instance_of, or kind_of, or topic_template_invocation, or subject_identifier, or subject_locator, or assignment /;?/]<<},
13664             Parse::RecDescent::_tracefirst($text),
13665             q{topic_tail},
13666             $tracelevel)
13667             if defined $::RD_TRACE;
13668 72         116 $_matched = 1;
13669 72         137 last;
13670             }
13671              
13672              
13673 143 100 66     742 unless ( $_matched || defined($score) )
13674             {
13675            
13676              
13677 71         127 $_[1] = $text; # NOT SURE THIS IS NEEDED
13678 71 50       136 Parse::RecDescent::_trace(q{<>},
13679             Parse::RecDescent::_tracefirst($_[1]),
13680             q{topic_tail},
13681             $tracelevel)
13682             if defined $::RD_TRACE;
13683 71         590 return undef;
13684             }
13685 72 50 33     395 if (!defined($return) && defined($score))
13686             {
13687 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
13688             q{topic_tail},
13689             $tracelevel)
13690             if defined $::RD_TRACE;
13691 0         0 $return = $score_return;
13692             }
13693 72         91 splice @{$thisparser->{errors}}, $err_at;
  72         203  
13694 72 50       232 $return = $item[$#item] unless defined $return;
13695 72 50       165 if (defined $::RD_TRACE)
13696             {
13697 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
13698             $return . q{])}, "",
13699             q{topic_tail},
13700             $tracelevel);
13701 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
13702             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
13703             Parse::RecDescent::_tracefirst($text),
13704             , q{topic_tail},
13705             $tracelevel)
13706             }
13707 72         175 $_[1] = $text;
13708 72         813 return $return;
13709             }
13710              
13711             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
13712             sub Parse::RecDescent::TM::CTM::CParser::reference
13713             {
13714 8     8   15 my $thisparser = $_[0];
13715 1     1   5 use vars q{$tracelevel};
  1         2  
  1         355  
13716 8   50     29 local $tracelevel = ($tracelevel||0)+1;
13717 8         17 $ERRORS = 0;
13718 8         17 my $thisrule = $thisparser->{"rules"}{"reference"};
13719            
13720 8 50       31 Parse::RecDescent::_trace(q{Trying rule: [reference]},
13721             Parse::RecDescent::_tracefirst($_[1]),
13722             q{reference},
13723             $tracelevel)
13724             if defined $::RD_TRACE;
13725              
13726            
13727 8         11 my $err_at = @{$thisparser->{errors}};
  8         15  
13728              
13729 8         17 my $score;
13730             my $score_return;
13731 0         0 my $_tok;
13732 8         12 my $return = undef;
13733 8         10 my $_matched=0;
13734 8         12 my $commit=0;
13735 8         19 my @item = ();
13736 8         14 my %item = ();
13737 8   33     39 my $repeating = defined($_[2]) && $_[2];
13738 8   33     31 my $_noactions = defined($_[3]) && $_[3];
13739 8 50       26 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  8         14  
  8         24  
13740 8 50       55 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
13741 8         12 my $text;
13742 8         20 my $lastsep="";
13743 8         41 my $expectation = new Parse::RecDescent::Expectation(q{iri, or /\\S+/});
13744 8         64 $expectation->at($_[1]);
13745            
13746 8         34 my $thisline;
13747 8         35 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
13748              
13749            
13750              
13751 8   33     89 while (!$_matched && !$commit)
13752             {
13753            
13754 8 50       25 Parse::RecDescent::_trace(q{Trying production: [iri]},
13755             Parse::RecDescent::_tracefirst($_[1]),
13756             q{reference},
13757             $tracelevel)
13758             if defined $::RD_TRACE;
13759 8         23 my $thisprod = $thisrule->{"prods"}[0];
13760 8         16 $text = $_[1];
13761 8         14 my $_savetext;
13762 8         18 @item = (q{reference});
13763 8         17 %item = (__RULE__ => q{reference});
13764 8         12 my $repcount = 0;
13765              
13766              
13767 8 50       31 Parse::RecDescent::_trace(q{Trying subrule: [iri]},
13768             Parse::RecDescent::_tracefirst($text),
13769             q{reference},
13770             $tracelevel)
13771             if defined $::RD_TRACE;
13772 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         751  
  8         14  
13773 8         26 $expectation->is(q{})->at($text);
13774 8 50   8   89 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::iri($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  8         25  
13775             {
13776            
13777 0 0       0 Parse::RecDescent::_trace(q{<>},
13778             Parse::RecDescent::_tracefirst($text),
13779             q{reference},
13780             $tracelevel)
13781             if defined $::RD_TRACE;
13782 0         0 $expectation->failed();
13783 0         0 last;
13784             }
13785 8 50       37 Parse::RecDescent::_trace(q{>>Matched subrule: [iri]<< (return value: [}
13786             . $_tok . q{]},
13787            
13788             Parse::RecDescent::_tracefirst($text),
13789             q{reference},
13790             $tracelevel)
13791             if defined $::RD_TRACE;
13792 8         18 $item{q{iri}} = $_tok;
13793 8         11 push @item, $_tok;
13794            
13795             }
13796              
13797              
13798 8 50       24 Parse::RecDescent::_trace(q{>>Matched production: [iri]<<},
13799             Parse::RecDescent::_tracefirst($text),
13800             q{reference},
13801             $tracelevel)
13802             if defined $::RD_TRACE;
13803 8         11 $_matched = 1;
13804 8         16 last;
13805             }
13806              
13807              
13808 8   33     27 while (!$_matched && !$commit)
13809             {
13810            
13811 0 0       0 Parse::RecDescent::_trace(q{Trying production: [/\\S+/]},
13812             Parse::RecDescent::_tracefirst($_[1]),
13813             q{reference},
13814             $tracelevel)
13815             if defined $::RD_TRACE;
13816 0         0 my $thisprod = $thisrule->{"prods"}[1];
13817 0         0 $text = $_[1];
13818 0         0 my $_savetext;
13819 0         0 @item = (q{reference});
13820 0         0 %item = (__RULE__ => q{reference});
13821 0         0 my $repcount = 0;
13822              
13823              
13824 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/\\S+/]}, Parse::RecDescent::_tracefirst($text),
13825             q{reference},
13826             $tracelevel)
13827             if defined $::RD_TRACE;
13828 0         0 $lastsep = "";
13829 0         0 $expectation->is(q{})->at($text);
13830            
13831              
13832 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\S+)//)
  0 0       0  
13833             {
13834            
13835 0         0 $expectation->failed();
13836 0 0       0 Parse::RecDescent::_trace(q{<>},
13837             Parse::RecDescent::_tracefirst($text))
13838             if defined $::RD_TRACE;
13839              
13840 0         0 last;
13841             }
13842 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
13843             . $& . q{])},
13844             Parse::RecDescent::_tracefirst($text))
13845             if defined $::RD_TRACE;
13846 0         0 push @item, $item{__PATTERN1__}=$&;
13847            
13848              
13849              
13850 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [/\\S+/]<<},
13851             Parse::RecDescent::_tracefirst($text),
13852             q{reference},
13853             $tracelevel)
13854             if defined $::RD_TRACE;
13855 0         0 $_matched = 1;
13856 0         0 last;
13857             }
13858              
13859              
13860 8 50 33     28 unless ( $_matched || defined($score) )
13861             {
13862            
13863              
13864 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
13865 0 0       0 Parse::RecDescent::_trace(q{<>},
13866             Parse::RecDescent::_tracefirst($_[1]),
13867             q{reference},
13868             $tracelevel)
13869             if defined $::RD_TRACE;
13870 0         0 return undef;
13871             }
13872 8 50 33     49 if (!defined($return) && defined($score))
13873             {
13874 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
13875             q{reference},
13876             $tracelevel)
13877             if defined $::RD_TRACE;
13878 0         0 $return = $score_return;
13879             }
13880 8         11 splice @{$thisparser->{errors}}, $err_at;
  8         20  
13881 8 50       23 $return = $item[$#item] unless defined $return;
13882 8 50       20 if (defined $::RD_TRACE)
13883             {
13884 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
13885             $return . q{])}, "",
13886             q{reference},
13887             $tracelevel);
13888 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
13889             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
13890             Parse::RecDescent::_tracefirst($text),
13891             , q{reference},
13892             $tracelevel)
13893             }
13894 8         15 $_[1] = $text;
13895 8         67 return $return;
13896             }
13897              
13898             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
13899             sub Parse::RecDescent::TM::CTM::CParser::instance_of
13900             {
13901 143     143   228 my $thisparser = $_[0];
13902 1     1   6 use vars q{$tracelevel};
  1         3  
  1         492  
13903 143   50     388 local $tracelevel = ($tracelevel||0)+1;
13904 143         181 $ERRORS = 0;
13905 143         328 my $thisrule = $thisparser->{"rules"}{"instance_of"};
13906            
13907 143 50       293 Parse::RecDescent::_trace(q{Trying rule: [instance_of]},
13908             Parse::RecDescent::_tracefirst($_[1]),
13909             q{instance_of},
13910             $tracelevel)
13911             if defined $::RD_TRACE;
13912              
13913            
13914 143         187 my $err_at = @{$thisparser->{errors}};
  143         338  
13915              
13916 143         234 my $score;
13917             my $score_return;
13918 0         0 my $_tok;
13919 143         186 my $return = undef;
13920 143         168 my $_matched=0;
13921 143         196 my $commit=0;
13922 143         204 my @item = ();
13923 143         251 my %item = ();
13924 143   33     446 my $repeating = defined($_[2]) && $_[2];
13925 143   33     474 my $_noactions = defined($_[3]) && $_[3];
13926 143 50       291 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  143         149  
  143         276  
13927 143 50       664 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
13928 143         176 my $text;
13929 143         233 my $lastsep="";
13930 143         438 my $expectation = new Parse::RecDescent::Expectation(q{'isa'});
13931 143         1036 $expectation->at($_[1]);
13932            
13933 143         545 my $thisline;
13934 143         535 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
13935              
13936            
13937              
13938 143   33     1328 while (!$_matched && !$commit)
13939             {
13940            
13941 143 50       327 Parse::RecDescent::_trace(q{Trying production: ['isa' topic_ref]},
13942             Parse::RecDescent::_tracefirst($_[1]),
13943             q{instance_of},
13944             $tracelevel)
13945             if defined $::RD_TRACE;
13946 143         396 my $thisprod = $thisrule->{"prods"}[0];
13947 143         211 $text = $_[1];
13948 143         172 my $_savetext;
13949 143         322 @item = (q{instance_of});
13950 143         313 %item = (__RULE__ => q{instance_of});
13951 143         316 my $repcount = 0;
13952              
13953              
13954 143 50       311 Parse::RecDescent::_trace(q{Trying terminal: ['isa']},
13955             Parse::RecDescent::_tracefirst($text),
13956             q{instance_of},
13957             $tracelevel)
13958             if defined $::RD_TRACE;
13959 143         205 $lastsep = "";
13960 143         377 $expectation->is(q{})->at($text);
13961            
13962              
13963 143 100 66     1545 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\Aisa//)
  143 100       1467  
13964             {
13965            
13966 131         397 $expectation->failed();
13967 131 50       576 Parse::RecDescent::_trace(qq{<>},
13968             Parse::RecDescent::_tracefirst($text))
13969             if defined $::RD_TRACE;
13970 131         285 last;
13971             }
13972 12 50       42 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
13973             . $& . q{])},
13974             Parse::RecDescent::_tracefirst($text))
13975             if defined $::RD_TRACE;
13976 12         54 push @item, $item{__STRING1__}=$&;
13977            
13978              
13979 12 50       34 Parse::RecDescent::_trace(q{Trying subrule: [topic_ref]},
13980             Parse::RecDescent::_tracefirst($text),
13981             q{instance_of},
13982             $tracelevel)
13983             if defined $::RD_TRACE;
13984 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         590  
  12         21  
13985 12         42 $expectation->is(q{topic_ref})->at($text);
13986 12 50   12   134 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::topic_ref($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  12         32  
13987             {
13988            
13989 0 0       0 Parse::RecDescent::_trace(q{<>},
13990             Parse::RecDescent::_tracefirst($text),
13991             q{instance_of},
13992             $tracelevel)
13993             if defined $::RD_TRACE;
13994 0         0 $expectation->failed();
13995 0         0 last;
13996             }
13997 12 50       47 Parse::RecDescent::_trace(q{>>Matched subrule: [topic_ref]<< (return value: [}
13998             . $_tok . q{]},
13999            
14000             Parse::RecDescent::_tracefirst($text),
14001             q{instance_of},
14002             $tracelevel)
14003             if defined $::RD_TRACE;
14004 12         25 $item{q{topic_ref}} = $_tok;
14005 12         21 push @item, $_tok;
14006            
14007             }
14008              
14009 12 50       52 Parse::RecDescent::_trace(q{Trying action},
14010             Parse::RecDescent::_tracefirst($text),
14011             q{instance_of},
14012             $tracelevel)
14013             if defined $::RD_TRACE;
14014            
14015              
14016 12 50       27 $_tok = ($_noactions) ? 0 : do { $store->assert ( [ undef,
  12         94  
14017             undef,
14018             'isa',
14019             undef,
14020             [ 'class', 'instance' ],
14021             [ $item[2], $arg[0] ],
14022             ] ); };
14023 12 50       48 unless (defined $_tok)
14024             {
14025 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
14026             if defined $::RD_TRACE;
14027 0         0 last;
14028             }
14029 12 50       27 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
14030             . $_tok . q{])},
14031             Parse::RecDescent::_tracefirst($text))
14032             if defined $::RD_TRACE;
14033 12         19 push @item, $_tok;
14034            
14035            
14036              
14037              
14038 12 50       23 Parse::RecDescent::_trace(q{>>Matched production: ['isa' topic_ref]<<},
14039             Parse::RecDescent::_tracefirst($text),
14040             q{instance_of},
14041             $tracelevel)
14042             if defined $::RD_TRACE;
14043 12         16 $_matched = 1;
14044 12         25 last;
14045             }
14046              
14047              
14048 143 100 66     671 unless ( $_matched || defined($score) )
14049             {
14050            
14051              
14052 131         258 $_[1] = $text; # NOT SURE THIS IS NEEDED
14053 131 50       299 Parse::RecDescent::_trace(q{<>},
14054             Parse::RecDescent::_tracefirst($_[1]),
14055             q{instance_of},
14056             $tracelevel)
14057             if defined $::RD_TRACE;
14058 131         952 return undef;
14059             }
14060 12 50 33     63 if (!defined($return) && defined($score))
14061             {
14062 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
14063             q{instance_of},
14064             $tracelevel)
14065             if defined $::RD_TRACE;
14066 0         0 $return = $score_return;
14067             }
14068 12         18 splice @{$thisparser->{errors}}, $err_at;
  12         31  
14069 12 50       35 $return = $item[$#item] unless defined $return;
14070 12 50       29 if (defined $::RD_TRACE)
14071             {
14072 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
14073             $return . q{])}, "",
14074             q{instance_of},
14075             $tracelevel);
14076 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
14077             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
14078             Parse::RecDescent::_tracefirst($text),
14079             , q{instance_of},
14080             $tracelevel)
14081             }
14082 12         22 $_[1] = $text;
14083 12         113 return $return;
14084             }
14085              
14086             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
14087             sub Parse::RecDescent::TM::CTM::CParser::named_wildcard
14088             {
14089 185     185   327 my $thisparser = $_[0];
14090 1     1   5 use vars q{$tracelevel};
  1         1  
  1         924  
14091 185   50     552 local $tracelevel = ($tracelevel||0)+1;
14092 185         257 $ERRORS = 0;
14093 185         398 my $thisrule = $thisparser->{"rules"}{"named_wildcard"};
14094            
14095 185 50       356 Parse::RecDescent::_trace(q{Trying rule: [named_wildcard]},
14096             Parse::RecDescent::_tracefirst($_[1]),
14097             q{named_wildcard},
14098             $tracelevel)
14099             if defined $::RD_TRACE;
14100              
14101            
14102 185         204 my $err_at = @{$thisparser->{errors}};
  185         334  
14103              
14104 185         230 my $score;
14105             my $score_return;
14106 0         0 my $_tok;
14107 185         207 my $return = undef;
14108 185         247 my $_matched=0;
14109 185         249 my $commit=0;
14110 185         278 my @item = ();
14111 185         314 my %item = ();
14112 185   33     480 my $repeating = defined($_[2]) && $_[2];
14113 185   33     527 my $_noactions = defined($_[3]) && $_[3];
14114 185 50       436 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  185         221  
  185         315  
14115 185 50       722 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
14116 185         244 my $text;
14117 185         281 my $lastsep="";
14118 185         608 my $expectation = new Parse::RecDescent::Expectation(q{/\\?(\\w[\\w-]*)/});
14119 185         1370 $expectation->at($_[1]);
14120            
14121 185         670 my $thisline;
14122 185         754 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
14123              
14124            
14125              
14126 185   33     1794 while (!$_matched && !$commit)
14127             {
14128            
14129 185 50       415 Parse::RecDescent::_trace(q{Trying production: [/\\?(\\w[\\w-]*)/]},
14130             Parse::RecDescent::_tracefirst($_[1]),
14131             q{named_wildcard},
14132             $tracelevel)
14133             if defined $::RD_TRACE;
14134 185         463 my $thisprod = $thisrule->{"prods"}[0];
14135 185         287 $text = $_[1];
14136 185         201 my $_savetext;
14137 185         343 @item = (q{named_wildcard});
14138 185         329 %item = (__RULE__ => q{named_wildcard});
14139 185         232 my $repcount = 0;
14140              
14141              
14142 185 50       375 Parse::RecDescent::_trace(q{Trying terminal: [/\\?(\\w[\\w-]*)/]}, Parse::RecDescent::_tracefirst($text),
14143             q{named_wildcard},
14144             $tracelevel)
14145             if defined $::RD_TRACE;
14146 185         230 $lastsep = "";
14147 185         500 $expectation->is(q{})->at($text);
14148            
14149              
14150 185 100 66     1916 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:\?(\w[\w-]*))//)
  185 100       1908  
14151             {
14152            
14153 173         500 $expectation->failed();
14154 173 50       823 Parse::RecDescent::_trace(q{<>},
14155             Parse::RecDescent::_tracefirst($text))
14156             if defined $::RD_TRACE;
14157              
14158 173         356 last;
14159             }
14160 12 50       55 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
14161             . $& . q{])},
14162             Parse::RecDescent::_tracefirst($text))
14163             if defined $::RD_TRACE;
14164 12         46 push @item, $item{__PATTERN1__}=$&;
14165            
14166              
14167 12 50       41 Parse::RecDescent::_trace(q{Trying action},
14168             Parse::RecDescent::_tracefirst($text),
14169             q{named_wildcard},
14170             $tracelevel)
14171             if defined $::RD_TRACE;
14172            
14173              
14174 12 50       39 $_tok = ($_noactions) ? 0 : do {
14175 12         30 my $id = $1;
14176 12   66     137 $wildcards{$id} ||=
14177             $store->internalize (sprintf "uuid-%010d", $TM::toplet_ctr++);
14178 12         32 $return = $wildcards{$id};
14179             };
14180 12 50       43 unless (defined $_tok)
14181             {
14182 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
14183             if defined $::RD_TRACE;
14184 0         0 last;
14185             }
14186 12 50       33 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
14187             . $_tok . q{])},
14188             Parse::RecDescent::_tracefirst($text))
14189             if defined $::RD_TRACE;
14190 12         23 push @item, $_tok;
14191            
14192            
14193              
14194              
14195 12 50       37 Parse::RecDescent::_trace(q{>>Matched production: [/\\?(\\w[\\w-]*)/]<<},
14196             Parse::RecDescent::_tracefirst($text),
14197             q{named_wildcard},
14198             $tracelevel)
14199             if defined $::RD_TRACE;
14200 12         17 $_matched = 1;
14201 12         26 last;
14202             }
14203              
14204              
14205 185 100 66     886 unless ( $_matched || defined($score) )
14206             {
14207            
14208              
14209 173         273 $_[1] = $text; # NOT SURE THIS IS NEEDED
14210 173 50       385 Parse::RecDescent::_trace(q{<>},
14211             Parse::RecDescent::_tracefirst($_[1]),
14212             q{named_wildcard},
14213             $tracelevel)
14214             if defined $::RD_TRACE;
14215 173         1246 return undef;
14216             }
14217 12 50 33     59 if (!defined($return) && defined($score))
14218             {
14219 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
14220             q{named_wildcard},
14221             $tracelevel)
14222             if defined $::RD_TRACE;
14223 0         0 $return = $score_return;
14224             }
14225 12         22 splice @{$thisparser->{errors}}, $err_at;
  12         32  
14226 12 50       36 $return = $item[$#item] unless defined $return;
14227 12 50       34 if (defined $::RD_TRACE)
14228             {
14229 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
14230             $return . q{])}, "",
14231             q{named_wildcard},
14232             $tracelevel);
14233 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
14234             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
14235             Parse::RecDescent::_tracefirst($text),
14236             , q{named_wildcard},
14237             $tracelevel)
14238             }
14239 12         28 $_[1] = $text;
14240 12         101 return $return;
14241             }
14242              
14243             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
14244             sub Parse::RecDescent::TM::CTM::CParser::topic_identity
14245             {
14246 349     349   698 my $thisparser = $_[0];
14247 1     1   6 use vars q{$tracelevel};
  1         2  
  1         343  
14248 349   50     912 local $tracelevel = ($tracelevel||0)+1;
14249 349         412 $ERRORS = 0;
14250 349         722 my $thisrule = $thisparser->{"rules"}{"topic_identity"};
14251            
14252 349 50       933 Parse::RecDescent::_trace(q{Trying rule: [topic_identity]},
14253             Parse::RecDescent::_tracefirst($_[1]),
14254             q{topic_identity},
14255             $tracelevel)
14256             if defined $::RD_TRACE;
14257              
14258            
14259 349         384 my $err_at = @{$thisparser->{errors}};
  349         639  
14260              
14261 349         521 my $score;
14262             my $score_return;
14263 0         0 my $_tok;
14264 349         392 my $return = undef;
14265 349         347 my $_matched=0;
14266 349         363 my $commit=0;
14267 349         490 my @item = ();
14268 349         835 my %item = ();
14269 349   33     898 my $repeating = defined($_[2]) && $_[2];
14270 349   33     1156 my $_noactions = defined($_[3]) && $_[3];
14271 349 50       734 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  349         386  
  349         628  
14272 349 50       1721 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
14273 349         440 my $text;
14274 349         513 my $lastsep="";
14275 349         1263 my $expectation = new Parse::RecDescent::Expectation(q{subject_identifier, or identifier, or subject_locator, or wildcard});
14276 349         2622 $expectation->at($_[1]);
14277            
14278 349         1437 my $thisline;
14279 349         1280 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
14280              
14281            
14282              
14283 349   33     3517 while (!$_matched && !$commit)
14284             {
14285            
14286 349 50       692 Parse::RecDescent::_trace(q{Trying production: [subject_identifier]},
14287             Parse::RecDescent::_tracefirst($_[1]),
14288             q{topic_identity},
14289             $tracelevel)
14290             if defined $::RD_TRACE;
14291 349         732 my $thisprod = $thisrule->{"prods"}[0];
14292 349         625 $text = $_[1];
14293 349         402 my $_savetext;
14294 349         644 @item = (q{topic_identity});
14295 349         711 %item = (__RULE__ => q{topic_identity});
14296 349         416 my $repcount = 0;
14297              
14298              
14299 349 50       644 Parse::RecDescent::_trace(q{Trying subrule: [subject_identifier]},
14300             Parse::RecDescent::_tracefirst($text),
14301             q{topic_identity},
14302             $tracelevel)
14303             if defined $::RD_TRACE;
14304 1     1   5 if (1) { no strict qw{refs};
  1         3  
  1         434  
  349         357  
14305 349         875 $expectation->is(q{})->at($text);
14306 349 100   349   3847 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::subject_identifier($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  349         1033  
14307             {
14308            
14309 333 50       941 Parse::RecDescent::_trace(q{<>},
14310             Parse::RecDescent::_tracefirst($text),
14311             q{topic_identity},
14312             $tracelevel)
14313             if defined $::RD_TRACE;
14314 333         877 $expectation->failed();
14315 333         1362 last;
14316             }
14317 16 50       72 Parse::RecDescent::_trace(q{>>Matched subrule: [subject_identifier]<< (return value: [}
14318             . $_tok . q{]},
14319            
14320             Parse::RecDescent::_tracefirst($text),
14321             q{topic_identity},
14322             $tracelevel)
14323             if defined $::RD_TRACE;
14324 16         35 $item{q{subject_identifier}} = $_tok;
14325 16         29 push @item, $_tok;
14326            
14327             }
14328              
14329 16 50       39 Parse::RecDescent::_trace(q{Trying action},
14330             Parse::RecDescent::_tracefirst($text),
14331             q{topic_identity},
14332             $tracelevel)
14333             if defined $::RD_TRACE;
14334            
14335              
14336 16 50       48 $_tok = ($_noactions) ? 0 : do { $return = $store->internalize (undef, $item[1]); };
  16         132  
14337 16 50       57 unless (defined $_tok)
14338             {
14339 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
14340             if defined $::RD_TRACE;
14341 0         0 last;
14342             }
14343 16 50       43 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
14344             . $_tok . q{])},
14345             Parse::RecDescent::_tracefirst($text))
14346             if defined $::RD_TRACE;
14347 16         25 push @item, $_tok;
14348            
14349            
14350              
14351              
14352 16 50       45 Parse::RecDescent::_trace(q{>>Matched production: [subject_identifier]<<},
14353             Parse::RecDescent::_tracefirst($text),
14354             q{topic_identity},
14355             $tracelevel)
14356             if defined $::RD_TRACE;
14357 16         24 $_matched = 1;
14358 16         30 last;
14359             }
14360              
14361              
14362 349   66     1630 while (!$_matched && !$commit)
14363             {
14364            
14365 333 50       586 Parse::RecDescent::_trace(q{Trying production: [identifier]},
14366             Parse::RecDescent::_tracefirst($_[1]),
14367             q{topic_identity},
14368             $tracelevel)
14369             if defined $::RD_TRACE;
14370 333         678 my $thisprod = $thisrule->{"prods"}[1];
14371 333         614 $text = $_[1];
14372 333         387 my $_savetext;
14373 333         823 @item = (q{topic_identity});
14374 333         739 %item = (__RULE__ => q{topic_identity});
14375 333         513 my $repcount = 0;
14376              
14377              
14378 333 50       872 Parse::RecDescent::_trace(q{Trying subrule: [identifier]},
14379             Parse::RecDescent::_tracefirst($text),
14380             q{topic_identity},
14381             $tracelevel)
14382             if defined $::RD_TRACE;
14383 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         432  
  333         345  
14384 333         845 $expectation->is(q{})->at($text);
14385 333 100   333   3353 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::identifier($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  333         851  
14386             {
14387            
14388 186 50       504 Parse::RecDescent::_trace(q{<>},
14389             Parse::RecDescent::_tracefirst($text),
14390             q{topic_identity},
14391             $tracelevel)
14392             if defined $::RD_TRACE;
14393 186         582 $expectation->failed();
14394 186         679 last;
14395             }
14396 147 50       559 Parse::RecDescent::_trace(q{>>Matched subrule: [identifier]<< (return value: [}
14397             . $_tok . q{]},
14398            
14399             Parse::RecDescent::_tracefirst($text),
14400             q{topic_identity},
14401             $tracelevel)
14402             if defined $::RD_TRACE;
14403 147         326 $item{q{identifier}} = $_tok;
14404 147         287 push @item, $_tok;
14405            
14406             }
14407              
14408 147 50       332 Parse::RecDescent::_trace(q{Trying action},
14409             Parse::RecDescent::_tracefirst($text),
14410             q{topic_identity},
14411             $tracelevel)
14412             if defined $::RD_TRACE;
14413            
14414              
14415 147 50       271 $_tok = ($_noactions) ? 0 : do { $return = $store->internalize ($item[1]); };
  147         738  
14416 147 50       347 unless (defined $_tok)
14417             {
14418 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
14419             if defined $::RD_TRACE;
14420 0         0 last;
14421             }
14422 147 50       279 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
14423             . $_tok . q{])},
14424             Parse::RecDescent::_tracefirst($text))
14425             if defined $::RD_TRACE;
14426 147         225 push @item, $_tok;
14427            
14428            
14429              
14430              
14431 147 50       360 Parse::RecDescent::_trace(q{>>Matched production: [identifier]<<},
14432             Parse::RecDescent::_tracefirst($text),
14433             q{topic_identity},
14434             $tracelevel)
14435             if defined $::RD_TRACE;
14436 147         182 $_matched = 1;
14437 147         211 last;
14438             }
14439              
14440              
14441 349   66     1566 while (!$_matched && !$commit)
14442             {
14443            
14444 186 50       415 Parse::RecDescent::_trace(q{Trying production: [subject_locator]},
14445             Parse::RecDescent::_tracefirst($_[1]),
14446             q{topic_identity},
14447             $tracelevel)
14448             if defined $::RD_TRACE;
14449 186         484 my $thisprod = $thisrule->{"prods"}[2];
14450 186         339 $text = $_[1];
14451 186         265 my $_savetext;
14452 186         370 @item = (q{topic_identity});
14453 186         415 %item = (__RULE__ => q{topic_identity});
14454 186         360 my $repcount = 0;
14455              
14456              
14457 186 50       420 Parse::RecDescent::_trace(q{Trying subrule: [subject_locator]},
14458             Parse::RecDescent::_tracefirst($text),
14459             q{topic_identity},
14460             $tracelevel)
14461             if defined $::RD_TRACE;
14462 1     1   5 if (1) { no strict qw{refs};
  1         4  
  1         434  
  186         218  
14463 186         503 $expectation->is(q{})->at($text);
14464 186 100   186   1835 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::subject_locator($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  186         450  
14465             {
14466            
14467 185 50       393 Parse::RecDescent::_trace(q{<>},
14468             Parse::RecDescent::_tracefirst($text),
14469             q{topic_identity},
14470             $tracelevel)
14471             if defined $::RD_TRACE;
14472 185         491 $expectation->failed();
14473 185         677 last;
14474             }
14475 1 50       5 Parse::RecDescent::_trace(q{>>Matched subrule: [subject_locator]<< (return value: [}
14476             . $_tok . q{]},
14477            
14478             Parse::RecDescent::_tracefirst($text),
14479             q{topic_identity},
14480             $tracelevel)
14481             if defined $::RD_TRACE;
14482 1         3 $item{q{subject_locator}} = $_tok;
14483 1         2 push @item, $_tok;
14484            
14485             }
14486              
14487 1 50       6 Parse::RecDescent::_trace(q{Trying action},
14488             Parse::RecDescent::_tracefirst($text),
14489             q{topic_identity},
14490             $tracelevel)
14491             if defined $::RD_TRACE;
14492            
14493              
14494 1 50       3 $_tok = ($_noactions) ? 0 : do { $return = $store->internalize (undef, $item[1]); };
  1         10  
14495 1 50       5 unless (defined $_tok)
14496             {
14497 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
14498             if defined $::RD_TRACE;
14499 0         0 last;
14500             }
14501 1 50       4 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
14502             . $_tok . q{])},
14503             Parse::RecDescent::_tracefirst($text))
14504             if defined $::RD_TRACE;
14505 1         3 push @item, $_tok;
14506            
14507            
14508              
14509              
14510 1 50       4 Parse::RecDescent::_trace(q{>>Matched production: [subject_locator]<<},
14511             Parse::RecDescent::_tracefirst($text),
14512             q{topic_identity},
14513             $tracelevel)
14514             if defined $::RD_TRACE;
14515 1         2 $_matched = 1;
14516 1         3 last;
14517             }
14518              
14519              
14520 349   66     1277 while (!$_matched && !$commit)
14521             {
14522            
14523 185 50       388 Parse::RecDescent::_trace(q{Trying production: [wildcard]},
14524             Parse::RecDescent::_tracefirst($_[1]),
14525             q{topic_identity},
14526             $tracelevel)
14527             if defined $::RD_TRACE;
14528 185         392 my $thisprod = $thisrule->{"prods"}[3];
14529 185         281 $text = $_[1];
14530 185         199 my $_savetext;
14531 185         371 @item = (q{topic_identity});
14532 185         411 %item = (__RULE__ => q{topic_identity});
14533 185         325 my $repcount = 0;
14534              
14535              
14536 185 50       359 Parse::RecDescent::_trace(q{Trying subrule: [wildcard]},
14537             Parse::RecDescent::_tracefirst($text),
14538             q{topic_identity},
14539             $tracelevel)
14540             if defined $::RD_TRACE;
14541 1     1   5 if (1) { no strict qw{refs};
  1         1  
  1         558  
  185         210  
14542 185         525 $expectation->is(q{})->at($text);
14543 185 100   185   1858 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::wildcard($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  185         458  
14544             {
14545            
14546 171 50       397 Parse::RecDescent::_trace(q{<>},
14547             Parse::RecDescent::_tracefirst($text),
14548             q{topic_identity},
14549             $tracelevel)
14550             if defined $::RD_TRACE;
14551 171         445 $expectation->failed();
14552 171         684 last;
14553             }
14554 14 50       65 Parse::RecDescent::_trace(q{>>Matched subrule: [wildcard]<< (return value: [}
14555             . $_tok . q{]},
14556            
14557             Parse::RecDescent::_tracefirst($text),
14558             q{topic_identity},
14559             $tracelevel)
14560             if defined $::RD_TRACE;
14561 14         36 $item{q{wildcard}} = $_tok;
14562 14         27 push @item, $_tok;
14563            
14564             }
14565              
14566              
14567 14 50       47 Parse::RecDescent::_trace(q{>>Matched production: [wildcard]<<},
14568             Parse::RecDescent::_tracefirst($text),
14569             q{topic_identity},
14570             $tracelevel)
14571             if defined $::RD_TRACE;
14572 14         20 $_matched = 1;
14573 14         27 last;
14574             }
14575              
14576              
14577 349 100 66     1367 unless ( $_matched || defined($score) )
14578             {
14579            
14580              
14581 171         273 $_[1] = $text; # NOT SURE THIS IS NEEDED
14582 171 50       324 Parse::RecDescent::_trace(q{<>},
14583             Parse::RecDescent::_tracefirst($_[1]),
14584             q{topic_identity},
14585             $tracelevel)
14586             if defined $::RD_TRACE;
14587 171         1297 return undef;
14588             }
14589 178 50 66     566 if (!defined($return) && defined($score))
14590             {
14591 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
14592             q{topic_identity},
14593             $tracelevel)
14594             if defined $::RD_TRACE;
14595 0         0 $return = $score_return;
14596             }
14597 178         191 splice @{$thisparser->{errors}}, $err_at;
  178         366  
14598 178 100       469 $return = $item[$#item] unless defined $return;
14599 178 50       411 if (defined $::RD_TRACE)
14600             {
14601 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
14602             $return . q{])}, "",
14603             q{topic_identity},
14604             $tracelevel);
14605 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
14606             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
14607             Parse::RecDescent::_tracefirst($text),
14608             , q{topic_identity},
14609             $tracelevel)
14610             }
14611 178         272 $_[1] = $text;
14612 178         1559 return $return;
14613             }
14614              
14615             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
14616             sub Parse::RecDescent::TM::CTM::CParser::mergemap_directive
14617             {
14618 0     0   0 my $thisparser = $_[0];
14619 1     1   5 use vars q{$tracelevel};
  1         2  
  1         517  
14620 0   0     0 local $tracelevel = ($tracelevel||0)+1;
14621 0         0 $ERRORS = 0;
14622 0         0 my $thisrule = $thisparser->{"rules"}{"mergemap_directive"};
14623            
14624 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [mergemap_directive]},
14625             Parse::RecDescent::_tracefirst($_[1]),
14626             q{mergemap_directive},
14627             $tracelevel)
14628             if defined $::RD_TRACE;
14629              
14630            
14631 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
14632              
14633 0         0 my $score;
14634             my $score_return;
14635 0         0 my $_tok;
14636 0         0 my $return = undef;
14637 0         0 my $_matched=0;
14638 0         0 my $commit=0;
14639 0         0 my @item = ();
14640 0         0 my %item = ();
14641 0   0     0 my $repeating = defined($_[2]) && $_[2];
14642 0   0     0 my $_noactions = defined($_[3]) && $_[3];
14643 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
14644 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
14645 0         0 my $text;
14646 0         0 my $lastsep="";
14647 0         0 my $expectation = new Parse::RecDescent::Expectation(q{'#MERGEMAP'});
14648 0         0 $expectation->at($_[1]);
14649            
14650 0         0 my $thisline;
14651 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
14652              
14653            
14654              
14655 0   0     0 while (!$_matched && !$commit)
14656             {
14657            
14658 0 0       0 Parse::RecDescent::_trace(q{Trying production: ['#MERGEMAP' uri tm_format]},
14659             Parse::RecDescent::_tracefirst($_[1]),
14660             q{mergemap_directive},
14661             $tracelevel)
14662             if defined $::RD_TRACE;
14663 0         0 my $thisprod = $thisrule->{"prods"}[0];
14664 0         0 $text = $_[1];
14665 0         0 my $_savetext;
14666 0         0 @item = (q{mergemap_directive});
14667 0         0 %item = (__RULE__ => q{mergemap_directive});
14668 0         0 my $repcount = 0;
14669              
14670              
14671 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['#MERGEMAP']},
14672             Parse::RecDescent::_tracefirst($text),
14673             q{mergemap_directive},
14674             $tracelevel)
14675             if defined $::RD_TRACE;
14676 0         0 $lastsep = "";
14677 0         0 $expectation->is(q{})->at($text);
14678            
14679              
14680 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\#MERGEMAP//)
  0 0       0  
14681             {
14682            
14683 0         0 $expectation->failed();
14684 0 0       0 Parse::RecDescent::_trace(qq{<>},
14685             Parse::RecDescent::_tracefirst($text))
14686             if defined $::RD_TRACE;
14687 0         0 last;
14688             }
14689 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
14690             . $& . q{])},
14691             Parse::RecDescent::_tracefirst($text))
14692             if defined $::RD_TRACE;
14693 0         0 push @item, $item{__STRING1__}=$&;
14694            
14695              
14696 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [uri]},
14697             Parse::RecDescent::_tracefirst($text),
14698             q{mergemap_directive},
14699             $tracelevel)
14700             if defined $::RD_TRACE;
14701 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         915  
  0         0  
14702 0         0 $expectation->is(q{uri})->at($text);
14703 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::uri($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
14704             {
14705            
14706 0 0       0 Parse::RecDescent::_trace(q{<>},
14707             Parse::RecDescent::_tracefirst($text),
14708             q{mergemap_directive},
14709             $tracelevel)
14710             if defined $::RD_TRACE;
14711 0         0 $expectation->failed();
14712 0         0 last;
14713             }
14714 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [uri]<< (return value: [}
14715             . $_tok . q{]},
14716            
14717             Parse::RecDescent::_tracefirst($text),
14718             q{mergemap_directive},
14719             $tracelevel)
14720             if defined $::RD_TRACE;
14721 0         0 $item{q{uri}} = $_tok;
14722 0         0 push @item, $_tok;
14723            
14724             }
14725              
14726 0 0       0 Parse::RecDescent::_trace(q{Trying repeated subrule: [tm_format]},
14727             Parse::RecDescent::_tracefirst($text),
14728             q{mergemap_directive},
14729             $tracelevel)
14730             if defined $::RD_TRACE;
14731 0         0 $expectation->is(q{tm_format})->at($text);
14732            
14733 0 0   0   0 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::TM::CTM::CParser::tm_format, 0, 1, $_noactions,$expectation,sub { \@arg })))
  0         0  
14734             {
14735 0 0       0 Parse::RecDescent::_trace(q{<>},
14736             Parse::RecDescent::_tracefirst($text),
14737             q{mergemap_directive},
14738             $tracelevel)
14739             if defined $::RD_TRACE;
14740 0         0 last;
14741             }
14742 0 0       0 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [tm_format]<< (}
14743             . @$_tok . q{ times)},
14744            
14745             Parse::RecDescent::_tracefirst($text),
14746             q{mergemap_directive},
14747             $tracelevel)
14748             if defined $::RD_TRACE;
14749 0         0 $item{q{tm_format(?)}} = $_tok;
14750 0         0 push @item, $_tok;
14751            
14752              
14753              
14754 0 0       0 Parse::RecDescent::_trace(q{Trying action},
14755             Parse::RecDescent::_tracefirst($text),
14756             q{mergemap_directive},
14757             $tracelevel)
14758             if defined $::RD_TRACE;
14759            
14760              
14761 0 0       0 $_tok = ($_noactions) ? 0 : do {
14762 0         0 my $uri = $item[2];
14763             #warn "uri is $uri";
14764 0 0       0 my $format = $item[3]->[0] ? $item[3]->[0] : 'ltm';
14765 0         0 my $tm;
14766 0 0       0 if ($format =~ /^ltm$/i) {
    0          
    0          
14767 0         0 $tm = new TM::Materialized::LTM (url => $uri);
14768             } elsif ($format =~ /^xtm$/i) {
14769 0         0 $tm = new TM::Materialized::XTM (url => $uri);
14770             } elsif ($format =~ /^astma$/i) {
14771 0         0 $tm = new TM::Materialized::AsTMa (url => $uri);
14772             } else {
14773 0         0 $log->logdie (__PACKAGE__ . ": unsupported TM format '$format'");
14774             }
14775 0         0 $tm->sync_in;
14776 0         0 $store->add ($tm);
14777             #warn "after merged in".Dumper $store;
14778 0         0 $return = $uri;
14779             };
14780 0 0       0 unless (defined $_tok)
14781             {
14782 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
14783             if defined $::RD_TRACE;
14784 0         0 last;
14785             }
14786 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
14787             . $_tok . q{])},
14788             Parse::RecDescent::_tracefirst($text))
14789             if defined $::RD_TRACE;
14790 0         0 push @item, $_tok;
14791            
14792            
14793              
14794              
14795 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['#MERGEMAP' uri tm_format]<<},
14796             Parse::RecDescent::_tracefirst($text),
14797             q{mergemap_directive},
14798             $tracelevel)
14799             if defined $::RD_TRACE;
14800 0         0 $_matched = 1;
14801 0         0 last;
14802             }
14803              
14804              
14805 0 0 0     0 unless ( $_matched || defined($score) )
14806             {
14807            
14808              
14809 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
14810 0 0       0 Parse::RecDescent::_trace(q{<>},
14811             Parse::RecDescent::_tracefirst($_[1]),
14812             q{mergemap_directive},
14813             $tracelevel)
14814             if defined $::RD_TRACE;
14815 0         0 return undef;
14816             }
14817 0 0 0     0 if (!defined($return) && defined($score))
14818             {
14819 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
14820             q{mergemap_directive},
14821             $tracelevel)
14822             if defined $::RD_TRACE;
14823 0         0 $return = $score_return;
14824             }
14825 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
14826 0 0       0 $return = $item[$#item] unless defined $return;
14827 0 0       0 if (defined $::RD_TRACE)
14828             {
14829 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
14830             $return . q{])}, "",
14831             q{mergemap_directive},
14832             $tracelevel);
14833 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
14834             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
14835             Parse::RecDescent::_tracefirst($text),
14836             , q{mergemap_directive},
14837             $tracelevel)
14838             }
14839 0         0 $_[1] = $text;
14840 0         0 return $return;
14841             }
14842              
14843             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
14844             sub Parse::RecDescent::TM::CTM::CParser::embedded_topic
14845             {
14846 91     91   148 my $thisparser = $_[0];
14847 1     1   5 use vars q{$tracelevel};
  1         2  
  1         830  
14848 91   50     267 local $tracelevel = ($tracelevel||0)+1;
14849 91         129 $ERRORS = 0;
14850 91         228 my $thisrule = $thisparser->{"rules"}{"embedded_topic"};
14851            
14852 91 50       196 Parse::RecDescent::_trace(q{Trying rule: [embedded_topic]},
14853             Parse::RecDescent::_tracefirst($_[1]),
14854             q{embedded_topic},
14855             $tracelevel)
14856             if defined $::RD_TRACE;
14857              
14858            
14859 91         106 my $err_at = @{$thisparser->{errors}};
  91         157  
14860              
14861 91         147 my $score;
14862             my $score_return;
14863 0         0 my $_tok;
14864 91         122 my $return = undef;
14865 91         157 my $_matched=0;
14866 91         109 my $commit=0;
14867 91         166 my @item = ();
14868 91         160 my %item = ();
14869 91   33     342 my $repeating = defined($_[2]) && $_[2];
14870 91   33     271 my $_noactions = defined($_[3]) && $_[3];
14871 91 50       273 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  91         149  
  91         207  
14872 91 50       343 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
14873 91         112 my $text;
14874 91         167 my $lastsep="";
14875 91         329 my $expectation = new Parse::RecDescent::Expectation(q{'['});
14876 91         743 $expectation->at($_[1]);
14877            
14878 91         328 my $thisline;
14879 91         394 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
14880              
14881 91         624 my $llid;
14882              
14883              
14884 91   33     349 while (!$_matched && !$commit)
14885             {
14886            
14887 91 50       206 Parse::RecDescent::_trace(q{Trying production: []},
14888             Parse::RecDescent::_tracefirst($_[1]),
14889             q{embedded_topic},
14890             $tracelevel)
14891             if defined $::RD_TRACE;
14892 91         270 my $thisprod = $thisrule->{"prods"}[0];
14893 91         156 $text = $_[1];
14894 91         115 my $_savetext;
14895 91         165 @item = (q{embedded_topic});
14896 91         203 %item = (__RULE__ => q{embedded_topic});
14897 91         128 my $repcount = 0;
14898              
14899              
14900 91 50       262 Parse::RecDescent::_trace(q{>>Rejecting production<< (found )},
14901             Parse::RecDescent::_tracefirst($text),
14902             q{embedded_topic},
14903             $tracelevel)
14904             if defined $::RD_TRACE;
14905 91         102 undef $return;
14906            
14907              
14908 91         106 $_tok = undef;
14909            
14910 91 50       259 last unless defined $_tok;
14911              
14912              
14913 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: []<<},
14914             Parse::RecDescent::_tracefirst($text),
14915             q{embedded_topic},
14916             $tracelevel)
14917             if defined $::RD_TRACE;
14918 0         0 $_matched = 1;
14919 0         0 last;
14920             }
14921              
14922              
14923 91   33     324 while (!$_matched && !$commit)
14924             {
14925            
14926 91 50       193 Parse::RecDescent::_trace(q{Trying production: ['[' topic_tail ']']},
14927             Parse::RecDescent::_tracefirst($_[1]),
14928             q{embedded_topic},
14929             $tracelevel)
14930             if defined $::RD_TRACE;
14931 91         172 my $thisprod = $thisrule->{"prods"}[1];
14932 91         122 $text = $_[1];
14933 91         125 my $_savetext;
14934 91         168 @item = (q{embedded_topic});
14935 91         213 %item = (__RULE__ => q{embedded_topic});
14936 91         130 my $repcount = 0;
14937              
14938              
14939 91 50       207 Parse::RecDescent::_trace(q{Trying terminal: ['[']},
14940             Parse::RecDescent::_tracefirst($text),
14941             q{embedded_topic},
14942             $tracelevel)
14943             if defined $::RD_TRACE;
14944 91         197 $lastsep = "";
14945 91         249 $expectation->is(q{})->at($text);
14946            
14947              
14948 91 100 66     997 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\[//)
  91 100       898  
14949             {
14950            
14951 90         300 $expectation->failed();
14952 90 50       369 Parse::RecDescent::_trace(qq{<>},
14953             Parse::RecDescent::_tracefirst($text))
14954             if defined $::RD_TRACE;
14955 90         189 last;
14956             }
14957 1 50       6 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
14958             . $& . q{])},
14959             Parse::RecDescent::_tracefirst($text))
14960             if defined $::RD_TRACE;
14961 1         5 push @item, $item{__STRING1__}=$&;
14962            
14963              
14964 1 50       4 Parse::RecDescent::_trace(q{Trying action},
14965             Parse::RecDescent::_tracefirst($text),
14966             q{embedded_topic},
14967             $tracelevel)
14968             if defined $::RD_TRACE;
14969            
14970              
14971 1 50       5 $_tok = ($_noactions) ? 0 : do { $llid = sprintf "uuid-%010d", $TM::toplet_ctr++; };
  1         10  
14972 1 50       6 unless (defined $_tok)
14973             {
14974 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
14975             if defined $::RD_TRACE;
14976 0         0 last;
14977             }
14978 1 50       4 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
14979             . $_tok . q{])},
14980             Parse::RecDescent::_tracefirst($text))
14981             if defined $::RD_TRACE;
14982 1         3 push @item, $_tok;
14983            
14984            
14985              
14986 1 50       4 Parse::RecDescent::_trace(q{Trying subrule: [topic_tail]},
14987             Parse::RecDescent::_tracefirst($text),
14988             q{embedded_topic},
14989             $tracelevel)
14990             if defined $::RD_TRACE;
14991 1     1   5 if (1) { no strict qw{refs};
  1         4  
  1         777  
  1         2  
14992 1         4 $expectation->is(q{topic_tail})->at($text);
14993 1 50   1   28 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::topic_tail($thisparser,$text,$repeating,$_noactions,sub { return [$llid] })))
  1         5  
14994             {
14995            
14996 0 0       0 Parse::RecDescent::_trace(q{<>},
14997             Parse::RecDescent::_tracefirst($text),
14998             q{embedded_topic},
14999             $tracelevel)
15000             if defined $::RD_TRACE;
15001 0         0 $expectation->failed();
15002 0         0 last;
15003             }
15004 1 50       12 Parse::RecDescent::_trace(q{>>Matched subrule: [topic_tail]<< (return value: [}
15005             . $_tok . q{]},
15006            
15007             Parse::RecDescent::_tracefirst($text),
15008             q{embedded_topic},
15009             $tracelevel)
15010             if defined $::RD_TRACE;
15011 1         4 $item{q{topic_tail}} = $_tok;
15012 1         4 push @item, $_tok;
15013            
15014             }
15015              
15016 1 50       4 Parse::RecDescent::_trace(q{Trying terminal: [']']},
15017             Parse::RecDescent::_tracefirst($text),
15018             q{embedded_topic},
15019             $tracelevel)
15020             if defined $::RD_TRACE;
15021 1         2 $lastsep = "";
15022 1         4 $expectation->is(q{']'})->at($text);
15023            
15024              
15025 1 50 33     30 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\]//)
  1 50       14  
15026             {
15027            
15028 0         0 $expectation->failed();
15029 0 0       0 Parse::RecDescent::_trace(qq{<>},
15030             Parse::RecDescent::_tracefirst($text))
15031             if defined $::RD_TRACE;
15032 0         0 last;
15033             }
15034 1 50       5 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
15035             . $& . q{])},
15036             Parse::RecDescent::_tracefirst($text))
15037             if defined $::RD_TRACE;
15038 1         4 push @item, $item{__STRING2__}=$&;
15039            
15040              
15041 1 50       4 Parse::RecDescent::_trace(q{Trying action},
15042             Parse::RecDescent::_tracefirst($text),
15043             q{embedded_topic},
15044             $tracelevel)
15045             if defined $::RD_TRACE;
15046            
15047              
15048 1 50       4 $_tok = ($_noactions) ? 0 : do { $return = $llid; };
  1         3  
15049 1 50       4 unless (defined $_tok)
15050             {
15051 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
15052             if defined $::RD_TRACE;
15053 0         0 last;
15054             }
15055 1 50       4 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
15056             . $_tok . q{])},
15057             Parse::RecDescent::_tracefirst($text))
15058             if defined $::RD_TRACE;
15059 1         2 push @item, $_tok;
15060            
15061            
15062              
15063              
15064 1 50       3 Parse::RecDescent::_trace(q{>>Matched production: ['[' topic_tail ']']<<},
15065             Parse::RecDescent::_tracefirst($text),
15066             q{embedded_topic},
15067             $tracelevel)
15068             if defined $::RD_TRACE;
15069 1         3 $_matched = 1;
15070 1         2 last;
15071             }
15072              
15073              
15074 91 100 66     453 unless ( $_matched || defined($score) )
15075             {
15076            
15077              
15078 90         158 $_[1] = $text; # NOT SURE THIS IS NEEDED
15079 90 50       210 Parse::RecDescent::_trace(q{<>},
15080             Parse::RecDescent::_tracefirst($_[1]),
15081             q{embedded_topic},
15082             $tracelevel)
15083             if defined $::RD_TRACE;
15084 90         607 return undef;
15085             }
15086 1 50 33     5 if (!defined($return) && defined($score))
15087             {
15088 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
15089             q{embedded_topic},
15090             $tracelevel)
15091             if defined $::RD_TRACE;
15092 0         0 $return = $score_return;
15093             }
15094 1         3 splice @{$thisparser->{errors}}, $err_at;
  1         3  
15095 1 50       4 $return = $item[$#item] unless defined $return;
15096 1 50       4 if (defined $::RD_TRACE)
15097             {
15098 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
15099             $return . q{])}, "",
15100             q{embedded_topic},
15101             $tracelevel);
15102 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
15103             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
15104             Parse::RecDescent::_tracefirst($text),
15105             , q{embedded_topic},
15106             $tracelevel)
15107             }
15108 1         3 $_[1] = $text;
15109 1         14 return $return;
15110             }
15111              
15112             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
15113             sub Parse::RecDescent::TM::CTM::CParser::player
15114             {
15115 14     14   19 my $thisparser = $_[0];
15116 1     1   5 use vars q{$tracelevel};
  1         3  
  1         332  
15117 14   50     44 local $tracelevel = ($tracelevel||0)+1;
15118 14         19 $ERRORS = 0;
15119 14         33 my $thisrule = $thisparser->{"rules"}{"player"};
15120            
15121 14 50       38 Parse::RecDescent::_trace(q{Trying rule: [player]},
15122             Parse::RecDescent::_tracefirst($_[1]),
15123             q{player},
15124             $tracelevel)
15125             if defined $::RD_TRACE;
15126              
15127            
15128 14         17 my $err_at = @{$thisparser->{errors}};
  14         26  
15129              
15130 14         30 my $score;
15131             my $score_return;
15132 0         0 my $_tok;
15133 14         28 my $return = undef;
15134 14         19 my $_matched=0;
15135 14         14 my $commit=0;
15136 14         30 my @item = ();
15137 14         21 my %item = ();
15138 14   33     44 my $repeating = defined($_[2]) && $_[2];
15139 14   33     47 my $_noactions = defined($_[3]) && $_[3];
15140 14 50       25 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  14         17  
  14         33  
15141 14 50       76 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
15142 14         17 my $text;
15143 14         17 my $lastsep="";
15144 14         44 my $expectation = new Parse::RecDescent::Expectation(q{topic_ref});
15145 14         108 $expectation->at($_[1]);
15146            
15147 14         49 my $thisline;
15148 14         63 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
15149              
15150            
15151              
15152 14   33     138 while (!$_matched && !$commit)
15153             {
15154            
15155 14 50       32 Parse::RecDescent::_trace(q{Trying production: [topic_ref]},
15156             Parse::RecDescent::_tracefirst($_[1]),
15157             q{player},
15158             $tracelevel)
15159             if defined $::RD_TRACE;
15160 14         37 my $thisprod = $thisrule->{"prods"}[0];
15161 14         22 $text = $_[1];
15162 14         19 my $_savetext;
15163 14         24 @item = (q{player});
15164 14         27 %item = (__RULE__ => q{player});
15165 14         22 my $repcount = 0;
15166              
15167              
15168 14 50       29 Parse::RecDescent::_trace(q{Trying subrule: [topic_ref]},
15169             Parse::RecDescent::_tracefirst($text),
15170             q{player},
15171             $tracelevel)
15172             if defined $::RD_TRACE;
15173 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         445  
  14         18  
15174 14         53 $expectation->is(q{})->at($text);
15175 14 50   14   132 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::topic_ref($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  14         34  
15176             {
15177            
15178 0 0       0 Parse::RecDescent::_trace(q{<>},
15179             Parse::RecDescent::_tracefirst($text),
15180             q{player},
15181             $tracelevel)
15182             if defined $::RD_TRACE;
15183 0         0 $expectation->failed();
15184 0         0 last;
15185             }
15186 14 50       53 Parse::RecDescent::_trace(q{>>Matched subrule: [topic_ref]<< (return value: [}
15187             . $_tok . q{]},
15188            
15189             Parse::RecDescent::_tracefirst($text),
15190             q{player},
15191             $tracelevel)
15192             if defined $::RD_TRACE;
15193 14         25 $item{q{topic_ref}} = $_tok;
15194 14         18 push @item, $_tok;
15195            
15196             }
15197              
15198              
15199 14 50       34 Parse::RecDescent::_trace(q{>>Matched production: [topic_ref]<<},
15200             Parse::RecDescent::_tracefirst($text),
15201             q{player},
15202             $tracelevel)
15203             if defined $::RD_TRACE;
15204 14         24 $_matched = 1;
15205 14         24 last;
15206             }
15207              
15208              
15209 14 50 33     36 unless ( $_matched || defined($score) )
15210             {
15211            
15212              
15213 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
15214 0 0       0 Parse::RecDescent::_trace(q{<>},
15215             Parse::RecDescent::_tracefirst($_[1]),
15216             q{player},
15217             $tracelevel)
15218             if defined $::RD_TRACE;
15219 0         0 return undef;
15220             }
15221 14 50 33     61 if (!defined($return) && defined($score))
15222             {
15223 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
15224             q{player},
15225             $tracelevel)
15226             if defined $::RD_TRACE;
15227 0         0 $return = $score_return;
15228             }
15229 14         20 splice @{$thisparser->{errors}}, $err_at;
  14         29  
15230 14 50       39 $return = $item[$#item] unless defined $return;
15231 14 50       28 if (defined $::RD_TRACE)
15232             {
15233 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
15234             $return . q{])}, "",
15235             q{player},
15236             $tracelevel);
15237 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
15238             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
15239             Parse::RecDescent::_tracefirst($text),
15240             , q{player},
15241             $tracelevel)
15242             }
15243 14         29 $_[1] = $text;
15244 14         133 return $return;
15245             }
15246              
15247             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
15248             sub Parse::RecDescent::TM::CTM::CParser::subject_locator
15249             {
15250 311     311   494 my $thisparser = $_[0];
15251 1     1   5 use vars q{$tracelevel};
  1         2  
  1         468  
15252 311   50     900 local $tracelevel = ($tracelevel||0)+1;
15253 311         384 $ERRORS = 0;
15254 311         641 my $thisrule = $thisparser->{"rules"}{"subject_locator"};
15255            
15256 311 50       666 Parse::RecDescent::_trace(q{Trying rule: [subject_locator]},
15257             Parse::RecDescent::_tracefirst($_[1]),
15258             q{subject_locator},
15259             $tracelevel)
15260             if defined $::RD_TRACE;
15261              
15262            
15263 311         354 my $err_at = @{$thisparser->{errors}};
  311         534  
15264              
15265 311         395 my $score;
15266             my $score_return;
15267 0         0 my $_tok;
15268 311         344 my $return = undef;
15269 311         326 my $_matched=0;
15270 311         323 my $commit=0;
15271 311         508 my @item = ();
15272 311         456 my %item = ();
15273 311   33     926 my $repeating = defined($_[2]) && $_[2];
15274 311   33     793 my $_noactions = defined($_[3]) && $_[3];
15275 311 50       557 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  311         302  
  311         554  
15276 311 50       1110 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
15277 311         346 my $text;
15278 311         473 my $lastsep="";
15279 311         958 my $expectation = new Parse::RecDescent::Expectation(q{'='});
15280 311         2161 $expectation->at($_[1]);
15281            
15282 311         1251 my $thisline;
15283 311         1221 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
15284              
15285            
15286              
15287 311   33     2858 while (!$_matched && !$commit)
15288             {
15289            
15290 311 50       660 Parse::RecDescent::_trace(q{Trying production: ['=' iri]},
15291             Parse::RecDescent::_tracefirst($_[1]),
15292             q{subject_locator},
15293             $tracelevel)
15294             if defined $::RD_TRACE;
15295 311         667 my $thisprod = $thisrule->{"prods"}[0];
15296 311         427 $text = $_[1];
15297 311         319 my $_savetext;
15298 311         547 @item = (q{subject_locator});
15299 311         584 %item = (__RULE__ => q{subject_locator});
15300 311         394 my $repcount = 0;
15301              
15302              
15303 311 50       577 Parse::RecDescent::_trace(q{Trying terminal: ['=']},
15304             Parse::RecDescent::_tracefirst($text),
15305             q{subject_locator},
15306             $tracelevel)
15307             if defined $::RD_TRACE;
15308 311         415 $lastsep = "";
15309 311         747 $expectation->is(q{})->at($text);
15310            
15311              
15312 311 100 66     2960 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\=//)
  311 100       2800  
15313             {
15314            
15315 303         868 $expectation->failed();
15316 303 50       1308 Parse::RecDescent::_trace(qq{<>},
15317             Parse::RecDescent::_tracefirst($text))
15318             if defined $::RD_TRACE;
15319 303         580 last;
15320             }
15321 8 50       36 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
15322             . $& . q{])},
15323             Parse::RecDescent::_tracefirst($text))
15324             if defined $::RD_TRACE;
15325 8         34 push @item, $item{__STRING1__}=$&;
15326            
15327              
15328 8 50       28 Parse::RecDescent::_trace(q{Trying subrule: [iri]},
15329             Parse::RecDescent::_tracefirst($text),
15330             q{subject_locator},
15331             $tracelevel)
15332             if defined $::RD_TRACE;
15333 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         542  
  8         13  
15334 8         57 $expectation->is(q{iri})->at($text);
15335 8 50   8   82 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::iri($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  8         23  
15336             {
15337            
15338 0 0       0 Parse::RecDescent::_trace(q{<>},
15339             Parse::RecDescent::_tracefirst($text),
15340             q{subject_locator},
15341             $tracelevel)
15342             if defined $::RD_TRACE;
15343 0         0 $expectation->failed();
15344 0         0 last;
15345             }
15346 8 50       43 Parse::RecDescent::_trace(q{>>Matched subrule: [iri]<< (return value: [}
15347             . $_tok . q{]},
15348            
15349             Parse::RecDescent::_tracefirst($text),
15350             q{subject_locator},
15351             $tracelevel)
15352             if defined $::RD_TRACE;
15353 8         19 $item{q{iri}} = $_tok;
15354 8         18 push @item, $_tok;
15355            
15356             }
15357              
15358 8 50       27 Parse::RecDescent::_trace(q{Trying action},
15359             Parse::RecDescent::_tracefirst($text),
15360             q{subject_locator},
15361             $tracelevel)
15362             if defined $::RD_TRACE;
15363            
15364              
15365 8 50       22 $_tok = ($_noactions) ? 0 : do { $return = $item[2]; };
  8         21  
15366 8 50       31 unless (defined $_tok)
15367             {
15368 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
15369             if defined $::RD_TRACE;
15370 0         0 last;
15371             }
15372 8 50       26 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
15373             . $_tok . q{])},
15374             Parse::RecDescent::_tracefirst($text))
15375             if defined $::RD_TRACE;
15376 8         16 push @item, $_tok;
15377            
15378            
15379              
15380              
15381 8 50       26 Parse::RecDescent::_trace(q{>>Matched production: ['=' iri]<<},
15382             Parse::RecDescent::_tracefirst($text),
15383             q{subject_locator},
15384             $tracelevel)
15385             if defined $::RD_TRACE;
15386 8         15 $_matched = 1;
15387 8         14 last;
15388             }
15389              
15390              
15391 311 100 66     1390 unless ( $_matched || defined($score) )
15392             {
15393            
15394              
15395 303         516 $_[1] = $text; # NOT SURE THIS IS NEEDED
15396 303 50       636 Parse::RecDescent::_trace(q{<>},
15397             Parse::RecDescent::_tracefirst($_[1]),
15398             q{subject_locator},
15399             $tracelevel)
15400             if defined $::RD_TRACE;
15401 303         2095 return undef;
15402             }
15403 8 50 33     36 if (!defined($return) && defined($score))
15404             {
15405 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
15406             q{subject_locator},
15407             $tracelevel)
15408             if defined $::RD_TRACE;
15409 0         0 $return = $score_return;
15410             }
15411 8         17 splice @{$thisparser->{errors}}, $err_at;
  8         19  
15412 8 50       29 $return = $item[$#item] unless defined $return;
15413 8 50       24 if (defined $::RD_TRACE)
15414             {
15415 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
15416             $return . q{])}, "",
15417             q{subject_locator},
15418             $tracelevel);
15419 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
15420             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
15421             Parse::RecDescent::_tracefirst($text),
15422             , q{subject_locator},
15423             $tracelevel)
15424             }
15425 8         15 $_[1] = $text;
15426 8         71 return $return;
15427             }
15428              
15429             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
15430             sub Parse::RecDescent::TM::CTM::CParser::restore_directive
15431             {
15432 201     201   297 my $thisparser = $_[0];
15433 1     1   4 use vars q{$tracelevel};
  1         2  
  1         960  
15434 201   50     625 local $tracelevel = ($tracelevel||0)+1;
15435 201         224 $ERRORS = 0;
15436 201         420 my $thisrule = $thisparser->{"rules"}{"restore_directive"};
15437            
15438 201 50       413 Parse::RecDescent::_trace(q{Trying rule: [restore_directive]},
15439             Parse::RecDescent::_tracefirst($_[1]),
15440             q{restore_directive},
15441             $tracelevel)
15442             if defined $::RD_TRACE;
15443              
15444            
15445 201         270 my $err_at = @{$thisparser->{errors}};
  201         379  
15446              
15447 201         250 my $score;
15448             my $score_return;
15449 0         0 my $_tok;
15450 201         260 my $return = undef;
15451 201         286 my $_matched=0;
15452 201         255 my $commit=0;
15453 201         313 my @item = ();
15454 201         328 my %item = ();
15455 201   33     651 my $repeating = defined($_[2]) && $_[2];
15456 201   33     677 my $_noactions = defined($_[3]) && $_[3];
15457 201 50       395 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  201         245  
  201         398  
15458 201 50       1008 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
15459 201         314 my $text;
15460 201         275 my $lastsep="";
15461 201         588 my $expectation = new Parse::RecDescent::Expectation(q{'%restore'});
15462 201         1508 $expectation->at($_[1]);
15463            
15464 201         847 my $thisline;
15465 201         849 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
15466              
15467            
15468              
15469 201   33     1884 while (!$_matched && !$commit)
15470             {
15471            
15472 201 50       593 Parse::RecDescent::_trace(q{Trying production: ['%restore']},
15473             Parse::RecDescent::_tracefirst($_[1]),
15474             q{restore_directive},
15475             $tracelevel)
15476             if defined $::RD_TRACE;
15477 201         446 my $thisprod = $thisrule->{"prods"}[0];
15478 201         333 $text = $_[1];
15479 201         242 my $_savetext;
15480 201         398 @item = (q{restore_directive});
15481 201         416 %item = (__RULE__ => q{restore_directive});
15482 201         252 my $repcount = 0;
15483              
15484              
15485 201 50       392 Parse::RecDescent::_trace(q{Trying terminal: ['%restore']},
15486             Parse::RecDescent::_tracefirst($text),
15487             q{restore_directive},
15488             $tracelevel)
15489             if defined $::RD_TRACE;
15490 201         285 $lastsep = "";
15491 201         575 $expectation->is(q{})->at($text);
15492            
15493              
15494 201 100 66     2061 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\%restore//)
  201 100       2051  
15495             {
15496            
15497 192         555 $expectation->failed();
15498 192 50       783 Parse::RecDescent::_trace(qq{<>},
15499             Parse::RecDescent::_tracefirst($text))
15500             if defined $::RD_TRACE;
15501 192         408 last;
15502             }
15503 9 50       30 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
15504             . $& . q{])},
15505             Parse::RecDescent::_tracefirst($text))
15506             if defined $::RD_TRACE;
15507 9         33 push @item, $item{__STRING1__}=$&;
15508            
15509              
15510 9 50       22 Parse::RecDescent::_trace(q{Trying action},
15511             Parse::RecDescent::_tracefirst($text),
15512             q{restore_directive},
15513             $tracelevel)
15514             if defined $::RD_TRACE;
15515            
15516              
15517 9 50       20 $_tok = ($_noactions) ? 0 : do {
15518 9         42 %prefixes = %prefixes_backup;
15519 9         32 %wildcards = %wildcards_backup;
15520             };
15521 9 50       26 unless (defined $_tok)
15522             {
15523 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
15524             if defined $::RD_TRACE;
15525 0         0 last;
15526             }
15527 9 50       22 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
15528             . $_tok . q{])},
15529             Parse::RecDescent::_tracefirst($text))
15530             if defined $::RD_TRACE;
15531 9         13 push @item, $_tok;
15532            
15533            
15534              
15535              
15536 9 50       29 Parse::RecDescent::_trace(q{>>Matched production: ['%restore']<<},
15537             Parse::RecDescent::_tracefirst($text),
15538             q{restore_directive},
15539             $tracelevel)
15540             if defined $::RD_TRACE;
15541 9         11 $_matched = 1;
15542 9         18 last;
15543             }
15544              
15545              
15546 201 100 66     975 unless ( $_matched || defined($score) )
15547             {
15548            
15549              
15550 192         354 $_[1] = $text; # NOT SURE THIS IS NEEDED
15551 192 50       359 Parse::RecDescent::_trace(q{<>},
15552             Parse::RecDescent::_tracefirst($_[1]),
15553             q{restore_directive},
15554             $tracelevel)
15555             if defined $::RD_TRACE;
15556 192         1498 return undef;
15557             }
15558 9 50 33     52 if (!defined($return) && defined($score))
15559             {
15560 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
15561             q{restore_directive},
15562             $tracelevel)
15563             if defined $::RD_TRACE;
15564 0         0 $return = $score_return;
15565             }
15566 9         11 splice @{$thisparser->{errors}}, $err_at;
  9         22  
15567 9 50       28 $return = $item[$#item] unless defined $return;
15568 9 50       25 if (defined $::RD_TRACE)
15569             {
15570 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
15571             $return . q{])}, "",
15572             q{restore_directive},
15573             $tracelevel);
15574 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
15575             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
15576             Parse::RecDescent::_tracefirst($text),
15577             , q{restore_directive},
15578             $tracelevel)
15579             }
15580 9         16 $_[1] = $text;
15581 9         81 return $return;
15582             }
15583              
15584             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
15585             sub Parse::RecDescent::TM::CTM::CParser::_alternation_1_of_production_1_of_rule_topicmap
15586             {
15587 151     151   2413 my $thisparser = $_[0];
15588 1     1   6 use vars q{$tracelevel};
  1         2  
  1         423  
15589 151   50     463 local $tracelevel = ($tracelevel||0)+1;
15590 151         250 $ERRORS = 0;
15591 151         376 my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_topicmap"};
15592            
15593 151 50       326 Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_topicmap]},
15594             Parse::RecDescent::_tracefirst($_[1]),
15595             q{_alternation_1_of_production_1_of_rule_topicmap},
15596             $tracelevel)
15597             if defined $::RD_TRACE;
15598              
15599            
15600 151         162 my $err_at = @{$thisparser->{errors}};
  151         374  
15601              
15602 151         204 my $score;
15603             my $score_return;
15604 0         0 my $_tok;
15605 151         260 my $return = undef;
15606 151         187 my $_matched=0;
15607 151         175 my $commit=0;
15608 151         226 my @item = ();
15609 151         240 my %item = ();
15610 151   33     524 my $repeating = defined($_[2]) && $_[2];
15611 151   33     542 my $_noactions = defined($_[3]) && $_[3];
15612 151 50       334 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  151         204  
  151         417  
15613 151 50       796 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
15614 151         234 my $text;
15615 151         238 my $lastsep="";
15616 151         486 my $expectation = new Parse::RecDescent::Expectation(q{directive, or template, or template_invocation, or topic, or association});
15617 151         1255 $expectation->at($_[1]);
15618            
15619 151         616 my $thisline;
15620 151         674 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
15621              
15622            
15623              
15624 151   33     1577 while (!$_matched && !$commit)
15625             {
15626            
15627 151 50       313 Parse::RecDescent::_trace(q{Trying production: [directive]},
15628             Parse::RecDescent::_tracefirst($_[1]),
15629             q{_alternation_1_of_production_1_of_rule_topicmap},
15630             $tracelevel)
15631             if defined $::RD_TRACE;
15632 151         375 my $thisprod = $thisrule->{"prods"}[0];
15633 151         236 $text = $_[1];
15634 151         220 my $_savetext;
15635 151         269 @item = (q{_alternation_1_of_production_1_of_rule_topicmap});
15636 151         318 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_topicmap});
15637 151         220 my $repcount = 0;
15638              
15639              
15640 151 50       379 Parse::RecDescent::_trace(q{Trying subrule: [directive]},
15641             Parse::RecDescent::_tracefirst($text),
15642             q{_alternation_1_of_production_1_of_rule_topicmap},
15643             $tracelevel)
15644             if defined $::RD_TRACE;
15645 1     1   16 if (1) { no strict qw{refs};
  1         2  
  1         339  
  151         261  
15646 151         522 $expectation->is(q{})->at($text);
15647 151 100   151   1592 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::directive($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  151         383  
15648             {
15649            
15650 132 50       322 Parse::RecDescent::_trace(q{<>},
15651             Parse::RecDescent::_tracefirst($text),
15652             q{_alternation_1_of_production_1_of_rule_topicmap},
15653             $tracelevel)
15654             if defined $::RD_TRACE;
15655 132         376 $expectation->failed();
15656 132         482 last;
15657             }
15658 19 50       79 Parse::RecDescent::_trace(q{>>Matched subrule: [directive]<< (return value: [}
15659             . $_tok . q{]},
15660            
15661             Parse::RecDescent::_tracefirst($text),
15662             q{_alternation_1_of_production_1_of_rule_topicmap},
15663             $tracelevel)
15664             if defined $::RD_TRACE;
15665 19         48 $item{q{directive}} = $_tok;
15666 19         34 push @item, $_tok;
15667            
15668             }
15669              
15670              
15671 19 50       46 Parse::RecDescent::_trace(q{>>Matched production: [directive]<<},
15672             Parse::RecDescent::_tracefirst($text),
15673             q{_alternation_1_of_production_1_of_rule_topicmap},
15674             $tracelevel)
15675             if defined $::RD_TRACE;
15676 19         26 $_matched = 1;
15677 19         29 last;
15678             }
15679              
15680              
15681 151   66     783 while (!$_matched && !$commit)
15682             {
15683            
15684 132 50       337 Parse::RecDescent::_trace(q{Trying production: [template]},
15685             Parse::RecDescent::_tracefirst($_[1]),
15686             q{_alternation_1_of_production_1_of_rule_topicmap},
15687             $tracelevel)
15688             if defined $::RD_TRACE;
15689 132         331 my $thisprod = $thisrule->{"prods"}[1];
15690 132         222 $text = $_[1];
15691 132         157 my $_savetext;
15692 132         300 @item = (q{_alternation_1_of_production_1_of_rule_topicmap});
15693 132         315 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_topicmap});
15694 132         264 my $repcount = 0;
15695              
15696              
15697 132 50       254 Parse::RecDescent::_trace(q{Trying subrule: [template]},
15698             Parse::RecDescent::_tracefirst($text),
15699             q{_alternation_1_of_production_1_of_rule_topicmap},
15700             $tracelevel)
15701             if defined $::RD_TRACE;
15702 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         406  
  132         204  
15703 132         379 $expectation->is(q{})->at($text);
15704 132 100   132   1438 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::template($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  132         359  
15705             {
15706            
15707 119 50       266 Parse::RecDescent::_trace(q{<>},
15708             Parse::RecDescent::_tracefirst($text),
15709             q{_alternation_1_of_production_1_of_rule_topicmap},
15710             $tracelevel)
15711             if defined $::RD_TRACE;
15712 119         416 $expectation->failed();
15713 119         440 last;
15714             }
15715 12 50       54 Parse::RecDescent::_trace(q{>>Matched subrule: [template]<< (return value: [}
15716             . $_tok . q{]},
15717            
15718             Parse::RecDescent::_tracefirst($text),
15719             q{_alternation_1_of_production_1_of_rule_topicmap},
15720             $tracelevel)
15721             if defined $::RD_TRACE;
15722 12         26 $item{q{template}} = $_tok;
15723 12         31 push @item, $_tok;
15724            
15725             }
15726              
15727              
15728 12 50       36 Parse::RecDescent::_trace(q{>>Matched production: [template]<<},
15729             Parse::RecDescent::_tracefirst($text),
15730             q{_alternation_1_of_production_1_of_rule_topicmap},
15731             $tracelevel)
15732             if defined $::RD_TRACE;
15733 12         19 $_matched = 1;
15734 12         21 last;
15735             }
15736              
15737              
15738 150   66     780 while (!$_matched && !$commit)
15739             {
15740            
15741 119 50       335 Parse::RecDescent::_trace(q{Trying production: [template_invocation]},
15742             Parse::RecDescent::_tracefirst($_[1]),
15743             q{_alternation_1_of_production_1_of_rule_topicmap},
15744             $tracelevel)
15745             if defined $::RD_TRACE;
15746 119         305 my $thisprod = $thisrule->{"prods"}[2];
15747 119         203 $text = $_[1];
15748 119         184 my $_savetext;
15749 119         340 @item = (q{_alternation_1_of_production_1_of_rule_topicmap});
15750 119         306 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_topicmap});
15751 119         157 my $repcount = 0;
15752              
15753              
15754 119 50       285 Parse::RecDescent::_trace(q{Trying subrule: [template_invocation]},
15755             Parse::RecDescent::_tracefirst($text),
15756             q{_alternation_1_of_production_1_of_rule_topicmap},
15757             $tracelevel)
15758             if defined $::RD_TRACE;
15759 1     1   6 if (1) { no strict qw{refs};
  1         2  
  1         368  
  119         165  
15760 119         430 $expectation->is(q{})->at($text);
15761 119 100   119   1375 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::template_invocation($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  119         292  
15762             {
15763            
15764 111 50       247 Parse::RecDescent::_trace(q{<>},
15765             Parse::RecDescent::_tracefirst($text),
15766             q{_alternation_1_of_production_1_of_rule_topicmap},
15767             $tracelevel)
15768             if defined $::RD_TRACE;
15769 111         404 $expectation->failed();
15770 111         453 last;
15771             }
15772 6 50       27 Parse::RecDescent::_trace(q{>>Matched subrule: [template_invocation]<< (return value: [}
15773             . $_tok . q{]},
15774            
15775             Parse::RecDescent::_tracefirst($text),
15776             q{_alternation_1_of_production_1_of_rule_topicmap},
15777             $tracelevel)
15778             if defined $::RD_TRACE;
15779 6         15 $item{q{template_invocation}} = $_tok;
15780 6         11 push @item, $_tok;
15781            
15782             }
15783              
15784              
15785 6 50       15 Parse::RecDescent::_trace(q{>>Matched production: [template_invocation]<<},
15786             Parse::RecDescent::_tracefirst($text),
15787             q{_alternation_1_of_production_1_of_rule_topicmap},
15788             $tracelevel)
15789             if defined $::RD_TRACE;
15790 6         8 $_matched = 1;
15791 6         11 last;
15792             }
15793              
15794              
15795 148   66     690 while (!$_matched && !$commit)
15796             {
15797            
15798 111 50       308 Parse::RecDescent::_trace(q{Trying production: [topic]},
15799             Parse::RecDescent::_tracefirst($_[1]),
15800             q{_alternation_1_of_production_1_of_rule_topicmap},
15801             $tracelevel)
15802             if defined $::RD_TRACE;
15803 111         290 my $thisprod = $thisrule->{"prods"}[3];
15804 111         240 $text = $_[1];
15805 111         165 my $_savetext;
15806 111         260 @item = (q{_alternation_1_of_production_1_of_rule_topicmap});
15807 111         305 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_topicmap});
15808 111         169 my $repcount = 0;
15809              
15810              
15811 111 50       239 Parse::RecDescent::_trace(q{Trying subrule: [topic]},
15812             Parse::RecDescent::_tracefirst($text),
15813             q{_alternation_1_of_production_1_of_rule_topicmap},
15814             $tracelevel)
15815             if defined $::RD_TRACE;
15816 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         334  
  111         151  
15817 111         422 $expectation->is(q{})->at($text);
15818 111 100   111   1161 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::topic($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  111         289  
15819             {
15820            
15821 54 50       148 Parse::RecDescent::_trace(q{<>},
15822             Parse::RecDescent::_tracefirst($text),
15823             q{_alternation_1_of_production_1_of_rule_topicmap},
15824             $tracelevel)
15825             if defined $::RD_TRACE;
15826 54         179 $expectation->failed();
15827 54         206 last;
15828             }
15829 57 50       324 Parse::RecDescent::_trace(q{>>Matched subrule: [topic]<< (return value: [}
15830             . $_tok . q{]},
15831            
15832             Parse::RecDescent::_tracefirst($text),
15833             q{_alternation_1_of_production_1_of_rule_topicmap},
15834             $tracelevel)
15835             if defined $::RD_TRACE;
15836 57         171 $item{q{topic}} = $_tok;
15837 57         116 push @item, $_tok;
15838            
15839             }
15840              
15841              
15842 57 50       130 Parse::RecDescent::_trace(q{>>Matched production: [topic]<<},
15843             Parse::RecDescent::_tracefirst($text),
15844             q{_alternation_1_of_production_1_of_rule_topicmap},
15845             $tracelevel)
15846             if defined $::RD_TRACE;
15847 57         79 $_matched = 1;
15848 57         116 last;
15849             }
15850              
15851              
15852 148   66     694 while (!$_matched && !$commit)
15853             {
15854            
15855 54 50       139 Parse::RecDescent::_trace(q{Trying production: [association]},
15856             Parse::RecDescent::_tracefirst($_[1]),
15857             q{_alternation_1_of_production_1_of_rule_topicmap},
15858             $tracelevel)
15859             if defined $::RD_TRACE;
15860 54         136 my $thisprod = $thisrule->{"prods"}[4];
15861 54         129 $text = $_[1];
15862 54         114 my $_savetext;
15863 54         147 @item = (q{_alternation_1_of_production_1_of_rule_topicmap});
15864 54         170 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_topicmap});
15865 54         86 my $repcount = 0;
15866              
15867              
15868 54 50       196 Parse::RecDescent::_trace(q{Trying subrule: [association]},
15869             Parse::RecDescent::_tracefirst($text),
15870             q{_alternation_1_of_production_1_of_rule_topicmap},
15871             $tracelevel)
15872             if defined $::RD_TRACE;
15873 1     1   6 if (1) { no strict qw{refs};
  1         1  
  1         537  
  54         77  
15874 54         205 $expectation->is(q{})->at($text);
15875 54 100   54   695 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::association($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  54         170  
15876             {
15877            
15878 47 50       144 Parse::RecDescent::_trace(q{<>},
15879             Parse::RecDescent::_tracefirst($text),
15880             q{_alternation_1_of_production_1_of_rule_topicmap},
15881             $tracelevel)
15882             if defined $::RD_TRACE;
15883 47         126 $expectation->failed();
15884 47         175 last;
15885             }
15886 7 50       46 Parse::RecDescent::_trace(q{>>Matched subrule: [association]<< (return value: [}
15887             . $_tok . q{]},
15888            
15889             Parse::RecDescent::_tracefirst($text),
15890             q{_alternation_1_of_production_1_of_rule_topicmap},
15891             $tracelevel)
15892             if defined $::RD_TRACE;
15893 7         20 $item{q{association}} = $_tok;
15894 7         12 push @item, $_tok;
15895            
15896             }
15897              
15898              
15899 7 50       21 Parse::RecDescent::_trace(q{>>Matched production: [association]<<},
15900             Parse::RecDescent::_tracefirst($text),
15901             q{_alternation_1_of_production_1_of_rule_topicmap},
15902             $tracelevel)
15903             if defined $::RD_TRACE;
15904 7         9 $_matched = 1;
15905 7         17 last;
15906             }
15907              
15908              
15909 148 100 66     640 unless ( $_matched || defined($score) )
15910             {
15911            
15912              
15913 47         82 $_[1] = $text; # NOT SURE THIS IS NEEDED
15914 47 50       150 Parse::RecDescent::_trace(q{<>},
15915             Parse::RecDescent::_tracefirst($_[1]),
15916             q{_alternation_1_of_production_1_of_rule_topicmap},
15917             $tracelevel)
15918             if defined $::RD_TRACE;
15919 47         439 return undef;
15920             }
15921 101 50 33     478 if (!defined($return) && defined($score))
15922             {
15923 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
15924             q{_alternation_1_of_production_1_of_rule_topicmap},
15925             $tracelevel)
15926             if defined $::RD_TRACE;
15927 0         0 $return = $score_return;
15928             }
15929 101         146 splice @{$thisparser->{errors}}, $err_at;
  101         221  
15930 101 50       255 $return = $item[$#item] unless defined $return;
15931 101 50       237 if (defined $::RD_TRACE)
15932             {
15933 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
15934             $return . q{])}, "",
15935             q{_alternation_1_of_production_1_of_rule_topicmap},
15936             $tracelevel);
15937 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
15938             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
15939             Parse::RecDescent::_tracefirst($text),
15940             , q{_alternation_1_of_production_1_of_rule_topicmap},
15941             $tracelevel)
15942             }
15943 101         189 $_[1] = $text;
15944 101         1134 return $return;
15945             }
15946              
15947             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
15948             sub Parse::RecDescent::TM::CTM::CParser::basename
15949             {
15950 0     0   0 my $thisparser = $_[0];
15951 1     1   6 use vars q{$tracelevel};
  1         1  
  1         401  
15952 0   0     0 local $tracelevel = ($tracelevel||0)+1;
15953 0         0 $ERRORS = 0;
15954 0         0 my $thisrule = $thisparser->{"rules"}{"basename"};
15955            
15956 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [basename]},
15957             Parse::RecDescent::_tracefirst($_[1]),
15958             q{basename},
15959             $tracelevel)
15960             if defined $::RD_TRACE;
15961              
15962            
15963 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
15964              
15965 0         0 my $score;
15966             my $score_return;
15967 0         0 my $_tok;
15968 0         0 my $return = undef;
15969 0         0 my $_matched=0;
15970 0         0 my $commit=0;
15971 0         0 my @item = ();
15972 0         0 my %item = ();
15973 0   0     0 my $repeating = defined($_[2]) && $_[2];
15974 0   0     0 my $_noactions = defined($_[3]) && $_[3];
15975 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
15976 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
15977 0         0 my $text;
15978 0         0 my $lastsep="";
15979 0         0 my $expectation = new Parse::RecDescent::Expectation(q{string});
15980 0         0 $expectation->at($_[1]);
15981            
15982 0         0 my $thisline;
15983 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
15984              
15985            
15986              
15987 0   0     0 while (!$_matched && !$commit)
15988             {
15989            
15990 0 0       0 Parse::RecDescent::_trace(q{Trying production: [string]},
15991             Parse::RecDescent::_tracefirst($_[1]),
15992             q{basename},
15993             $tracelevel)
15994             if defined $::RD_TRACE;
15995 0         0 my $thisprod = $thisrule->{"prods"}[0];
15996 0         0 $text = $_[1];
15997 0         0 my $_savetext;
15998 0         0 @item = (q{basename});
15999 0         0 %item = (__RULE__ => q{basename});
16000 0         0 my $repcount = 0;
16001              
16002              
16003 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [string]},
16004             Parse::RecDescent::_tracefirst($text),
16005             q{basename},
16006             $tracelevel)
16007             if defined $::RD_TRACE;
16008 1     1   7 if (1) { no strict qw{refs};
  1         2  
  1         566  
  0         0  
16009 0         0 $expectation->is(q{})->at($text);
16010 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::string($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  0         0  
16011             {
16012            
16013 0 0       0 Parse::RecDescent::_trace(q{<>},
16014             Parse::RecDescent::_tracefirst($text),
16015             q{basename},
16016             $tracelevel)
16017             if defined $::RD_TRACE;
16018 0         0 $expectation->failed();
16019 0         0 last;
16020             }
16021 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [string]<< (return value: [}
16022             . $_tok . q{]},
16023            
16024             Parse::RecDescent::_tracefirst($text),
16025             q{basename},
16026             $tracelevel)
16027             if defined $::RD_TRACE;
16028 0         0 $item{q{string}} = $_tok;
16029 0         0 push @item, $_tok;
16030            
16031             }
16032              
16033 0 0       0 Parse::RecDescent::_trace(q{Trying action},
16034             Parse::RecDescent::_tracefirst($text),
16035             q{basename},
16036             $tracelevel)
16037             if defined $::RD_TRACE;
16038            
16039              
16040 0 0       0 $_tok = ($_noactions) ? 0 : do { $return = new TM::Literal ($item[1], 'xsd:string'); };
  0         0  
16041 0 0       0 unless (defined $_tok)
16042             {
16043 0 0       0 Parse::RecDescent::_trace(q{<> (return value: [undef])})
16044             if defined $::RD_TRACE;
16045 0         0 last;
16046             }
16047 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
16048             . $_tok . q{])},
16049             Parse::RecDescent::_tracefirst($text))
16050             if defined $::RD_TRACE;
16051 0         0 push @item, $_tok;
16052            
16053            
16054              
16055              
16056 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [string]<<},
16057             Parse::RecDescent::_tracefirst($text),
16058             q{basename},
16059             $tracelevel)
16060             if defined $::RD_TRACE;
16061 0         0 $_matched = 1;
16062 0         0 last;
16063             }
16064              
16065              
16066 0 0 0     0 unless ( $_matched || defined($score) )
16067             {
16068            
16069              
16070 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
16071 0 0       0 Parse::RecDescent::_trace(q{<>},
16072             Parse::RecDescent::_tracefirst($_[1]),
16073             q{basename},
16074             $tracelevel)
16075             if defined $::RD_TRACE;
16076 0         0 return undef;
16077             }
16078 0 0 0     0 if (!defined($return) && defined($score))
16079             {
16080 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
16081             q{basename},
16082             $tracelevel)
16083             if defined $::RD_TRACE;
16084 0         0 $return = $score_return;
16085             }
16086 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
16087 0 0       0 $return = $item[$#item] unless defined $return;
16088 0 0       0 if (defined $::RD_TRACE)
16089             {
16090 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
16091             $return . q{])}, "",
16092             q{basename},
16093             $tracelevel);
16094 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
16095             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
16096             Parse::RecDescent::_tracefirst($text),
16097             , q{basename},
16098             $tracelevel)
16099             }
16100 0         0 $_[1] = $text;
16101 0         0 return $return;
16102             }
16103              
16104             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
16105             sub Parse::RecDescent::TM::CTM::CParser::comment
16106             {
16107 0     0   0 my $thisparser = $_[0];
16108 1     1   5 use vars q{$tracelevel};
  1         2  
  1         1157  
16109 0   0     0 local $tracelevel = ($tracelevel||0)+1;
16110 0         0 $ERRORS = 0;
16111 0         0 my $thisrule = $thisparser->{"rules"}{"comment"};
16112            
16113 0 0       0 Parse::RecDescent::_trace(q{Trying rule: [comment]},
16114             Parse::RecDescent::_tracefirst($_[1]),
16115             q{comment},
16116             $tracelevel)
16117             if defined $::RD_TRACE;
16118              
16119            
16120 0         0 my $err_at = @{$thisparser->{errors}};
  0         0  
16121              
16122 0         0 my $score;
16123             my $score_return;
16124 0         0 my $_tok;
16125 0         0 my $return = undef;
16126 0         0 my $_matched=0;
16127 0         0 my $commit=0;
16128 0         0 my @item = ();
16129 0         0 my %item = ();
16130 0   0     0 my $repeating = defined($_[2]) && $_[2];
16131 0   0     0 my $_noactions = defined($_[3]) && $_[3];
16132 0 0       0 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  0         0  
  0         0  
16133 0 0       0 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
16134 0         0 my $text;
16135 0         0 my $lastsep="";
16136 0         0 my $expectation = new Parse::RecDescent::Expectation(q{'/*'});
16137 0         0 $expectation->at($_[1]);
16138            
16139 0         0 my $thisline;
16140 0         0 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
16141              
16142            
16143              
16144 0   0     0 while (!$_matched && !$commit)
16145             {
16146            
16147 0 0       0 Parse::RecDescent::_trace(q{Trying production: ['/*' /.+?/s '*/']},
16148             Parse::RecDescent::_tracefirst($_[1]),
16149             q{comment},
16150             $tracelevel)
16151             if defined $::RD_TRACE;
16152 0         0 my $thisprod = $thisrule->{"prods"}[0];
16153 0         0 $text = $_[1];
16154 0         0 my $_savetext;
16155 0         0 @item = (q{comment});
16156 0         0 %item = (__RULE__ => q{comment});
16157 0         0 my $repcount = 0;
16158              
16159              
16160 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['/*']},
16161             Parse::RecDescent::_tracefirst($text),
16162             q{comment},
16163             $tracelevel)
16164             if defined $::RD_TRACE;
16165 0         0 $lastsep = "";
16166 0         0 $expectation->is(q{})->at($text);
16167            
16168              
16169 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\/\*//)
  0 0       0  
16170             {
16171            
16172 0         0 $expectation->failed();
16173 0 0       0 Parse::RecDescent::_trace(qq{<>},
16174             Parse::RecDescent::_tracefirst($text))
16175             if defined $::RD_TRACE;
16176 0         0 last;
16177             }
16178 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
16179             . $& . q{])},
16180             Parse::RecDescent::_tracefirst($text))
16181             if defined $::RD_TRACE;
16182 0         0 push @item, $item{__STRING1__}=$&;
16183            
16184              
16185 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/.+?/s]}, Parse::RecDescent::_tracefirst($text),
16186             q{comment},
16187             $tracelevel)
16188             if defined $::RD_TRACE;
16189 0         0 $lastsep = "";
16190 0         0 $expectation->is(q{/.+?/s})->at($text);
16191            
16192              
16193 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A(?:.+?)//s)
  0 0       0  
16194             {
16195            
16196 0         0 $expectation->failed();
16197 0 0       0 Parse::RecDescent::_trace(q{<>},
16198             Parse::RecDescent::_tracefirst($text))
16199             if defined $::RD_TRACE;
16200              
16201 0         0 last;
16202             }
16203 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
16204             . $& . q{])},
16205             Parse::RecDescent::_tracefirst($text))
16206             if defined $::RD_TRACE;
16207 0         0 push @item, $item{__PATTERN1__}=$&;
16208            
16209              
16210 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['*/']},
16211             Parse::RecDescent::_tracefirst($text),
16212             q{comment},
16213             $tracelevel)
16214             if defined $::RD_TRACE;
16215 0         0 $lastsep = "";
16216 0         0 $expectation->is(q{'*/'})->at($text);
16217            
16218              
16219 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ s/\A\*\///)
  0 0       0  
16220             {
16221            
16222 0         0 $expectation->failed();
16223 0 0       0 Parse::RecDescent::_trace(qq{<>},
16224             Parse::RecDescent::_tracefirst($text))
16225             if defined $::RD_TRACE;
16226 0         0 last;
16227             }
16228 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
16229             . $& . q{])},
16230             Parse::RecDescent::_tracefirst($text))
16231             if defined $::RD_TRACE;
16232 0         0 push @item, $item{__STRING2__}=$&;
16233            
16234              
16235              
16236 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: ['/*' /.+?/s '*/']<<},
16237             Parse::RecDescent::_tracefirst($text),
16238             q{comment},
16239             $tracelevel)
16240             if defined $::RD_TRACE;
16241 0         0 $_matched = 1;
16242 0         0 last;
16243             }
16244              
16245              
16246 0 0 0     0 unless ( $_matched || defined($score) )
16247             {
16248            
16249              
16250 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
16251 0 0       0 Parse::RecDescent::_trace(q{<>},
16252             Parse::RecDescent::_tracefirst($_[1]),
16253             q{comment},
16254             $tracelevel)
16255             if defined $::RD_TRACE;
16256 0         0 return undef;
16257             }
16258 0 0 0     0 if (!defined($return) && defined($score))
16259             {
16260 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
16261             q{comment},
16262             $tracelevel)
16263             if defined $::RD_TRACE;
16264 0         0 $return = $score_return;
16265             }
16266 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
16267 0 0       0 $return = $item[$#item] unless defined $return;
16268 0 0       0 if (defined $::RD_TRACE)
16269             {
16270 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
16271             $return . q{])}, "",
16272             q{comment},
16273             $tracelevel);
16274 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
16275             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
16276             Parse::RecDescent::_tracefirst($text),
16277             , q{comment},
16278             $tracelevel)
16279             }
16280 0         0 $_[1] = $text;
16281 0         0 return $return;
16282             }
16283              
16284             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args)
16285             sub Parse::RecDescent::TM::CTM::CParser::directive
16286             {
16287 209     209   1018 my $thisparser = $_[0];
16288 1     1   6 use vars q{$tracelevel};
  1         2  
  1         395  
16289 209   50     669 local $tracelevel = ($tracelevel||0)+1;
16290 209         339 $ERRORS = 0;
16291 209         481 my $thisrule = $thisparser->{"rules"}{"directive"};
16292            
16293 209 50       441 Parse::RecDescent::_trace(q{Trying rule: [directive]},
16294             Parse::RecDescent::_tracefirst($_[1]),
16295             q{directive},
16296             $tracelevel)
16297             if defined $::RD_TRACE;
16298              
16299            
16300 209         235 my $err_at = @{$thisparser->{errors}};
  209         413  
16301              
16302 209         268 my $score;
16303             my $score_return;
16304 0         0 my $_tok;
16305 209         353 my $return = undef;
16306 209         319 my $_matched=0;
16307 209         235 my $commit=0;
16308 209         297 my @item = ();
16309 209         338 my %item = ();
16310 209   33     619 my $repeating = defined($_[2]) && $_[2];
16311 209   33     558 my $_noactions = defined($_[3]) && $_[3];
16312 209 50       494 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  209         235  
  209         403  
16313 209 50       1176 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
16314 209         261 my $text;
16315 209         289 my $lastsep="";
16316 209         682 my $expectation = new Parse::RecDescent::Expectation(q{prefix_directive, or restore_directive, or backup_directive, or include_directive});
16317 209         1653 $expectation->at($_[1]);
16318            
16319 209         4920 my $thisline;
16320 209         815 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
16321              
16322            
16323              
16324 209   33     1957 while (!$_matched && !$commit)
16325             {
16326            
16327 209 50       473 Parse::RecDescent::_trace(q{Trying production: [prefix_directive]},
16328             Parse::RecDescent::_tracefirst($_[1]),
16329             q{directive},
16330             $tracelevel)
16331             if defined $::RD_TRACE;
16332 209         445 my $thisprod = $thisrule->{"prods"}[0];
16333 209         302 $text = $_[1];
16334 209         227 my $_savetext;
16335 209         385 @item = (q{directive});
16336 209         480 %item = (__RULE__ => q{directive});
16337 209         274 my $repcount = 0;
16338              
16339              
16340 209 50       431 Parse::RecDescent::_trace(q{Trying subrule: [prefix_directive]},
16341             Parse::RecDescent::_tracefirst($text),
16342             q{directive},
16343             $tracelevel)
16344             if defined $::RD_TRACE;
16345 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         356  
  209         245  
16346 209         590 $expectation->is(q{})->at($text);
16347 209 100   209   2098 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::prefix_directive($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  209         636  
16348             {
16349            
16350 201 50       407 Parse::RecDescent::_trace(q{<>},
16351             Parse::RecDescent::_tracefirst($text),
16352             q{directive},
16353             $tracelevel)
16354             if defined $::RD_TRACE;
16355 201         576 $expectation->failed();
16356 201         755 last;
16357             }
16358 8 50       37 Parse::RecDescent::_trace(q{>>Matched subrule: [prefix_directive]<< (return value: [}
16359             . $_tok . q{]},
16360            
16361             Parse::RecDescent::_tracefirst($text),
16362             q{directive},
16363             $tracelevel)
16364             if defined $::RD_TRACE;
16365 8         19 $item{q{prefix_directive}} = $_tok;
16366 8         13 push @item, $_tok;
16367            
16368             }
16369              
16370              
16371 8 50       22 Parse::RecDescent::_trace(q{>>Matched production: [prefix_directive]<<},
16372             Parse::RecDescent::_tracefirst($text),
16373             q{directive},
16374             $tracelevel)
16375             if defined $::RD_TRACE;
16376 8         11 $_matched = 1;
16377 8         13 last;
16378             }
16379              
16380              
16381 209   66     1119 while (!$_matched && !$commit)
16382             {
16383            
16384 201 50       473 Parse::RecDescent::_trace(q{Trying production: [restore_directive]},
16385             Parse::RecDescent::_tracefirst($_[1]),
16386             q{directive},
16387             $tracelevel)
16388             if defined $::RD_TRACE;
16389 201         429 my $thisprod = $thisrule->{"prods"}[1];
16390 201         277 $text = $_[1];
16391 201         229 my $_savetext;
16392 201         468 @item = (q{directive});
16393 201         442 %item = (__RULE__ => q{directive});
16394 201         294 my $repcount = 0;
16395              
16396              
16397 201 50       466 Parse::RecDescent::_trace(q{Trying subrule: [restore_directive]},
16398             Parse::RecDescent::_tracefirst($text),
16399             q{directive},
16400             $tracelevel)
16401             if defined $::RD_TRACE;
16402 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         331  
  201         229  
16403 201         538 $expectation->is(q{})->at($text);
16404 201 100   201   2032 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::restore_directive($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  201         556  
16405             {
16406            
16407 192 50       403 Parse::RecDescent::_trace(q{<>},
16408             Parse::RecDescent::_tracefirst($text),
16409             q{directive},
16410             $tracelevel)
16411             if defined $::RD_TRACE;
16412 192         505 $expectation->failed();
16413 192         809 last;
16414             }
16415 9 50       38 Parse::RecDescent::_trace(q{>>Matched subrule: [restore_directive]<< (return value: [}
16416             . $_tok . q{]},
16417            
16418             Parse::RecDescent::_tracefirst($text),
16419             q{directive},
16420             $tracelevel)
16421             if defined $::RD_TRACE;
16422 9         19 $item{q{restore_directive}} = $_tok;
16423 9         14 push @item, $_tok;
16424            
16425             }
16426              
16427              
16428 9 50       23 Parse::RecDescent::_trace(q{>>Matched production: [restore_directive]<<},
16429             Parse::RecDescent::_tracefirst($text),
16430             q{directive},
16431             $tracelevel)
16432             if defined $::RD_TRACE;
16433 9         12 $_matched = 1;
16434 9         15 last;
16435             }
16436              
16437              
16438 209   66     1025 while (!$_matched && !$commit)
16439             {
16440            
16441 192 50       466 Parse::RecDescent::_trace(q{Trying production: [backup_directive]},
16442             Parse::RecDescent::_tracefirst($_[1]),
16443             q{directive},
16444             $tracelevel)
16445             if defined $::RD_TRACE;
16446 192         420 my $thisprod = $thisrule->{"prods"}[2];
16447 192         303 $text = $_[1];
16448 192         270 my $_savetext;
16449 192         412 @item = (q{directive});
16450 192         497 %item = (__RULE__ => q{directive});
16451 192         348 my $repcount = 0;
16452              
16453              
16454 192 50       418 Parse::RecDescent::_trace(q{Trying subrule: [backup_directive]},
16455             Parse::RecDescent::_tracefirst($text),
16456             q{directive},
16457             $tracelevel)
16458             if defined $::RD_TRACE;
16459 1     1   5 if (1) { no strict qw{refs};
  1         2  
  1         325  
  192         202  
16460 192         532 $expectation->is(q{})->at($text);
16461 192 100   192   2029 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::backup_directive($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  192         470  
16462             {
16463            
16464 183 50       414 Parse::RecDescent::_trace(q{<>},
16465             Parse::RecDescent::_tracefirst($text),
16466             q{directive},
16467             $tracelevel)
16468             if defined $::RD_TRACE;
16469 183         571 $expectation->failed();
16470 183         687 last;
16471             }
16472 9 50       39 Parse::RecDescent::_trace(q{>>Matched subrule: [backup_directive]<< (return value: [}
16473             . $_tok . q{]},
16474            
16475             Parse::RecDescent::_tracefirst($text),
16476             q{directive},
16477             $tracelevel)
16478             if defined $::RD_TRACE;
16479 9         18 $item{q{backup_directive}} = $_tok;
16480 9         15 push @item, $_tok;
16481            
16482             }
16483              
16484              
16485 9 50       24 Parse::RecDescent::_trace(q{>>Matched production: [backup_directive]<<},
16486             Parse::RecDescent::_tracefirst($text),
16487             q{directive},
16488             $tracelevel)
16489             if defined $::RD_TRACE;
16490 9         15 $_matched = 1;
16491 9         15 last;
16492             }
16493              
16494              
16495 209   66     1297 while (!$_matched && !$commit)
16496             {
16497            
16498 183 50       384 Parse::RecDescent::_trace(q{Trying production: [include_directive]},
16499             Parse::RecDescent::_tracefirst($_[1]),
16500             q{directive},
16501             $tracelevel)
16502             if defined $::RD_TRACE;
16503 183         371 my $thisprod = $thisrule->{"prods"}[3];
16504 183         418 $text = $_[1];
16505 183         234 my $_savetext;
16506 183         420 @item = (q{directive});
16507 183         380 %item = (__RULE__ => q{directive});
16508 183         265 my $repcount = 0;
16509              
16510              
16511 183 50       368 Parse::RecDescent::_trace(q{Trying subrule: [include_directive]},
16512             Parse::RecDescent::_tracefirst($text),
16513             q{directive},
16514             $tracelevel)
16515             if defined $::RD_TRACE;
16516 1     1   6 if (1) { no strict qw{refs};
  1         1  
  1         13531  
  183         234  
16517 183         529 $expectation->is(q{})->at($text);
16518 183 100   183   1926 unless (defined ($_tok = Parse::RecDescent::TM::CTM::CParser::include_directive($thisparser,$text,$repeating,$_noactions,sub { \@arg })))
  183         473  
16519             {
16520            
16521 182 50       460 Parse::RecDescent::_trace(q{<>},
16522             Parse::RecDescent::_tracefirst($text),
16523             q{directive},
16524             $tracelevel)
16525             if defined $::RD_TRACE;
16526 182         501 $expectation->failed();
16527 182         654 last;
16528             }
16529 1 50       5 Parse::RecDescent::_trace(q{>>Matched subrule: [include_directive]<< (return value: [}
16530             . $_tok . q{]},
16531            
16532             Parse::RecDescent::_tracefirst($text),
16533             q{directive},
16534             $tracelevel)
16535             if defined $::RD_TRACE;
16536 1         2 $item{q{include_directive}} = $_tok;
16537 1         2 push @item, $_tok;
16538            
16539             }
16540              
16541              
16542 1 50       4 Parse::RecDescent::_trace(q{>>Matched production: [include_directive]<<},
16543             Parse::RecDescent::_tracefirst($text),
16544             q{directive},
16545             $tracelevel)
16546             if defined $::RD_TRACE;
16547 1         1 $_matched = 1;
16548 1         2 last;
16549             }
16550              
16551              
16552 209 100 66     1167 unless ( $_matched || defined($score) )
16553             {
16554            
16555              
16556 182         275 $_[1] = $text; # NOT SURE THIS IS NEEDED
16557 182 50       400 Parse::RecDescent::_trace(q{<>},
16558             Parse::RecDescent::_tracefirst($_[1]),
16559             q{directive},
16560             $tracelevel)
16561             if defined $::RD_TRACE;
16562 182         1420 return undef;
16563             }
16564 27 50 33     175 if (!defined($return) && defined($score))
16565             {
16566 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
16567             q{directive},
16568             $tracelevel)
16569             if defined $::RD_TRACE;
16570 0         0 $return = $score_return;
16571             }
16572 27         33 splice @{$thisparser->{errors}}, $err_at;
  27         66  
16573 27 50       88 $return = $item[$#item] unless defined $return;
16574 27 50       100 if (defined $::RD_TRACE)
16575             {
16576 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
16577             $return . q{])}, "",
16578             q{directive},
16579             $tracelevel);
16580 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
16581             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
16582             Parse::RecDescent::_tracefirst($text),
16583             , q{directive},
16584             $tracelevel)
16585             }
16586 27         47 $_[1] = $text;
16587 27         228 return $return;
16588             }
16589             }
16590 50     50 0 125711 package TM::CTM::CParser; sub new { my $self = bless( {
16591             '_AUTOTREE' => undef,
16592             'localvars' => '',
16593             'startcode' => '',
16594             '_check' => {
16595             'thisoffset' => '',
16596             'itempos' => '',
16597             'prevoffset' => '',
16598             'prevline' => '',
16599             'prevcolumn' => '',
16600             'thiscolumn' => ''
16601             },
16602             'namespace' => 'Parse::RecDescent::TM::CTM::CParser',
16603             '_AUTOACTION' => undef,
16604             'rules' => {
16605             'string' => bless( {
16606             'impcount' => 1,
16607             'calls' => [
16608             '_alternation_1_of_production_1_of_rule_string',
16609             '_alternation_1_of_production_2_of_rule_string'
16610             ],
16611             'changed' => 0,
16612             'opcount' => 0,
16613             'prods' => [
16614             bless( {
16615             'number' => '0',
16616             'strcount' => 0,
16617             'dircount' => 0,
16618             'uncommit' => undef,
16619             'error' => undef,
16620             'patcount' => 1,
16621             'actcount' => 1,
16622             'items' => [
16623             bless( {
16624             'pattern' => '\\"{3}(.*?)\\"{3}',
16625             'hashname' => '__PATTERN1__',
16626             'description' => '/\\\\"\\{3\\}(.*?)\\\\"\\{3\\}/s',
16627             'lookahead' => 0,
16628             'rdelim' => '/',
16629             'line' => -24,
16630             'mod' => 's',
16631             'ldelim' => '/'
16632             }, 'Parse::RecDescent::Token' ),
16633             bless( {
16634             'subrule' => '_alternation_1_of_production_1_of_rule_string',
16635             'expected' => '\'^^\'',
16636             'min' => 0,
16637             'argcode' => undef,
16638             'max' => 1,
16639             'matchrule' => 0,
16640             'repspec' => '?',
16641             'lookahead' => 0,
16642             'line' => -24
16643             }, 'Parse::RecDescent::Repetition' ),
16644             bless( {
16645             'hashname' => '__ACTION1__',
16646             'lookahead' => 0,
16647             'line' => -24,
16648             'code' => '{ $return = new TM::Literal ($1, $item[2]->[0] || TM::Literal->STRING); }'
16649             }, 'Parse::RecDescent::Action' )
16650             ],
16651             'line' => undef
16652             }, 'Parse::RecDescent::Production' ),
16653             bless( {
16654             'number' => '1',
16655             'strcount' => 0,
16656             'dircount' => 0,
16657             'uncommit' => undef,
16658             'error' => undef,
16659             'patcount' => 1,
16660             'actcount' => 1,
16661             'items' => [
16662             bless( {
16663             'pattern' => '\\"([^\\n]*?)\\"',
16664             'hashname' => '__PATTERN1__',
16665             'description' => '/\\\\"([^\\\\n]*?)\\\\"/',
16666             'lookahead' => 0,
16667             'rdelim' => '/',
16668             'line' => -23,
16669             'mod' => '',
16670             'ldelim' => '/'
16671             }, 'Parse::RecDescent::Token' ),
16672             bless( {
16673             'subrule' => '_alternation_1_of_production_2_of_rule_string',
16674             'expected' => '\'^^\'',
16675             'min' => 0,
16676             'argcode' => undef,
16677             'max' => 1,
16678             'matchrule' => 0,
16679             'repspec' => '?',
16680             'lookahead' => 0,
16681             'line' => -23
16682             }, 'Parse::RecDescent::Repetition' ),
16683             bless( {
16684             'hashname' => '__ACTION1__',
16685             'lookahead' => 0,
16686             'line' => -23,
16687             'code' => '{ $return = new TM::Literal ($1, $item[2]->[0] || TM::Literal->STRING); }'
16688             }, 'Parse::RecDescent::Action' )
16689             ],
16690             'line' => -23
16691             }, 'Parse::RecDescent::Production' )
16692             ],
16693             'name' => 'string',
16694             'vars' => '',
16695             'line' => -26
16696             }, 'Parse::RecDescent::Rule' ),
16697             'tm_format' => bless( {
16698             'impcount' => 0,
16699             'calls' => [
16700             'string'
16701             ],
16702             'changed' => 0,
16703             'opcount' => 0,
16704             'prods' => [
16705             bless( {
16706             'number' => '0',
16707             'strcount' => 0,
16708             'dircount' => 0,
16709             'uncommit' => undef,
16710             'error' => undef,
16711             'patcount' => 0,
16712             'actcount' => 0,
16713             'items' => [
16714             bless( {
16715             'subrule' => 'string',
16716             'matchrule' => 0,
16717             'implicit' => undef,
16718             'argcode' => undef,
16719             'lookahead' => 0,
16720             'line' => -171
16721             }, 'Parse::RecDescent::Subrule' )
16722             ],
16723             'line' => undef
16724             }, 'Parse::RecDescent::Production' )
16725             ],
16726             'name' => 'tm_format',
16727             'vars' => '',
16728             'line' => -171
16729             }, 'Parse::RecDescent::Rule' ),
16730             'topicmapid_directive' => bless( {
16731             'impcount' => 1,
16732             'calls' => [
16733             '_alternation_1_of_production_1_of_rule_topicmapid_directive'
16734             ],
16735             'changed' => 0,
16736             'opcount' => 0,
16737             'prods' => [
16738             bless( {
16739             'number' => '0',
16740             'strcount' => 1,
16741             'dircount' => 0,
16742             'uncommit' => undef,
16743             'error' => undef,
16744             'patcount' => 0,
16745             'actcount' => 1,
16746             'items' => [
16747             bless( {
16748             'pattern' => '#TOPICMAP',
16749             'hashname' => '__STRING1__',
16750             'description' => '\'#TOPICMAP\'',
16751             'lookahead' => 0,
16752             'line' => -197
16753             }, 'Parse::RecDescent::Literal' ),
16754             bless( {
16755             'subrule' => '_alternation_1_of_production_1_of_rule_topicmapid_directive',
16756             'matchrule' => 0,
16757             'implicit' => 'name, or reify',
16758             'argcode' => undef,
16759             'lookahead' => 0,
16760             'line' => -197
16761             }, 'Parse::RecDescent::Subrule' ),
16762             bless( {
16763             'hashname' => '__ACTION1__',
16764             'lookahead' => 0,
16765             'line' => -196,
16766             'code' => '{
16767             $log->logdie (__PACKAGE__ . ": TOPICMAP directive ignored (use proper means)");
16768             }'
16769             }, 'Parse::RecDescent::Action' )
16770             ],
16771             'line' => undef
16772             }, 'Parse::RecDescent::Production' )
16773             ],
16774             'name' => 'topicmapid_directive',
16775             'vars' => '',
16776             'line' => -197
16777             }, 'Parse::RecDescent::Rule' ),
16778             'xname' => bless( {
16779             'impcount' => 0,
16780             'calls' => [],
16781             'changed' => 0,
16782             'opcount' => 0,
16783             'prods' => [
16784             bless( {
16785             'number' => '0',
16786             'strcount' => 0,
16787             'dircount' => 1,
16788             'uncommit' => undef,
16789             'error' => undef,
16790             'patcount' => 1,
16791             'actcount' => 1,
16792             'items' => [
16793             bless( {
16794             'pattern' => '^\\w[:\\-\\w]*',
16795             'hashname' => '__PATTERN1__',
16796             'description' => '/^\\\\w[:\\\\-\\\\w]*/',
16797             'lookahead' => 0,
16798             'rdelim' => '/',
16799             'line' => -59,
16800             'mod' => '',
16801             'ldelim' => '/'
16802             }, 'Parse::RecDescent::Token' ),
16803             bless( {
16804             'hashname' => '__ACTION1__',
16805             'lookahead' => 0,
16806             'line' => -58,
16807             'code' => '{
16808             my $name = $item[1];
16809             if ($name =~ /^(\\w+):/) {
16810             my $prefix = $1;
16811             if ($prefixes{$prefix}) {
16812             $name =~ s/^$prefix:/$prefixes{$prefix}/;
16813             $return = $name;
16814             } else {
16815             $return = undef;
16816             }
16817             } else {
16818             $return = $name;
16819             }
16820             }'
16821             }, 'Parse::RecDescent::Action' ),
16822             bless( {
16823             'hashname' => '__DIRECTIVE1__',
16824             'name' => '',
16825             'lookahead' => 0,
16826             'line' => -44,
16827             'code' => '( ! $return) ? undef : 1'
16828             }, 'Parse::RecDescent::Directive' )
16829             ],
16830             'line' => undef
16831             }, 'Parse::RecDescent::Production' ),
16832             bless( {
16833             'number' => '1',
16834             'strcount' => 0,
16835             'dircount' => 0,
16836             'uncommit' => undef,
16837             'error' => undef,
16838             'patcount' => 1,
16839             'actcount' => 1,
16840             'items' => [
16841             bless( {
16842             'pattern' => '^\\w[-\\w]*',
16843             'hashname' => '__PATTERN1__',
16844             'description' => '/^\\\\w[-\\\\w]*/',
16845             'lookahead' => 0,
16846             'rdelim' => '/',
16847             'line' => -43,
16848             'mod' => '',
16849             'ldelim' => '/'
16850             }, 'Parse::RecDescent::Token' ),
16851             bless( {
16852             'hashname' => '__ACTION1__',
16853             'lookahead' => 0,
16854             'line' => -42,
16855             'code' => '{
16856             $return = $item[1];
16857             }'
16858             }, 'Parse::RecDescent::Action' )
16859             ],
16860             'line' => -43
16861             }, 'Parse::RecDescent::Production' )
16862             ],
16863             'name' => 'xname',
16864             'vars' => '',
16865             'line' => -59
16866             }, 'Parse::RecDescent::Rule' ),
16867             'occ_topic' => bless( {
16868             'impcount' => 0,
16869             'calls' => [
16870             'name'
16871             ],
16872             'changed' => 0,
16873             'opcount' => 0,
16874             'prods' => [
16875             bless( {
16876             'number' => '0',
16877             'strcount' => 0,
16878             'dircount' => 0,
16879             'uncommit' => undef,
16880             'error' => undef,
16881             'patcount' => 0,
16882             'actcount' => 0,
16883             'items' => [
16884             bless( {
16885             'subrule' => 'name',
16886             'matchrule' => 0,
16887             'implicit' => undef,
16888             'argcode' => undef,
16889             'lookahead' => 0,
16890             'line' => -76
16891             }, 'Parse::RecDescent::Subrule' )
16892             ],
16893             'line' => undef
16894             }, 'Parse::RecDescent::Production' )
16895             ],
16896             'name' => 'occ_topic',
16897             'vars' => '',
16898             'line' => -76
16899             }, 'Parse::RecDescent::Rule' ),
16900             'reifier' => bless( {
16901             'impcount' => 0,
16902             'calls' => [
16903             'topic_ref'
16904             ],
16905             'changed' => 0,
16906             'opcount' => 0,
16907             'prods' => [
16908             bless( {
16909             'number' => '0',
16910             'strcount' => 1,
16911             'dircount' => 0,
16912             'uncommit' => undef,
16913             'error' => undef,
16914             'patcount' => 0,
16915             'actcount' => 1,
16916             'items' => [
16917             bless( {
16918             'pattern' => '~',
16919             'hashname' => '__STRING1__',
16920             'description' => '\'~\'',
16921             'lookahead' => 0,
16922             'line' => -229
16923             }, 'Parse::RecDescent::Literal' ),
16924             bless( {
16925             'subrule' => 'topic_ref',
16926             'matchrule' => 0,
16927             'implicit' => undef,
16928             'argcode' => undef,
16929             'lookahead' => 0,
16930             'line' => -229
16931             }, 'Parse::RecDescent::Subrule' ),
16932             bless( {
16933             'hashname' => '__ACTION1__',
16934             'lookahead' => 0,
16935             'line' => -229,
16936             'code' => '{ $return = $item[2]; }'
16937             }, 'Parse::RecDescent::Action' )
16938             ],
16939             'line' => undef
16940             }, 'Parse::RecDescent::Production' )
16941             ],
16942             'name' => 'reifier',
16943             'vars' => '',
16944             'line' => -229
16945             }, 'Parse::RecDescent::Rule' ),
16946             'wildcard' => bless( {
16947             'impcount' => 0,
16948             'calls' => [
16949             'named_wildcard',
16950             'anonymous_wildcard'
16951             ],
16952             'changed' => 0,
16953             'opcount' => 0,
16954             'prods' => [
16955             bless( {
16956             'number' => '0',
16957             'strcount' => 0,
16958             'dircount' => 0,
16959             'uncommit' => undef,
16960             'error' => undef,
16961             'patcount' => 0,
16962             'actcount' => 0,
16963             'items' => [
16964             bless( {
16965             'subrule' => 'named_wildcard',
16966             'matchrule' => 0,
16967             'implicit' => undef,
16968             'argcode' => undef,
16969             'lookahead' => 0,
16970             'line' => -342
16971             }, 'Parse::RecDescent::Subrule' )
16972             ],
16973             'line' => undef
16974             }, 'Parse::RecDescent::Production' ),
16975             bless( {
16976             'number' => '1',
16977             'strcount' => 0,
16978             'dircount' => 0,
16979             'uncommit' => undef,
16980             'error' => undef,
16981             'patcount' => 0,
16982             'actcount' => 0,
16983             'items' => [
16984             bless( {
16985             'subrule' => 'anonymous_wildcard',
16986             'matchrule' => 0,
16987             'implicit' => undef,
16988             'argcode' => undef,
16989             'lookahead' => 0,
16990             'line' => -341
16991             }, 'Parse::RecDescent::Subrule' )
16992             ],
16993             'line' => -341
16994             }, 'Parse::RecDescent::Production' )
16995             ],
16996             'name' => 'wildcard',
16997             'vars' => '',
16998             'line' => -344
16999             }, 'Parse::RecDescent::Rule' ),
17000             'iri' => bless( {
17001             'impcount' => 0,
17002             'calls' => [
17003             'qname'
17004             ],
17005             'changed' => 0,
17006             'opcount' => 0,
17007             'prods' => [
17008             bless( {
17009             'number' => '0',
17010             'strcount' => 0,
17011             'dircount' => 0,
17012             'uncommit' => undef,
17013             'error' => undef,
17014             'patcount' => 1,
17015             'actcount' => 0,
17016             'items' => [
17017             bless( {
17018             'pattern' => '\\w[\\w\\d\\+\\-\\.]+:\\/([^\\.\\s:;]|\\.(?!\\s)|:(?!\\s)|;(?!\\s))+',
17019             'hashname' => '__PATTERN1__',
17020             'description' => '/\\\\w[\\\\w\\\\d\\\\+\\\\-\\\\.]+:\\\\/([^\\\\.\\\\s:;]|\\\\.(?!\\\\s)|:(?!\\\\s)|;(?!\\\\s))+/',
17021             'lookahead' => 0,
17022             'rdelim' => '/',
17023             'line' => -7,
17024             'mod' => '',
17025             'ldelim' => '/'
17026             }, 'Parse::RecDescent::Token' )
17027             ],
17028             'line' => undef
17029             }, 'Parse::RecDescent::Production' ),
17030             bless( {
17031             'number' => '1',
17032             'strcount' => 0,
17033             'dircount' => 0,
17034             'uncommit' => undef,
17035             'error' => undef,
17036             'patcount' => 0,
17037             'actcount' => 0,
17038             'items' => [
17039             bless( {
17040             'subrule' => 'qname',
17041             'matchrule' => 0,
17042             'implicit' => undef,
17043             'argcode' => undef,
17044             'lookahead' => 0,
17045             'line' => -5
17046             }, 'Parse::RecDescent::Subrule' )
17047             ],
17048             'line' => -6
17049             }, 'Parse::RecDescent::Production' )
17050             ],
17051             'name' => 'iri',
17052             'vars' => '',
17053             'line' => -7
17054             }, 'Parse::RecDescent::Rule' ),
17055             'scope' => bless( {
17056             'impcount' => 0,
17057             'calls' => [
17058             'topic_ref'
17059             ],
17060             'changed' => 0,
17061             'opcount' => 0,
17062             'prods' => [
17063             bless( {
17064             'number' => '0',
17065             'strcount' => 1,
17066             'dircount' => 0,
17067             'uncommit' => undef,
17068             'error' => undef,
17069             'patcount' => 0,
17070             'actcount' => 1,
17071             'items' => [
17072             bless( {
17073             'pattern' => '@',
17074             'hashname' => '__STRING1__',
17075             'description' => '\'@\'',
17076             'lookahead' => 0,
17077             'line' => -231
17078             }, 'Parse::RecDescent::Literal' ),
17079             bless( {
17080             'subrule' => 'topic_ref',
17081             'matchrule' => 0,
17082             'implicit' => undef,
17083             'argcode' => undef,
17084             'lookahead' => 0,
17085             'line' => -231
17086             }, 'Parse::RecDescent::Subrule' ),
17087             bless( {
17088             'hashname' => '__ACTION1__',
17089             'lookahead' => 0,
17090             'line' => -231,
17091             'code' => '{ $return = $item[2]; }'
17092             }, 'Parse::RecDescent::Action' )
17093             ],
17094             'line' => undef
17095             }, 'Parse::RecDescent::Production' )
17096             ],
17097             'name' => 'scope',
17098             'vars' => '',
17099             'line' => -231
17100             }, 'Parse::RecDescent::Rule' ),
17101             'encoding' => bless( {
17102             'impcount' => 0,
17103             'calls' => [
17104             'string'
17105             ],
17106             'changed' => 0,
17107             'opcount' => 0,
17108             'prods' => [
17109             bless( {
17110             'number' => '0',
17111             'strcount' => 2,
17112             'dircount' => 0,
17113             'uncommit' => undef,
17114             'error' => undef,
17115             'patcount' => 0,
17116             'actcount' => 0,
17117             'items' => [
17118             bless( {
17119             'pattern' => 'TODO',
17120             'hashname' => '__STRING1__',
17121             'description' => '\'TODO\'',
17122             'lookahead' => 0,
17123             'line' => -454
17124             }, 'Parse::RecDescent::Literal' ),
17125             bless( {
17126             'pattern' => '@',
17127             'hashname' => '__STRING2__',
17128             'description' => '\'@\'',
17129             'lookahead' => 0,
17130             'line' => -454
17131             }, 'Parse::RecDescent::Literal' ),
17132             bless( {
17133             'subrule' => 'string',
17134             'matchrule' => 0,
17135             'implicit' => undef,
17136             'argcode' => undef,
17137             'lookahead' => 0,
17138             'line' => -454
17139             }, 'Parse::RecDescent::Subrule' )
17140             ],
17141             'line' => undef
17142             }, 'Parse::RecDescent::Production' )
17143             ],
17144             'name' => 'encoding',
17145             'vars' => '',
17146             'line' => -454
17147             }, 'Parse::RecDescent::Rule' ),
17148             'topicmap' => bless( {
17149             'impcount' => 1,
17150             'calls' => [
17151             'prolog',
17152             'directive',
17153             '_alternation_1_of_production_1_of_rule_topicmap'
17154             ],
17155             'changed' => 0,
17156             'opcount' => 0,
17157             'prods' => [
17158             bless( {
17159             'number' => '0',
17160             'strcount' => 0,
17161             'dircount' => 0,
17162             'uncommit' => undef,
17163             'error' => undef,
17164             'patcount' => 0,
17165             'actcount' => 0,
17166             'items' => [
17167             bless( {
17168             'subrule' => 'prolog',
17169             'matchrule' => 0,
17170             'implicit' => undef,
17171             'argcode' => undef,
17172             'lookahead' => 0,
17173             'line' => 29
17174             }, 'Parse::RecDescent::Subrule' ),
17175             bless( {
17176             'subrule' => 'directive',
17177             'expected' => undef,
17178             'min' => 0,
17179             'argcode' => undef,
17180             'max' => 100000000,
17181             'matchrule' => 0,
17182             'repspec' => 's?',
17183             'lookahead' => 0,
17184             'line' => 29
17185             }, 'Parse::RecDescent::Repetition' ),
17186             bless( {
17187             'subrule' => '_alternation_1_of_production_1_of_rule_topicmap',
17188             'expected' => 'directive, or template, or template_invocation, or topic, or association',
17189             'min' => 0,
17190             'argcode' => undef,
17191             'max' => 100000000,
17192             'matchrule' => 0,
17193             'repspec' => 's?',
17194             'lookahead' => 0,
17195             'line' => -500
17196             }, 'Parse::RecDescent::Repetition' )
17197             ],
17198             'line' => undef
17199             }, 'Parse::RecDescent::Production' )
17200             ],
17201             'name' => 'topicmap',
17202             'vars' => '',
17203             'line' => 29
17204             }, 'Parse::RecDescent::Rule' ),
17205             'topic' => bless( {
17206             'impcount' => 0,
17207             'calls' => [
17208             'topic_identity',
17209             'topic_tail'
17210             ],
17211             'changed' => 0,
17212             'opcount' => 0,
17213             'prods' => [
17214             bless( {
17215             'number' => '0',
17216             'strcount' => 1,
17217             'dircount' => 0,
17218             'uncommit' => undef,
17219             'error' => undef,
17220             'patcount' => 0,
17221             'actcount' => 1,
17222             'items' => [
17223             bless( {
17224             'subrule' => 'topic_identity',
17225             'matchrule' => 0,
17226             'implicit' => undef,
17227             'argcode' => undef,
17228             'lookahead' => 0,
17229             'line' => -353
17230             }, 'Parse::RecDescent::Subrule' ),
17231             bless( {
17232             'hashname' => '__ACTION1__',
17233             'lookahead' => 0,
17234             'line' => -353,
17235             'code' => '{ $lid = $item[1]; }'
17236             }, 'Parse::RecDescent::Action' ),
17237             bless( {
17238             'subrule' => 'topic_tail',
17239             'expected' => undef,
17240             'min' => 0,
17241             'argcode' => '[$lid]',
17242             'max' => 100000000,
17243             'matchrule' => 0,
17244             'repspec' => 's?',
17245             'lookahead' => 0,
17246             'line' => -352
17247             }, 'Parse::RecDescent::Repetition' ),
17248             bless( {
17249             'pattern' => '.',
17250             'hashname' => '__STRING1__',
17251             'description' => '\'.\'',
17252             'lookahead' => 0,
17253             'line' => -351
17254             }, 'Parse::RecDescent::Literal' )
17255             ],
17256             'line' => undef
17257             }, 'Parse::RecDescent::Production' )
17258             ],
17259             'name' => 'topic',
17260             'vars' => '',
17261             'line' => -355
17262             }, 'Parse::RecDescent::Rule' ),
17263             'subject' => bless( {
17264             'impcount' => 0,
17265             'calls' => [
17266             'uri'
17267             ],
17268             'changed' => 0,
17269             'opcount' => 0,
17270             'prods' => [
17271             bless( {
17272             'number' => '0',
17273             'strcount' => 1,
17274             'dircount' => 0,
17275             'uncommit' => undef,
17276             'error' => undef,
17277             'patcount' => 0,
17278             'actcount' => 1,
17279             'items' => [
17280             bless( {
17281             'pattern' => '%',
17282             'hashname' => '__STRING1__',
17283             'description' => '\'%\'',
17284             'lookahead' => 0,
17285             'line' => -117
17286             }, 'Parse::RecDescent::Literal' ),
17287             bless( {
17288             'subrule' => 'uri',
17289             'matchrule' => 0,
17290             'implicit' => undef,
17291             'argcode' => undef,
17292             'lookahead' => 0,
17293             'line' => -117
17294             }, 'Parse::RecDescent::Subrule' ),
17295             bless( {
17296             'hashname' => '__ACTION1__',
17297             'lookahead' => 0,
17298             'line' => -117,
17299             'code' => '{ $return = $item[2]; }'
17300             }, 'Parse::RecDescent::Action' )
17301             ],
17302             'line' => undef
17303             }, 'Parse::RecDescent::Production' )
17304             ],
17305             'name' => 'subject',
17306             'vars' => '',
17307             'line' => -117
17308             }, 'Parse::RecDescent::Rule' ),
17309             'name' => bless( {
17310             'impcount' => 0,
17311             'calls' => [
17312             'typing',
17313             'string',
17314             'scope',
17315             'reifier'
17316             ],
17317             'changed' => 0,
17318             'opcount' => 0,
17319             'prods' => [
17320             bless( {
17321             'number' => '0',
17322             'strcount' => 1,
17323             'dircount' => 0,
17324             'uncommit' => undef,
17325             'error' => undef,
17326             'patcount' => 0,
17327             'actcount' => 1,
17328             'items' => [
17329             bless( {
17330             'pattern' => '-',
17331             'hashname' => '__STRING1__',
17332             'description' => '\'-\'',
17333             'lookahead' => 0,
17334             'line' => -290
17335             }, 'Parse::RecDescent::Literal' ),
17336             bless( {
17337             'subrule' => 'typing',
17338             'expected' => undef,
17339             'min' => 0,
17340             'argcode' => undef,
17341             'max' => 1,
17342             'matchrule' => 0,
17343             'repspec' => '?',
17344             'lookahead' => 0,
17345             'line' => -290
17346             }, 'Parse::RecDescent::Repetition' ),
17347             bless( {
17348             'subrule' => 'string',
17349             'matchrule' => 0,
17350             'implicit' => undef,
17351             'argcode' => undef,
17352             'lookahead' => 0,
17353             'line' => -290
17354             }, 'Parse::RecDescent::Subrule' ),
17355             bless( {
17356             'subrule' => 'scope',
17357             'expected' => undef,
17358             'min' => 0,
17359             'argcode' => undef,
17360             'max' => 1,
17361             'matchrule' => 0,
17362             'repspec' => '?',
17363             'lookahead' => 0,
17364             'line' => -290
17365             }, 'Parse::RecDescent::Repetition' ),
17366             bless( {
17367             'subrule' => 'reifier',
17368             'expected' => undef,
17369             'min' => 0,
17370             'argcode' => undef,
17371             'max' => 1,
17372             'matchrule' => 0,
17373             'repspec' => '?',
17374             'lookahead' => 0,
17375             'line' => -290
17376             }, 'Parse::RecDescent::Repetition' ),
17377             bless( {
17378             'hashname' => '__ACTION1__',
17379             'lookahead' => 0,
17380             'line' => -290,
17381             'code' => '{
17382             my $type = $item[2]->[0] ? $item[2]->[0] : \'name\';
17383             my $scope = $item[4]->[0] ? $item[4]->[0] : \'us\';
17384              
17385             my ($a) = $store->assert ( bless [ undef, # LID
17386             $scope, # SCOPE
17387             $type, # TYPE
17388             TM->NAME, # KIND
17389             [ \'thing\', \'value\' ], # ROLES
17390             [ $arg[0], $item[3] ],# PLAYERS
17391             undef ], \'Assertion\' );
17392             $store->assert(Assertion->new(kind => TM->ASSOC,
17393             type => \'is-subclass-of\',
17394             roles => [ qw(subclass superclass) ],
17395             players => [ $type, \'name\' ],
17396             scope => undef)) if $type ne \'name\';
17397             $store->assert(Assertion->new(kind => TM->ASSOC,
17398             type => \'isa\',
17399             roles => [ qw(instance class) ],
17400             players => [ $scope, \'scope\' ],
17401             scope => undef)) if $scope ne \'us\';
17402             $store->internalize ($item[5]->[0], $a->[TM->LID]) if $item[5]->[0];
17403             $return = $a;
17404             }'
17405             }, 'Parse::RecDescent::Action' )
17406             ],
17407             'line' => undef
17408             }, 'Parse::RecDescent::Production' )
17409             ],
17410             'name' => 'name',
17411             'vars' => '',
17412             'line' => -292
17413             }, 'Parse::RecDescent::Rule' ),
17414             'template_invocation' => bless( {
17415             'impcount' => 0,
17416             'calls' => [
17417             'identifier',
17418             'argument'
17419             ],
17420             'changed' => 0,
17421             'opcount' => 0,
17422             'prods' => [
17423             bless( {
17424             'number' => '0',
17425             'strcount' => 2,
17426             'dircount' => 1,
17427             'uncommit' => undef,
17428             'error' => undef,
17429             'patcount' => 1,
17430             'actcount' => 2,
17431             'op' => [],
17432             'items' => [
17433             bless( {
17434             'subrule' => 'identifier',
17435             'matchrule' => 0,
17436             'implicit' => undef,
17437             'argcode' => undef,
17438             'lookahead' => 0,
17439             'line' => -396
17440             }, 'Parse::RecDescent::Subrule' ),
17441             bless( {
17442             'hashname' => '__ACTION1__',
17443             'lookahead' => 0,
17444             'line' => -396,
17445             'code' => '{ $templates{$item[1]} }'
17446             }, 'Parse::RecDescent::Action' ),
17447             bless( {
17448             'pattern' => '(',
17449             'hashname' => '__STRING1__',
17450             'description' => '\'(\'',
17451             'lookahead' => 0,
17452             'line' => -395
17453             }, 'Parse::RecDescent::Literal' ),
17454             bless( {
17455             'expected' => '',
17456             'min' => 0,
17457             'name' => '\'argument(s?)\'',
17458             'max' => 100000000,
17459             'leftarg' => bless( {
17460             'subrule' => 'argument',
17461             'matchrule' => 0,
17462             'implicit' => undef,
17463             'argcode' => undef,
17464             'lookahead' => 0,
17465             'line' => -395
17466             }, 'Parse::RecDescent::Subrule' ),
17467             'rightarg' => bless( {
17468             'subrule' => 'argument',
17469             'matchrule' => 0,
17470             'implicit' => undef,
17471             'argcode' => undef,
17472             'lookahead' => 0,
17473             'line' => -395
17474             }, 'Parse::RecDescent::Subrule' ),
17475             'hashname' => '__DIRECTIVE1__',
17476             'type' => 'leftop',
17477             'op' => bless( {
17478             'pattern' => ',',
17479             'hashname' => '__PATTERN1__',
17480             'description' => '/,/',
17481             'lookahead' => 0,
17482             'rdelim' => '/',
17483             'line' => -395,
17484             'mod' => '',
17485             'ldelim' => '/'
17486             }, 'Parse::RecDescent::Token' )
17487             }, 'Parse::RecDescent::Operator' ),
17488             bless( {
17489             'pattern' => ')',
17490             'hashname' => '__STRING2__',
17491             'description' => '\')\'',
17492             'lookahead' => 0,
17493             'line' => -395
17494             }, 'Parse::RecDescent::Literal' ),
17495             bless( {
17496             'hashname' => '__ACTION2__',
17497             'lookahead' => 0,
17498             'line' => -395,
17499             'code' => '{
17500             my $tmpl = $templates{$item[1]}; # we know we have something
17501             $text .= "\\n\\n%backup\\n\\n" . _expand_tmpl ($tmpl, $item[4]) . "\\n\\n%restore\\n\\n";
17502             $return = 1;
17503             }'
17504             }, 'Parse::RecDescent::Action' )
17505             ],
17506             'line' => undef
17507             }, 'Parse::RecDescent::Production' )
17508             ],
17509             'name' => 'template_invocation',
17510             'vars' => '',
17511             'line' => -397
17512             }, 'Parse::RecDescent::Rule' ),
17513             'uri' => bless( {
17514             'impcount' => 0,
17515             'calls' => [
17516             'string'
17517             ],
17518             'changed' => 0,
17519             'opcount' => 0,
17520             'prods' => [
17521             bless( {
17522             'number' => '0',
17523             'strcount' => 0,
17524             'dircount' => 0,
17525             'uncommit' => undef,
17526             'error' => undef,
17527             'patcount' => 0,
17528             'actcount' => 0,
17529             'items' => [
17530             bless( {
17531             'subrule' => 'string',
17532             'matchrule' => 0,
17533             'implicit' => undef,
17534             'argcode' => undef,
17535             'lookahead' => 0,
17536             'line' => -64
17537             }, 'Parse::RecDescent::Subrule' )
17538             ],
17539             'line' => undef
17540             }, 'Parse::RecDescent::Production' ),
17541             bless( {
17542             'number' => '1',
17543             'strcount' => 0,
17544             'dircount' => 0,
17545             'uncommit' => undef,
17546             'error' => undef,
17547             'patcount' => 1,
17548             'actcount' => 0,
17549             'items' => [
17550             bless( {
17551             'pattern' => '(\\w+:[^\\"\\s)\\]\\>]+)',
17552             'hashname' => '__PATTERN1__',
17553             'description' => '/(\\\\w+:[^\\\\"\\\\s)\\\\]\\\\>]+)/',
17554             'lookahead' => 0,
17555             'rdelim' => '/',
17556             'line' => -9,
17557             'mod' => '',
17558             'ldelim' => '/'
17559             }, 'Parse::RecDescent::Token' )
17560             ],
17561             'line' => undef
17562             }, 'Parse::RecDescent::Production' )
17563             ],
17564             'name' => 'uri',
17565             'vars' => '',
17566             'line' => -64
17567             }, 'Parse::RecDescent::Rule' ),
17568             'backup_directive' => bless( {
17569             'impcount' => 0,
17570             'calls' => [],
17571             'changed' => 0,
17572             'opcount' => 0,
17573             'prods' => [
17574             bless( {
17575             'number' => '0',
17576             'strcount' => 1,
17577             'dircount' => 0,
17578             'uncommit' => undef,
17579             'error' => undef,
17580             'patcount' => 0,
17581             'actcount' => 1,
17582             'items' => [
17583             bless( {
17584             'pattern' => '%backup',
17585             'hashname' => '__STRING1__',
17586             'description' => '\'%backup\'',
17587             'lookahead' => 0,
17588             'line' => -485
17589             }, 'Parse::RecDescent::Literal' ),
17590             bless( {
17591             'hashname' => '__ACTION1__',
17592             'lookahead' => 0,
17593             'line' => -485,
17594             'code' => '{
17595             %prefixes_backup = %prefixes;
17596             %wildcards_backup = %wildcards;
17597             %wildcards = ();
17598             }'
17599             }, 'Parse::RecDescent::Action' )
17600             ],
17601             'line' => undef
17602             }, 'Parse::RecDescent::Production' )
17603             ],
17604             'name' => 'backup_directive',
17605             'vars' => '',
17606             'line' => -486
17607             }, 'Parse::RecDescent::Rule' ),
17608             'reify' => bless( {
17609             'impcount' => 0,
17610             'calls' => [
17611             'name'
17612             ],
17613             'changed' => 0,
17614             'opcount' => 0,
17615             'prods' => [
17616             bless( {
17617             'number' => '0',
17618             'strcount' => 1,
17619             'dircount' => 0,
17620             'uncommit' => undef,
17621             'error' => undef,
17622             'patcount' => 0,
17623             'actcount' => 0,
17624             'items' => [
17625             bless( {
17626             'pattern' => '~',
17627             'hashname' => '__STRING1__',
17628             'description' => '\'~\'',
17629             'lookahead' => 0,
17630             'line' => -72
17631             }, 'Parse::RecDescent::Literal' ),
17632             bless( {
17633             'subrule' => 'name',
17634             'matchrule' => 0,
17635             'implicit' => undef,
17636             'argcode' => undef,
17637             'lookahead' => 0,
17638             'line' => -72
17639             }, 'Parse::RecDescent::Subrule' )
17640             ],
17641             'line' => undef
17642             }, 'Parse::RecDescent::Production' )
17643             ],
17644             'name' => 'reify',
17645             'vars' => '',
17646             'line' => -72
17647             }, 'Parse::RecDescent::Rule' ),
17648             'baseuri_directive' => bless( {
17649             'impcount' => 0,
17650             'calls' => [
17651             'uri'
17652             ],
17653             'changed' => 0,
17654             'opcount' => 0,
17655             'prods' => [
17656             bless( {
17657             'number' => '0',
17658             'strcount' => 1,
17659             'dircount' => 0,
17660             'uncommit' => undef,
17661             'error' => undef,
17662             'patcount' => 0,
17663             'actcount' => 0,
17664             'items' => [
17665             bless( {
17666             'pattern' => '#BASEURI',
17667             'hashname' => '__STRING1__',
17668             'description' => '\'#BASEURI\'',
17669             'lookahead' => 0,
17670             'line' => -169
17671             }, 'Parse::RecDescent::Literal' ),
17672             bless( {
17673             'subrule' => 'uri',
17674             'matchrule' => 0,
17675             'implicit' => undef,
17676             'argcode' => undef,
17677             'lookahead' => 0,
17678             'line' => -169
17679             }, 'Parse::RecDescent::Subrule' )
17680             ],
17681             'line' => undef
17682             }, 'Parse::RecDescent::Production' )
17683             ],
17684             'name' => 'baseuri_directive',
17685             'vars' => '',
17686             'line' => -169
17687             }, 'Parse::RecDescent::Rule' ),
17688             'role' => bless( {
17689             'impcount' => 0,
17690             'calls' => [
17691             'typing',
17692             'player'
17693             ],
17694             'changed' => 0,
17695             'opcount' => 0,
17696             'prods' => [
17697             bless( {
17698             'number' => '0',
17699             'strcount' => 0,
17700             'dircount' => 0,
17701             'uncommit' => undef,
17702             'error' => undef,
17703             'patcount' => 0,
17704             'actcount' => 1,
17705             'items' => [
17706             bless( {
17707             'subrule' => 'typing',
17708             'matchrule' => 0,
17709             'implicit' => undef,
17710             'argcode' => undef,
17711             'lookahead' => 0,
17712             'line' => -359
17713             }, 'Parse::RecDescent::Subrule' ),
17714             bless( {
17715             'subrule' => 'player',
17716             'matchrule' => 0,
17717             'implicit' => undef,
17718             'argcode' => undef,
17719             'lookahead' => 0,
17720             'line' => -359
17721             }, 'Parse::RecDescent::Subrule' ),
17722             bless( {
17723             'hashname' => '__ACTION1__',
17724             'lookahead' => 0,
17725             'line' => -359,
17726             'code' => '{ $return = [ $item[1], $item[2] ]; }'
17727             }, 'Parse::RecDescent::Action' )
17728             ],
17729             'line' => undef
17730             }, 'Parse::RecDescent::Production' )
17731             ],
17732             'name' => 'role',
17733             'vars' => '',
17734             'line' => -359
17735             }, 'Parse::RecDescent::Rule' ),
17736             'xtopic' => bless( {
17737             'impcount' => 0,
17738             'calls' => [
17739             'name',
17740             'types',
17741             'topname',
17742             'reify',
17743             'subject',
17744             'indicator'
17745             ],
17746             'changed' => 0,
17747             'opcount' => 0,
17748             'prods' => [
17749             bless( {
17750             'number' => '0',
17751             'strcount' => 2,
17752             'dircount' => 0,
17753             'uncommit' => undef,
17754             'error' => undef,
17755             'patcount' => 0,
17756             'actcount' => 1,
17757             'items' => [
17758             bless( {
17759             'pattern' => '[',
17760             'hashname' => '__STRING1__',
17761             'description' => '\'[\'',
17762             'lookahead' => 0,
17763             'line' => -167
17764             }, 'Parse::RecDescent::Literal' ),
17765             bless( {
17766             'subrule' => 'name',
17767             'matchrule' => 0,
17768             'implicit' => undef,
17769             'argcode' => undef,
17770             'lookahead' => 0,
17771             'line' => -167
17772             }, 'Parse::RecDescent::Subrule' ),
17773             bless( {
17774             'subrule' => 'types',
17775             'expected' => undef,
17776             'min' => 0,
17777             'argcode' => undef,
17778             'max' => 1,
17779             'matchrule' => 0,
17780             'repspec' => '?',
17781             'lookahead' => 0,
17782             'line' => -167
17783             }, 'Parse::RecDescent::Repetition' ),
17784             bless( {
17785             'subrule' => 'topname',
17786             'expected' => undef,
17787             'min' => 0,
17788             'argcode' => undef,
17789             'max' => 1,
17790             'matchrule' => 0,
17791             'repspec' => '?',
17792             'lookahead' => 0,
17793             'line' => -167
17794             }, 'Parse::RecDescent::Repetition' ),
17795             bless( {
17796             'subrule' => 'reify',
17797             'expected' => undef,
17798             'min' => 0,
17799             'argcode' => undef,
17800             'max' => 1,
17801             'matchrule' => 0,
17802             'repspec' => '?',
17803             'lookahead' => 0,
17804             'line' => -167
17805             }, 'Parse::RecDescent::Repetition' ),
17806             bless( {
17807             'subrule' => 'subject',
17808             'expected' => undef,
17809             'min' => 0,
17810             'argcode' => undef,
17811             'max' => 1,
17812             'matchrule' => 0,
17813             'repspec' => '?',
17814             'lookahead' => 0,
17815             'line' => -167
17816             }, 'Parse::RecDescent::Repetition' ),
17817             bless( {
17818             'subrule' => 'indicator',
17819             'expected' => undef,
17820             'min' => 0,
17821             'argcode' => undef,
17822             'max' => 100000000,
17823             'matchrule' => 0,
17824             'repspec' => 's?',
17825             'lookahead' => 0,
17826             'line' => -167
17827             }, 'Parse::RecDescent::Repetition' ),
17828             bless( {
17829             'pattern' => ']',
17830             'hashname' => '__STRING2__',
17831             'description' => '\']\'',
17832             'lookahead' => 0,
17833             'line' => -167
17834             }, 'Parse::RecDescent::Literal' ),
17835             bless( {
17836             'hashname' => '__ACTION1__',
17837             'lookahead' => 0,
17838             'line' => -166,
17839             'code' => '{
17840             #warn "topic ".Dumper \\@item;
17841             my $id = $store->internalize ($item[2] => $item[6]->[0]); # maybe there is a subject addr, maybe not
17842              
17843             # add the subject indicators
17844             map { $store->internalize ($id => $_ ) } @{$item[7]};
17845              
17846              
17847             if ($item[3] and $item[3]->[0]) {
17848             $store->assert ( map {
17849             [ undef,
17850             undef,
17851             \'isa\',
17852             undef,
17853             [ \'class\', \'instance\' ],
17854             [ $_, $id ],
17855             ] }
17856             @{$item[3]->[0]} );
17857             map { $implicits->{\'isa-thing\'}->{$_}++ } @{$item[3]->[0]}; # the types and the ID are declared implicitely
17858             }
17859             #warn "item 4".Dumper $item[4];
17860             if ($item[4] and @{$item[4]}) {
17861             my $topnames = $item[4]->[0];
17862             #warn "topnames ".Dumper $topnames;
17863             my ($a) = $store->assert ( map {[ undef, # LID
17864             $topnames->{scope}->[0], # SCOPE
17865             \'name\', # TYPE
17866             TM->NAME, # KIND
17867             [ \'thing\', \'value\' ], # ROLES
17868             [ $id, $_ ], # PLAYERS
17869             undef ] }
17870             @{$topnames->{names}}[0] ); # use the first for a name
17871             $return = $a;
17872             # TODO (2..3) for the variants
17873              
17874             #warn "basename reify ".Dumper $item[5];
17875             # reification of the basename
17876             $store->internalize ($item[5]->[0], $a->[TM->LID]) if $item[5]->[0];
17877              
17878             {
17879             map { $implicits->{\'isa-scope\'}->{ $_ }++ } @{$topnames->{scope}};
17880             }
17881             }
17882              
17883             $return = $id;
17884             }'
17885             }, 'Parse::RecDescent::Action' )
17886             ],
17887             'line' => undef
17888             }, 'Parse::RecDescent::Production' )
17889             ],
17890             'name' => 'xtopic',
17891             'vars' => '',
17892             'line' => -167
17893             }, 'Parse::RecDescent::Rule' ),
17894             'variable' => bless( {
17895             'impcount' => 0,
17896             'calls' => [],
17897             'changed' => 0,
17898             'opcount' => 0,
17899             'prods' => [
17900             bless( {
17901             'number' => '0',
17902             'strcount' => 0,
17903             'dircount' => 0,
17904             'uncommit' => undef,
17905             'error' => undef,
17906             'patcount' => 1,
17907             'actcount' => 0,
17908             'items' => [
17909             bless( {
17910             'pattern' => '\\$\\w[\\w-]*',
17911             'hashname' => '__PATTERN1__',
17912             'description' => '/\\\\$\\\\w[\\\\w-]*/',
17913             'lookahead' => 0,
17914             'rdelim' => '/',
17915             'line' => -434,
17916             'mod' => '',
17917             'ldelim' => '/'
17918             }, 'Parse::RecDescent::Token' )
17919             ],
17920             'line' => undef
17921             }, 'Parse::RecDescent::Production' )
17922             ],
17923             'name' => 'variable',
17924             'vars' => '',
17925             'line' => -434
17926             }, 'Parse::RecDescent::Rule' ),
17927             'boolean' => bless( {
17928             'impcount' => 0,
17929             'calls' => [],
17930             'changed' => 0,
17931             'opcount' => 0,
17932             'prods' => [
17933             bless( {
17934             'number' => '0',
17935             'strcount' => 1,
17936             'dircount' => 0,
17937             'uncommit' => undef,
17938             'error' => undef,
17939             'patcount' => 0,
17940             'actcount' => 0,
17941             'items' => [
17942             bless( {
17943             'pattern' => 'true',
17944             'hashname' => '__STRING1__',
17945             'description' => '\'true\'',
17946             'lookahead' => 0,
17947             'line' => -13
17948             }, 'Parse::RecDescent::Literal' )
17949             ],
17950             'line' => undef
17951             }, 'Parse::RecDescent::Production' ),
17952             bless( {
17953             'number' => '1',
17954             'strcount' => 1,
17955             'dircount' => 0,
17956             'uncommit' => undef,
17957             'error' => undef,
17958             'patcount' => 0,
17959             'actcount' => 0,
17960             'items' => [
17961             bless( {
17962             'pattern' => 'false',
17963             'hashname' => '__STRING1__',
17964             'description' => '\'false\'',
17965             'lookahead' => 0,
17966             'line' => -13
17967             }, 'Parse::RecDescent::Literal' )
17968             ],
17969             'line' => -13
17970             }, 'Parse::RecDescent::Production' )
17971             ],
17972             'name' => 'boolean',
17973             'vars' => '',
17974             'line' => -16
17975             }, 'Parse::RecDescent::Rule' ),
17976             'argument' => bless( {
17977             'impcount' => 0,
17978             'calls' => [
17979             'literal',
17980             'topic_ref'
17981             ],
17982             'changed' => 0,
17983             'opcount' => 0,
17984             'prods' => [
17985             bless( {
17986             'number' => '0',
17987             'strcount' => 0,
17988             'dircount' => 0,
17989             'uncommit' => undef,
17990             'error' => undef,
17991             'patcount' => 0,
17992             'actcount' => 1,
17993             'items' => [
17994             bless( {
17995             'subrule' => 'literal',
17996             'matchrule' => 0,
17997             'implicit' => undef,
17998             'argcode' => undef,
17999             'lookahead' => 0,
18000             'line' => -389
18001             }, 'Parse::RecDescent::Subrule' ),
18002             bless( {
18003             'hashname' => '__ACTION1__',
18004             'lookahead' => 0,
18005             'line' => -389,
18006             'code' => '{ $return = $item[1]->[0]; # get only the string value
18007             }'
18008             }, 'Parse::RecDescent::Action' )
18009             ],
18010             'line' => undef
18011             }, 'Parse::RecDescent::Production' ),
18012             bless( {
18013             'number' => '1',
18014             'strcount' => 0,
18015             'dircount' => 0,
18016             'uncommit' => undef,
18017             'error' => undef,
18018             'patcount' => 0,
18019             'actcount' => 1,
18020             'items' => [
18021             bless( {
18022             'subrule' => 'topic_ref',
18023             'matchrule' => 0,
18024             'implicit' => undef,
18025             'argcode' => undef,
18026             'lookahead' => 0,
18027             'line' => -387
18028             }, 'Parse::RecDescent::Subrule' ),
18029             bless( {
18030             'hashname' => '__ACTION1__',
18031             'lookahead' => 0,
18032             'line' => -387,
18033             'code' => '{
18034             my $bu = $store->baseuri;
18035             ($return = $item[1]) =~ s/^$bu//; # pretend internal identifier
18036             }'
18037             }, 'Parse::RecDescent::Action' )
18038             ],
18039             'line' => -387
18040             }, 'Parse::RecDescent::Production' )
18041             ],
18042             'name' => 'argument',
18043             'vars' => '',
18044             'line' => -389
18045             }, 'Parse::RecDescent::Rule' ),
18046             'occur' => bless( {
18047             'impcount' => 0,
18048             'calls' => [
18049             'occ_topic',
18050             'occ_type',
18051             'resource',
18052             'scope',
18053             'reify'
18054             ],
18055             'changed' => 0,
18056             'opcount' => 0,
18057             'prods' => [
18058             bless( {
18059             'number' => '0',
18060             'strcount' => 4,
18061             'dircount' => 0,
18062             'uncommit' => undef,
18063             'error' => undef,
18064             'patcount' => 0,
18065             'actcount' => 1,
18066             'items' => [
18067             bless( {
18068             'pattern' => '{',
18069             'hashname' => '__STRING1__',
18070             'description' => '\'\\{\'',
18071             'lookahead' => 0,
18072             'line' => -98
18073             }, 'Parse::RecDescent::Literal' ),
18074             bless( {
18075             'subrule' => 'occ_topic',
18076             'matchrule' => 0,
18077             'implicit' => undef,
18078             'argcode' => undef,
18079             'lookahead' => 0,
18080             'line' => -98
18081             }, 'Parse::RecDescent::Subrule' ),
18082             bless( {
18083             'pattern' => ',',
18084             'hashname' => '__STRING2__',
18085             'description' => '\',\'',
18086             'lookahead' => 0,
18087             'line' => -98
18088             }, 'Parse::RecDescent::Literal' ),
18089             bless( {
18090             'subrule' => 'occ_type',
18091             'matchrule' => 0,
18092             'implicit' => undef,
18093             'argcode' => undef,
18094             'lookahead' => 0,
18095             'line' => -98
18096             }, 'Parse::RecDescent::Subrule' ),
18097             bless( {
18098             'pattern' => ',',
18099             'hashname' => '__STRING3__',
18100             'description' => '\',\'',
18101             'lookahead' => 0,
18102             'line' => -98
18103             }, 'Parse::RecDescent::Literal' ),
18104             bless( {
18105             'subrule' => 'resource',
18106             'matchrule' => 0,
18107             'implicit' => undef,
18108             'argcode' => undef,
18109             'lookahead' => 0,
18110             'line' => -98
18111             }, 'Parse::RecDescent::Subrule' ),
18112             bless( {
18113             'pattern' => '}',
18114             'hashname' => '__STRING4__',
18115             'description' => '\'\\}\'',
18116             'lookahead' => 0,
18117             'line' => -98
18118             }, 'Parse::RecDescent::Literal' ),
18119             bless( {
18120             'subrule' => 'scope',
18121             'expected' => undef,
18122             'min' => 0,
18123             'argcode' => undef,
18124             'max' => 1,
18125             'matchrule' => 0,
18126             'repspec' => '?',
18127             'lookahead' => 0,
18128             'line' => -98
18129             }, 'Parse::RecDescent::Repetition' ),
18130             bless( {
18131             'subrule' => 'reify',
18132             'expected' => undef,
18133             'min' => 0,
18134             'argcode' => undef,
18135             'max' => 1,
18136             'matchrule' => 0,
18137             'repspec' => '?',
18138             'lookahead' => 0,
18139             'line' => -98
18140             }, 'Parse::RecDescent::Repetition' ),
18141             bless( {
18142             'hashname' => '__ACTION1__',
18143             'lookahead' => 0,
18144             'line' => -97,
18145             'code' => '{
18146             my $id = $store->internalize ($item[2]);
18147             my ($a) = $store->assert ([ undef, # LID
18148             $item[8]->[0], # SCOPE
18149             $item[4], # TYPE (MUST BE DEFINED!)
18150             TM->OCC, # KIND
18151             [ \'thing\', \'value\' ], # ROLES
18152             [ $id, $item[6] ], # PLAYERS
18153             undef ]);
18154              
18155             { # memorize basename types and scopes as implicitely defined
18156             $implicits->{\'isa-scope\'}-> { $item[8]->[0] }++ if $item[8]->[0]; # get the bloody scopes and tuck them away
18157             $implicits->{\'subclasses\'}->{ \'occurrence\' }->{ $item[4] }++;
18158             }
18159              
18160             #warn "reify ".Dumper $item[9];
18161             $store->internalize ($item[9]->[0], $a->[TM->LID]) if $item[9]->[0];
18162              
18163             $return = $a;
18164             }'
18165             }, 'Parse::RecDescent::Action' )
18166             ],
18167             'line' => undef
18168             }, 'Parse::RecDescent::Production' )
18169             ],
18170             'name' => 'occur',
18171             'vars' => '',
18172             'line' => -98
18173             }, 'Parse::RecDescent::Rule' ),
18174             'DATA' => bless( {
18175             'impcount' => 0,
18176             'calls' => [],
18177             'changed' => 0,
18178             'opcount' => 0,
18179             'prods' => [
18180             bless( {
18181             'number' => '0',
18182             'strcount' => 2,
18183             'dircount' => 0,
18184             'uncommit' => undef,
18185             'error' => undef,
18186             'patcount' => 1,
18187             'actcount' => 1,
18188             'items' => [
18189             bless( {
18190             'pattern' => '[[',
18191             'hashname' => '__STRING1__',
18192             'description' => '\'[[\'',
18193             'lookahead' => 0,
18194             'line' => -66
18195             }, 'Parse::RecDescent::Literal' ),
18196             bless( {
18197             'pattern' => '.*(?=\\]\\])',
18198             'hashname' => '__PATTERN1__',
18199             'description' => '/.*(?=\\\\]\\\\])/sx',
18200             'lookahead' => 0,
18201             'rdelim' => '/',
18202             'line' => -66,
18203             'mod' => 'sx',
18204             'ldelim' => '/'
18205             }, 'Parse::RecDescent::Token' ),
18206             bless( {
18207             'pattern' => ']]',
18208             'hashname' => '__STRING2__',
18209             'description' => '\']]\'',
18210             'lookahead' => 0,
18211             'line' => -66
18212             }, 'Parse::RecDescent::Literal' ),
18213             bless( {
18214             'hashname' => '__ACTION1__',
18215             'lookahead' => 0,
18216             'line' => -66,
18217             'code' => '{ $return = $item[2]; }'
18218             }, 'Parse::RecDescent::Action' )
18219             ],
18220             'line' => undef
18221             }, 'Parse::RecDescent::Production' )
18222             ],
18223             'name' => 'DATA',
18224             'vars' => '',
18225             'line' => -66
18226             }, 'Parse::RecDescent::Rule' ),
18227             'association' => bless( {
18228             'impcount' => 0,
18229             'calls' => [
18230             'topic_identity',
18231             'roles',
18232             'scope',
18233             'reifier'
18234             ],
18235             'changed' => 0,
18236             'opcount' => 0,
18237             'prods' => [
18238             bless( {
18239             'number' => '0',
18240             'strcount' => 2,
18241             'dircount' => 0,
18242             'uncommit' => undef,
18243             'error' => undef,
18244             'patcount' => 0,
18245             'actcount' => 1,
18246             'items' => [
18247             bless( {
18248             'subrule' => 'topic_identity',
18249             'matchrule' => 0,
18250             'implicit' => undef,
18251             'argcode' => undef,
18252             'lookahead' => 0,
18253             'line' => -380
18254             }, 'Parse::RecDescent::Subrule' ),
18255             bless( {
18256             'pattern' => '(',
18257             'hashname' => '__STRING1__',
18258             'description' => '\'(\'',
18259             'lookahead' => 0,
18260             'line' => -380
18261             }, 'Parse::RecDescent::Literal' ),
18262             bless( {
18263             'subrule' => 'roles',
18264             'matchrule' => 0,
18265             'implicit' => undef,
18266             'argcode' => undef,
18267             'lookahead' => 0,
18268             'line' => -380
18269             }, 'Parse::RecDescent::Subrule' ),
18270             bless( {
18271             'pattern' => ')',
18272             'hashname' => '__STRING2__',
18273             'description' => '\')\'',
18274             'lookahead' => 0,
18275             'line' => -380
18276             }, 'Parse::RecDescent::Literal' ),
18277             bless( {
18278             'subrule' => 'scope',
18279             'expected' => undef,
18280             'min' => 0,
18281             'argcode' => undef,
18282             'max' => 1,
18283             'matchrule' => 0,
18284             'repspec' => '?',
18285             'lookahead' => 0,
18286             'line' => -380
18287             }, 'Parse::RecDescent::Repetition' ),
18288             bless( {
18289             'subrule' => 'reifier',
18290             'expected' => undef,
18291             'min' => 0,
18292             'argcode' => undef,
18293             'max' => 1,
18294             'matchrule' => 0,
18295             'repspec' => '?',
18296             'lookahead' => 0,
18297             'line' => -380
18298             }, 'Parse::RecDescent::Repetition' ),
18299             bless( {
18300             'hashname' => '__ACTION1__',
18301             'lookahead' => 0,
18302             'line' => -379,
18303             'code' => '{
18304             my $scope = $item[5]->[0] ? $item[5]->[0] : \'us\';
18305             my ($a) = $store->assert (bless [ undef, # LID
18306             $scope, # SCOPE
18307             $item[1], # TYPE
18308             TM->ASSOC, # KIND
18309             [ map { $_->[0] } @{$item[3]} ], # ROLES
18310             [ map { $_->[1] } @{$item[3]} ], # PLAYERS
18311             undef ], \'Assertion\');
18312             $return = $a;
18313             $store->assert(Assertion->new(kind => TM->ASSOC,
18314             type => \'isa\',
18315             roles => [ qw(instance class) ],
18316             players => [ $scope, \'scope\' ],
18317             scope => undef)) if $scope ne \'us\';
18318             $store->internalize ($item[6]->[0], $a->[TM->LID]) if $item[6]->[0];
18319             $return;
18320             }'
18321             }, 'Parse::RecDescent::Action' )
18322             ],
18323             'line' => undef
18324             }, 'Parse::RecDescent::Production' )
18325             ],
18326             'name' => 'association',
18327             'vars' => '',
18328             'line' => -382
18329             }, 'Parse::RecDescent::Rule' ),
18330             'version' => bless( {
18331             'impcount' => 0,
18332             'calls' => [],
18333             'changed' => 0,
18334             'opcount' => 0,
18335             'prods' => [
18336             bless( {
18337             'number' => '0',
18338             'strcount' => 1,
18339             'dircount' => 0,
18340             'uncommit' => undef,
18341             'error' => undef,
18342             'patcount' => 0,
18343             'actcount' => 0,
18344             'items' => [
18345             bless( {
18346             'pattern' => 'TODO',
18347             'hashname' => '__STRING1__',
18348             'description' => '\'TODO\'',
18349             'lookahead' => 0,
18350             'line' => -451
18351             }, 'Parse::RecDescent::Literal' )
18352             ],
18353             'line' => undef
18354             }, 'Parse::RecDescent::Production' )
18355             ],
18356             'name' => 'version',
18357             'vars' => '',
18358             'line' => -453
18359             }, 'Parse::RecDescent::Rule' ),
18360             'wuri' => bless( {
18361             'impcount' => 0,
18362             'calls' => [
18363             'iri'
18364             ],
18365             'changed' => 0,
18366             'opcount' => 0,
18367             'prods' => [
18368             bless( {
18369             'number' => '0',
18370             'strcount' => 2,
18371             'dircount' => 0,
18372             'uncommit' => undef,
18373             'error' => undef,
18374             'patcount' => 0,
18375             'actcount' => 1,
18376             'items' => [
18377             bless( {
18378             'pattern' => '<',
18379             'hashname' => '__STRING1__',
18380             'description' => '\'<\'',
18381             'lookahead' => 0,
18382             'line' => -11
18383             }, 'Parse::RecDescent::Literal' ),
18384             bless( {
18385             'subrule' => 'iri',
18386             'matchrule' => 0,
18387             'implicit' => undef,
18388             'argcode' => undef,
18389             'lookahead' => 0,
18390             'line' => -11
18391             }, 'Parse::RecDescent::Subrule' ),
18392             bless( {
18393             'pattern' => '>',
18394             'hashname' => '__STRING2__',
18395             'description' => '\'>\'',
18396             'lookahead' => 0,
18397             'line' => -11
18398             }, 'Parse::RecDescent::Literal' ),
18399             bless( {
18400             'hashname' => '__ACTION1__',
18401             'lookahead' => 0,
18402             'line' => -11,
18403             'code' => '{ $item[2] }'
18404             }, 'Parse::RecDescent::Action' )
18405             ],
18406             'line' => undef
18407             }, 'Parse::RecDescent::Production' )
18408             ],
18409             'name' => 'wuri',
18410             'vars' => '',
18411             'line' => -11
18412             }, 'Parse::RecDescent::Rule' ),
18413             'occ_type' => bless( {
18414             'impcount' => 0,
18415             'calls' => [
18416             'name'
18417             ],
18418             'changed' => 0,
18419             'opcount' => 0,
18420             'prods' => [
18421             bless( {
18422             'number' => '0',
18423             'strcount' => 0,
18424             'dircount' => 0,
18425             'uncommit' => undef,
18426             'error' => undef,
18427             'patcount' => 0,
18428             'actcount' => 0,
18429             'items' => [
18430             bless( {
18431             'subrule' => 'name',
18432             'matchrule' => 0,
18433             'implicit' => undef,
18434             'argcode' => undef,
18435             'lookahead' => 0,
18436             'line' => -74
18437             }, 'Parse::RecDescent::Subrule' )
18438             ],
18439             'line' => undef
18440             }, 'Parse::RecDescent::Production' )
18441             ],
18442             'name' => 'occ_type',
18443             'vars' => '',
18444             'line' => -74
18445             }, 'Parse::RecDescent::Rule' ),
18446             'resource' => bless( {
18447             'impcount' => 0,
18448             'calls' => [
18449             'uri',
18450             'DATA'
18451             ],
18452             'changed' => 0,
18453             'opcount' => 0,
18454             'prods' => [
18455             bless( {
18456             'number' => '0',
18457             'strcount' => 0,
18458             'dircount' => 0,
18459             'uncommit' => undef,
18460             'error' => undef,
18461             'patcount' => 0,
18462             'actcount' => 1,
18463             'items' => [
18464             bless( {
18465             'subrule' => 'uri',
18466             'matchrule' => 0,
18467             'implicit' => undef,
18468             'argcode' => undef,
18469             'lookahead' => 0,
18470             'line' => -70
18471             }, 'Parse::RecDescent::Subrule' ),
18472             bless( {
18473             'hashname' => '__ACTION1__',
18474             'lookahead' => 0,
18475             'line' => -70,
18476             'code' => '{ $return = new TM::Literal ($item[1], \'xsd:uri\') }'
18477             }, 'Parse::RecDescent::Action' )
18478             ],
18479             'line' => undef
18480             }, 'Parse::RecDescent::Production' ),
18481             bless( {
18482             'number' => '1',
18483             'strcount' => 0,
18484             'dircount' => 0,
18485             'uncommit' => undef,
18486             'error' => undef,
18487             'patcount' => 0,
18488             'actcount' => 1,
18489             'items' => [
18490             bless( {
18491             'subrule' => 'DATA',
18492             'matchrule' => 0,
18493             'implicit' => undef,
18494             'argcode' => undef,
18495             'lookahead' => 0,
18496             'line' => -68
18497             }, 'Parse::RecDescent::Subrule' ),
18498             bless( {
18499             'hashname' => '__ACTION1__',
18500             'lookahead' => 0,
18501             'line' => -68,
18502             'code' => '{ $return = new TM::Literal ($item[1], \'xsd:string\') }'
18503             }, 'Parse::RecDescent::Action' )
18504             ],
18505             'line' => -69
18506             }, 'Parse::RecDescent::Production' )
18507             ],
18508             'name' => 'resource',
18509             'vars' => '',
18510             'line' => -70
18511             }, 'Parse::RecDescent::Rule' ),
18512             'occurrence' => bless( {
18513             'impcount' => 0,
18514             'calls' => [
18515             'type',
18516             'iri_literal',
18517             'scope',
18518             'reifier'
18519             ],
18520             'changed' => 0,
18521             'opcount' => 0,
18522             'prods' => [
18523             bless( {
18524             'number' => '0',
18525             'strcount' => 1,
18526             'dircount' => 0,
18527             'uncommit' => undef,
18528             'error' => undef,
18529             'patcount' => 0,
18530             'actcount' => 1,
18531             'items' => [
18532             bless( {
18533             'subrule' => 'type',
18534             'matchrule' => 0,
18535             'implicit' => undef,
18536             'argcode' => undef,
18537             'lookahead' => 0,
18538             'line' => -264
18539             }, 'Parse::RecDescent::Subrule' ),
18540             bless( {
18541             'pattern' => ':',
18542             'hashname' => '__STRING1__',
18543             'description' => '\':\'',
18544             'lookahead' => 0,
18545             'line' => -264
18546             }, 'Parse::RecDescent::Literal' ),
18547             bless( {
18548             'subrule' => 'iri_literal',
18549             'matchrule' => 0,
18550             'implicit' => undef,
18551             'argcode' => undef,
18552             'lookahead' => 0,
18553             'line' => -264
18554             }, 'Parse::RecDescent::Subrule' ),
18555             bless( {
18556             'subrule' => 'scope',
18557             'expected' => undef,
18558             'min' => 0,
18559             'argcode' => undef,
18560             'max' => 1,
18561             'matchrule' => 0,
18562             'repspec' => '?',
18563             'lookahead' => 0,
18564             'line' => -264
18565             }, 'Parse::RecDescent::Repetition' ),
18566             bless( {
18567             'subrule' => 'reifier',
18568             'expected' => undef,
18569             'min' => 0,
18570             'argcode' => undef,
18571             'max' => 1,
18572             'matchrule' => 0,
18573             'repspec' => '?',
18574             'lookahead' => 0,
18575             'line' => -264
18576             }, 'Parse::RecDescent::Repetition' ),
18577             bless( {
18578             'hashname' => '__ACTION1__',
18579             'lookahead' => 0,
18580             'line' => -263,
18581             'code' => '{
18582             my $type = $item[1];
18583             my $scope = $item[4]->[0] ? $item[4]->[0] : \'us\';
18584              
18585             my ($a) = $store->assert ( bless [ undef, # LID
18586             $scope, # SCOPE
18587             $type, # TYPE
18588             TM->OCC, # KIND
18589             [ \'thing\', \'value\' ], # ROLES
18590             [ $arg[0], $item[3] ],# PLAYERS
18591             undef ], \'Assertion\' );
18592             $store->assert(Assertion->new(kind => TM->ASSOC,
18593             type => \'is-subclass-of\',
18594             roles => [ qw(subclass superclass) ],
18595             players => [ $type, \'occurrence\' ],
18596             scope => undef)) if $type ne \'occurrence\';
18597             $store->assert(Assertion->new(kind => TM->ASSOC,
18598             type => \'isa\',
18599             roles => [ qw(instance class) ],
18600             players => [ $scope, \'scope\' ],
18601             scope => undef)) if $scope ne \'us\';
18602             $store->internalize ($item[5]->[0], $a->[TM->LID]) if $item[5]->[0];
18603             $return = $a;
18604             }'
18605             }, 'Parse::RecDescent::Action' )
18606             ],
18607             'line' => undef
18608             }, 'Parse::RecDescent::Production' )
18609             ],
18610             'name' => 'occurrence',
18611             'vars' => '',
18612             'line' => -264
18613             }, 'Parse::RecDescent::Rule' ),
18614             '_alternation_1_of_production_1_of_rule_string' => bless( {
18615             'impcount' => 0,
18616             'calls' => [
18617             'iri'
18618             ],
18619             'changed' => 0,
18620             'opcount' => 0,
18621             'prods' => [
18622             bless( {
18623             'number' => '0',
18624             'strcount' => 1,
18625             'dircount' => 0,
18626             'uncommit' => undef,
18627             'error' => undef,
18628             'patcount' => 0,
18629             'actcount' => 0,
18630             'items' => [
18631             bless( {
18632             'pattern' => '^^',
18633             'hashname' => '__STRING1__',
18634             'description' => '\'^^\'',
18635             'lookahead' => 0,
18636             'line' => 1
18637             }, 'Parse::RecDescent::Literal' ),
18638             bless( {
18639             'subrule' => 'iri',
18640             'matchrule' => 0,
18641             'implicit' => undef,
18642             'argcode' => undef,
18643             'lookahead' => 0,
18644             'line' => 1
18645             }, 'Parse::RecDescent::Subrule' )
18646             ],
18647             'line' => undef
18648             }, 'Parse::RecDescent::Production' )
18649             ],
18650             'name' => '_alternation_1_of_production_1_of_rule_string',
18651             'vars' => '',
18652             'line' => 1
18653             }, 'Parse::RecDescent::Rule' ),
18654             'version_directive' => bless( {
18655             'impcount' => 0,
18656             'calls' => [
18657             'string'
18658             ],
18659             'changed' => 0,
18660             'opcount' => 0,
18661             'prods' => [
18662             bless( {
18663             'number' => '0',
18664             'strcount' => 1,
18665             'dircount' => 0,
18666             'uncommit' => undef,
18667             'error' => undef,
18668             'patcount' => 0,
18669             'actcount' => 1,
18670             'items' => [
18671             bless( {
18672             'pattern' => '#VERSION',
18673             'hashname' => '__STRING1__',
18674             'description' => '\'#VERSION\'',
18675             'lookahead' => 0,
18676             'line' => -203
18677             }, 'Parse::RecDescent::Literal' ),
18678             bless( {
18679             'subrule' => 'string',
18680             'matchrule' => 0,
18681             'implicit' => undef,
18682             'argcode' => undef,
18683             'lookahead' => 0,
18684             'line' => -203
18685             }, 'Parse::RecDescent::Subrule' ),
18686             bless( {
18687             'hashname' => '__ACTION1__',
18688             'lookahead' => 0,
18689             'line' => -202,
18690             'code' => '{
18691             my $version = $item[2];
18692             $log->logdie (__PACKAGE__ . ": VERSION not supported \'$version\'") unless $version =~ /^1\\.[23]$/;
18693             }'
18694             }, 'Parse::RecDescent::Action' )
18695             ],
18696             'line' => undef
18697             }, 'Parse::RecDescent::Production' )
18698             ],
18699             'name' => 'version_directive',
18700             'vars' => '',
18701             'line' => -205
18702             }, 'Parse::RecDescent::Rule' ),
18703             'indicator' => bless( {
18704             'impcount' => 0,
18705             'calls' => [
18706             'uri'
18707             ],
18708             'changed' => 0,
18709             'opcount' => 0,
18710             'prods' => [
18711             bless( {
18712             'number' => '0',
18713             'strcount' => 1,
18714             'dircount' => 0,
18715             'uncommit' => undef,
18716             'error' => undef,
18717             'patcount' => 0,
18718             'actcount' => 1,
18719             'items' => [
18720             bless( {
18721             'pattern' => '@',
18722             'hashname' => '__STRING1__',
18723             'description' => '\'@\'',
18724             'lookahead' => 0,
18725             'line' => -115
18726             }, 'Parse::RecDescent::Literal' ),
18727             bless( {
18728             'subrule' => 'uri',
18729             'matchrule' => 0,
18730             'implicit' => undef,
18731             'argcode' => undef,
18732             'lookahead' => 0,
18733             'line' => -115
18734             }, 'Parse::RecDescent::Subrule' ),
18735             bless( {
18736             'hashname' => '__ACTION1__',
18737             'lookahead' => 0,
18738             'line' => -115,
18739             'code' => '{ $return = \\ $item[2]; }'
18740             }, 'Parse::RecDescent::Action' )
18741             ],
18742             'line' => undef
18743             }, 'Parse::RecDescent::Production' )
18744             ],
18745             'name' => 'indicator',
18746             'vars' => '',
18747             'line' => -117
18748             }, 'Parse::RecDescent::Rule' ),
18749             'qname' => bless( {
18750             'impcount' => 0,
18751             'calls' => [],
18752             'changed' => 0,
18753             'opcount' => 0,
18754             'prods' => [
18755             bless( {
18756             'number' => '0',
18757             'strcount' => 0,
18758             'dircount' => 0,
18759             'uncommit' => undef,
18760             'error' => undef,
18761             'patcount' => 1,
18762             'actcount' => 1,
18763             'items' => [
18764             bless( {
18765             'pattern' => '(\\w[\\w-]+):(\\w[\\w-]+)',
18766             'hashname' => '__PATTERN1__',
18767             'description' => '/(\\\\w[\\\\w-]+):(\\\\w[\\\\w-]+)/',
18768             'lookahead' => 0,
18769             'rdelim' => '/',
18770             'line' => -315,
18771             'mod' => '',
18772             'ldelim' => '/'
18773             }, 'Parse::RecDescent::Token' ),
18774             bless( {
18775             'hashname' => '__ACTION1__',
18776             'lookahead' => 0,
18777             'line' => -315,
18778             'code' => '{
18779             # ^^^^^^^^^^ ^^^^^^^^^^
18780             # identifier:identifier , but wo blanks
18781             die "undefined prefix \'$item[1]\'" unless $prefixes{$1};
18782             $return = $prefixes{$1}.$2;
18783             }'
18784             }, 'Parse::RecDescent::Action' )
18785             ],
18786             'line' => undef
18787             }, 'Parse::RecDescent::Production' )
18788             ],
18789             'name' => 'qname',
18790             'vars' => '',
18791             'line' => -315
18792             }, 'Parse::RecDescent::Rule' ),
18793             'decimal' => bless( {
18794             'impcount' => 0,
18795             'calls' => [],
18796             'changed' => 0,
18797             'opcount' => 0,
18798             'prods' => [
18799             bless( {
18800             'number' => '0',
18801             'strcount' => 0,
18802             'dircount' => 0,
18803             'uncommit' => undef,
18804             'error' => undef,
18805             'patcount' => 1,
18806             'actcount' => 0,
18807             'items' => [
18808             bless( {
18809             'pattern' => '-?\\d+\\.\\d+',
18810             'hashname' => '__PATTERN1__',
18811             'description' => '/-?\\\\d+\\\\.\\\\d+/',
18812             'lookahead' => 0,
18813             'rdelim' => '/',
18814             'line' => -27,
18815             'mod' => '',
18816             'ldelim' => '/'
18817             }, 'Parse::RecDescent::Token' )
18818             ],
18819             'line' => undef
18820             }, 'Parse::RecDescent::Production' )
18821             ],
18822             'name' => 'decimal',
18823             'vars' => '',
18824             'line' => -27
18825             }, 'Parse::RecDescent::Rule' ),
18826             'basesortdispname' => bless( {
18827             'impcount' => 0,
18828             'calls' => [
18829             'basename'
18830             ],
18831             'changed' => 0,
18832             'opcount' => 0,
18833             'prods' => [
18834             bless( {
18835             'number' => '0',
18836             'strcount' => 1,
18837             'dircount' => 1,
18838             'uncommit' => undef,
18839             'error' => undef,
18840             'patcount' => 0,
18841             'actcount' => 0,
18842             'op' => [],
18843             'items' => [
18844             bless( {
18845             'expected' => '',
18846             'min' => 1,
18847             'name' => '',
18848             'max' => 100000000,
18849             'leftarg' => bless( {
18850             'subrule' => 'basename',
18851             'matchrule' => 0,
18852             'implicit' => undef,
18853             'argcode' => undef,
18854             'lookahead' => 0,
18855             'line' => -104
18856             }, 'Parse::RecDescent::Subrule' ),
18857             'rightarg' => bless( {
18858             'subrule' => 'basename',
18859             'matchrule' => 0,
18860             'implicit' => undef,
18861             'argcode' => undef,
18862             'lookahead' => 0,
18863             'line' => -104
18864             }, 'Parse::RecDescent::Subrule' ),
18865             'hashname' => '__DIRECTIVE1__',
18866             'type' => 'leftop',
18867             'op' => bless( {
18868             'pattern' => ';',
18869             'hashname' => '__STRING1__',
18870             'description' => '\';\'',
18871             'lookahead' => 0,
18872             'line' => -104
18873             }, 'Parse::RecDescent::Literal' )
18874             }, 'Parse::RecDescent::Operator' )
18875             ],
18876             'line' => undef
18877             }, 'Parse::RecDescent::Production' )
18878             ],
18879             'name' => 'basesortdispname',
18880             'vars' => '',
18881             'line' => -104
18882             }, 'Parse::RecDescent::Rule' ),
18883             '_alternation_1_of_production_1_of_rule_include_directive' => bless( {
18884             'impcount' => 0,
18885             'calls' => [
18886             'iri'
18887             ],
18888             'changed' => 0,
18889             'opcount' => 0,
18890             'prods' => [
18891             bless( {
18892             'number' => '0',
18893             'strcount' => 0,
18894             'dircount' => 0,
18895             'uncommit' => undef,
18896             'error' => undef,
18897             'patcount' => 1,
18898             'actcount' => 0,
18899             'items' => [
18900             bless( {
18901             'pattern' => '^inline:.*?\\n',
18902             'hashname' => '__PATTERN1__',
18903             'description' => '/^inline:.*?\\\\n/',
18904             'lookahead' => 0,
18905             'rdelim' => '/',
18906             'line' => 1,
18907             'mod' => '',
18908             'ldelim' => '/'
18909             }, 'Parse::RecDescent::Token' )
18910             ],
18911             'line' => undef
18912             }, 'Parse::RecDescent::Production' ),
18913             bless( {
18914             'number' => '1',
18915             'strcount' => 0,
18916             'dircount' => 0,
18917             'uncommit' => undef,
18918             'error' => undef,
18919             'patcount' => 0,
18920             'actcount' => 0,
18921             'items' => [
18922             bless( {
18923             'subrule' => 'iri',
18924             'matchrule' => 0,
18925             'implicit' => undef,
18926             'argcode' => undef,
18927             'lookahead' => 0,
18928             'line' => 1
18929             }, 'Parse::RecDescent::Subrule' )
18930             ],
18931             'line' => 1
18932             }, 'Parse::RecDescent::Production' )
18933             ],
18934             'name' => '_alternation_1_of_production_1_of_rule_include_directive',
18935             'vars' => '',
18936             'line' => 1
18937             }, 'Parse::RecDescent::Rule' ),
18938             'anonymous_wildcard' => bless( {
18939             'impcount' => 0,
18940             'calls' => [],
18941             'changed' => 0,
18942             'opcount' => 0,
18943             'prods' => [
18944             bless( {
18945             'number' => '0',
18946             'strcount' => 1,
18947             'dircount' => 0,
18948             'uncommit' => undef,
18949             'error' => undef,
18950             'patcount' => 0,
18951             'actcount' => 1,
18952             'items' => [
18953             bless( {
18954             'pattern' => '?',
18955             'hashname' => '__STRING1__',
18956             'description' => '\'?\'',
18957             'lookahead' => 0,
18958             'line' => -339
18959             }, 'Parse::RecDescent::Literal' ),
18960             bless( {
18961             'hashname' => '__ACTION1__',
18962             'lookahead' => 0,
18963             'line' => -339,
18964             'code' => '{ $return = $store->internalize (sprintf "uuid-%010d", $TM::toplet_ctr++); }'
18965             }, 'Parse::RecDescent::Action' )
18966             ],
18967             'line' => undef
18968             }, 'Parse::RecDescent::Production' )
18969             ],
18970             'name' => 'anonymous_wildcard',
18971             'vars' => '',
18972             'line' => -339
18973             }, 'Parse::RecDescent::Rule' ),
18974             '_alternation_1_of_production_1_of_rule_topic_tail' => bless( {
18975             'impcount' => 0,
18976             'calls' => [
18977             'instance_of',
18978             'kind_of',
18979             'topic_template_invocation',
18980             'subject_identifier',
18981             'subject_locator',
18982             'assignment'
18983             ],
18984             'changed' => 0,
18985             'opcount' => 0,
18986             'prods' => [
18987             bless( {
18988             'number' => '0',
18989             'strcount' => 0,
18990             'dircount' => 0,
18991             'uncommit' => undef,
18992             'error' => undef,
18993             'patcount' => 0,
18994             'actcount' => 0,
18995             'items' => [
18996             bless( {
18997             'subrule' => 'instance_of',
18998             'matchrule' => 0,
18999             'implicit' => undef,
19000             'argcode' => '[$arg[0]]',
19001             'lookahead' => 0,
19002             'line' => 1
19003             }, 'Parse::RecDescent::Subrule' )
19004             ],
19005             'line' => undef
19006             }, 'Parse::RecDescent::Production' ),
19007             bless( {
19008             'number' => '1',
19009             'strcount' => 0,
19010             'dircount' => 0,
19011             'uncommit' => undef,
19012             'error' => undef,
19013             'patcount' => 0,
19014             'actcount' => 0,
19015             'items' => [
19016             bless( {
19017             'subrule' => 'kind_of',
19018             'matchrule' => 0,
19019             'implicit' => undef,
19020             'argcode' => '[$arg[0]]',
19021             'lookahead' => 0,
19022             'line' => 2
19023             }, 'Parse::RecDescent::Subrule' )
19024             ],
19025             'line' => 2
19026             }, 'Parse::RecDescent::Production' ),
19027             bless( {
19028             'number' => '2',
19029             'strcount' => 0,
19030             'dircount' => 0,
19031             'uncommit' => undef,
19032             'error' => undef,
19033             'patcount' => 0,
19034             'actcount' => 0,
19035             'items' => [
19036             bless( {
19037             'subrule' => 'topic_template_invocation',
19038             'matchrule' => 0,
19039             'implicit' => undef,
19040             'argcode' => '[$arg[0]]',
19041             'lookahead' => 0,
19042             'line' => 3
19043             }, 'Parse::RecDescent::Subrule' )
19044             ],
19045             'line' => 3
19046             }, 'Parse::RecDescent::Production' ),
19047             bless( {
19048             'number' => '3',
19049             'strcount' => 0,
19050             'dircount' => 0,
19051             'uncommit' => undef,
19052             'error' => undef,
19053             'patcount' => 0,
19054             'actcount' => 2,
19055             'items' => [
19056             bless( {
19057             'subrule' => 'subject_identifier',
19058             'matchrule' => 0,
19059             'implicit' => undef,
19060             'argcode' => undef,
19061             'lookahead' => 0,
19062             'line' => 5
19063             }, 'Parse::RecDescent::Subrule' ),
19064             bless( {
19065             'hashname' => '__ACTION1__',
19066             'lookahead' => 0,
19067             'line' => 5,
19068             'code' => '{ $return = undef if $text =~ /^\\s*:/s }'
19069             }, 'Parse::RecDescent::Action' ),
19070             bless( {
19071             'hashname' => '__ACTION2__',
19072             'lookahead' => 0,
19073             'line' => 5,
19074             'code' => '{ $store->internalize ($arg[0], $item[1]); }'
19075             }, 'Parse::RecDescent::Action' )
19076             ],
19077             'line' => 4
19078             }, 'Parse::RecDescent::Production' ),
19079             bless( {
19080             'number' => '4',
19081             'strcount' => 0,
19082             'dircount' => 0,
19083             'uncommit' => undef,
19084             'error' => undef,
19085             'patcount' => 0,
19086             'actcount' => 2,
19087             'items' => [
19088             bless( {
19089             'subrule' => 'subject_locator',
19090             'matchrule' => 0,
19091             'implicit' => undef,
19092             'argcode' => undef,
19093             'lookahead' => 0,
19094             'line' => 7
19095             }, 'Parse::RecDescent::Subrule' ),
19096             bless( {
19097             'hashname' => '__ACTION1__',
19098             'lookahead' => 0,
19099             'line' => 7,
19100             'code' => '{ $return = undef if $text =~ /^\\s*:/s }'
19101             }, 'Parse::RecDescent::Action' ),
19102             bless( {
19103             'hashname' => '__ACTION2__',
19104             'lookahead' => 0,
19105             'line' => 8,
19106             'code' => '{ $store->internalize ($arg[0], $item[1]); }'
19107             }, 'Parse::RecDescent::Action' )
19108             ],
19109             'line' => 7
19110             }, 'Parse::RecDescent::Production' ),
19111             bless( {
19112             'number' => '5',
19113             'strcount' => 0,
19114             'dircount' => 0,
19115             'uncommit' => undef,
19116             'error' => undef,
19117             'patcount' => 0,
19118             'actcount' => 0,
19119             'items' => [
19120             bless( {
19121             'subrule' => 'assignment',
19122             'matchrule' => 0,
19123             'implicit' => undef,
19124             'argcode' => '[$arg[0]]',
19125             'lookahead' => 0,
19126             'line' => 10
19127             }, 'Parse::RecDescent::Subrule' )
19128             ],
19129             'line' => 9
19130             }, 'Parse::RecDescent::Production' )
19131             ],
19132             'name' => '_alternation_1_of_production_1_of_rule_topic_tail',
19133             'vars' => '',
19134             'line' => 1
19135             }, 'Parse::RecDescent::Rule' ),
19136             'literal' => bless( {
19137             'impcount' => 0,
19138             'calls' => [
19139             'decimal',
19140             'integer',
19141             'boolean',
19142             'wuri',
19143             'string'
19144             ],
19145             'changed' => 0,
19146             'opcount' => 0,
19147             'prods' => [
19148             bless( {
19149             'number' => '0',
19150             'strcount' => 0,
19151             'dircount' => 0,
19152             'uncommit' => undef,
19153             'error' => undef,
19154             'patcount' => 0,
19155             'actcount' => 1,
19156             'items' => [
19157             bless( {
19158             'subrule' => 'decimal',
19159             'matchrule' => 0,
19160             'implicit' => undef,
19161             'argcode' => undef,
19162             'lookahead' => 0,
19163             'line' => -36
19164             }, 'Parse::RecDescent::Subrule' ),
19165             bless( {
19166             'hashname' => '__ACTION1__',
19167             'lookahead' => 0,
19168             'line' => -36,
19169             'code' => '{ $return = new TM::Literal ($item[1], TM::Literal->DECIMAL); }'
19170             }, 'Parse::RecDescent::Action' )
19171             ],
19172             'line' => undef
19173             }, 'Parse::RecDescent::Production' ),
19174             bless( {
19175             'number' => '1',
19176             'strcount' => 0,
19177             'dircount' => 0,
19178             'uncommit' => undef,
19179             'error' => undef,
19180             'patcount' => 0,
19181             'actcount' => 1,
19182             'items' => [
19183             bless( {
19184             'subrule' => 'integer',
19185             'matchrule' => 0,
19186             'implicit' => undef,
19187             'argcode' => undef,
19188             'lookahead' => 0,
19189             'line' => -35
19190             }, 'Parse::RecDescent::Subrule' ),
19191             bless( {
19192             'hashname' => '__ACTION1__',
19193             'lookahead' => 0,
19194             'line' => -35,
19195             'code' => '{ $return = new TM::Literal ($item[1], TM::Literal->INTEGER); }'
19196             }, 'Parse::RecDescent::Action' )
19197             ],
19198             'line' => -35
19199             }, 'Parse::RecDescent::Production' ),
19200             bless( {
19201             'number' => '2',
19202             'strcount' => 0,
19203             'dircount' => 0,
19204             'uncommit' => undef,
19205             'error' => undef,
19206             'patcount' => 0,
19207             'actcount' => 1,
19208             'items' => [
19209             bless( {
19210             'subrule' => 'boolean',
19211             'matchrule' => 0,
19212             'implicit' => undef,
19213             'argcode' => undef,
19214             'lookahead' => 0,
19215             'line' => -34
19216             }, 'Parse::RecDescent::Subrule' ),
19217             bless( {
19218             'hashname' => '__ACTION1__',
19219             'lookahead' => 0,
19220             'line' => -34,
19221             'code' => '{ $return = new TM::Literal ($item[1], TM::Literal->BOOLEAN); }'
19222             }, 'Parse::RecDescent::Action' )
19223             ],
19224             'line' => -34
19225             }, 'Parse::RecDescent::Production' ),
19226             bless( {
19227             'number' => '3',
19228             'strcount' => 0,
19229             'dircount' => 0,
19230             'uncommit' => undef,
19231             'error' => undef,
19232             'patcount' => 0,
19233             'actcount' => 1,
19234             'items' => [
19235             bless( {
19236             'subrule' => 'wuri',
19237             'matchrule' => 0,
19238             'implicit' => undef,
19239             'argcode' => undef,
19240             'lookahead' => 0,
19241             'line' => -33
19242             }, 'Parse::RecDescent::Subrule' ),
19243             bless( {
19244             'hashname' => '__ACTION1__',
19245             'lookahead' => 0,
19246             'line' => -33,
19247             'code' => '{ $return = new TM::Literal ($item[1], TM::Literal->URI); }'
19248             }, 'Parse::RecDescent::Action' )
19249             ],
19250             'line' => -33
19251             }, 'Parse::RecDescent::Production' ),
19252             bless( {
19253             'number' => '4',
19254             'strcount' => 0,
19255             'dircount' => 0,
19256             'uncommit' => undef,
19257             'error' => undef,
19258             'patcount' => 0,
19259             'actcount' => 0,
19260             'items' => [
19261             bless( {
19262             'subrule' => 'string',
19263             'matchrule' => 0,
19264             'implicit' => undef,
19265             'argcode' => undef,
19266             'lookahead' => 0,
19267             'line' => -32
19268             }, 'Parse::RecDescent::Subrule' )
19269             ],
19270             'line' => -32
19271             }, 'Parse::RecDescent::Production' )
19272             ],
19273             'name' => 'literal',
19274             'vars' => '',
19275             'line' => -36
19276             }, 'Parse::RecDescent::Rule' ),
19277             'prefix_directive' => bless( {
19278             'impcount' => 0,
19279             'calls' => [
19280             'identifier',
19281             'reference'
19282             ],
19283             'changed' => 0,
19284             'opcount' => 0,
19285             'prods' => [
19286             bless( {
19287             'number' => '0',
19288             'strcount' => 1,
19289             'dircount' => 0,
19290             'uncommit' => undef,
19291             'error' => undef,
19292             'patcount' => 0,
19293             'actcount' => 1,
19294             'items' => [
19295             bless( {
19296             'pattern' => '%prefix',
19297             'hashname' => '__STRING1__',
19298             'description' => '\'%prefix\'',
19299             'lookahead' => 0,
19300             'line' => -475
19301             }, 'Parse::RecDescent::Literal' ),
19302             bless( {
19303             'subrule' => 'identifier',
19304             'matchrule' => 0,
19305             'implicit' => undef,
19306             'argcode' => undef,
19307             'lookahead' => 0,
19308             'line' => -475
19309             }, 'Parse::RecDescent::Subrule' ),
19310             bless( {
19311             'subrule' => 'reference',
19312             'matchrule' => 0,
19313             'implicit' => undef,
19314             'argcode' => undef,
19315             'lookahead' => 0,
19316             'line' => -475
19317             }, 'Parse::RecDescent::Subrule' ),
19318             bless( {
19319             'hashname' => '__ACTION1__',
19320             'lookahead' => 0,
19321             'line' => -475,
19322             'code' => '{
19323             my $uri = $item[3];
19324             $prefixes{$item[2]} = $uri;
19325             }'
19326             }, 'Parse::RecDescent::Action' )
19327             ],
19328             'line' => undef
19329             }, 'Parse::RecDescent::Production' )
19330             ],
19331             'name' => 'prefix_directive',
19332             'vars' => '',
19333             'line' => -475
19334             }, 'Parse::RecDescent::Rule' ),
19335             '_alternation_1_of_production_1_of_rule_topicmapid_directive' => bless( {
19336             'impcount' => 0,
19337             'calls' => [
19338             'name',
19339             'reify'
19340             ],
19341             'changed' => 0,
19342             'opcount' => 0,
19343             'prods' => [
19344             bless( {
19345             'number' => '0',
19346             'strcount' => 0,
19347             'dircount' => 0,
19348             'uncommit' => undef,
19349             'error' => undef,
19350             'patcount' => 0,
19351             'actcount' => 0,
19352             'items' => [
19353             bless( {
19354             'subrule' => 'name',
19355             'matchrule' => 0,
19356             'implicit' => undef,
19357             'argcode' => undef,
19358             'lookahead' => 0,
19359             'line' => 1
19360             }, 'Parse::RecDescent::Subrule' )
19361             ],
19362             'line' => undef
19363             }, 'Parse::RecDescent::Production' ),
19364             bless( {
19365             'number' => '1',
19366             'strcount' => 0,
19367             'dircount' => 0,
19368             'uncommit' => undef,
19369             'error' => undef,
19370             'patcount' => 0,
19371             'actcount' => 0,
19372             'items' => [
19373             bless( {
19374             'subrule' => 'reify',
19375             'matchrule' => 0,
19376             'implicit' => undef,
19377             'argcode' => undef,
19378             'lookahead' => 0,
19379             'line' => 1
19380             }, 'Parse::RecDescent::Subrule' )
19381             ],
19382             'line' => 1
19383             }, 'Parse::RecDescent::Production' )
19384             ],
19385             'name' => '_alternation_1_of_production_1_of_rule_topicmapid_directive',
19386             'vars' => '',
19387             'line' => 1
19388             }, 'Parse::RecDescent::Rule' ),
19389             'identifier' => bless( {
19390             'impcount' => 0,
19391             'calls' => [],
19392             'changed' => 0,
19393             'opcount' => 0,
19394             'prods' => [
19395             bless( {
19396             'number' => '0',
19397             'strcount' => 0,
19398             'dircount' => 0,
19399             'uncommit' => undef,
19400             'error' => undef,
19401             'patcount' => 1,
19402             'actcount' => 0,
19403             'items' => [
19404             bless( {
19405             'pattern' => '\\w[\\w-]*',
19406             'hashname' => '__PATTERN1__',
19407             'description' => '/\\\\w[\\\\w-]*/',
19408             'lookahead' => 0,
19409             'rdelim' => '/',
19410             'line' => -330,
19411             'mod' => '',
19412             'ldelim' => '/'
19413             }, 'Parse::RecDescent::Token' )
19414             ],
19415             'line' => undef
19416             }, 'Parse::RecDescent::Production' )
19417             ],
19418             'name' => 'identifier',
19419             'vars' => '',
19420             'line' => -330
19421             }, 'Parse::RecDescent::Rule' ),
19422             'kind_of' => bless( {
19423             'impcount' => 0,
19424             'calls' => [
19425             'topic_ref'
19426             ],
19427             'changed' => 0,
19428             'opcount' => 0,
19429             'prods' => [
19430             bless( {
19431             'number' => '0',
19432             'strcount' => 1,
19433             'dircount' => 0,
19434             'uncommit' => undef,
19435             'error' => undef,
19436             'patcount' => 0,
19437             'actcount' => 1,
19438             'items' => [
19439             bless( {
19440             'pattern' => 'ako',
19441             'hashname' => '__STRING1__',
19442             'description' => '\'ako\'',
19443             'lookahead' => 0,
19444             'line' => -218
19445             }, 'Parse::RecDescent::Literal' ),
19446             bless( {
19447             'subrule' => 'topic_ref',
19448             'matchrule' => 0,
19449             'implicit' => undef,
19450             'argcode' => undef,
19451             'lookahead' => 0,
19452             'line' => -218
19453             }, 'Parse::RecDescent::Subrule' ),
19454             bless( {
19455             'hashname' => '__ACTION1__',
19456             'lookahead' => 0,
19457             'line' => -218,
19458             'code' => '{ $store->assert ( [ undef,
19459             undef,
19460             \'is-subclass-of\',
19461             undef,
19462             [ qw(subclass superclass) ],
19463             [ $arg[0], $item[2] ],
19464             ] ); }'
19465             }, 'Parse::RecDescent::Action' )
19466             ],
19467             'line' => undef
19468             }, 'Parse::RecDescent::Production' )
19469             ],
19470             'name' => 'kind_of',
19471             'vars' => '',
19472             'line' => -218
19473             }, 'Parse::RecDescent::Rule' ),
19474             'integer' => bless( {
19475             'impcount' => 0,
19476             'calls' => [],
19477             'changed' => 0,
19478             'opcount' => 0,
19479             'prods' => [
19480             bless( {
19481             'number' => '0',
19482             'strcount' => 0,
19483             'dircount' => 0,
19484             'uncommit' => undef,
19485             'error' => undef,
19486             'patcount' => 1,
19487             'actcount' => 0,
19488             'items' => [
19489             bless( {
19490             'pattern' => '-?\\d+',
19491             'hashname' => '__PATTERN1__',
19492             'description' => '/-?\\\\d+/',
19493             'lookahead' => 0,
19494             'rdelim' => '/',
19495             'line' => -29,
19496             'mod' => '',
19497             'ldelim' => '/'
19498             }, 'Parse::RecDescent::Token' )
19499             ],
19500             'line' => undef
19501             }, 'Parse::RecDescent::Production' )
19502             ],
19503             'name' => 'integer',
19504             'vars' => '',
19505             'line' => -31
19506             }, 'Parse::RecDescent::Rule' ),
19507             'topic_template_invocation' => bless( {
19508             'impcount' => 0,
19509             'calls' => [
19510             'identifier',
19511             'argument'
19512             ],
19513             'changed' => 0,
19514             'opcount' => 0,
19515             'prods' => [
19516             bless( {
19517             'number' => '0',
19518             'strcount' => 2,
19519             'dircount' => 1,
19520             'uncommit' => undef,
19521             'error' => undef,
19522             'patcount' => 1,
19523             'actcount' => 2,
19524             'op' => [],
19525             'items' => [
19526             bless( {
19527             'subrule' => 'identifier',
19528             'matchrule' => 0,
19529             'implicit' => undef,
19530             'argcode' => undef,
19531             'lookahead' => 0,
19532             'line' => -431
19533             }, 'Parse::RecDescent::Subrule' ),
19534             bless( {
19535             'hashname' => '__ACTION1__',
19536             'lookahead' => 0,
19537             'line' => -431,
19538             'code' => '{ $templates{$item[1]} }'
19539             }, 'Parse::RecDescent::Action' ),
19540             bless( {
19541             'pattern' => '(',
19542             'hashname' => '__STRING1__',
19543             'description' => '\'(\'',
19544             'lookahead' => 0,
19545             'line' => -430
19546             }, 'Parse::RecDescent::Literal' ),
19547             bless( {
19548             'expected' => '',
19549             'min' => 1,
19550             'name' => '\'argument(s)\'',
19551             'max' => 100000000,
19552             'leftarg' => bless( {
19553             'subrule' => 'argument',
19554             'matchrule' => 0,
19555             'implicit' => undef,
19556             'argcode' => undef,
19557             'lookahead' => 0,
19558             'line' => -430
19559             }, 'Parse::RecDescent::Subrule' ),
19560             'rightarg' => bless( {
19561             'subrule' => 'argument',
19562             'matchrule' => 0,
19563             'implicit' => undef,
19564             'argcode' => undef,
19565             'lookahead' => 0,
19566             'line' => -430
19567             }, 'Parse::RecDescent::Subrule' ),
19568             'hashname' => '__DIRECTIVE1__',
19569             'type' => 'leftop',
19570             'op' => bless( {
19571             'pattern' => ',',
19572             'hashname' => '__PATTERN1__',
19573             'description' => '/,/',
19574             'lookahead' => 0,
19575             'rdelim' => '/',
19576             'line' => -430,
19577             'mod' => '',
19578             'ldelim' => '/'
19579             }, 'Parse::RecDescent::Token' )
19580             }, 'Parse::RecDescent::Operator' ),
19581             bless( {
19582             'pattern' => ')',
19583             'hashname' => '__STRING2__',
19584             'description' => '\')\'',
19585             'lookahead' => 0,
19586             'line' => -430
19587             }, 'Parse::RecDescent::Literal' ),
19588             bless( {
19589             'hashname' => '__ACTION2__',
19590             'lookahead' => 0,
19591             'line' => -430,
19592             'code' => '{
19593             my $tmpl = $templates{$item[1]};
19594             # warn Dumper $templates{$item[1]};
19595             # warn Dumper $item[4];
19596              
19597             my $bu = $store->baseuri;
19598             $arg[0] =~ s/^$bu//; # pretend internal identifier
19599             unshift @{ $item[4] }, $arg[0]; # add topic as first param
19600              
19601             $text .= "\\n\\n%backup\\n\\n" . _expand_tmpl ($tmpl, $item[4]) . "\\n\\n%restore\\n\\n";
19602             $return = 1;
19603              
19604             sub _expand_tmpl {
19605             my $tmpl = shift;
19606             my $name = $tmpl->{name};
19607             my $body = $tmpl->{body};
19608             my $params = $tmpl->{params};
19609             my $args = shift;
19610             my %P; # formal -> actual
19611             foreach my $fp (@$params) {
19612             $P{$fp} = shift @$args
19613             or die "too few arguments for \'$name\'";
19614             }
19615             die "too many arguments for \'$name\'" if @$args;
19616              
19617             foreach my $p (keys %P) {
19618             $p =~ s/\\$//; # remove $, so that regexp below works
19619             $body =~ s/\\$$p/$P{\'$\'.$p}/g;
19620             }
19621             return "\\n" . $body . "\\n"; # extend the text at the end;
19622             }
19623             }'
19624             }, 'Parse::RecDescent::Action' )
19625             ],
19626             'line' => undef
19627             }, 'Parse::RecDescent::Production' )
19628             ],
19629             'name' => 'topic_template_invocation',
19630             'vars' => '',
19631             'line' => -432
19632             }, 'Parse::RecDescent::Rule' ),
19633             'startrule' => bless( {
19634             'impcount' => 0,
19635             'calls' => [
19636             'topicmap'
19637             ],
19638             'changed' => 0,
19639             'opcount' => 0,
19640             'prods' => [
19641             bless( {
19642             'number' => '0',
19643             'strcount' => 0,
19644             'dircount' => 0,
19645             'uncommit' => undef,
19646             'error' => undef,
19647             'patcount' => 0,
19648             'actcount' => 1,
19649             'items' => [
19650             bless( {
19651             'hashname' => '__ACTION1__',
19652             'lookahead' => 0,
19653             'line' => 20,
19654             'code' => '{ $store = $arg[0];
19655             $log = $arg[1];
19656             $implicits = $arg[2];
19657             %prefixes = (\'xsd\' => TM::Literal->XSD);
19658             %templates = ();
19659             %wildcards = ();
19660             }'
19661             }, 'Parse::RecDescent::Action' ),
19662             bless( {
19663             'subrule' => 'topicmap',
19664             'matchrule' => 0,
19665             'implicit' => undef,
19666             'argcode' => undef,
19667             'lookahead' => 0,
19668             'line' => 27
19669             }, 'Parse::RecDescent::Subrule' )
19670             ],
19671             'line' => undef
19672             }, 'Parse::RecDescent::Production' )
19673             ],
19674             'name' => 'startrule',
19675             'vars' => '',
19676             'line' => 18
19677             }, 'Parse::RecDescent::Rule' ),
19678             '_alternation_1_of_production_2_of_rule_string' => bless( {
19679             'impcount' => 0,
19680             'calls' => [
19681             'iri'
19682             ],
19683             'changed' => 0,
19684             'opcount' => 0,
19685             'prods' => [
19686             bless( {
19687             'number' => '0',
19688             'strcount' => 1,
19689             'dircount' => 0,
19690             'uncommit' => undef,
19691             'error' => undef,
19692             'patcount' => 0,
19693             'actcount' => 0,
19694             'items' => [
19695             bless( {
19696             'pattern' => '^^',
19697             'hashname' => '__STRING1__',
19698             'description' => '\'^^\'',
19699             'lookahead' => 0,
19700             'line' => 1
19701             }, 'Parse::RecDescent::Literal' ),
19702             bless( {
19703             'subrule' => 'iri',
19704             'matchrule' => 0,
19705             'implicit' => undef,
19706             'argcode' => undef,
19707             'lookahead' => 0,
19708             'line' => 1
19709             }, 'Parse::RecDescent::Subrule' )
19710             ],
19711             'line' => undef
19712             }, 'Parse::RecDescent::Production' )
19713             ],
19714             'name' => '_alternation_1_of_production_2_of_rule_string',
19715             'vars' => '',
19716             'line' => 1
19717             }, 'Parse::RecDescent::Rule' ),
19718             'roles' => bless( {
19719             'impcount' => 0,
19720             'calls' => [
19721             'role'
19722             ],
19723             'changed' => 0,
19724             'opcount' => 0,
19725             'prods' => [
19726             bless( {
19727             'number' => '0',
19728             'strcount' => 0,
19729             'dircount' => 1,
19730             'uncommit' => undef,
19731             'error' => undef,
19732             'patcount' => 1,
19733             'actcount' => 0,
19734             'op' => [],
19735             'items' => [
19736             bless( {
19737             'expected' => '',
19738             'min' => 1,
19739             'name' => '\'role(s)\'',
19740             'max' => 100000000,
19741             'leftarg' => bless( {
19742             'subrule' => 'role',
19743             'matchrule' => 0,
19744             'implicit' => undef,
19745             'argcode' => undef,
19746             'lookahead' => 0,
19747             'line' => -361
19748             }, 'Parse::RecDescent::Subrule' ),
19749             'rightarg' => bless( {
19750             'subrule' => 'role',
19751             'matchrule' => 0,
19752             'implicit' => undef,
19753             'argcode' => undef,
19754             'lookahead' => 0,
19755             'line' => -361
19756             }, 'Parse::RecDescent::Subrule' ),
19757             'hashname' => '__DIRECTIVE1__',
19758             'type' => 'leftop',
19759             'op' => bless( {
19760             'pattern' => ',',
19761             'hashname' => '__PATTERN1__',
19762             'description' => '/,/',
19763             'lookahead' => 0,
19764             'rdelim' => '/',
19765             'line' => -361,
19766             'mod' => '',
19767             'ldelim' => '/'
19768             }, 'Parse::RecDescent::Token' )
19769             }, 'Parse::RecDescent::Operator' )
19770             ],
19771             'line' => undef
19772             }, 'Parse::RecDescent::Production' )
19773             ],
19774             'name' => 'roles',
19775             'vars' => '',
19776             'line' => -361
19777             }, 'Parse::RecDescent::Rule' ),
19778             'template' => bless( {
19779             'impcount' => 0,
19780             'calls' => [
19781             'identifier',
19782             'parameters'
19783             ],
19784             'changed' => 0,
19785             'opcount' => 0,
19786             'prods' => [
19787             bless( {
19788             'number' => '0',
19789             'strcount' => 2,
19790             'dircount' => 0,
19791             'uncommit' => undef,
19792             'error' => undef,
19793             'patcount' => 1,
19794             'actcount' => 1,
19795             'items' => [
19796             bless( {
19797             'pattern' => 'def',
19798             'hashname' => '__STRING1__',
19799             'description' => '\'def\'',
19800             'lookahead' => 0,
19801             'line' => -447
19802             }, 'Parse::RecDescent::Literal' ),
19803             bless( {
19804             'subrule' => 'identifier',
19805             'matchrule' => 0,
19806             'implicit' => undef,
19807             'argcode' => undef,
19808             'lookahead' => 0,
19809             'line' => -447
19810             }, 'Parse::RecDescent::Subrule' ),
19811             bless( {
19812             'subrule' => 'parameters',
19813             'matchrule' => 0,
19814             'implicit' => undef,
19815             'argcode' => undef,
19816             'lookahead' => 0,
19817             'line' => -447
19818             }, 'Parse::RecDescent::Subrule' ),
19819             bless( {
19820             'pattern' => '(.*?)(?=\\bend\\n)',
19821             'hashname' => '__PATTERN1__',
19822             'description' => '/(.*?)(?=\\\\bend\\\\n)/s',
19823             'lookahead' => 0,
19824             'rdelim' => '/',
19825             'line' => -447,
19826             'mod' => 's',
19827             'ldelim' => '/'
19828             }, 'Parse::RecDescent::Token' ),
19829             bless( {
19830             'pattern' => 'end',
19831             'hashname' => '__STRING2__',
19832             'description' => '\'end\'',
19833             'lookahead' => 0,
19834             'line' => -447
19835             }, 'Parse::RecDescent::Literal' ),
19836             bless( {
19837             'hashname' => '__ACTION1__',
19838             'lookahead' => 0,
19839             'line' => -447,
19840             'code' => '{
19841             my $return = {
19842             name => $item[2],
19843             params => $item[3],
19844             body => $item[4],
19845             };
19846             $templates{$return->{name}}
19847             and die "template \'".$return->{name}."\' already defined";
19848             $templates{$return->{name}} = $return;
19849             }'
19850             }, 'Parse::RecDescent::Action' )
19851             ],
19852             'line' => undef
19853             }, 'Parse::RecDescent::Production' )
19854             ],
19855             'name' => 'template',
19856             'vars' => '',
19857             'line' => -449
19858             }, 'Parse::RecDescent::Rule' ),
19859             'assignment' => bless( {
19860             'impcount' => 0,
19861             'calls' => [
19862             'name',
19863             'occurrence'
19864             ],
19865             'changed' => 0,
19866             'opcount' => 0,
19867             'prods' => [
19868             bless( {
19869             'number' => '0',
19870             'strcount' => 0,
19871             'dircount' => 0,
19872             'uncommit' => undef,
19873             'error' => undef,
19874             'patcount' => 0,
19875             'actcount' => 0,
19876             'items' => [
19877             bless( {
19878             'subrule' => 'name',
19879             'matchrule' => 0,
19880             'implicit' => undef,
19881             'argcode' => '[$arg[0]]',
19882             'lookahead' => 0,
19883             'line' => -295
19884             }, 'Parse::RecDescent::Subrule' )
19885             ],
19886             'line' => undef
19887             }, 'Parse::RecDescent::Production' ),
19888             bless( {
19889             'number' => '1',
19890             'strcount' => 0,
19891             'dircount' => 0,
19892             'uncommit' => undef,
19893             'error' => undef,
19894             'patcount' => 0,
19895             'actcount' => 0,
19896             'items' => [
19897             bless( {
19898             'subrule' => 'occurrence',
19899             'matchrule' => 0,
19900             'implicit' => undef,
19901             'argcode' => '[$arg[0]]',
19902             'lookahead' => 0,
19903             'line' => -294
19904             }, 'Parse::RecDescent::Subrule' )
19905             ],
19906             'line' => -294
19907             }, 'Parse::RecDescent::Production' )
19908             ],
19909             'name' => 'assignment',
19910             'vars' => '',
19911             'line' => -295
19912             }, 'Parse::RecDescent::Rule' ),
19913             'iri_literal' => bless( {
19914             'impcount' => 0,
19915             'calls' => [
19916             'literal',
19917             'iri'
19918             ],
19919             'changed' => 0,
19920             'opcount' => 0,
19921             'prods' => [
19922             bless( {
19923             'number' => '0',
19924             'strcount' => 0,
19925             'dircount' => 0,
19926             'uncommit' => undef,
19927             'error' => undef,
19928             'patcount' => 0,
19929             'actcount' => 0,
19930             'items' => [
19931             bless( {
19932             'subrule' => 'literal',
19933             'matchrule' => 0,
19934             'implicit' => undef,
19935             'argcode' => undef,
19936             'lookahead' => 0,
19937             'line' => -236
19938             }, 'Parse::RecDescent::Subrule' )
19939             ],
19940             'line' => undef
19941             }, 'Parse::RecDescent::Production' ),
19942             bless( {
19943             'number' => '1',
19944             'strcount' => 0,
19945             'dircount' => 0,
19946             'uncommit' => undef,
19947             'error' => undef,
19948             'patcount' => 0,
19949             'actcount' => 1,
19950             'items' => [
19951             bless( {
19952             'subrule' => 'iri',
19953             'matchrule' => 0,
19954             'implicit' => undef,
19955             'argcode' => undef,
19956             'lookahead' => 0,
19957             'line' => -235
19958             }, 'Parse::RecDescent::Subrule' ),
19959             bless( {
19960             'hashname' => '__ACTION1__',
19961             'lookahead' => 0,
19962             'line' => -235,
19963             'code' => '{ $return = new TM::Literal ($item[1], TM::Literal->URI); }'
19964             }, 'Parse::RecDescent::Action' )
19965             ],
19966             'line' => -235
19967             }, 'Parse::RecDescent::Production' )
19968             ],
19969             'name' => 'iri_literal',
19970             'vars' => '',
19971             'line' => -236
19972             }, 'Parse::RecDescent::Rule' ),
19973             'subject_identifier' => bless( {
19974             'impcount' => 0,
19975             'calls' => [
19976             'iri'
19977             ],
19978             'changed' => 0,
19979             'opcount' => 0,
19980             'prods' => [
19981             bless( {
19982             'number' => '0',
19983             'strcount' => 0,
19984             'dircount' => 0,
19985             'uncommit' => undef,
19986             'error' => undef,
19987             'patcount' => 0,
19988             'actcount' => 1,
19989             'items' => [
19990             bless( {
19991             'subrule' => 'iri',
19992             'matchrule' => 0,
19993             'implicit' => undef,
19994             'argcode' => undef,
19995             'lookahead' => 0,
19996             'line' => -319
19997             }, 'Parse::RecDescent::Subrule' ),
19998             bless( {
19999             'hashname' => '__ACTION1__',
20000             'lookahead' => 0,
20001             'line' => -319,
20002             'code' => '{ $return = \\ $item[1]; }'
20003             }, 'Parse::RecDescent::Action' )
20004             ],
20005             'line' => undef
20006             }, 'Parse::RecDescent::Production' )
20007             ],
20008             'name' => 'subject_identifier',
20009             'vars' => '',
20010             'line' => -319
20011             }, 'Parse::RecDescent::Rule' ),
20012             'parameters' => bless( {
20013             'impcount' => 0,
20014             'calls' => [
20015             'variable'
20016             ],
20017             'changed' => 0,
20018             'opcount' => 0,
20019             'prods' => [
20020             bless( {
20021             'number' => '0',
20022             'strcount' => 2,
20023             'dircount' => 1,
20024             'uncommit' => undef,
20025             'error' => undef,
20026             'patcount' => 1,
20027             'actcount' => 1,
20028             'op' => [],
20029             'items' => [
20030             bless( {
20031             'pattern' => '(',
20032             'hashname' => '__STRING1__',
20033             'description' => '\'(\'',
20034             'lookahead' => 0,
20035             'line' => -436
20036             }, 'Parse::RecDescent::Literal' ),
20037             bless( {
20038             'expected' => '',
20039             'min' => 0,
20040             'name' => '\'variable(s?)\'',
20041             'max' => 100000000,
20042             'leftarg' => bless( {
20043             'subrule' => 'variable',
20044             'matchrule' => 0,
20045             'implicit' => undef,
20046             'argcode' => undef,
20047             'lookahead' => 0,
20048             'line' => -436
20049             }, 'Parse::RecDescent::Subrule' ),
20050             'rightarg' => bless( {
20051             'subrule' => 'variable',
20052             'matchrule' => 0,
20053             'implicit' => undef,
20054             'argcode' => undef,
20055             'lookahead' => 0,
20056             'line' => -436
20057             }, 'Parse::RecDescent::Subrule' ),
20058             'hashname' => '__DIRECTIVE1__',
20059             'type' => 'leftop',
20060             'op' => bless( {
20061             'pattern' => ',',
20062             'hashname' => '__PATTERN1__',
20063             'description' => '/,/',
20064             'lookahead' => 0,
20065             'rdelim' => '/',
20066             'line' => -436,
20067             'mod' => '',
20068             'ldelim' => '/'
20069             }, 'Parse::RecDescent::Token' )
20070             }, 'Parse::RecDescent::Operator' ),
20071             bless( {
20072             'pattern' => ')',
20073             'hashname' => '__STRING2__',
20074             'description' => '\')\'',
20075             'lookahead' => 0,
20076             'line' => -436
20077             }, 'Parse::RecDescent::Literal' ),
20078             bless( {
20079             'hashname' => '__ACTION1__',
20080             'lookahead' => 0,
20081             'line' => -436,
20082             'code' => '{ $return = $item[2]; }'
20083             }, 'Parse::RecDescent::Action' )
20084             ],
20085             'line' => undef
20086             }, 'Parse::RecDescent::Production' )
20087             ],
20088             'name' => 'parameters',
20089             'vars' => '',
20090             'line' => -436
20091             }, 'Parse::RecDescent::Rule' ),
20092             'typing' => bless( {
20093             'impcount' => 0,
20094             'calls' => [
20095             'type'
20096             ],
20097             'changed' => 0,
20098             'opcount' => 0,
20099             'prods' => [
20100             bless( {
20101             'number' => '0',
20102             'strcount' => 1,
20103             'dircount' => 0,
20104             'uncommit' => undef,
20105             'error' => undef,
20106             'patcount' => 0,
20107             'actcount' => 1,
20108             'items' => [
20109             bless( {
20110             'subrule' => 'type',
20111             'matchrule' => 0,
20112             'implicit' => undef,
20113             'argcode' => undef,
20114             'lookahead' => 0,
20115             'line' => -238
20116             }, 'Parse::RecDescent::Subrule' ),
20117             bless( {
20118             'pattern' => ':',
20119             'hashname' => '__STRING1__',
20120             'description' => '\':\'',
20121             'lookahead' => 0,
20122             'line' => -238
20123             }, 'Parse::RecDescent::Literal' ),
20124             bless( {
20125             'hashname' => '__ACTION1__',
20126             'lookahead' => 0,
20127             'line' => -238,
20128             'code' => '{ $return = $item[1]; }'
20129             }, 'Parse::RecDescent::Action' )
20130             ],
20131             'line' => undef
20132             }, 'Parse::RecDescent::Production' )
20133             ],
20134             'name' => 'typing',
20135             'vars' => '',
20136             'line' => -238
20137             }, 'Parse::RecDescent::Rule' ),
20138             'type' => bless( {
20139             'impcount' => 0,
20140             'calls' => [
20141             'topic_ref'
20142             ],
20143             'changed' => 0,
20144             'opcount' => 0,
20145             'prods' => [
20146             bless( {
20147             'number' => '0',
20148             'strcount' => 0,
20149             'dircount' => 0,
20150             'uncommit' => undef,
20151             'error' => undef,
20152             'patcount' => 0,
20153             'actcount' => 0,
20154             'items' => [
20155             bless( {
20156             'subrule' => 'topic_ref',
20157             'matchrule' => 0,
20158             'implicit' => undef,
20159             'argcode' => undef,
20160             'lookahead' => 0,
20161             'line' => -233
20162             }, 'Parse::RecDescent::Subrule' )
20163             ],
20164             'line' => undef
20165             }, 'Parse::RecDescent::Production' )
20166             ],
20167             'name' => 'type',
20168             'vars' => '',
20169             'line' => -233
20170             }, 'Parse::RecDescent::Rule' ),
20171             'prolog' => bless( {
20172             'impcount' => 0,
20173             'calls' => [
20174             'encoding',
20175             'version'
20176             ],
20177             'changed' => 0,
20178             'opcount' => 0,
20179             'prods' => [
20180             bless( {
20181             'number' => '0',
20182             'strcount' => 0,
20183             'dircount' => 0,
20184             'uncommit' => undef,
20185             'error' => undef,
20186             'patcount' => 0,
20187             'actcount' => 0,
20188             'items' => [
20189             bless( {
20190             'subrule' => 'encoding',
20191             'expected' => undef,
20192             'min' => 0,
20193             'argcode' => undef,
20194             'max' => 1,
20195             'matchrule' => 0,
20196             'repspec' => '?',
20197             'lookahead' => 0,
20198             'line' => -498
20199             }, 'Parse::RecDescent::Repetition' ),
20200             bless( {
20201             'subrule' => 'version',
20202             'expected' => undef,
20203             'min' => 0,
20204             'argcode' => undef,
20205             'max' => 1,
20206             'matchrule' => 0,
20207             'repspec' => '?',
20208             'lookahead' => 0,
20209             'line' => -498
20210             }, 'Parse::RecDescent::Repetition' )
20211             ],
20212             'line' => undef
20213             }, 'Parse::RecDescent::Production' )
20214             ],
20215             'name' => 'prolog',
20216             'vars' => '',
20217             'line' => -498
20218             }, 'Parse::RecDescent::Rule' ),
20219             'types' => bless( {
20220             'impcount' => 0,
20221             'calls' => [
20222             'name'
20223             ],
20224             'changed' => 0,
20225             'opcount' => 0,
20226             'prods' => [
20227             bless( {
20228             'number' => '0',
20229             'strcount' => 1,
20230             'dircount' => 0,
20231             'uncommit' => undef,
20232             'error' => undef,
20233             'patcount' => 0,
20234             'actcount' => 1,
20235             'items' => [
20236             bless( {
20237             'pattern' => ':',
20238             'hashname' => '__STRING1__',
20239             'description' => '\':\'',
20240             'lookahead' => 0,
20241             'line' => -119
20242             }, 'Parse::RecDescent::Literal' ),
20243             bless( {
20244             'subrule' => 'name',
20245             'expected' => undef,
20246             'min' => 1,
20247             'argcode' => undef,
20248             'max' => 100000000,
20249             'matchrule' => 0,
20250             'repspec' => 's',
20251             'lookahead' => 0,
20252             'line' => -119
20253             }, 'Parse::RecDescent::Repetition' ),
20254             bless( {
20255             'hashname' => '__ACTION1__',
20256             'lookahead' => 0,
20257             'line' => -119,
20258             'code' => '{ $return = $item[2]; }'
20259             }, 'Parse::RecDescent::Action' )
20260             ],
20261             'line' => undef
20262             }, 'Parse::RecDescent::Production' )
20263             ],
20264             'name' => 'types',
20265             'vars' => '',
20266             'line' => -119
20267             }, 'Parse::RecDescent::Rule' ),
20268             'include_directive' => bless( {
20269             'impcount' => 1,
20270             'calls' => [
20271             '_alternation_1_of_production_1_of_rule_include_directive'
20272             ],
20273             'changed' => 0,
20274             'opcount' => 0,
20275             'prods' => [
20276             bless( {
20277             'number' => '0',
20278             'strcount' => 1,
20279             'dircount' => 0,
20280             'uncommit' => undef,
20281             'error' => undef,
20282             'patcount' => 0,
20283             'actcount' => 1,
20284             'items' => [
20285             bless( {
20286             'pattern' => '%include',
20287             'hashname' => '__STRING1__',
20288             'description' => '\'%include\'',
20289             'lookahead' => 0,
20290             'line' => -468
20291             }, 'Parse::RecDescent::Literal' ),
20292             bless( {
20293             'subrule' => '_alternation_1_of_production_1_of_rule_include_directive',
20294             'matchrule' => 0,
20295             'implicit' => '/^inline:.*?\\\\n/, or iri',
20296             'argcode' => undef,
20297             'lookahead' => 0,
20298             'line' => -468
20299             }, 'Parse::RecDescent::Subrule' ),
20300             bless( {
20301             'hashname' => '__ACTION1__',
20302             'lookahead' => 0,
20303             'line' => -468,
20304             'code' => '{
20305             my $src = $item[2];
20306             my $include; # we are trying to figure that one out
20307             if ($src =~ /^inline:(.*)/s) {
20308             $include = $1;
20309             } else { # we try our luck with LWP
20310             use LWP::Simple;
20311             $include = get($1) or
20312             $TM::log->logdie (__PACKAGE__ .": unable to load \'$1\'\\n");
20313             }
20314             $text = $include . $text;
20315             }'
20316             }, 'Parse::RecDescent::Action' )
20317             ],
20318             'line' => undef
20319             }, 'Parse::RecDescent::Production' )
20320             ],
20321             'name' => 'include_directive',
20322             'vars' => '',
20323             'line' => -468
20324             }, 'Parse::RecDescent::Rule' ),
20325             'topic_ref' => bless( {
20326             'impcount' => 0,
20327             'calls' => [
20328             'topic_identity',
20329             'embedded_topic'
20330             ],
20331             'changed' => 0,
20332             'opcount' => 0,
20333             'prods' => [
20334             bless( {
20335             'number' => '0',
20336             'strcount' => 0,
20337             'dircount' => 0,
20338             'uncommit' => undef,
20339             'error' => undef,
20340             'patcount' => 0,
20341             'actcount' => 1,
20342             'items' => [
20343             bless( {
20344             'subrule' => 'topic_identity',
20345             'matchrule' => 0,
20346             'implicit' => undef,
20347             'argcode' => undef,
20348             'lookahead' => 0,
20349             'line' => -328
20350             }, 'Parse::RecDescent::Subrule' ),
20351             bless( {
20352             'hashname' => '__ACTION1__',
20353             'lookahead' => 0,
20354             'line' => -328,
20355             'code' => '{ $return = ref ($item[1]) ? $store->internalize (undef, $item[1]) : $item[1]; }'
20356             }, 'Parse::RecDescent::Action' )
20357             ],
20358             'line' => undef
20359             }, 'Parse::RecDescent::Production' ),
20360             bless( {
20361             'number' => '1',
20362             'strcount' => 0,
20363             'dircount' => 0,
20364             'uncommit' => undef,
20365             'error' => undef,
20366             'patcount' => 0,
20367             'actcount' => 0,
20368             'items' => [
20369             bless( {
20370             'subrule' => 'embedded_topic',
20371             'matchrule' => 0,
20372             'implicit' => undef,
20373             'argcode' => undef,
20374             'lookahead' => 0,
20375             'line' => -327
20376             }, 'Parse::RecDescent::Subrule' )
20377             ],
20378             'line' => -327
20379             }, 'Parse::RecDescent::Production' )
20380             ],
20381             'name' => 'topic_ref',
20382             'vars' => '',
20383             'line' => -328
20384             }, 'Parse::RecDescent::Rule' ),
20385             'topname' => bless( {
20386             'impcount' => 0,
20387             'calls' => [
20388             'basesortdispname',
20389             'scope'
20390             ],
20391             'changed' => 0,
20392             'opcount' => 0,
20393             'prods' => [
20394             bless( {
20395             'number' => '0',
20396             'strcount' => 1,
20397             'dircount' => 0,
20398             'uncommit' => undef,
20399             'error' => undef,
20400             'patcount' => 0,
20401             'actcount' => 1,
20402             'items' => [
20403             bless( {
20404             'pattern' => '=',
20405             'hashname' => '__STRING1__',
20406             'description' => '\'=\'',
20407             'lookahead' => 0,
20408             'line' => -113
20409             }, 'Parse::RecDescent::Literal' ),
20410             bless( {
20411             'subrule' => 'basesortdispname',
20412             'matchrule' => 0,
20413             'implicit' => undef,
20414             'argcode' => undef,
20415             'lookahead' => 0,
20416             'line' => -113
20417             }, 'Parse::RecDescent::Subrule' ),
20418             bless( {
20419             'subrule' => 'scope',
20420             'expected' => undef,
20421             'min' => 0,
20422             'argcode' => undef,
20423             'max' => 1,
20424             'matchrule' => 0,
20425             'repspec' => '?',
20426             'lookahead' => 0,
20427             'line' => -113
20428             }, 'Parse::RecDescent::Repetition' ),
20429             bless( {
20430             'hashname' => '__ACTION1__',
20431             'lookahead' => 0,
20432             'line' => -112,
20433             'code' => '{
20434             #warn "basenames".Dumper \\@item;
20435             $return = {
20436             scope => $item[3],
20437             names => $item[2],
20438             };
20439             }'
20440             }, 'Parse::RecDescent::Action' )
20441             ],
20442             'line' => undef
20443             }, 'Parse::RecDescent::Production' )
20444             ],
20445             'name' => 'topname',
20446             'vars' => '',
20447             'line' => -115
20448             }, 'Parse::RecDescent::Rule' ),
20449             'topic_tail' => bless( {
20450             'impcount' => 1,
20451             'calls' => [
20452             '_alternation_1_of_production_1_of_rule_topic_tail'
20453             ],
20454             'changed' => 0,
20455             'opcount' => 0,
20456             'prods' => [
20457             bless( {
20458             'number' => '0',
20459             'strcount' => 0,
20460             'dircount' => 0,
20461             'uncommit' => undef,
20462             'error' => undef,
20463             'patcount' => 1,
20464             'actcount' => 0,
20465             'items' => [
20466             bless( {
20467             'subrule' => '_alternation_1_of_production_1_of_rule_topic_tail',
20468             'matchrule' => 0,
20469             'implicit' => 'instance_of, or kind_of, or topic_template_invocation, or subject_identifier, or subject_locator, or assignment',
20470             'argcode' => undef,
20471             'lookahead' => 0,
20472             'line' => -298
20473             }, 'Parse::RecDescent::Subrule' ),
20474             bless( {
20475             'pattern' => ';?',
20476             'hashname' => '__PATTERN1__',
20477             'description' => '/;?/',
20478             'lookahead' => 0,
20479             'rdelim' => '/',
20480             'line' => -298,
20481             'mod' => '',
20482             'ldelim' => '/'
20483             }, 'Parse::RecDescent::Token' )
20484             ],
20485             'line' => undef
20486             }, 'Parse::RecDescent::Production' )
20487             ],
20488             'name' => 'topic_tail',
20489             'vars' => '',
20490             'line' => -309
20491             }, 'Parse::RecDescent::Rule' ),
20492             'reference' => bless( {
20493             'impcount' => 0,
20494             'calls' => [
20495             'iri'
20496             ],
20497             'changed' => 0,
20498             'opcount' => 0,
20499             'prods' => [
20500             bless( {
20501             'number' => '0',
20502             'strcount' => 0,
20503             'dircount' => 0,
20504             'uncommit' => undef,
20505             'error' => undef,
20506             'patcount' => 0,
20507             'actcount' => 0,
20508             'items' => [
20509             bless( {
20510             'subrule' => 'iri',
20511             'matchrule' => 0,
20512             'implicit' => undef,
20513             'argcode' => undef,
20514             'lookahead' => 0,
20515             'line' => -471
20516             }, 'Parse::RecDescent::Subrule' )
20517             ],
20518             'line' => undef
20519             }, 'Parse::RecDescent::Production' ),
20520             bless( {
20521             'number' => '1',
20522             'strcount' => 0,
20523             'dircount' => 0,
20524             'uncommit' => undef,
20525             'error' => undef,
20526             'patcount' => 1,
20527             'actcount' => 0,
20528             'items' => [
20529             bless( {
20530             'pattern' => '\\S+',
20531             'hashname' => '__PATTERN1__',
20532             'description' => '/\\\\S+/',
20533             'lookahead' => 0,
20534             'rdelim' => '/',
20535             'line' => -470,
20536             'mod' => '',
20537             'ldelim' => '/'
20538             }, 'Parse::RecDescent::Token' )
20539             ],
20540             'line' => -470
20541             }, 'Parse::RecDescent::Production' )
20542             ],
20543             'name' => 'reference',
20544             'vars' => '',
20545             'line' => -471
20546             }, 'Parse::RecDescent::Rule' ),
20547             'instance_of' => bless( {
20548             'impcount' => 0,
20549             'calls' => [
20550             'topic_ref'
20551             ],
20552             'changed' => 0,
20553             'opcount' => 0,
20554             'prods' => [
20555             bless( {
20556             'number' => '0',
20557             'strcount' => 1,
20558             'dircount' => 0,
20559             'uncommit' => undef,
20560             'error' => undef,
20561             'patcount' => 0,
20562             'actcount' => 1,
20563             'items' => [
20564             bless( {
20565             'pattern' => 'isa',
20566             'hashname' => '__STRING1__',
20567             'description' => '\'isa\'',
20568             'lookahead' => 0,
20569             'line' => -225
20570             }, 'Parse::RecDescent::Literal' ),
20571             bless( {
20572             'subrule' => 'topic_ref',
20573             'matchrule' => 0,
20574             'implicit' => undef,
20575             'argcode' => undef,
20576             'lookahead' => 0,
20577             'line' => -225
20578             }, 'Parse::RecDescent::Subrule' ),
20579             bless( {
20580             'hashname' => '__ACTION1__',
20581             'lookahead' => 0,
20582             'line' => -225,
20583             'code' => '{ $store->assert ( [ undef,
20584             undef,
20585             \'isa\',
20586             undef,
20587             [ \'class\', \'instance\' ],
20588             [ $item[2], $arg[0] ],
20589             ] ); }'
20590             }, 'Parse::RecDescent::Action' )
20591             ],
20592             'line' => undef
20593             }, 'Parse::RecDescent::Production' )
20594             ],
20595             'name' => 'instance_of',
20596             'vars' => '',
20597             'line' => -227
20598             }, 'Parse::RecDescent::Rule' ),
20599             'named_wildcard' => bless( {
20600             'impcount' => 0,
20601             'calls' => [],
20602             'changed' => 0,
20603             'opcount' => 0,
20604             'prods' => [
20605             bless( {
20606             'number' => '0',
20607             'strcount' => 0,
20608             'dircount' => 0,
20609             'uncommit' => undef,
20610             'error' => undef,
20611             'patcount' => 1,
20612             'actcount' => 1,
20613             'items' => [
20614             bless( {
20615             'pattern' => '\\?(\\w[\\w-]*)',
20616             'hashname' => '__PATTERN1__',
20617             'description' => '/\\\\?(\\\\w[\\\\w-]*)/',
20618             'lookahead' => 0,
20619             'rdelim' => '/',
20620             'line' => -337,
20621             'mod' => '',
20622             'ldelim' => '/'
20623             }, 'Parse::RecDescent::Token' ),
20624             bless( {
20625             'hashname' => '__ACTION1__',
20626             'lookahead' => 0,
20627             'line' => -337,
20628             'code' => '{
20629             my $id = $1;
20630             $wildcards{$id} ||=
20631             $store->internalize (sprintf "uuid-%010d", $TM::toplet_ctr++);
20632             $return = $wildcards{$id};
20633             }'
20634             }, 'Parse::RecDescent::Action' )
20635             ],
20636             'line' => undef
20637             }, 'Parse::RecDescent::Production' )
20638             ],
20639             'name' => 'named_wildcard',
20640             'vars' => '',
20641             'line' => -337
20642             }, 'Parse::RecDescent::Rule' ),
20643             'topic_identity' => bless( {
20644             'impcount' => 0,
20645             'calls' => [
20646             'subject_identifier',
20647             'identifier',
20648             'subject_locator',
20649             'wildcard'
20650             ],
20651             'changed' => 0,
20652             'opcount' => 0,
20653             'prods' => [
20654             bless( {
20655             'number' => '0',
20656             'strcount' => 0,
20657             'dircount' => 0,
20658             'uncommit' => undef,
20659             'error' => undef,
20660             'patcount' => 0,
20661             'actcount' => 1,
20662             'items' => [
20663             bless( {
20664             'subrule' => 'subject_identifier',
20665             'matchrule' => 0,
20666             'implicit' => undef,
20667             'argcode' => undef,
20668             'lookahead' => 0,
20669             'line' => -349
20670             }, 'Parse::RecDescent::Subrule' ),
20671             bless( {
20672             'hashname' => '__ACTION1__',
20673             'lookahead' => 0,
20674             'line' => -349,
20675             'code' => '{ $return = $store->internalize (undef, $item[1]); }'
20676             }, 'Parse::RecDescent::Action' )
20677             ],
20678             'line' => undef
20679             }, 'Parse::RecDescent::Production' ),
20680             bless( {
20681             'number' => '1',
20682             'strcount' => 0,
20683             'dircount' => 0,
20684             'uncommit' => undef,
20685             'error' => undef,
20686             'patcount' => 0,
20687             'actcount' => 1,
20688             'items' => [
20689             bless( {
20690             'subrule' => 'identifier',
20691             'matchrule' => 0,
20692             'implicit' => undef,
20693             'argcode' => undef,
20694             'lookahead' => 0,
20695             'line' => -348
20696             }, 'Parse::RecDescent::Subrule' ),
20697             bless( {
20698             'hashname' => '__ACTION1__',
20699             'lookahead' => 0,
20700             'line' => -348,
20701             'code' => '{ $return = $store->internalize ($item[1]); }'
20702             }, 'Parse::RecDescent::Action' )
20703             ],
20704             'line' => -348
20705             }, 'Parse::RecDescent::Production' ),
20706             bless( {
20707             'number' => '2',
20708             'strcount' => 0,
20709             'dircount' => 0,
20710             'uncommit' => undef,
20711             'error' => undef,
20712             'patcount' => 0,
20713             'actcount' => 1,
20714             'items' => [
20715             bless( {
20716             'subrule' => 'subject_locator',
20717             'matchrule' => 0,
20718             'implicit' => undef,
20719             'argcode' => undef,
20720             'lookahead' => 0,
20721             'line' => -347
20722             }, 'Parse::RecDescent::Subrule' ),
20723             bless( {
20724             'hashname' => '__ACTION1__',
20725             'lookahead' => 0,
20726             'line' => -347,
20727             'code' => '{ $return = $store->internalize (undef, $item[1]); }'
20728             }, 'Parse::RecDescent::Action' )
20729             ],
20730             'line' => -347
20731             }, 'Parse::RecDescent::Production' ),
20732             bless( {
20733             'number' => '3',
20734             'strcount' => 0,
20735             'dircount' => 0,
20736             'uncommit' => undef,
20737             'error' => undef,
20738             'patcount' => 0,
20739             'actcount' => 0,
20740             'items' => [
20741             bless( {
20742             'subrule' => 'wildcard',
20743             'matchrule' => 0,
20744             'implicit' => undef,
20745             'argcode' => undef,
20746             'lookahead' => 0,
20747             'line' => -345
20748             }, 'Parse::RecDescent::Subrule' )
20749             ],
20750             'line' => -346
20751             }, 'Parse::RecDescent::Production' )
20752             ],
20753             'name' => 'topic_identity',
20754             'vars' => '',
20755             'line' => -349
20756             }, 'Parse::RecDescent::Rule' ),
20757             'mergemap_directive' => bless( {
20758             'impcount' => 0,
20759             'calls' => [
20760             'uri',
20761             'tm_format'
20762             ],
20763             'changed' => 0,
20764             'opcount' => 0,
20765             'prods' => [
20766             bless( {
20767             'number' => '0',
20768             'strcount' => 1,
20769             'dircount' => 0,
20770             'uncommit' => undef,
20771             'error' => undef,
20772             'patcount' => 0,
20773             'actcount' => 1,
20774             'items' => [
20775             bless( {
20776             'pattern' => '#MERGEMAP',
20777             'hashname' => '__STRING1__',
20778             'description' => '\'#MERGEMAP\'',
20779             'lookahead' => 0,
20780             'line' => -192
20781             }, 'Parse::RecDescent::Literal' ),
20782             bless( {
20783             'subrule' => 'uri',
20784             'matchrule' => 0,
20785             'implicit' => undef,
20786             'argcode' => undef,
20787             'lookahead' => 0,
20788             'line' => -192
20789             }, 'Parse::RecDescent::Subrule' ),
20790             bless( {
20791             'subrule' => 'tm_format',
20792             'expected' => undef,
20793             'min' => 0,
20794             'argcode' => undef,
20795             'max' => 1,
20796             'matchrule' => 0,
20797             'repspec' => '?',
20798             'lookahead' => 0,
20799             'line' => -192
20800             }, 'Parse::RecDescent::Repetition' ),
20801             bless( {
20802             'hashname' => '__ACTION1__',
20803             'lookahead' => 0,
20804             'line' => -191,
20805             'code' => '{
20806             my $uri = $item[2];
20807             #warn "uri is $uri";
20808             my $format = $item[3]->[0] ? $item[3]->[0] : \'ltm\';
20809             my $tm;
20810             if ($format =~ /^ltm$/i) {
20811             $tm = new TM::Materialized::LTM (url => $uri);
20812             } elsif ($format =~ /^xtm$/i) {
20813             $tm = new TM::Materialized::XTM (url => $uri);
20814             } elsif ($format =~ /^astma$/i) {
20815             $tm = new TM::Materialized::AsTMa (url => $uri);
20816             } else {
20817             $log->logdie (__PACKAGE__ . ": unsupported TM format \'$format\'");
20818             }
20819             $tm->sync_in;
20820             $store->add ($tm);
20821             #warn "after merged in".Dumper $store;
20822             $return = $uri;
20823             }'
20824             }, 'Parse::RecDescent::Action' )
20825             ],
20826             'line' => undef
20827             }, 'Parse::RecDescent::Production' )
20828             ],
20829             'name' => 'mergemap_directive',
20830             'vars' => '',
20831             'line' => -192
20832             }, 'Parse::RecDescent::Rule' ),
20833             'embedded_topic' => bless( {
20834             'impcount' => 0,
20835             'calls' => [
20836             'topic_tail'
20837             ],
20838             'changed' => 0,
20839             'opcount' => 0,
20840             'prods' => [
20841             bless( {
20842             'number' => '0',
20843             'strcount' => 0,
20844             'dircount' => 1,
20845             'uncommit' => undef,
20846             'error' => undef,
20847             'patcount' => 0,
20848             'actcount' => 0,
20849             'items' => [
20850             bless( {
20851             'hashname' => '__DIRECTIVE1__',
20852             'name' => '',
20853             'lookahead' => 0,
20854             'line' => -325
20855             }, 'Parse::RecDescent::UncondReject' )
20856             ],
20857             'line' => undef
20858             }, 'Parse::RecDescent::Production' ),
20859             bless( {
20860             'number' => '1',
20861             'strcount' => 2,
20862             'dircount' => 0,
20863             'uncommit' => undef,
20864             'error' => undef,
20865             'patcount' => 0,
20866             'actcount' => 2,
20867             'items' => [
20868             bless( {
20869             'pattern' => '[',
20870             'hashname' => '__STRING1__',
20871             'description' => '\'[\'',
20872             'lookahead' => 0,
20873             'line' => -323
20874             }, 'Parse::RecDescent::Literal' ),
20875             bless( {
20876             'hashname' => '__ACTION1__',
20877             'lookahead' => 0,
20878             'line' => -323,
20879             'code' => '{ $llid = sprintf "uuid-%010d", $TM::toplet_ctr++; }'
20880             }, 'Parse::RecDescent::Action' ),
20881             bless( {
20882             'subrule' => 'topic_tail',
20883             'matchrule' => 0,
20884             'implicit' => undef,
20885             'argcode' => '[$llid]',
20886             'lookahead' => 0,
20887             'line' => -322
20888             }, 'Parse::RecDescent::Subrule' ),
20889             bless( {
20890             'pattern' => ']',
20891             'hashname' => '__STRING2__',
20892             'description' => '\']\'',
20893             'lookahead' => 0,
20894             'line' => -321
20895             }, 'Parse::RecDescent::Literal' ),
20896             bless( {
20897             'hashname' => '__ACTION2__',
20898             'lookahead' => 0,
20899             'line' => -321,
20900             'code' => '{ $return = $llid; }'
20901             }, 'Parse::RecDescent::Action' )
20902             ],
20903             'line' => undef
20904             }, 'Parse::RecDescent::Production' )
20905             ],
20906             'name' => 'embedded_topic',
20907             'vars' => 'my $llid;
20908             ',
20909             'line' => -325
20910             }, 'Parse::RecDescent::Rule' ),
20911             'player' => bless( {
20912             'impcount' => 0,
20913             'calls' => [
20914             'topic_ref'
20915             ],
20916             'changed' => 0,
20917             'opcount' => 0,
20918             'prods' => [
20919             bless( {
20920             'number' => '0',
20921             'strcount' => 0,
20922             'dircount' => 0,
20923             'uncommit' => undef,
20924             'error' => undef,
20925             'patcount' => 0,
20926             'actcount' => 0,
20927             'items' => [
20928             bless( {
20929             'subrule' => 'topic_ref',
20930             'matchrule' => 0,
20931             'implicit' => undef,
20932             'argcode' => undef,
20933             'lookahead' => 0,
20934             'line' => -357
20935             }, 'Parse::RecDescent::Subrule' )
20936             ],
20937             'line' => undef
20938             }, 'Parse::RecDescent::Production' )
20939             ],
20940             'name' => 'player',
20941             'vars' => '',
20942             'line' => -359
20943             }, 'Parse::RecDescent::Rule' ),
20944             'subject_locator' => bless( {
20945             'impcount' => 0,
20946             'calls' => [
20947             'iri'
20948             ],
20949             'changed' => 0,
20950             'opcount' => 0,
20951             'prods' => [
20952             bless( {
20953             'number' => '0',
20954             'strcount' => 1,
20955             'dircount' => 0,
20956             'uncommit' => undef,
20957             'error' => undef,
20958             'patcount' => 0,
20959             'actcount' => 1,
20960             'items' => [
20961             bless( {
20962             'pattern' => '=',
20963             'hashname' => '__STRING1__',
20964             'description' => '\'=\'',
20965             'lookahead' => 0,
20966             'line' => -317
20967             }, 'Parse::RecDescent::Literal' ),
20968             bless( {
20969             'subrule' => 'iri',
20970             'matchrule' => 0,
20971             'implicit' => undef,
20972             'argcode' => undef,
20973             'lookahead' => 0,
20974             'line' => -317
20975             }, 'Parse::RecDescent::Subrule' ),
20976             bless( {
20977             'hashname' => '__ACTION1__',
20978             'lookahead' => 0,
20979             'line' => -317,
20980             'code' => '{ $return = $item[2]; }'
20981             }, 'Parse::RecDescent::Action' )
20982             ],
20983             'line' => undef
20984             }, 'Parse::RecDescent::Production' )
20985             ],
20986             'name' => 'subject_locator',
20987             'vars' => '',
20988             'line' => -317
20989             }, 'Parse::RecDescent::Rule' ),
20990             'restore_directive' => bless( {
20991             'impcount' => 0,
20992             'calls' => [],
20993             'changed' => 0,
20994             'opcount' => 0,
20995             'prods' => [
20996             bless( {
20997             'number' => '0',
20998             'strcount' => 1,
20999             'dircount' => 0,
21000             'uncommit' => undef,
21001             'error' => undef,
21002             'patcount' => 0,
21003             'actcount' => 1,
21004             'items' => [
21005             bless( {
21006             'pattern' => '%restore',
21007             'hashname' => '__STRING1__',
21008             'description' => '\'%restore\'',
21009             'lookahead' => 0,
21010             'line' => -480
21011             }, 'Parse::RecDescent::Literal' ),
21012             bless( {
21013             'hashname' => '__ACTION1__',
21014             'lookahead' => 0,
21015             'line' => -480,
21016             'code' => '{
21017             %prefixes = %prefixes_backup;
21018             %wildcards = %wildcards_backup;
21019             }'
21020             }, 'Parse::RecDescent::Action' )
21021             ],
21022             'line' => undef
21023             }, 'Parse::RecDescent::Production' )
21024             ],
21025             'name' => 'restore_directive',
21026             'vars' => '',
21027             'line' => -480
21028             }, 'Parse::RecDescent::Rule' ),
21029             '_alternation_1_of_production_1_of_rule_topicmap' => bless( {
21030             'impcount' => 0,
21031             'calls' => [
21032             'directive',
21033             'template',
21034             'template_invocation',
21035             'topic',
21036             'association'
21037             ],
21038             'changed' => 0,
21039             'opcount' => 0,
21040             'prods' => [
21041             bless( {
21042             'number' => '0',
21043             'strcount' => 0,
21044             'dircount' => 0,
21045             'uncommit' => undef,
21046             'error' => undef,
21047             'patcount' => 0,
21048             'actcount' => 0,
21049             'items' => [
21050             bless( {
21051             'subrule' => 'directive',
21052             'matchrule' => 0,
21053             'implicit' => undef,
21054             'argcode' => undef,
21055             'lookahead' => 0,
21056             'line' => 531
21057             }, 'Parse::RecDescent::Subrule' )
21058             ],
21059             'line' => undef
21060             }, 'Parse::RecDescent::Production' ),
21061             bless( {
21062             'number' => '1',
21063             'strcount' => 0,
21064             'dircount' => 0,
21065             'uncommit' => undef,
21066             'error' => undef,
21067             'patcount' => 0,
21068             'actcount' => 0,
21069             'items' => [
21070             bless( {
21071             'subrule' => 'template',
21072             'matchrule' => 0,
21073             'implicit' => undef,
21074             'argcode' => undef,
21075             'lookahead' => 0,
21076             'line' => 532
21077             }, 'Parse::RecDescent::Subrule' )
21078             ],
21079             'line' => 532
21080             }, 'Parse::RecDescent::Production' ),
21081             bless( {
21082             'number' => '2',
21083             'strcount' => 0,
21084             'dircount' => 0,
21085             'uncommit' => undef,
21086             'error' => undef,
21087             'patcount' => 0,
21088             'actcount' => 0,
21089             'items' => [
21090             bless( {
21091             'subrule' => 'template_invocation',
21092             'matchrule' => 0,
21093             'implicit' => undef,
21094             'argcode' => undef,
21095             'lookahead' => 0,
21096             'line' => 533
21097             }, 'Parse::RecDescent::Subrule' )
21098             ],
21099             'line' => 533
21100             }, 'Parse::RecDescent::Production' ),
21101             bless( {
21102             'number' => '3',
21103             'strcount' => 0,
21104             'dircount' => 0,
21105             'uncommit' => undef,
21106             'error' => undef,
21107             'patcount' => 0,
21108             'actcount' => 0,
21109             'items' => [
21110             bless( {
21111             'subrule' => 'topic',
21112             'matchrule' => 0,
21113             'implicit' => undef,
21114             'argcode' => undef,
21115             'lookahead' => 0,
21116             'line' => 534
21117             }, 'Parse::RecDescent::Subrule' )
21118             ],
21119             'line' => 534
21120             }, 'Parse::RecDescent::Production' ),
21121             bless( {
21122             'number' => '4',
21123             'strcount' => 0,
21124             'dircount' => 0,
21125             'uncommit' => undef,
21126             'error' => undef,
21127             'patcount' => 0,
21128             'actcount' => 0,
21129             'items' => [
21130             bless( {
21131             'subrule' => 'association',
21132             'matchrule' => 0,
21133             'implicit' => undef,
21134             'argcode' => undef,
21135             'lookahead' => 0,
21136             'line' => 535
21137             }, 'Parse::RecDescent::Subrule' )
21138             ],
21139             'line' => 535
21140             }, 'Parse::RecDescent::Production' )
21141             ],
21142             'name' => '_alternation_1_of_production_1_of_rule_topicmap',
21143             'vars' => '',
21144             'line' => 531
21145             }, 'Parse::RecDescent::Rule' ),
21146             'basename' => bless( {
21147             'impcount' => 0,
21148             'calls' => [
21149             'string'
21150             ],
21151             'changed' => 0,
21152             'opcount' => 0,
21153             'prods' => [
21154             bless( {
21155             'number' => '0',
21156             'strcount' => 0,
21157             'dircount' => 0,
21158             'uncommit' => undef,
21159             'error' => undef,
21160             'patcount' => 0,
21161             'actcount' => 1,
21162             'items' => [
21163             bless( {
21164             'subrule' => 'string',
21165             'matchrule' => 0,
21166             'implicit' => undef,
21167             'argcode' => undef,
21168             'lookahead' => 0,
21169             'line' => -102
21170             }, 'Parse::RecDescent::Subrule' ),
21171             bless( {
21172             'hashname' => '__ACTION1__',
21173             'lookahead' => 0,
21174             'line' => -102,
21175             'code' => '{ $return = new TM::Literal ($item[1], \'xsd:string\'); }'
21176             }, 'Parse::RecDescent::Action' )
21177             ],
21178             'line' => undef
21179             }, 'Parse::RecDescent::Production' )
21180             ],
21181             'name' => 'basename',
21182             'vars' => '',
21183             'line' => -102
21184             }, 'Parse::RecDescent::Rule' ),
21185             'comment' => bless( {
21186             'impcount' => 0,
21187             'calls' => [],
21188             'changed' => 0,
21189             'opcount' => 0,
21190             'prods' => [
21191             bless( {
21192             'number' => '0',
21193             'strcount' => 2,
21194             'dircount' => 0,
21195             'uncommit' => undef,
21196             'error' => undef,
21197             'patcount' => 1,
21198             'actcount' => 0,
21199             'items' => [
21200             bless( {
21201             'pattern' => '/*',
21202             'hashname' => '__STRING1__',
21203             'description' => '\'/*\'',
21204             'lookahead' => 0,
21205             'line' => -62
21206             }, 'Parse::RecDescent::Literal' ),
21207             bless( {
21208             'pattern' => '.+?',
21209             'hashname' => '__PATTERN1__',
21210             'description' => '/.+?/s',
21211             'lookahead' => 0,
21212             'rdelim' => '/',
21213             'line' => -62,
21214             'mod' => 's',
21215             'ldelim' => '/'
21216             }, 'Parse::RecDescent::Token' ),
21217             bless( {
21218             'pattern' => '*/',
21219             'hashname' => '__STRING2__',
21220             'description' => '\'*/\'',
21221             'lookahead' => 0,
21222             'line' => -62
21223             }, 'Parse::RecDescent::Literal' )
21224             ],
21225             'line' => undef
21226             }, 'Parse::RecDescent::Production' )
21227             ],
21228             'name' => 'comment',
21229             'vars' => '',
21230             'line' => -62
21231             }, 'Parse::RecDescent::Rule' ),
21232             'directive' => bless( {
21233             'impcount' => 0,
21234             'calls' => [
21235             'prefix_directive',
21236             'restore_directive',
21237             'backup_directive',
21238             'include_directive'
21239             ],
21240             'changed' => 0,
21241             'opcount' => 0,
21242             'prods' => [
21243             bless( {
21244             'number' => '0',
21245             'strcount' => 0,
21246             'dircount' => 0,
21247             'uncommit' => undef,
21248             'error' => undef,
21249             'patcount' => 0,
21250             'actcount' => 0,
21251             'items' => [
21252             bless( {
21253             'subrule' => 'prefix_directive',
21254             'matchrule' => 0,
21255             'implicit' => undef,
21256             'argcode' => undef,
21257             'lookahead' => 0,
21258             'line' => -496
21259             }, 'Parse::RecDescent::Subrule' )
21260             ],
21261             'line' => undef
21262             }, 'Parse::RecDescent::Production' ),
21263             bless( {
21264             'number' => '1',
21265             'strcount' => 0,
21266             'dircount' => 0,
21267             'uncommit' => undef,
21268             'error' => undef,
21269             'patcount' => 0,
21270             'actcount' => 0,
21271             'items' => [
21272             bless( {
21273             'subrule' => 'restore_directive',
21274             'matchrule' => 0,
21275             'implicit' => undef,
21276             'argcode' => undef,
21277             'lookahead' => 0,
21278             'line' => -495
21279             }, 'Parse::RecDescent::Subrule' )
21280             ],
21281             'line' => -495
21282             }, 'Parse::RecDescent::Production' ),
21283             bless( {
21284             'number' => '2',
21285             'strcount' => 0,
21286             'dircount' => 0,
21287             'uncommit' => undef,
21288             'error' => undef,
21289             'patcount' => 0,
21290             'actcount' => 0,
21291             'items' => [
21292             bless( {
21293             'subrule' => 'backup_directive',
21294             'matchrule' => 0,
21295             'implicit' => undef,
21296             'argcode' => undef,
21297             'lookahead' => 0,
21298             'line' => -494
21299             }, 'Parse::RecDescent::Subrule' )
21300             ],
21301             'line' => -494
21302             }, 'Parse::RecDescent::Production' ),
21303             bless( {
21304             'number' => '3',
21305             'strcount' => 0,
21306             'dircount' => 0,
21307             'uncommit' => undef,
21308             'error' => undef,
21309             'patcount' => 0,
21310             'actcount' => 0,
21311             'items' => [
21312             bless( {
21313             'subrule' => 'include_directive',
21314             'matchrule' => 0,
21315             'implicit' => undef,
21316             'argcode' => undef,
21317             'lookahead' => 0,
21318             'line' => -493
21319             }, 'Parse::RecDescent::Subrule' )
21320             ],
21321             'line' => -493
21322             }, 'Parse::RecDescent::Production' )
21323             ],
21324             'name' => 'directive',
21325             'vars' => '',
21326             'line' => -496
21327             }, 'Parse::RecDescent::Rule' )
21328             }
21329             }, 'Parse::RecDescent' );
21330             }