File Coverage

blib/lib/Regexp/Common/Apache2.pm
Criterion Covered Total %
statement 137 160 85.6
branch 0 12 0.0
condition n/a
subroutine 10 21 47.6
pod n/a
total 147 193 76.1


line stmt bran cond sub pod time code
1             ##----------------------------------------------------------------------------
2             ## Module Generic - ~/scripts/Apache2.pm
3             ## Version v0.2.0
4             ## Copyright(c) 2021 DEGUEST Pte. Ltd.
5             ## Author: Jacques Deguest
6             ## Created 2021/02/14
7             ## Modified 2021/03/07
8             ## All rights reserved
9             ##
10             ## This program is free software; you can redistribute it and/or modify it
11             ## under the same terms as Perl itself.
12             ##----------------------------------------------------------------------------
13             package Regexp::Common::Apache2;
14             BEGIN
15             {
16 22     22   2099623 use strict;
  22         98  
  22         678  
17 22     22   96 use warnings;
  22         32  
  22         537  
18 22     22   89 use warnings::register;
  22         26  
  22         2108  
19 22     22   9972 use parent qw( Exporter );
  22         5764  
  22         102  
20 22     22   1697 use Regexp::Common qw( pattern );
  22         4479  
  22         183  
21 22     22   3293793 our $VERSION = 'v0.2.0';
22 22         59 our $DEBUG = 3;
23             ## Ref:
24 22         152 our $UNARY_OP = qr/(?:(?<=\W)|(?<=^)|(?<=\A))\-[a-zA-Z]/;
25 22         69 our $DIGIT = qr/[0-9]/;
26 22         76 our $REGPATTERN = qr/(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+/;
27 22         63 our $REGFLAGS = qr/[i|s|m|g]+/;
28 22         60 our $REGSEP = qr/[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-]/;
29 22         51 our $FUNCNAME = qr/[a-zA-Z_]\w*/;
30 22         51 our $VARNAME = qr/[a-zA-Z_]\w*/;
31 22         61 our $TEXT = qr/[^[:cntrl:]]/;
32             ##our $ap_true = do{ bless( \( my $dummy = 1 ) => "Regexp::Common::Apache2::Boolean" ) };
33             ##our $ap_false = do{ bless( \( my $dummy = 0 ) => "Regexp::Common::Apache2::Boolean" ) };
34 22         78 our $ap_true = 1;
35 22         30 our $ap_false = 0;
36 22         82 our @EXPORT_OK = qw( $ap_true $ap_false );
37 22         46 our $REGEXP = {};
38 22         40 our $TRUNK = {};
39             ## Legacy regular expression
40             ##
41 22         32 our $REGEXP_LEGACY = {};
42              
43 22         5049 $REGEXP =
44             {
45             unary_op => $UNARY_OP,
46             ##
47             digit => $DIGIT,
48             ## 1*(DIGIT)
49             digits => qr/${DIGIT}{1,}/,
50             ## "$" DIGIT
51             ## As per Apache apr_expr documentation, regular expression back reference go from 1 to 9 with 0 containing the entire regexp
52             rebackref => qr/(?:^|\A|(?\{)?(?${DIGIT})(?()\})/,
53             ## cstring ; except enclosing regsep
54             regpattern => $REGPATTERN,
55             ## 1*("i" | "s" | "m" | "g")
56             regflags => $REGFLAGS,
57             ## "/" | "#" | "$" | "%" | "^" | "|" | "?" | "!" | "'" | '"' | "," | ";" | ":" | "." | "_" | "-"
58             regsep => $REGSEP,
59             ## "/" regpattern "/" [regflags]
60             ## | "m" regsep regpattern regsep [regflags]
61             regex => qr/
62             (?
63             (?:(?\/)(?${REGPATTERN})\/(?${REGFLAGS})?)
64             |
65             (?:m(?${REGSEP})(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?${REGFLAGS})?)
66             )/x,
67             funcname => $FUNCNAME,
68             varname => $VARNAME,
69             ##
70             text => $TEXT,
71             ## 0*(TEXT)
72             cstring => qr/[^[:cntrl:]]+/,
73             true => qr/[1]/,
74             false => qr/[0]/,
75             };
76            
77 22         1004 $REGEXP->{is_true} = qr/
78             (?:
79             (?:\btrue\b)
80             |
81             (?:
82             (?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::REGEXP->{true}(?=\W|\Z|$)
83             )
84             )
85             /x;
86            
87 22         791 $REGEXP->{is_false} = qr/
88             (?:
89             (?:\bfalse\b)
90             |
91             (?:
92             (?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::REGEXP->{false}(?=\W|\Z|$)
93             )
94             )
95             /x;
96            
97             ## stringcomp
98             ## | integercomp
99             ## | unaryop word
100             ## | word binaryop word
101             ## | word "in" listfunc
102             ## | word "=~" regex
103             ## | word "!~" regex
104             ## | word "in" "{" list "}"
105             ## Ref:
106             ##
107             ##
108 22         32692 $REGEXP->{comp} = qr/
109             (?
110             (?:
111             (? (?&stringcomp) )
112             )
113             |
114             (?:
115             (? (?&integercomp) )
116             )
117             |
118             (?
119             (?:(?<=\W)|(?<=^)|(?<=\A))
120             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
121             [[:blank:]\h]+
122             (? (?&word) )
123             )
124             |
125             (?
126             (? (?&word) )
127             [[:blank:]\h]+
128             (?:
129             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
130             |
131             \-(?ipmatch|strmatch|strcmatch|fnmatch)
132             )
133             [[:blank:]\h]+
134             (? (?&word) )
135             )
136             |
137             (?
138             (? (?&word) )
139             [[:blank:]\h]+
140             \-?in
141             [[:blank:]\h]+
142             (? (?&listfunc) )
143             )
144             |
145             (?
146             (? (?&word) )
147             [[:blank:]\h]+
148             (? [\=|\!]\~ )
149             [[:blank:]\h]+
150             (?$Regexp::Common::Apache2::REGEXP->{regex})
151             )
152             |
153             (?
154             (? (?&word) )
155             [[:blank:]\h]+
156             \-?in
157             [[:blank:]\h]+
158             \{
159             [[:blank:]\h]*
160             (? (?&words) )
161             [[:blank:]\h]*
162             \}
163             )
164             )
165             (?(DEFINE)
166             (?
167             (?:
168             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
169             (?
170             (?&stringcomp)
171             )
172             )
173             )
174             |
175             (?:
176             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
177             (?
178             (?&integercomp)
179             )
180             )
181             )
182             |
183             (?:
184             (?:(?<=\W)|(?<=^)|(?<=\A))
185             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
186             [[:blank:]\h]+
187             (?(?&word))
188             )
189             |
190             (?:
191             (?(?&word))
192             [[:blank:]\h]+
193             (?:
194             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
195             |
196             \-(?ipmatch|strmatch|strcmatch|fnmatch)
197             )
198             [[:blank:]\h]+
199             (?(?&word))
200             )
201             |
202             (?:
203             (? (?&word) )
204             [[:blank:]\h]+
205             \-?in
206             [[:blank:]\h]+
207             (? (?&listfunc) )
208             )
209             |
210             (?:
211             (? (?&word) )
212             [[:blank:]\h]+
213             [\=|\!]\~
214             [[:blank:]\h]+
215             $Regexp::Common::Apache2::REGEXP->{regex}
216             )
217             |
218             (?:
219             (? (?&word) )
220             [[:blank:]\h]+
221             \-?in
222             [[:blank:]\h]+
223             \{
224             [[:blank:]\h]*
225             (? (?&words) )
226             [[:blank:]\h]*
227             \}
228             )
229             )
230             (?
231             (?:
232             (?[a-zA-Z]\w*)
233             \(
234             [[:blank:]\h]*
235             (?
236             (?> (?&func_words) )?
237             )
238             [[:blank:]\h]*
239             \)
240             )
241             |
242             (?:
243             ( # paren group 1 (full function)
244             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
245             (? # paren group 2 (parens)
246             \(
247             (? # paren group 3 (contents of parens)
248             (?:
249             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
250             |
251             (?&paren_group) # Recurse to named capture group
252             )*
253             )
254             \)
255             )
256             )
257             )
258             )
259             (?
260             (?:
261             (?
262             (?:
263             (?&word)
264             [[:blank:]\h]*\,[[:blank:]\h]*
265             )*
266             (?&word)
267             )
268             (?:
269             [[:blank:]\h]*\,[[:blank:]\h]*
270             (? (?&word) )
271             )?
272             )
273             |
274             (?:
275             (? (?&word) )
276             [[:blank:]\h]*\,[[:blank:]\h]*
277             (? (?-2) )
278             )
279             |
280             (?:
281             (? (?&word) )
282             )
283             |
284             (?:
285             ( # paren group 1 (full function)
286             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
287             (? # paren group 2 (parens)
288             \(
289             ( # paren group 3 (contents of parens)
290             (?:
291             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
292             |
293             (?&paren_group) # Recurse to named capture group
294             )*
295             )
296             \)
297             )
298             )
299             )
300             )
301             (?
302             (?:
303             (?(?&word))
304             [[:blank:]\h]+
305             \-?(? (?:eq|ne|lt|le|gt|ge) )
306             [[:blank:]\h]+
307             (?(?&word))
308             )
309             )
310             (?
311             (?:
312             (?[a-zA-Z]\w*)
313             \(
314             [[:blank:]\h]*
315             (?
316             (?> (?&func_words) )?
317             )
318             [[:blank:]\h]*
319             \)
320             )
321             |
322             (?:
323             ( # paren group 1 (full function)
324             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
325             (? # paren group 2 (parens)
326             \(
327             (? # paren group 3 (contents of parens)
328             (?:
329             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
330             |
331             (?&paren_group) # Recurse to named capture group
332             )*
333             )
334             \)
335             )
336             )
337             )
338             )
339             (?
340             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
341             |
342             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
343             )
344             (?
345             (?:
346             (?: (?&substring) )
347             )
348             |
349             (?:
350             (?:(?&substring)[[:blank:]\h]+(?&string) )
351             )
352             )
353             (?
354             (?:
355             (?(?&word))
356             [[:blank:]\h]+
357             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
358             [[:blank:]\h]+
359             (?(?&word))
360             )
361             )
362             (?
363             (?:
364             (?$Regexp::Common::Apache2::REGEXP->{cstring})
365             )
366             |
367             (?:
368             (? (?&variable) )
369             )
370             |
371             (?:
372             \$(?\{)?(?${DIGIT})(?()\})
373             )
374             )
375             (?
376             (?:
377             \%\{
378             (?:
379             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
380             )
381             \}
382             )
383             |
384             (?:
385             \%\{
386             (?:
387             (?${VARNAME})
388             )
389             \}
390             )
391             |
392             (?:
393             \bv\(
394             [[:blank:]\h]*
395             (?["'])
396             (?:
397             (?${VARNAME})
398             )
399             [[:blank:]\h]*
400             \g{var_quote}
401             \)
402             )
403             )
404             (?
405             (?:
406             (?$Regexp::Common::Apache2::REGEXP->{digits})
407             )
408             |
409             (?:
410             (?['"])
411             (?:
412             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
413             )
414             \g{word_quote}
415             )
416             |
417             (?:
418             (?['"])
419             (?:
420             (? (?&string) )
421             )
422             \g{word_quote}
423             )
424             |
425             (?:
426             (?
427             (?: (?: (?-2)\. )+ (?-2) )
428             )
429             )
430             |
431             (?:
432             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
433             )
434             |
435             (?:
436             (?(?&variable))
437             )
438             |
439             (?:
440             (?(?&function))
441             )
442             |
443             (?:
444             (? $Regexp::Common::Apache2::REGEXP->{regex} )
445             )
446             )
447             (?
448             (?:
449             (?
450             (?:
451             (?&word)
452             [[:blank:]\h]*\,[[:blank:]\h]*
453             )*
454             (?&word)
455             )
456             (?:
457             [[:blank:]\h]*\,[[:blank:]\h]*
458             (? (?&word) )
459             )?
460             )
461             |
462             (?:
463             (? (?&word) )
464             )
465             )
466             )
467             /x;
468              
469             ## "true"
470             ## | "false"
471             ## | "!" cond
472             ## | cond "&&" cond
473             ## | cond "||" cond
474             ## | "(" cond ")"
475             ## | comp
476 22         109093 $REGEXP->{cond} = qr/
477             (?
478             (?:
479             (?$Regexp::Common::Apache2::REGEXP->{is_true})
480             )
481             |
482             (?:
483             (?$Regexp::Common::Apache2::REGEXP->{is_false})
484             )
485             |
486             (?:
487             (?:\([[:blank:]\h]*(?(?&cond_recur))[[:blank:]\h]*\))
488             )
489             |
490             (?:
491             (?\![[:blank:]\h]*(?(?&cond_recur)))
492             )
493             |
494             (?:
495             (?(?=(?:.+?)\&\&(?:.+?))
496             (?
497             (?
498             (?: (?&cond_recur) )+
499             )
500             [[:blank:]\h]*
501             \&\&
502             [[:blank:]\h]*
503             (?
504             (?: (?&cond_recur) )+
505             )
506             )
507             )
508             )
509             |
510             (?:
511             (?(?=(?:.+?)\|\|(?:.+?))
512             (?
513             (?
514             (?&cond_recur)
515             )
516             [[:blank:]\h]*
517             \|\|
518             [[:blank:]\h]*
519             (?
520             (?&cond_recur)
521             )
522             )
523             )
524             )
525             |
526             (?:
527             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R]))|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
528             (?(?&comp))
529             )
530             )
531             )
532             (?(DEFINE)
533             (?
534             (?:
535             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
536             (?
537             (?&stringcomp)
538             )
539             )
540             )
541             |
542             (?:
543             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
544             (?
545             (?&integercomp)
546             )
547             )
548             )
549             |
550             (?:
551             (?:(?<=\W)|(?<=^)|(?<=\A))
552             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
553             [[:blank:]\h]+
554             (?(?&word))
555             )
556             |
557             (?:
558             (?(?&word))
559             [[:blank:]\h]+
560             (?:
561             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
562             |
563             \-(?ipmatch|strmatch|strcmatch|fnmatch)
564             )
565             [[:blank:]\h]+
566             (?(?&word))
567             )
568             |
569             (?:
570             (? (?&word) )
571             [[:blank:]\h]+
572             \-?in
573             [[:blank:]\h]+
574             (? (?&listfunc) )
575             )
576             |
577             (?:
578             (? (?&word) )
579             [[:blank:]\h]+
580             [\=|\!]\~
581             [[:blank:]\h]+
582             $Regexp::Common::Apache2::REGEXP->{regex}
583             )
584             |
585             (?:
586             (? (?&word) )
587             [[:blank:]\h]+
588             \-?in
589             [[:blank:]\h]+
590             \{
591             [[:blank:]\h]*
592             (? (?&words) )
593             [[:blank:]\h]*
594             \}
595             )
596             )
597             (?
598             (?:$Regexp::Common::Apache2::REGEXP->{is_true})
599             |
600             (?:$Regexp::Common::Apache2::REGEXP->{is_false})
601             |
602             (?:
603             \![[:blank:]\h]*
604             (? (?-2) )
605             )
606             |
607             (?:
608             \(
609             [[:blank:]\h]*
610             (? (?&cond) )
611             [[:blank:]\h]*
612             \)
613             )
614             |
615             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R]))|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
616             (?(?&comp))
617             )
618             |
619             (?(?=(?:.+?)\|\|(?:.+?))
620             (?
621             (? (?-3) )
622             [[:blank:]\h]*
623             \|\|
624             [[:blank:]\h]*
625             (? (?-3) )
626             )
627             )
628             |
629             (?(?=(?:.+?)\&\&(?:.+?))
630             (?
631             (? (?-3) )
632             [[:blank:]\h]*
633             \&\&
634             [[:blank:]\h]*
635             (? (?-3) )
636             )
637             )
638             )
639             (?
640             (?:
641             (?[a-zA-Z]\w*)
642             \(
643             [[:blank:]\h]*
644             (?
645             (?> (?&func_words) )?
646             )
647             [[:blank:]\h]*
648             \)
649             )
650             |
651             (?:
652             ( # paren group 1 (full function)
653             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
654             (? # paren group 2 (parens)
655             \(
656             (? # paren group 3 (contents of parens)
657             (?:
658             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
659             |
660             (?&paren_group) # Recurse to named capture group
661             )*
662             )
663             \)
664             )
665             )
666             )
667             )
668             (?
669             (?:
670             (?
671             (?:
672             (?&word)
673             [[:blank:]\h]*\,[[:blank:]\h]*
674             )*
675             (?&word)
676             )
677             (?:
678             [[:blank:]\h]*\,[[:blank:]\h]*
679             (? (?&word) )
680             )?
681             )
682             |
683             (?:
684             (? (?&word) )
685             [[:blank:]\h]*\,[[:blank:]\h]*
686             (? (?-2) )
687             )
688             |
689             (?:
690             (? (?&word) )
691             )
692             |
693             (?:
694             ( # paren group 1 (full function)
695             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
696             (? # paren group 2 (parens)
697             \(
698             ( # paren group 3 (contents of parens)
699             (?:
700             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
701             |
702             (?&paren_group) # Recurse to named capture group
703             )*
704             )
705             \)
706             )
707             )
708             )
709             )
710             (?
711             (?:
712             (?(?&word))
713             [[:blank:]\h]+
714             \-?(? (?:eq|ne|lt|le|gt|ge) )
715             [[:blank:]\h]+
716             (?(?&word))
717             )
718             )
719             (?
720             (?:
721             (?[a-zA-Z]\w*)
722             \(
723             [[:blank:]\h]*
724             (?
725             (?> (?&func_words) )?
726             )
727             [[:blank:]\h]*
728             \)
729             )
730             |
731             (?:
732             ( # paren group 1 (full function)
733             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
734             (? # paren group 2 (parens)
735             \(
736             (? # paren group 3 (contents of parens)
737             (?:
738             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
739             |
740             (?&paren_group) # Recurse to named capture group
741             )*
742             )
743             \)
744             )
745             )
746             )
747             )
748             (?
749             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
750             |
751             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
752             )
753             (?
754             (?:
755             (?: (?&substring) )
756             )
757             |
758             (?:
759             (?:(?&substring)[[:blank:]\h]+(?&string) )
760             )
761             )
762             (?
763             (?:
764             (?(?&word))
765             [[:blank:]\h]+
766             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
767             [[:blank:]\h]+
768             (?(?&word))
769             )
770             )
771             (?
772             (?:
773             (?$Regexp::Common::Apache2::REGEXP->{cstring})
774             )
775             |
776             (?:
777             (? (?&variable) )
778             )
779             |
780             (?:
781             \$(?\{)?(?${DIGIT})(?()\})
782             )
783             )
784             (?
785             (?:
786             \%\{
787             (?:
788             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
789             )
790             \}
791             )
792             |
793             (?:
794             \%\{
795             (?:
796             (?${VARNAME})
797             )
798             \}
799             )
800             |
801             (?:
802             \bv\(
803             [[:blank:]\h]*
804             (?["'])
805             (?:
806             (?${VARNAME})
807             )
808             [[:blank:]\h]*
809             \g{var_quote}
810             \)
811             )
812             )
813             (?
814             (?:
815             (?$Regexp::Common::Apache2::REGEXP->{digits})
816             )
817             |
818             (?:
819             (?['"])
820             (?:
821             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
822             )
823             \g{word_quote}
824             )
825             |
826             (?:
827             (?['"])
828             (?:
829             (? (?&string) )
830             )
831             \g{word_quote}
832             )
833             |
834             (?:
835             (?
836             (?: (?: (?-2)\. )+ (?-2) )
837             )
838             )
839             |
840             (?:
841             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
842             )
843             |
844             (?:
845             (?(?&variable))
846             )
847             |
848             (?:
849             (?(?&function))
850             )
851             |
852             (?:
853             (? $Regexp::Common::Apache2::REGEXP->{regex} )
854             )
855             )
856             (?
857             (?:
858             (?
859             (?:
860             (?&word)
861             [[:blank:]\h]*\,[[:blank:]\h]*
862             )*
863             (?&word)
864             )
865             (?:
866             [[:blank:]\h]*\,[[:blank:]\h]*
867             (? (?&word) )
868             )?
869             )
870             |
871             (?:
872             (? (?&word) )
873             )
874             )
875             )
876             /xi;
877              
878             ## cond
879             ## | string
880 22         60608 $REGEXP->{expr} = qr/
881             (?
882             (?:
883             (?(?&cond))
884             )
885             |
886             (?:
887             (?(?&string))
888             )
889             )
890             (?(DEFINE)
891             (?
892             (?:
893             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
894             (?
895             (?&stringcomp)
896             )
897             )
898             )
899             |
900             (?:
901             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
902             (?
903             (?&integercomp)
904             )
905             )
906             )
907             |
908             (?:
909             (?:(?<=\W)|(?<=^)|(?<=\A))
910             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
911             [[:blank:]\h]+
912             (?(?&word))
913             )
914             |
915             (?:
916             (?(?&word))
917             [[:blank:]\h]+
918             (?:
919             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
920             |
921             \-(?ipmatch|strmatch|strcmatch|fnmatch)
922             )
923             [[:blank:]\h]+
924             (?(?&word))
925             )
926             |
927             (?:
928             (? (?&word) )
929             [[:blank:]\h]+
930             \-?in
931             [[:blank:]\h]+
932             (? (?&listfunc) )
933             )
934             |
935             (?:
936             (? (?&word) )
937             [[:blank:]\h]+
938             [\=|\!]\~
939             [[:blank:]\h]+
940             $Regexp::Common::Apache2::REGEXP->{regex}
941             )
942             |
943             (?:
944             (? (?&word) )
945             [[:blank:]\h]+
946             \-?in
947             [[:blank:]\h]+
948             \{
949             [[:blank:]\h]*
950             (? (?&words) )
951             [[:blank:]\h]*
952             \}
953             )
954             )
955             (?
956             (?:$Regexp::Common::Apache2::REGEXP->{is_true})
957             |
958             (?:$Regexp::Common::Apache2::REGEXP->{is_false})
959             |
960             (?:
961             \![[:blank:]\h]*
962             (? (?-2) )
963             )
964             |
965             (?:
966             \(
967             [[:blank:]\h]*
968             (? (?&cond) )
969             [[:blank:]\h]*
970             \)
971             )
972             |
973             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R]))|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
974             (?(?&comp))
975             )
976             |
977             (?(?=(?:.+?)\|\|(?:.+?))
978             (?
979             (? (?-3) )
980             [[:blank:]\h]*
981             \|\|
982             [[:blank:]\h]*
983             (? (?-3) )
984             )
985             )
986             |
987             (?(?=(?:.+?)\&\&(?:.+?))
988             (?
989             (? (?-3) )
990             [[:blank:]\h]*
991             \&\&
992             [[:blank:]\h]*
993             (? (?-3) )
994             )
995             )
996             )
997             (?
998             (?:
999             (?[a-zA-Z]\w*)
1000             \(
1001             [[:blank:]\h]*
1002             (?
1003             (?> (?&func_words) )?
1004             )
1005             [[:blank:]\h]*
1006             \)
1007             )
1008             |
1009             (?:
1010             ( # paren group 1 (full function)
1011             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
1012             (? # paren group 2 (parens)
1013             \(
1014             (? # paren group 3 (contents of parens)
1015             (?:
1016             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
1017             |
1018             (?&paren_group) # Recurse to named capture group
1019             )*
1020             )
1021             \)
1022             )
1023             )
1024             )
1025             )
1026             (?
1027             (?:
1028             (?
1029             (?:
1030             (?&word)
1031             [[:blank:]\h]*\,[[:blank:]\h]*
1032             )*
1033             (?&word)
1034             )
1035             (?:
1036             [[:blank:]\h]*\,[[:blank:]\h]*
1037             (? (?&word) )
1038             )?
1039             )
1040             |
1041             (?:
1042             (? (?&word) )
1043             [[:blank:]\h]*\,[[:blank:]\h]*
1044             (? (?-2) )
1045             )
1046             |
1047             (?:
1048             (? (?&word) )
1049             )
1050             |
1051             (?:
1052             ( # paren group 1 (full function)
1053             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
1054             (? # paren group 2 (parens)
1055             \(
1056             ( # paren group 3 (contents of parens)
1057             (?:
1058             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
1059             |
1060             (?&paren_group) # Recurse to named capture group
1061             )*
1062             )
1063             \)
1064             )
1065             )
1066             )
1067             )
1068             (?
1069             (?:
1070             (?(?&word))
1071             [[:blank:]\h]+
1072             \-?(? (?:eq|ne|lt|le|gt|ge) )
1073             [[:blank:]\h]+
1074             (?(?&word))
1075             )
1076             )
1077             (?
1078             (?:
1079             (?[a-zA-Z]\w*)
1080             \(
1081             [[:blank:]\h]*
1082             (?
1083             (?> (?&func_words) )?
1084             )
1085             [[:blank:]\h]*
1086             \)
1087             )
1088             |
1089             (?:
1090             ( # paren group 1 (full function)
1091             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
1092             (? # paren group 2 (parens)
1093             \(
1094             (? # paren group 3 (contents of parens)
1095             (?:
1096             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
1097             |
1098             (?&paren_group) # Recurse to named capture group
1099             )*
1100             )
1101             \)
1102             )
1103             )
1104             )
1105             )
1106             (?
1107             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
1108             |
1109             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
1110             )
1111             (?
1112             (?:
1113             (?: (?&substring) )
1114             )
1115             |
1116             (?:
1117             (?:(?&substring)[[:blank:]\h]+(?&string) )
1118             )
1119             )
1120             (?
1121             (?:
1122             (?(?&word))
1123             [[:blank:]\h]+
1124             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
1125             [[:blank:]\h]+
1126             (?(?&word))
1127             )
1128             )
1129             (?
1130             (?:
1131             (?$Regexp::Common::Apache2::REGEXP->{cstring})
1132             )
1133             |
1134             (?:
1135             (? (?&variable) )
1136             )
1137             |
1138             (?:
1139             \$(?\{)?(?${DIGIT})(?()\})
1140             )
1141             )
1142             (?
1143             (?:
1144             \%\{
1145             (?:
1146             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
1147             )
1148             \}
1149             )
1150             |
1151             (?:
1152             \%\{
1153             (?:
1154             (?${VARNAME})
1155             )
1156             \}
1157             )
1158             |
1159             (?:
1160             \bv\(
1161             [[:blank:]\h]*
1162             (?["'])
1163             (?:
1164             (?${VARNAME})
1165             )
1166             [[:blank:]\h]*
1167             \g{var_quote}
1168             \)
1169             )
1170             )
1171             (?
1172             (?:
1173             (?$Regexp::Common::Apache2::REGEXP->{digits})
1174             )
1175             |
1176             (?:
1177             (?['"])
1178             (?:
1179             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
1180             )
1181             \g{word_quote}
1182             )
1183             |
1184             (?:
1185             (?['"])
1186             (?:
1187             (? (?&string) )
1188             )
1189             \g{word_quote}
1190             )
1191             |
1192             (?:
1193             (?
1194             (?: (?: (?-2)\. )+ (?-2) )
1195             )
1196             )
1197             |
1198             (?:
1199             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
1200             )
1201             |
1202             (?:
1203             (?(?&variable))
1204             )
1205             |
1206             (?:
1207             (?(?&function))
1208             )
1209             |
1210             (?:
1211             (? $Regexp::Common::Apache2::REGEXP->{regex} )
1212             )
1213             )
1214             (?
1215             (?:
1216             (?
1217             (?:
1218             (?&word)
1219             [[:blank:]\h]*\,[[:blank:]\h]*
1220             )*
1221             (?&word)
1222             )
1223             (?:
1224             [[:blank:]\h]*\,[[:blank:]\h]*
1225             (? (?&word) )
1226             )?
1227             )
1228             |
1229             (?:
1230             (? (?&word) )
1231             )
1232             )
1233             )
1234             /x;
1235              
1236             ## funcname "(" words ")"
1237             ## -> Same as LISTFUNC
1238 22         23594 $REGEXP->{function} = qr/
1239             (?
1240             (?:
1241             (?[a-zA-Z]\w*)
1242             \(
1243             [[:blank:]\h]*
1244             (?
1245             (?> (?&func_words) )?
1246             )
1247             [[:blank:]\h]*
1248             \)
1249             )
1250             |
1251             (?:
1252             ( # paren group 1 (full function)
1253             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
1254             (? # paren group 2 (parens)
1255             \(
1256             (? # paren group 3 (contents of parens)
1257             (?:
1258             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
1259             |
1260             (?&paren_group) # Recurse to named capture group
1261             )*
1262             )
1263             \)
1264             )
1265             )
1266             )
1267             )
1268             (?(DEFINE)
1269             (?
1270             (?:
1271             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
1272             (?
1273             (?&stringcomp)
1274             )
1275             )
1276             )
1277             |
1278             (?:
1279             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
1280             (?
1281             (?&integercomp)
1282             )
1283             )
1284             )
1285             |
1286             (?:
1287             (?:(?<=\W)|(?<=^)|(?<=\A))
1288             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
1289             [[:blank:]\h]+
1290             (?(?&word))
1291             )
1292             |
1293             (?:
1294             (?(?&word))
1295             [[:blank:]\h]+
1296             (?:
1297             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
1298             |
1299             \-(?ipmatch|strmatch|strcmatch|fnmatch)
1300             )
1301             [[:blank:]\h]+
1302             (?(?&word))
1303             )
1304             |
1305             (?:
1306             (? (?&word) )
1307             [[:blank:]\h]+
1308             \-?in
1309             [[:blank:]\h]+
1310             (? (?&listfunc) )
1311             )
1312             |
1313             (?:
1314             (? (?&word) )
1315             [[:blank:]\h]+
1316             [\=|\!]\~
1317             [[:blank:]\h]+
1318             $Regexp::Common::Apache2::REGEXP->{regex}
1319             )
1320             |
1321             (?:
1322             (? (?&word) )
1323             [[:blank:]\h]+
1324             \-?in
1325             [[:blank:]\h]+
1326             \{
1327             [[:blank:]\h]*
1328             (? (?&words) )
1329             [[:blank:]\h]*
1330             \}
1331             )
1332             )
1333             (?
1334             (?:
1335             (?[a-zA-Z]\w*)
1336             \(
1337             [[:blank:]\h]*
1338             (?
1339             (?> (?&func_words) )?
1340             )
1341             [[:blank:]\h]*
1342             \)
1343             )
1344             |
1345             (?:
1346             ( # paren group 1 (full function)
1347             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
1348             (? # paren group 2 (parens)
1349             \(
1350             (? # paren group 3 (contents of parens)
1351             (?:
1352             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
1353             |
1354             (?&paren_group) # Recurse to named capture group
1355             )*
1356             )
1357             \)
1358             )
1359             )
1360             )
1361             )
1362             (?
1363             (?:
1364             (?
1365             (?:
1366             (?&word)
1367             [[:blank:]\h]*\,[[:blank:]\h]*
1368             )*
1369             (?&word)
1370             )
1371             (?:
1372             [[:blank:]\h]*\,[[:blank:]\h]*
1373             (? (?&word) )
1374             )?
1375             )
1376             |
1377             (?:
1378             (? (?&word) )
1379             [[:blank:]\h]*\,[[:blank:]\h]*
1380             (? (?-2) )
1381             )
1382             |
1383             (?:
1384             (? (?&word) )
1385             )
1386             |
1387             (?:
1388             ( # paren group 1 (full function)
1389             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
1390             (? # paren group 2 (parens)
1391             \(
1392             ( # paren group 3 (contents of parens)
1393             (?:
1394             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
1395             |
1396             (?&paren_group) # Recurse to named capture group
1397             )*
1398             )
1399             \)
1400             )
1401             )
1402             )
1403             )
1404             (?
1405             (?:
1406             (?(?&word))
1407             [[:blank:]\h]+
1408             \-?(? (?:eq|ne|lt|le|gt|ge) )
1409             [[:blank:]\h]+
1410             (?(?&word))
1411             )
1412             )
1413             (?
1414             (?:
1415             (?[a-zA-Z]\w*)
1416             \(
1417             [[:blank:]\h]*
1418             (?
1419             (?> (?&func_words) )?
1420             )
1421             [[:blank:]\h]*
1422             \)
1423             )
1424             |
1425             (?:
1426             ( # paren group 1 (full function)
1427             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
1428             (? # paren group 2 (parens)
1429             \(
1430             (? # paren group 3 (contents of parens)
1431             (?:
1432             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
1433             |
1434             (?&paren_group) # Recurse to named capture group
1435             )*
1436             )
1437             \)
1438             )
1439             )
1440             )
1441             )
1442             (?
1443             (?:
1444             (?: (?&substring) )
1445             )
1446             |
1447             (?:
1448             (?:(?&substring)[[:blank:]\h]+(?&string) )
1449             )
1450             )
1451             (?
1452             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
1453             |
1454             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
1455             )
1456             (?
1457             (?:
1458             (?(?&word))
1459             [[:blank:]\h]+
1460             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
1461             [[:blank:]\h]+
1462             (?(?&word))
1463             )
1464             )
1465             (?
1466             (?:
1467             (?$Regexp::Common::Apache2::REGEXP->{cstring})
1468             )
1469             |
1470             (?:
1471             (? (?&variable) )
1472             )
1473             |
1474             (?:
1475             \$(?\{)?(?${DIGIT})(?()\})
1476             )
1477             )
1478             (?
1479             (?:
1480             \%\{
1481             (?:
1482             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
1483             )
1484             \}
1485             )
1486             |
1487             (?:
1488             \%\{
1489             (?:
1490             (?${VARNAME})
1491             )
1492             \}
1493             )
1494             |
1495             (?:
1496             \bv\(
1497             [[:blank:]\h]*
1498             (?["'])
1499             (?:
1500             (?${VARNAME})
1501             )
1502             [[:blank:]\h]*
1503             \g{var_quote}
1504             \)
1505             )
1506             )
1507             (?
1508             (?:
1509             (?$Regexp::Common::Apache2::REGEXP->{digits})
1510             )
1511             |
1512             (?:
1513             (?['"])
1514             (?:
1515             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
1516             )
1517             \g{word_quote}
1518             )
1519             |
1520             (?:
1521             (?['"])
1522             (?:
1523             (? (?&string) )
1524             )
1525             \g{word_quote}
1526             )
1527             |
1528             (?:
1529             (?
1530             (?: (?: (?-2)\. )+ (?-2) )
1531             )
1532             )
1533             |
1534             (?:
1535             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
1536             )
1537             |
1538             (?:
1539             (?(?&variable))
1540             )
1541             |
1542             (?:
1543             (?(?&function_recur))
1544             )
1545             |
1546             (?:
1547             (? $Regexp::Common::Apache2::REGEXP->{regex} )
1548             )
1549             )
1550             (?
1551             (?:
1552             (?
1553             (?:
1554             (?&word)
1555             [[:blank:]\h]*\,[[:blank:]\h]*
1556             )*
1557             (?&word)
1558             )
1559             (?:
1560             [[:blank:]\h]*\,[[:blank:]\h]*
1561             (? (?&word) )
1562             )?
1563             )
1564             |
1565             (?:
1566             (? (?&word) )
1567             )
1568             )
1569             )
1570             /x;
1571              
1572             ## word "-eq" word | word "eq" word
1573             ## | word "-ne" word | word "ne" word
1574             ## | word "-lt" word | word "lt" word
1575             ## | word "-le" word | word "le" word
1576             ## | word "-gt" word | word "gt" word
1577             ## | word "-ge" word | word "ge" word
1578 22         21878 $REGEXP->{integercomp} = qr/
1579             (?
1580             (?(?&word))
1581             [[:blank:]\h]+
1582             \-?(?eq|ne|lt|le|gt|ge)
1583             [[:blank:]\h]+
1584             (?(?&word))
1585             )
1586             (?(DEFINE)
1587             (?
1588             (?:
1589             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
1590             (?
1591             (?&stringcomp)
1592             )
1593             )
1594             )
1595             |
1596             (?:
1597             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
1598             (?
1599             (?&integercomp_recur)
1600             )
1601             )
1602             )
1603             |
1604             (?:
1605             (?:(?<=\W)|(?<=^)|(?<=\A))
1606             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
1607             [[:blank:]\h]+
1608             (?(?&word))
1609             )
1610             |
1611             (?:
1612             (?(?&word))
1613             [[:blank:]\h]+
1614             (?:
1615             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
1616             |
1617             \-(?ipmatch|strmatch|strcmatch|fnmatch)
1618             )
1619             [[:blank:]\h]+
1620             (?(?&word))
1621             )
1622             |
1623             (?:
1624             (? (?&word) )
1625             [[:blank:]\h]+
1626             \-?in
1627             [[:blank:]\h]+
1628             (? (?&listfunc) )
1629             )
1630             |
1631             (?:
1632             (? (?&word) )
1633             [[:blank:]\h]+
1634             [\=|\!]\~
1635             [[:blank:]\h]+
1636             $Regexp::Common::Apache2::REGEXP->{regex}
1637             )
1638             |
1639             (?:
1640             (? (?&word) )
1641             [[:blank:]\h]+
1642             \-?in
1643             [[:blank:]\h]+
1644             \{
1645             [[:blank:]\h]*
1646             (? (?&words) )
1647             [[:blank:]\h]*
1648             \}
1649             )
1650             )
1651             (?
1652             (?:
1653             (?[a-zA-Z]\w*)
1654             \(
1655             [[:blank:]\h]*
1656             (?
1657             (?> (?&func_words) )?
1658             )
1659             [[:blank:]\h]*
1660             \)
1661             )
1662             |
1663             (?:
1664             ( # paren group 1 (full function)
1665             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
1666             (? # paren group 2 (parens)
1667             \(
1668             (? # paren group 3 (contents of parens)
1669             (?:
1670             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
1671             |
1672             (?&paren_group) # Recurse to named capture group
1673             )*
1674             )
1675             \)
1676             )
1677             )
1678             )
1679             )
1680             (?
1681             (?:
1682             (?
1683             (?:
1684             (?&word)
1685             [[:blank:]\h]*\,[[:blank:]\h]*
1686             )*
1687             (?&word)
1688             )
1689             (?:
1690             [[:blank:]\h]*\,[[:blank:]\h]*
1691             (? (?&word) )
1692             )?
1693             )
1694             |
1695             (?:
1696             (? (?&word) )
1697             [[:blank:]\h]*\,[[:blank:]\h]*
1698             (? (?-2) )
1699             )
1700             |
1701             (?:
1702             (? (?&word) )
1703             )
1704             |
1705             (?:
1706             ( # paren group 1 (full function)
1707             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
1708             (? # paren group 2 (parens)
1709             \(
1710             ( # paren group 3 (contents of parens)
1711             (?:
1712             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
1713             |
1714             (?&paren_group) # Recurse to named capture group
1715             )*
1716             )
1717             \)
1718             )
1719             )
1720             )
1721             )
1722             (?
1723             (?:
1724             (?(?&word))
1725             [[:blank:]\h]+
1726             \-?(? (?:eq|ne|lt|le|gt|ge) )
1727             [[:blank:]\h]+
1728             (?(?&word))
1729             )
1730             )
1731             (?
1732             (?:
1733             (?[a-zA-Z]\w*)
1734             \(
1735             [[:blank:]\h]*
1736             (?
1737             (?> (?&func_words) )?
1738             )
1739             [[:blank:]\h]*
1740             \)
1741             )
1742             |
1743             (?:
1744             ( # paren group 1 (full function)
1745             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
1746             (? # paren group 2 (parens)
1747             \(
1748             (? # paren group 3 (contents of parens)
1749             (?:
1750             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
1751             |
1752             (?&paren_group) # Recurse to named capture group
1753             )*
1754             )
1755             \)
1756             )
1757             )
1758             )
1759             )
1760             (?
1761             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
1762             |
1763             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
1764             )
1765             (?
1766             (?:
1767             (?: (?&substring) )
1768             )
1769             |
1770             (?:
1771             (?:(?&substring)[[:blank:]\h]+(?&string) )
1772             )
1773             )
1774             (?
1775             (?:
1776             (?(?&word))
1777             [[:blank:]\h]+
1778             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
1779             [[:blank:]\h]+
1780             (?(?&word))
1781             )
1782             )
1783             (?
1784             (?:
1785             (?$Regexp::Common::Apache2::REGEXP->{cstring})
1786             )
1787             |
1788             (?:
1789             (? (?&variable) )
1790             )
1791             |
1792             (?:
1793             \$(?\{)?(?${DIGIT})(?()\})
1794             )
1795             )
1796             (?
1797             (?:
1798             \%\{
1799             (?:
1800             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
1801             )
1802             \}
1803             )
1804             |
1805             (?:
1806             \%\{
1807             (?:
1808             (?${VARNAME})
1809             )
1810             \}
1811             )
1812             |
1813             (?:
1814             \bv\(
1815             [[:blank:]\h]*
1816             (?["'])
1817             (?:
1818             (?${VARNAME})
1819             )
1820             [[:blank:]\h]*
1821             \g{var_quote}
1822             \)
1823             )
1824             )
1825             (?
1826             (?:
1827             (?$Regexp::Common::Apache2::REGEXP->{digits})
1828             )
1829             |
1830             (?:
1831             (?['"])
1832             (?:
1833             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
1834             )
1835             \g{word_quote}
1836             )
1837             |
1838             (?:
1839             (?['"])
1840             (?:
1841             (? (?&string) )
1842             )
1843             \g{word_quote}
1844             )
1845             |
1846             (?:
1847             (?
1848             (?: (?: (?-2)\. )+ (?-2) )
1849             )
1850             )
1851             |
1852             (?:
1853             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
1854             )
1855             |
1856             (?:
1857             (?(?&variable))
1858             )
1859             |
1860             (?:
1861             (?(?&function))
1862             )
1863             |
1864             (?:
1865             (? $Regexp::Common::Apache2::REGEXP->{regex} )
1866             )
1867             )
1868             (?
1869             (?:
1870             (?
1871             (?:
1872             (?&word)
1873             [[:blank:]\h]*\,[[:blank:]\h]*
1874             )*
1875             (?&word)
1876             )
1877             (?:
1878             [[:blank:]\h]*\,[[:blank:]\h]*
1879             (? (?&word) )
1880             )?
1881             )
1882             |
1883             (?:
1884             (? (?&word) )
1885             )
1886             )
1887             )
1888             /x;
1889              
1890             ## listfuncname "(" words ")"
1891             ## Use recursion at execution phase for words because it contains dependencies -> list -> listfunc
1892             #(??{$Regexp::Common::Apache2::REGEXP->{words}})
1893 22         33084 $REGEXP->{listfunc} = qr/
1894             (?
1895             (?:
1896             (?[a-zA-Z]\w*)
1897             \(
1898             [[:blank:]\h]*
1899             (?
1900             (?> (?&func_words) )?
1901             )
1902             [[:blank:]\h]*
1903             \)
1904             )
1905             |
1906             (?:
1907             ( # paren group 1 (full function)
1908             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
1909             (? # paren group 2 (parens)
1910             \(
1911             (? # paren group 3 (contents of parens)
1912             (?:
1913             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
1914             |
1915             (?&paren_group) # Recurse to named capture group
1916             )*
1917             )
1918             \)
1919             )
1920             )
1921             )
1922             )
1923             (?(DEFINE)
1924             (?
1925             (?:
1926             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
1927             (?
1928             (?&stringcomp)
1929             )
1930             )
1931             )
1932             |
1933             (?:
1934             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
1935             (?
1936             (?&integercomp)
1937             )
1938             )
1939             )
1940             |
1941             (?:
1942             (?:(?<=\W)|(?<=^)|(?<=\A))
1943             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
1944             [[:blank:]\h]+
1945             (?(?&word))
1946             )
1947             |
1948             (?:
1949             (?(?&word))
1950             [[:blank:]\h]+
1951             (?:
1952             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
1953             |
1954             \-(?ipmatch|strmatch|strcmatch|fnmatch)
1955             )
1956             [[:blank:]\h]+
1957             (?(?&word))
1958             )
1959             |
1960             (?:
1961             (? (?&word) )
1962             [[:blank:]\h]+
1963             \-?in
1964             [[:blank:]\h]+
1965             (? (?&listfunc_recur) )
1966             )
1967             |
1968             (?:
1969             (? (?&word) )
1970             [[:blank:]\h]+
1971             [\=|\!]\~
1972             [[:blank:]\h]+
1973             $Regexp::Common::Apache2::REGEXP->{regex}
1974             )
1975             |
1976             (?:
1977             (? (?&word) )
1978             [[:blank:]\h]+
1979             \-?in
1980             [[:blank:]\h]+
1981             \{
1982             [[:blank:]\h]*
1983             (? (?&words) )
1984             [[:blank:]\h]*
1985             \}
1986             )
1987             )
1988             (?
1989             (?:$Regexp::Common::Apache2::REGEXP->{is_true})
1990             |
1991             (?:$Regexp::Common::Apache2::REGEXP->{is_false})
1992             |
1993             (?:
1994             \![[:blank:]\h]*
1995             (? (?-2) )
1996             )
1997             |
1998             (?:
1999             \(
2000             [[:blank:]\h]*
2001             (? (?&cond) )
2002             [[:blank:]\h]*
2003             \)
2004             )
2005             |
2006             (?(?=(?:(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:(?:\=\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-?(?:eq|ne|lt|le|gt|ge)))[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))|(?:\-(?[d|e|f|s|L|h|F|U|A|n|z|T|R]))|(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]+(?:(?:\=\=|\=|\!\=|\<|\<\=|\>|\>\=)|(?:\-(?:ipmatch|strmatch|strcmatch|fnmatch))))|(?:(?:.*?)[[:blank:]\h]+(?:in|[\=|\!]\~)[[:blank:]\h]+)))
2007             (?(?&comp))
2008             )
2009             |
2010             (?(?=(?:.+?)\|\|(?:.+?))
2011             (?
2012             (? (?-3) )
2013             [[:blank:]\h]*
2014             \|\|
2015             [[:blank:]\h]*
2016             (? (?-3) )
2017             )
2018             )
2019             |
2020             (?(?=(?:.+?)\&\&(?:.+?))
2021             (?
2022             (? (?-3) )
2023             [[:blank:]\h]*
2024             \&\&
2025             [[:blank:]\h]*
2026             (? (?-3) )
2027             )
2028             )
2029             )
2030             (?
2031             (?:
2032             (?[a-zA-Z]\w*)
2033             \(
2034             [[:blank:]\h]*
2035             (?
2036             (?> (?&func_words) )?
2037             )
2038             [[:blank:]\h]*
2039             \)
2040             )
2041             |
2042             (?:
2043             ( # paren group 1 (full function)
2044             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
2045             (? # paren group 2 (parens)
2046             \(
2047             (? # paren group 3 (contents of parens)
2048             (?:
2049             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
2050             |
2051             (?&paren_group) # Recurse to named capture group
2052             )*
2053             )
2054             \)
2055             )
2056             )
2057             )
2058             )
2059             (?
2060             (?:
2061             (?
2062             (?:
2063             (?&word)
2064             [[:blank:]\h]*\,[[:blank:]\h]*
2065             )*
2066             (?&word)
2067             )
2068             (?:
2069             [[:blank:]\h]*\,[[:blank:]\h]*
2070             (? (?&word) )
2071             )?
2072             )
2073             |
2074             (?:
2075             (? (?&word) )
2076             [[:blank:]\h]*\,[[:blank:]\h]*
2077             (? (?-2) )
2078             )
2079             |
2080             (?:
2081             (? (?&word) )
2082             )
2083             |
2084             (?:
2085             ( # paren group 1 (full function)
2086             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
2087             (? # paren group 2 (parens)
2088             \(
2089             ( # paren group 3 (contents of parens)
2090             (?:
2091             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
2092             |
2093             (?&paren_group) # Recurse to named capture group
2094             )*
2095             )
2096             \)
2097             )
2098             )
2099             )
2100             )
2101             (?
2102             (?:
2103             (?(?&word))
2104             [[:blank:]\h]+
2105             \-?(? (?:eq|ne|lt|le|gt|ge) )
2106             [[:blank:]\h]+
2107             (?(?&word))
2108             )
2109             )
2110             (?
2111             (?:
2112             (?[a-zA-Z]\w*)
2113             \(
2114             [[:blank:]\h]*
2115             (?
2116             (?> (?&func_words) )?
2117             )
2118             [[:blank:]\h]*
2119             \)
2120             )
2121             |
2122             (?:
2123             ( # paren group 1 (full function)
2124             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
2125             (? # paren group 2 (parens)
2126             \(
2127             (? # paren group 3 (contents of parens)
2128             (?:
2129             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
2130             |
2131             (?&paren_group) # Recurse to named capture group
2132             )*
2133             )
2134             \)
2135             )
2136             )
2137             )
2138             )
2139             (?
2140             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
2141             |
2142             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
2143             )
2144             (?
2145             (?:
2146             (?: (?&substring) )
2147             )
2148             |
2149             (?:
2150             (?:(?&substring)[[:blank:]\h]+(?&string) )
2151             )
2152             )
2153             (?
2154             (?:
2155             (?(?&word))
2156             [[:blank:]\h]+
2157             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
2158             [[:blank:]\h]+
2159             (?(?&word))
2160             )
2161             )
2162             (?
2163             (?:
2164             (?$Regexp::Common::Apache2::REGEXP->{cstring})
2165             )
2166             |
2167             (?:
2168             (? (?&variable) )
2169             )
2170             |
2171             (?:
2172             \$(?\{)?(?${DIGIT})(?()\})
2173             )
2174             )
2175             (?
2176             (?:
2177             \%\{
2178             (?:
2179             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
2180             )
2181             \}
2182             )
2183             |
2184             (?:
2185             \%\{
2186             (?:
2187             (?${VARNAME})
2188             )
2189             \}
2190             )
2191             |
2192             (?:
2193             \bv\(
2194             [[:blank:]\h]*
2195             (?["'])
2196             (?:
2197             (?${VARNAME})
2198             )
2199             [[:blank:]\h]*
2200             \g{var_quote}
2201             \)
2202             )
2203             )
2204             (?
2205             (?:
2206             (?$Regexp::Common::Apache2::REGEXP->{digits})
2207             )
2208             |
2209             (?:
2210             (?['"])
2211             (?:
2212             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
2213             )
2214             \g{word_quote}
2215             )
2216             |
2217             (?:
2218             (?['"])
2219             (?:
2220             (? (?&string) )
2221             )
2222             \g{word_quote}
2223             )
2224             |
2225             (?:
2226             (?
2227             (?: (?: (?-2)\. )+ (?-2) )
2228             )
2229             )
2230             |
2231             (?:
2232             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
2233             )
2234             |
2235             (?:
2236             (?(?&variable))
2237             )
2238             |
2239             (?:
2240             (?(?&function))
2241             )
2242             |
2243             (?:
2244             (? $Regexp::Common::Apache2::REGEXP->{regex} )
2245             )
2246             )
2247             (?
2248             (?:
2249             (?
2250             (?:
2251             (?&word)
2252             [[:blank:]\h]*\,[[:blank:]\h]*
2253             )*
2254             (?&word)
2255             )
2256             (?:
2257             [[:blank:]\h]*\,[[:blank:]\h]*
2258             (? (?&word) )
2259             )?
2260             )
2261             |
2262             (?:
2263             (? (?&word) )
2264             )
2265             )
2266             )
2267             /x;
2268              
2269             ## substring
2270             ## | string substring
2271 22         22350 $REGEXP->{string} = qr/
2272             (?
2273             (?:
2274             (?&substring) # Recurse on the entire substring regexp
2275             )
2276             |
2277             (?:
2278             (?:(?&string_recur)[[:blank:]\h]+(?&substring))
2279             )
2280             )
2281             (?(DEFINE)
2282             (?
2283             (?:
2284             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
2285             (?
2286             (?&stringcomp)
2287             )
2288             )
2289             )
2290             |
2291             (?:
2292             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
2293             (?
2294             (?&integercomp)
2295             )
2296             )
2297             )
2298             |
2299             (?:
2300             (?:(?<=\W)|(?<=^)|(?<=\A))
2301             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
2302             [[:blank:]\h]+
2303             (?(?&word))
2304             )
2305             |
2306             (?:
2307             (?(?&word))
2308             [[:blank:]\h]+
2309             (?:
2310             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
2311             |
2312             \-(?ipmatch|strmatch|strcmatch|fnmatch)
2313             )
2314             [[:blank:]\h]+
2315             (?(?&word))
2316             )
2317             |
2318             (?:
2319             (? (?&word) )
2320             [[:blank:]\h]+
2321             \-?in
2322             [[:blank:]\h]+
2323             (? (?&listfunc) )
2324             )
2325             |
2326             (?:
2327             (? (?&word) )
2328             [[:blank:]\h]+
2329             [\=|\!]\~
2330             [[:blank:]\h]+
2331             $Regexp::Common::Apache2::REGEXP->{regex}
2332             )
2333             |
2334             (?:
2335             (? (?&word) )
2336             [[:blank:]\h]+
2337             \-?in
2338             [[:blank:]\h]+
2339             \{
2340             [[:blank:]\h]*
2341             (? (?&words) )
2342             [[:blank:]\h]*
2343             \}
2344             )
2345             )
2346             (?
2347             (?:
2348             (?[a-zA-Z]\w*)
2349             \(
2350             [[:blank:]\h]*
2351             (?
2352             (?> (?&func_words) )?
2353             )
2354             [[:blank:]\h]*
2355             \)
2356             )
2357             |
2358             (?:
2359             ( # paren group 1 (full function)
2360             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
2361             (? # paren group 2 (parens)
2362             \(
2363             (? # paren group 3 (contents of parens)
2364             (?:
2365             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
2366             |
2367             (?&paren_group) # Recurse to named capture group
2368             )*
2369             )
2370             \)
2371             )
2372             )
2373             )
2374             )
2375             (?
2376             (?:
2377             (?
2378             (?:
2379             (?&word)
2380             [[:blank:]\h]*\,[[:blank:]\h]*
2381             )*
2382             (?&word)
2383             )
2384             (?:
2385             [[:blank:]\h]*\,[[:blank:]\h]*
2386             (? (?&word) )
2387             )?
2388             )
2389             |
2390             (?:
2391             (? (?&word) )
2392             [[:blank:]\h]*\,[[:blank:]\h]*
2393             (? (?-2) )
2394             )
2395             |
2396             (?:
2397             (? (?&word) )
2398             )
2399             |
2400             (?:
2401             ( # paren group 1 (full function)
2402             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
2403             (? # paren group 2 (parens)
2404             \(
2405             ( # paren group 3 (contents of parens)
2406             (?:
2407             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
2408             |
2409             (?&paren_group) # Recurse to named capture group
2410             )*
2411             )
2412             \)
2413             )
2414             )
2415             )
2416             )
2417             (?
2418             (?:
2419             (?(?&word))
2420             [[:blank:]\h]+
2421             \-?(? (?:eq|ne|lt|le|gt|ge) )
2422             [[:blank:]\h]+
2423             (?(?&word))
2424             )
2425             )
2426             (?
2427             (?:
2428             (?[a-zA-Z]\w*)
2429             \(
2430             [[:blank:]\h]*
2431             (?
2432             (?> (?&func_words) )?
2433             )
2434             [[:blank:]\h]*
2435             \)
2436             )
2437             |
2438             (?:
2439             ( # paren group 1 (full function)
2440             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
2441             (? # paren group 2 (parens)
2442             \(
2443             (? # paren group 3 (contents of parens)
2444             (?:
2445             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
2446             |
2447             (?&paren_group) # Recurse to named capture group
2448             )*
2449             )
2450             \)
2451             )
2452             )
2453             )
2454             )
2455             (?
2456             (?:
2457             (?: (?&substring) )
2458             )
2459             |
2460             (?:
2461             (?:(?&substring)[[:blank:]\h]+(?&string_recur) )
2462             )
2463             )
2464             (?
2465             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
2466             |
2467             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
2468             )
2469             (?
2470             (?:
2471             (?(?&word))
2472             [[:blank:]\h]+
2473             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
2474             [[:blank:]\h]+
2475             (?(?&word))
2476             )
2477             )
2478             (?
2479             (?:
2480             (?$Regexp::Common::Apache2::REGEXP->{cstring})
2481             )
2482             |
2483             (?:
2484             (? (?&variable) )
2485             )
2486             |
2487             (?:
2488             \$(?\{)?(?${DIGIT})(?()\})
2489             )
2490             )
2491             (?
2492             (?:
2493             \%\{
2494             (?:
2495             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
2496             )
2497             \}
2498             )
2499             |
2500             (?:
2501             \%\{
2502             (?:
2503             (?${VARNAME})
2504             )
2505             \}
2506             )
2507             |
2508             (?:
2509             \bv\(
2510             [[:blank:]\h]*
2511             (?["'])
2512             (?:
2513             (?${VARNAME})
2514             )
2515             [[:blank:]\h]*
2516             \g{var_quote}
2517             \)
2518             )
2519             )
2520             (?
2521             (?:
2522             (?$Regexp::Common::Apache2::REGEXP->{digits})
2523             )
2524             |
2525             (?:
2526             (?['"])
2527             (?:
2528             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
2529             )
2530             \g{word_quote}
2531             )
2532             |
2533             (?:
2534             (?['"])
2535             (?:
2536             (? (?&string) )
2537             )
2538             \g{word_quote}
2539             )
2540             |
2541             (?:
2542             (?
2543             (?: (?: (?-2)\. )+ (?-2) )
2544             )
2545             )
2546             |
2547             (?:
2548             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
2549             )
2550             |
2551             (?:
2552             (?(?&variable))
2553             )
2554             |
2555             (?:
2556             (?(?&function))
2557             )
2558             |
2559             (?:
2560             (? $Regexp::Common::Apache2::REGEXP->{regex} )
2561             )
2562             )
2563             (?
2564             (?:
2565             (?
2566             (?:
2567             (?&word)
2568             [[:blank:]\h]*\,[[:blank:]\h]*
2569             )*
2570             (?&word)
2571             )
2572             (?:
2573             [[:blank:]\h]*\,[[:blank:]\h]*
2574             (? (?&word) )
2575             )?
2576             )
2577             |
2578             (?:
2579             (? (?&word) )
2580             )
2581             )
2582             )/x;
2583              
2584             ## word "==" word
2585             ## | word "!=" word
2586             ## | word "<" word
2587             ## | word "<=" word
2588             ## | word ">" word
2589             ## | word ">=" word
2590 22         22479 $REGEXP->{stringcomp} = qr/
2591             (?
2592             (?(?&word))
2593             [[:blank:]\h]+
2594             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
2595             [[:blank:]\h]+
2596             (?(?&word))
2597             )
2598             (?(DEFINE)
2599             (?
2600             (?:
2601             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
2602             (?
2603             (?&stringcomp_recur)
2604             )
2605             )
2606             )
2607             |
2608             (?:
2609             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
2610             (?
2611             (?&integercomp)
2612             )
2613             )
2614             )
2615             |
2616             (?:
2617             (?:(?<=\W)|(?<=^)|(?<=\A))
2618             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
2619             [[:blank:]\h]+
2620             (?(?&word))
2621             )
2622             |
2623             (?:
2624             (?(?&word))
2625             [[:blank:]\h]+
2626             (?:
2627             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
2628             |
2629             \-(?ipmatch|strmatch|strcmatch|fnmatch)
2630             )
2631             [[:blank:]\h]+
2632             (?(?&word))
2633             )
2634             |
2635             (?:
2636             (? (?&word) )
2637             [[:blank:]\h]+
2638             \-?in
2639             [[:blank:]\h]+
2640             (? (?&listfunc) )
2641             )
2642             |
2643             (?:
2644             (? (?&word) )
2645             [[:blank:]\h]+
2646             [\=|\!]\~
2647             [[:blank:]\h]+
2648             $Regexp::Common::Apache2::REGEXP->{regex}
2649             )
2650             |
2651             (?:
2652             (? (?&word) )
2653             [[:blank:]\h]+
2654             \-?in
2655             [[:blank:]\h]+
2656             \{
2657             [[:blank:]\h]*
2658             (? (?&words) )
2659             [[:blank:]\h]*
2660             \}
2661             )
2662             )
2663             (?
2664             (?:
2665             (?[a-zA-Z]\w*)
2666             \(
2667             [[:blank:]\h]*
2668             (?
2669             (?> (?&func_words) )?
2670             )
2671             [[:blank:]\h]*
2672             \)
2673             )
2674             |
2675             (?:
2676             ( # paren group 1 (full function)
2677             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
2678             (? # paren group 2 (parens)
2679             \(
2680             (? # paren group 3 (contents of parens)
2681             (?:
2682             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
2683             |
2684             (?&paren_group) # Recurse to named capture group
2685             )*
2686             )
2687             \)
2688             )
2689             )
2690             )
2691             )
2692             (?
2693             (?:
2694             (?
2695             (?:
2696             (?&word)
2697             [[:blank:]\h]*\,[[:blank:]\h]*
2698             )*
2699             (?&word)
2700             )
2701             (?:
2702             [[:blank:]\h]*\,[[:blank:]\h]*
2703             (? (?&word) )
2704             )?
2705             )
2706             |
2707             (?:
2708             (? (?&word) )
2709             [[:blank:]\h]*\,[[:blank:]\h]*
2710             (? (?-2) )
2711             )
2712             |
2713             (?:
2714             (? (?&word) )
2715             )
2716             |
2717             (?:
2718             ( # paren group 1 (full function)
2719             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
2720             (? # paren group 2 (parens)
2721             \(
2722             ( # paren group 3 (contents of parens)
2723             (?:
2724             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
2725             |
2726             (?&paren_group) # Recurse to named capture group
2727             )*
2728             )
2729             \)
2730             )
2731             )
2732             )
2733             )
2734             (?
2735             (?:
2736             (?(?&word))
2737             [[:blank:]\h]+
2738             \-?(? (?:eq|ne|lt|le|gt|ge) )
2739             [[:blank:]\h]+
2740             (?(?&word))
2741             )
2742             )
2743             (?
2744             (?:
2745             (?[a-zA-Z]\w*)
2746             \(
2747             [[:blank:]\h]*
2748             (?
2749             (?> (?&func_words) )?
2750             )
2751             [[:blank:]\h]*
2752             \)
2753             )
2754             |
2755             (?:
2756             ( # paren group 1 (full function)
2757             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
2758             (? # paren group 2 (parens)
2759             \(
2760             (? # paren group 3 (contents of parens)
2761             (?:
2762             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
2763             |
2764             (?&paren_group) # Recurse to named capture group
2765             )*
2766             )
2767             \)
2768             )
2769             )
2770             )
2771             )
2772             (?
2773             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
2774             |
2775             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
2776             )
2777             (?
2778             (?:
2779             (?: (?&substring) )
2780             )
2781             |
2782             (?:
2783             (?:(?&substring)[[:blank:]\h]+(?&string) )
2784             )
2785             )
2786             (?
2787             (?:
2788             (?(?&word))
2789             [[:blank:]\h]+
2790             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
2791             [[:blank:]\h]+
2792             (?(?&word))
2793             )
2794             )
2795             (?
2796             (?:
2797             (?$Regexp::Common::Apache2::REGEXP->{cstring})
2798             )
2799             |
2800             (?:
2801             (? (?&variable) )
2802             )
2803             |
2804             (?:
2805             \$(?\{)?(?${DIGIT})(?()\})
2806             )
2807             )
2808             (?
2809             (?:
2810             \%\{
2811             (?:
2812             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
2813             )
2814             \}
2815             )
2816             |
2817             (?:
2818             \%\{
2819             (?:
2820             (?${VARNAME})
2821             )
2822             \}
2823             )
2824             |
2825             (?:
2826             \bv\(
2827             [[:blank:]\h]*
2828             (?["'])
2829             (?:
2830             (?${VARNAME})
2831             )
2832             [[:blank:]\h]*
2833             \g{var_quote}
2834             \)
2835             )
2836             )
2837             (?
2838             (?:
2839             (?$Regexp::Common::Apache2::REGEXP->{digits})
2840             )
2841             |
2842             (?:
2843             (?['"])
2844             (?:
2845             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
2846             )
2847             \g{word_quote}
2848             )
2849             |
2850             (?:
2851             (?['"])
2852             (?:
2853             (? (?&string) )
2854             )
2855             \g{word_quote}
2856             )
2857             |
2858             (?:
2859             (?
2860             (?: (?: (?-2)\. )+ (?-2) )
2861             )
2862             )
2863             |
2864             (?:
2865             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
2866             )
2867             |
2868             (?:
2869             (?(?&variable))
2870             )
2871             |
2872             (?:
2873             (?(?&function))
2874             )
2875             |
2876             (?:
2877             (? $Regexp::Common::Apache2::REGEXP->{regex} )
2878             )
2879             )
2880             (?
2881             (?:
2882             (?
2883             (?:
2884             (?&word)
2885             [[:blank:]\h]*\,[[:blank:]\h]*
2886             )*
2887             (?&word)
2888             )
2889             (?:
2890             [[:blank:]\h]*\,[[:blank:]\h]*
2891             (? (?&word) )
2892             )?
2893             )
2894             |
2895             (?:
2896             (? (?&word) )
2897             )
2898             )
2899             )
2900             /x;
2901              
2902             ## cstring
2903             ## | variable
2904             ## | rebackref
2905 22         19281 $REGEXP->{substring} = qr/
2906             (?
2907             (?:$Regexp::Common::Apache2::REGEXP->{cstring})
2908             |
2909             (?:
2910             (?&variable)
2911             )
2912             |
2913             (?:
2914             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
2915             )
2916             )
2917             (?(DEFINE)
2918             (?
2919             (?:
2920             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
2921             (?
2922             (?&stringcomp)
2923             )
2924             )
2925             )
2926             |
2927             (?:
2928             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
2929             (?
2930             (?&integercomp)
2931             )
2932             )
2933             )
2934             |
2935             (?:
2936             (?:(?<=\W)|(?<=^)|(?<=\A))
2937             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
2938             [[:blank:]\h]+
2939             (?(?&word))
2940             )
2941             |
2942             (?:
2943             (?(?&word))
2944             [[:blank:]\h]+
2945             (?:
2946             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
2947             |
2948             \-(?ipmatch|strmatch|strcmatch|fnmatch)
2949             )
2950             [[:blank:]\h]+
2951             (?(?&word))
2952             )
2953             |
2954             (?:
2955             (? (?&word) )
2956             [[:blank:]\h]+
2957             \-?in
2958             [[:blank:]\h]+
2959             (? (?&listfunc) )
2960             )
2961             |
2962             (?:
2963             (? (?&word) )
2964             [[:blank:]\h]+
2965             [\=|\!]\~
2966             [[:blank:]\h]+
2967             $Regexp::Common::Apache2::REGEXP->{regex}
2968             )
2969             |
2970             (?:
2971             (? (?&word) )
2972             [[:blank:]\h]+
2973             \-?in
2974             [[:blank:]\h]+
2975             \{
2976             [[:blank:]\h]*
2977             (? (?&words) )
2978             [[:blank:]\h]*
2979             \}
2980             )
2981             )
2982             (?
2983             (?:
2984             (?[a-zA-Z]\w*)
2985             \(
2986             [[:blank:]\h]*
2987             (?
2988             (?> (?&func_words) )?
2989             )
2990             [[:blank:]\h]*
2991             \)
2992             )
2993             |
2994             (?:
2995             ( # paren group 1 (full function)
2996             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
2997             (? # paren group 2 (parens)
2998             \(
2999             (? # paren group 3 (contents of parens)
3000             (?:
3001             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
3002             |
3003             (?&paren_group) # Recurse to named capture group
3004             )*
3005             )
3006             \)
3007             )
3008             )
3009             )
3010             )
3011             (?
3012             (?:
3013             (?
3014             (?:
3015             (?&word)
3016             [[:blank:]\h]*\,[[:blank:]\h]*
3017             )*
3018             (?&word)
3019             )
3020             (?:
3021             [[:blank:]\h]*\,[[:blank:]\h]*
3022             (? (?&word) )
3023             )?
3024             )
3025             |
3026             (?:
3027             (? (?&word) )
3028             [[:blank:]\h]*\,[[:blank:]\h]*
3029             (? (?-2) )
3030             )
3031             |
3032             (?:
3033             (? (?&word) )
3034             )
3035             |
3036             (?:
3037             ( # paren group 1 (full function)
3038             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
3039             (? # paren group 2 (parens)
3040             \(
3041             ( # paren group 3 (contents of parens)
3042             (?:
3043             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
3044             |
3045             (?&paren_group) # Recurse to named capture group
3046             )*
3047             )
3048             \)
3049             )
3050             )
3051             )
3052             )
3053             (?
3054             (?:
3055             (?(?&word))
3056             [[:blank:]\h]+
3057             \-?(? (?:eq|ne|lt|le|gt|ge) )
3058             [[:blank:]\h]+
3059             (?(?&word))
3060             )
3061             )
3062             (?
3063             (?:
3064             (?[a-zA-Z]\w*)
3065             \(
3066             [[:blank:]\h]*
3067             (?
3068             (?> (?&func_words) )?
3069             )
3070             [[:blank:]\h]*
3071             \)
3072             )
3073             |
3074             (?:
3075             ( # paren group 1 (full function)
3076             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
3077             (? # paren group 2 (parens)
3078             \(
3079             (? # paren group 3 (contents of parens)
3080             (?:
3081             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
3082             |
3083             (?&paren_group) # Recurse to named capture group
3084             )*
3085             )
3086             \)
3087             )
3088             )
3089             )
3090             )
3091             (?
3092             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
3093             |
3094             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
3095             )
3096             (?
3097             (?:(?-1)[[:blank:]\h]+(?&substring_recur))
3098             |
3099             (?&substring_recur)
3100             )
3101             (?
3102             (?:
3103             (?(?&word))
3104             [[:blank:]\h]+
3105             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
3106             [[:blank:]\h]+
3107             (?(?&word))
3108             )
3109             )
3110             (?
3111             (?:$Regexp::Common::Apache2::REGEXP->{cstring})
3112             |
3113             (?:
3114             (?&variable)
3115             )
3116             )
3117             (?
3118             (?:
3119             \%\{
3120             (?:
3121             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
3122             )
3123             \}
3124             )
3125             |
3126             (?:
3127             \%\{
3128             (?:
3129             (?${VARNAME})
3130             )
3131             \}
3132             )
3133             |
3134             (?:
3135             \bv\(
3136             [[:blank:]\h]*
3137             (?["'])
3138             (?:
3139             (?${VARNAME})
3140             )
3141             [[:blank:]\h]*
3142             \g{var_quote}
3143             \)
3144             )
3145             )
3146             (?
3147             (?:
3148             (?$Regexp::Common::Apache2::REGEXP->{digits})
3149             )
3150             |
3151             (?:
3152             (?['"])
3153             (?:
3154             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
3155             )
3156             \g{word_quote}
3157             )
3158             |
3159             (?:
3160             (?['"])
3161             (?:
3162             (? (?&string) )
3163             )
3164             \g{word_quote}
3165             )
3166             |
3167             (?:
3168             (?
3169             (?: (?: (?-2)\. )+ (?-2) )
3170             )
3171             )
3172             |
3173             (?:
3174             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
3175             )
3176             |
3177             (?:
3178             (?(?&variable))
3179             )
3180             |
3181             (?:
3182             (?(?&function))
3183             )
3184             |
3185             (?:
3186             (? $Regexp::Common::Apache2::REGEXP->{regex} )
3187             )
3188             )
3189             (?
3190             (?:
3191             (?
3192             (?:
3193             (?&word)
3194             [[:blank:]\h]*\,[[:blank:]\h]*
3195             )*
3196             (?&word)
3197             )
3198             (?:
3199             [[:blank:]\h]*\,[[:blank:]\h]*
3200             (? (?&word) )
3201             )?
3202             )
3203             |
3204             (?:
3205             (? (?&word) )
3206             )
3207             )
3208             )
3209             /x;
3210              
3211             ## "%{" varname "}"
3212             ## | "%{" funcname ":" funcargs "}"
3213             ## | "v('" varname "')"
3214 22         21293 $REGEXP->{variable} = qr/
3215             (?
3216             (?:
3217             (?:^|\A|(?
3218             (?:
3219             (?(?${FUNCNAME})\:(?(?>\\\}|[^\}])*+))
3220             )
3221             \}
3222             )
3223             |
3224             (?:
3225             (?:^|\A|(?
3226             (?:
3227             (?${VARNAME})
3228             )
3229             \}
3230             )
3231             |
3232             (?:
3233             \bv\(
3234             [[:blank:]\h]*
3235             (?["'])
3236             (?:
3237             (?${VARNAME})
3238             )
3239             [[:blank:]\h]*
3240             \g{var_quote}
3241             \)
3242             )
3243             )
3244             (?(DEFINE)
3245             (?
3246             (?:
3247             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
3248             (?
3249             (?&stringcomp)
3250             )
3251             )
3252             )
3253             |
3254             (?:
3255             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
3256             (?
3257             (?&integercomp)
3258             )
3259             )
3260             )
3261             |
3262             (?:
3263             (?:(?<=\W)|(?<=^)|(?<=\A))
3264             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
3265             [[:blank:]\h]+
3266             (?(?&word))
3267             )
3268             |
3269             (?:
3270             (?(?&word))
3271             [[:blank:]\h]+
3272             (?:
3273             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
3274             |
3275             \-(?ipmatch|strmatch|strcmatch|fnmatch)
3276             )
3277             [[:blank:]\h]+
3278             (?(?&word))
3279             )
3280             |
3281             (?:
3282             (? (?&word) )
3283             [[:blank:]\h]+
3284             \-?in
3285             [[:blank:]\h]+
3286             (? (?&listfunc) )
3287             )
3288             |
3289             (?:
3290             (? (?&word) )
3291             [[:blank:]\h]+
3292             [\=|\!]\~
3293             [[:blank:]\h]+
3294             $Regexp::Common::Apache2::REGEXP->{regex}
3295             )
3296             |
3297             (?:
3298             (? (?&word) )
3299             [[:blank:]\h]+
3300             \-?in
3301             [[:blank:]\h]+
3302             \{
3303             [[:blank:]\h]*
3304             (? (?&words) )
3305             [[:blank:]\h]*
3306             \}
3307             )
3308             )
3309             (?
3310             (?:
3311             (?[a-zA-Z]\w*)
3312             \(
3313             [[:blank:]\h]*
3314             (?
3315             (?> (?&func_words) )?
3316             )
3317             [[:blank:]\h]*
3318             \)
3319             )
3320             |
3321             (?:
3322             ( # paren group 1 (full function)
3323             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
3324             (? # paren group 2 (parens)
3325             \(
3326             (? # paren group 3 (contents of parens)
3327             (?:
3328             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
3329             |
3330             (?&paren_group) # Recurse to named capture group
3331             )*
3332             )
3333             \)
3334             )
3335             )
3336             )
3337             )
3338             (?
3339             (?:
3340             (?
3341             (?:
3342             (?&word)
3343             [[:blank:]\h]*\,[[:blank:]\h]*
3344             )*
3345             (?&word)
3346             )
3347             (?:
3348             [[:blank:]\h]*\,[[:blank:]\h]*
3349             (? (?&word) )
3350             )?
3351             )
3352             |
3353             (?:
3354             (? (?&word) )
3355             [[:blank:]\h]*\,[[:blank:]\h]*
3356             (? (?-2) )
3357             )
3358             |
3359             (?:
3360             (? (?&word) )
3361             )
3362             |
3363             (?:
3364             ( # paren group 1 (full function)
3365             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
3366             (? # paren group 2 (parens)
3367             \(
3368             ( # paren group 3 (contents of parens)
3369             (?:
3370             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
3371             |
3372             (?&paren_group) # Recurse to named capture group
3373             )*
3374             )
3375             \)
3376             )
3377             )
3378             )
3379             )
3380             (?
3381             (?:
3382             (?(?&word))
3383             [[:blank:]\h]+
3384             \-?(? (?:eq|ne|lt|le|gt|ge) )
3385             [[:blank:]\h]+
3386             (?(?&word))
3387             )
3388             )
3389             (?
3390             (?:
3391             (?[a-zA-Z]\w*)
3392             \(
3393             [[:blank:]\h]*
3394             (?
3395             (?> (?&func_words) )?
3396             )
3397             [[:blank:]\h]*
3398             \)
3399             )
3400             |
3401             (?:
3402             ( # paren group 1 (full function)
3403             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
3404             (? # paren group 2 (parens)
3405             \(
3406             (? # paren group 3 (contents of parens)
3407             (?:
3408             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
3409             |
3410             (?&paren_group) # Recurse to named capture group
3411             )*
3412             )
3413             \)
3414             )
3415             )
3416             )
3417             )
3418             (?
3419             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
3420             |
3421             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
3422             )
3423             (?
3424             (?:
3425             (?: (?&substring) )
3426             )
3427             |
3428             (?:
3429             (?:(?&substring)[[:blank:]\h]+(?&string) )
3430             )
3431             )
3432             (?
3433             (?:
3434             (?$Regexp::Common::Apache2::REGEXP->{cstring})
3435             )
3436             |
3437             (?:
3438             (? (?&variable_recur) )
3439             )
3440             |
3441             (?:
3442             \$(?\{)?(?${DIGIT})(?()\})
3443             )
3444             )
3445             (?
3446             (?:
3447             (?(?&word))
3448             [[:blank:]\h]+
3449             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
3450             [[:blank:]\h]+
3451             (?(?&word))
3452             )
3453             )
3454             (?
3455             (?:
3456             \%\{
3457             (?:
3458             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
3459             )
3460             \}
3461             )
3462             |
3463             (?:
3464             \%\{
3465             (?:
3466             (?${VARNAME})
3467             )
3468             \}
3469             )
3470             |
3471             (?:
3472             \bv\(
3473             [[:blank:]\h]*
3474             (?["'])
3475             (?:
3476             (?${VARNAME})
3477             )
3478             [[:blank:]\h]*
3479             \g{var_quote}
3480             \)
3481             )
3482             )
3483             (?
3484             (?:
3485             (?$Regexp::Common::Apache2::REGEXP->{digits})
3486             )
3487             |
3488             (?:
3489             (?['"])
3490             (?:
3491             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
3492             )
3493             \g{word_quote}
3494             )
3495             |
3496             (?:
3497             (?['"])
3498             (?:
3499             (? (?&string) )
3500             )
3501             \g{word_quote}
3502             )
3503             |
3504             (?:
3505             (?
3506             (?: (?: (?-2)\. )+ (?-2) )
3507             )
3508             )
3509             |
3510             (?:
3511             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
3512             )
3513             |
3514             (?:
3515             (?(?&variable_recur))
3516             )
3517             |
3518             (?:
3519             (?(?&function))
3520             )
3521             |
3522             (?:
3523             (? $Regexp::Common::Apache2::REGEXP->{regex} )
3524             )
3525             )
3526             (?
3527             (?:
3528             (?
3529             (?:
3530             (?&word)
3531             [[:blank:]\h]*\,[[:blank:]\h]*
3532             )*
3533             (?&word)
3534             )
3535             (?:
3536             [[:blank:]\h]*\,[[:blank:]\h]*
3537             (? (?&word) )
3538             )?
3539             )
3540             |
3541             (?:
3542             (? (?&word) )
3543             )
3544             )
3545             )
3546             /x;
3547              
3548             ## digits
3549             ## | "'" string "'"
3550             ## | '"' string '"'
3551             ## | word "." word
3552             ## | variable
3553             ## | sub
3554             ## | join
3555             ## | function
3556             ## | "(" word ")"
3557 22         25087 $REGEXP->{word} = qr/
3558             (?
3559             (?:
3560             (?$Regexp::Common::Apache2::REGEXP->{digits})
3561             )
3562             |
3563             (?:
3564             (?\')
3565             (?:
3566             (? (?&string) )
3567             )
3568             \'
3569             )
3570             |
3571             (?:
3572             (?\")
3573             (?:
3574             (? (?&string) )
3575             )
3576             \"
3577             )
3578             |
3579             (?:
3580             (?
3581             (?: (?&word_recur)\. )+ (?&word_recur)
3582             )
3583             )
3584             |
3585             (?:
3586             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
3587             )
3588             |
3589             (?:
3590             (?(?&variable))
3591             )
3592             |
3593             (?:
3594             (?(?&function))
3595             )
3596             |
3597             (?:
3598             $Regexp::Common::Apache2::REGEXP->{regex}
3599             )
3600             )
3601             (?(DEFINE)
3602             (?
3603             (?:
3604             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
3605             (?
3606             (?&stringcomp)
3607             )
3608             )
3609             )
3610             |
3611             (?:
3612             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
3613             (?
3614             (?&integercomp)
3615             )
3616             )
3617             )
3618             |
3619             (?:
3620             (?:(?<=\W)|(?<=^)|(?<=\A))
3621             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
3622             [[:blank:]\h]+
3623             (?(?&word_recur))
3624             )
3625             |
3626             (?:
3627             (?(?&word_recur))
3628             [[:blank:]\h]+
3629             (?:
3630             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
3631             |
3632             \-(?ipmatch|strmatch|strcmatch|fnmatch)
3633             )
3634             [[:blank:]\h]+
3635             (?(?&word_recur))
3636             )
3637             |
3638             (?:
3639             (? (?&word_recur) )
3640             [[:blank:]\h]+
3641             \-?in
3642             [[:blank:]\h]+
3643             (? (?&listfunc) )
3644             )
3645             |
3646             (?:
3647             (? (?&word_recur) )
3648             [[:blank:]\h]+
3649             [\=|\!]\~
3650             [[:blank:]\h]+
3651             $Regexp::Common::Apache2::REGEXP->{regex}
3652             )
3653             |
3654             (?:
3655             (? (?&word_recur) )
3656             [[:blank:]\h]+
3657             \-?in
3658             [[:blank:]\h]+
3659             \{
3660             [[:blank:]\h]*
3661             (? (?&words) )
3662             [[:blank:]\h]*
3663             \}
3664             )
3665             )
3666             (?
3667             (?:
3668             (?[a-zA-Z]\w*)
3669             \(
3670             [[:blank:]\h]*
3671             (?
3672             (?> (?&func_words) )?
3673             )
3674             [[:blank:]\h]*
3675             \)
3676             )
3677             |
3678             (?:
3679             ( # paren group 1 (full function)
3680             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
3681             (? # paren group 2 (parens)
3682             \(
3683             (? # paren group 3 (contents of parens)
3684             (?:
3685             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
3686             |
3687             (?&paren_group) # Recurse to named capture group
3688             )*
3689             )
3690             \)
3691             )
3692             )
3693             )
3694             )
3695             (?
3696             (?:
3697             (?
3698             (?:
3699             (?&word)
3700             [[:blank:]\h]*\,[[:blank:]\h]*
3701             )*
3702             (?&word)
3703             )
3704             (?:
3705             [[:blank:]\h]*\,[[:blank:]\h]*
3706             (? (?&word) )
3707             )?
3708             )
3709             |
3710             (?:
3711             (? (?&word) )
3712             [[:blank:]\h]*\,[[:blank:]\h]*
3713             (? (?-2) )
3714             )
3715             |
3716             (?:
3717             (? (?&word) )
3718             )
3719             |
3720             (?:
3721             ( # paren group 1 (full function)
3722             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
3723             (? # paren group 2 (parens)
3724             \(
3725             ( # paren group 3 (contents of parens)
3726             (?:
3727             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
3728             |
3729             (?&paren_group) # Recurse to named capture group
3730             )*
3731             )
3732             \)
3733             )
3734             )
3735             )
3736             )
3737             (?
3738             (?:
3739             (?(?&word_recur))
3740             [[:blank:]\h]+
3741             \-?(? (?:eq|ne|lt|le|gt|ge) )
3742             [[:blank:]\h]+
3743             (?(?&word_recur))
3744             )
3745             )
3746             (?
3747             (?:
3748             (?[a-zA-Z]\w*)
3749             \(
3750             [[:blank:]\h]*
3751             (?
3752             (?> (?&func_words) )?
3753             )
3754             [[:blank:]\h]*
3755             \)
3756             )
3757             |
3758             (?:
3759             ( # paren group 1 (full function)
3760             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
3761             (? # paren group 2 (parens)
3762             \(
3763             (? # paren group 3 (contents of parens)
3764             (?:
3765             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
3766             |
3767             (?&paren_group) # Recurse to named capture group
3768             )*
3769             )
3770             \)
3771             )
3772             )
3773             )
3774             )
3775             (?
3776             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
3777             |
3778             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
3779             )
3780             (?
3781             (?:
3782             (?: (?&substring) )
3783             )
3784             |
3785             (?:
3786             (?:(?&substring)[[:blank:]\h]+(?&string) )
3787             )
3788             )
3789             (?
3790             (?:
3791             (?(?&word_recur))
3792             [[:blank:]\h]+
3793             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
3794             [[:blank:]\h]+
3795             (?(?&word_recur))
3796             )
3797             )
3798             (?
3799             (?:
3800             (?$Regexp::Common::Apache2::REGEXP->{cstring})
3801             )
3802             |
3803             (?:
3804             (? (?&variable) )
3805             )
3806             |
3807             (?:
3808             \$(?\{)?(?${DIGIT})(?()\})
3809             )
3810             )
3811             (?
3812             (?:
3813             \%\{
3814             (?:
3815             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
3816             )
3817             \}
3818             )
3819             |
3820             (?:
3821             \%\{
3822             (?:
3823             (?${VARNAME})
3824             )
3825             \}
3826             )
3827             |
3828             (?:
3829             \bv\(
3830             [[:blank:]\h]*
3831             (?["'])
3832             (?:
3833             (?${VARNAME})
3834             )
3835             [[:blank:]\h]*
3836             \g{var_quote}
3837             \)
3838             )
3839             )
3840             (?
3841             (?:
3842             (?$Regexp::Common::Apache2::REGEXP->{digits})
3843             )
3844             |
3845             (?:
3846             (?['"])
3847             (?:
3848             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
3849             )
3850             \g{word_quote}
3851             )
3852             |
3853             (?:
3854             (?['"])
3855             (?:
3856             (? (?&string) )
3857             )
3858             \g{word_quote}
3859             )
3860             |
3861             (?:
3862             (?
3863             (?: (?: (?-2)\. )+ (?-2) )
3864             )
3865             )
3866             |
3867             (?:
3868             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
3869             )
3870             |
3871             (?:
3872             (?(?&variable))
3873             )
3874             |
3875             (?:
3876             (?(?&function))
3877             )
3878             |
3879             (?:
3880             (? $Regexp::Common::Apache2::REGEXP->{regex} )
3881             )
3882             )
3883             (?
3884             (?:
3885             (?
3886             (?:
3887             (?&word_recur)
3888             [[:blank:]\h]*\,[[:blank:]\h]*
3889             )*
3890             (?&word_recur)
3891             )
3892             (?:
3893             [[:blank:]\h]*\,[[:blank:]\h]*
3894             (? (?&word_recur) )
3895             )?
3896             )
3897             |
3898             (?:
3899             (? (?&word_recur) )
3900             )
3901             )
3902             )
3903             /x;
3904            
3905             ## word
3906             ## | word "," list
3907 22         23018 $REGEXP->{words} = qr/
3908             (?
3909             (?:
3910             (?(?&word))
3911             [[:blank:]\h]*\,[[:blank:]\h]*
3912             (?(?&words_recur))
3913             )
3914             |
3915             (?:
3916             (?(?&word))
3917             )
3918             )
3919             (?(DEFINE)
3920             (?
3921             (?:
3922             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
3923             (?
3924             (?&stringcomp)
3925             )
3926             )
3927             )
3928             |
3929             (?:
3930             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
3931             (?
3932             (?&integercomp)
3933             )
3934             )
3935             )
3936             |
3937             (?:
3938             (?:(?<=\W)|(?<=^)|(?<=\A))
3939             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
3940             [[:blank:]\h]+
3941             (?(?&word))
3942             )
3943             |
3944             (?:
3945             (?(?&word))
3946             [[:blank:]\h]+
3947             (?:
3948             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
3949             |
3950             \-(?ipmatch|strmatch|strcmatch|fnmatch)
3951             )
3952             [[:blank:]\h]+
3953             (?(?&word))
3954             )
3955             |
3956             (?:
3957             (? (?&word) )
3958             [[:blank:]\h]+
3959             \-?in
3960             [[:blank:]\h]+
3961             (? (?&listfunc) )
3962             )
3963             |
3964             (?:
3965             (? (?&word) )
3966             [[:blank:]\h]+
3967             [\=|\!]\~
3968             [[:blank:]\h]+
3969             $Regexp::Common::Apache2::REGEXP->{regex}
3970             )
3971             |
3972             (?:
3973             (? (?&word) )
3974             [[:blank:]\h]+
3975             \-?in
3976             [[:blank:]\h]+
3977             \{
3978             [[:blank:]\h]*
3979             (? (?&words) )
3980             [[:blank:]\h]*
3981             \}
3982             )
3983             )
3984             (?
3985             (?:
3986             (?[a-zA-Z]\w*)
3987             \(
3988             [[:blank:]\h]*
3989             (?
3990             (?> (?&func_words) )?
3991             )
3992             [[:blank:]\h]*
3993             \)
3994             )
3995             |
3996             (?:
3997             ( # paren group 1 (full function)
3998             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
3999             (? # paren group 2 (parens)
4000             \(
4001             (? # paren group 3 (contents of parens)
4002             (?:
4003             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
4004             |
4005             (?&paren_group) # Recurse to named capture group
4006             )*
4007             )
4008             \)
4009             )
4010             )
4011             )
4012             )
4013             (?
4014             (?:
4015             (?
4016             (?:
4017             (?&word)
4018             [[:blank:]\h]*\,[[:blank:]\h]*
4019             )*
4020             (?&word)
4021             )
4022             (?:
4023             [[:blank:]\h]*\,[[:blank:]\h]*
4024             (? (?&word) )
4025             )?
4026             )
4027             |
4028             (?:
4029             (? (?&word) )
4030             [[:blank:]\h]*\,[[:blank:]\h]*
4031             (? (?-2) )
4032             )
4033             |
4034             (?:
4035             (? (?&word) )
4036             )
4037             |
4038             (?:
4039             ( # paren group 1 (full function)
4040             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
4041             (? # paren group 2 (parens)
4042             \(
4043             ( # paren group 3 (contents of parens)
4044             (?:
4045             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
4046             |
4047             (?&paren_group) # Recurse to named capture group
4048             )*
4049             )
4050             \)
4051             )
4052             )
4053             )
4054             )
4055             (?
4056             (?:
4057             (?(?&word))
4058             [[:blank:]\h]+
4059             \-?(? (?:eq|ne|lt|le|gt|ge) )
4060             [[:blank:]\h]+
4061             (?(?&word))
4062             )
4063             )
4064             (?
4065             (?:
4066             (?[a-zA-Z]\w*)
4067             \(
4068             [[:blank:]\h]*
4069             (?
4070             (?> (?&func_words) )?
4071             )
4072             [[:blank:]\h]*
4073             \)
4074             )
4075             |
4076             (?:
4077             ( # paren group 1 (full function)
4078             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
4079             (? # paren group 2 (parens)
4080             \(
4081             (? # paren group 3 (contents of parens)
4082             (?:
4083             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
4084             |
4085             (?&paren_group) # Recurse to named capture group
4086             )*
4087             )
4088             \)
4089             )
4090             )
4091             )
4092             )
4093             (?
4094             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
4095             |
4096             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
4097             )
4098             (?
4099             (?:
4100             (?: (?&substring) )
4101             )
4102             |
4103             (?:
4104             (?:(?&substring)[[:blank:]\h]+(?&string) )
4105             )
4106             )
4107             (?
4108             (?:
4109             (?(?&word))
4110             [[:blank:]\h]+
4111             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
4112             [[:blank:]\h]+
4113             (?(?&word))
4114             )
4115             )
4116             (?
4117             (?:
4118             (?$Regexp::Common::Apache2::REGEXP->{cstring})
4119             )
4120             |
4121             (?:
4122             (? (?&variable) )
4123             )
4124             |
4125             (?:
4126             \$(?\{)?(?${DIGIT})(?()\})
4127             )
4128             )
4129             (?
4130             (?:
4131             \%\{
4132             (?:
4133             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
4134             )
4135             \}
4136             )
4137             |
4138             (?:
4139             \%\{
4140             (?:
4141             (?${VARNAME})
4142             )
4143             \}
4144             )
4145             |
4146             (?:
4147             \bv\(
4148             [[:blank:]\h]*
4149             (?["'])
4150             (?:
4151             (?${VARNAME})
4152             )
4153             [[:blank:]\h]*
4154             \g{var_quote}
4155             \)
4156             )
4157             )
4158             (?
4159             (?:
4160             (?$Regexp::Common::Apache2::REGEXP->{digits})
4161             )
4162             |
4163             (?:
4164             (?['"])
4165             (?:
4166             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
4167             )
4168             \g{word_quote}
4169             )
4170             |
4171             (?:
4172             (?['"])
4173             (?:
4174             (? (?&string) )
4175             )
4176             \g{word_quote}
4177             )
4178             |
4179             (?:
4180             (?
4181             (?: (?: (?-2)\. )+ (?-2) )
4182             )
4183             )
4184             |
4185             (?:
4186             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
4187             )
4188             |
4189             (?:
4190             (?(?&variable))
4191             )
4192             |
4193             (?:
4194             (?(?&function))
4195             )
4196             |
4197             (?:
4198             (? $Regexp::Common::Apache2::REGEXP->{regex} )
4199             )
4200             )
4201             (?
4202             (?:
4203             (?
4204             (?:
4205             (?&word)
4206             [[:blank:]\h]*\,[[:blank:]\h]*
4207             )*
4208             (?&word)
4209             )
4210             (?:
4211             [[:blank:]\h]*\,[[:blank:]\h]*
4212             (? (?&word) )
4213             )?
4214             )
4215             |
4216             (?:
4217             (? (?&word) )
4218             )
4219             )
4220             )
4221             /x;
4222              
4223             ## Trunk regular expression
4224             @$TRUNK{qw( unary_op digit digits rebackref regpattern regflags regsep regex funcname varname text cstring true false )} =
4225 22         715 @$REGEXP{qw( unary_op digit digits rebackref regpattern regflags regsep regex funcname varname text cstring true false )};
4226            
4227             ## stringcomp
4228             ## | integercomp
4229             ## | unaryop word
4230             ## | word binaryop word
4231             ## | word "in" listfunc
4232             ## | word "=~" regex
4233             ## | word "!~" regex
4234             ## | word "in" "{" list "}"
4235             ## Ref:
4236             ##
4237             ##
4238 22         147448 $TRUNK->{comp} = qr/
4239             (?
4240             (?:
4241             (?(?&stringcomp))
4242             )
4243             |
4244             (?:
4245             (?(?&integercomp))
4246             )
4247             |
4248             (?
4249             (?:(?<=\W)|(?<=^)|(?<=\A))
4250             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
4251             [[:blank:]\h]+
4252             (?(?&word))
4253             )
4254             |
4255             (?
4256             (?(?&word))
4257             [[:blank:]\h]+
4258             (?:
4259             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
4260             |
4261             \-(?ipmatch|strmatch|strcmatch|fnmatch)
4262             )
4263             [[:blank:]\h]+
4264             (?(?&word))
4265             )
4266             |
4267             (?
4268             (?(?&word))
4269             [[:blank:]\h]+
4270             \-?in
4271             [[:blank:]\h]+
4272             (?(?&listfunc))
4273             )
4274             |
4275             (?
4276             (?(?&word))
4277             [[:blank:]\h]+
4278             (?[\=|\!]\~)
4279             [[:blank:]\h]+
4280             (?$Regexp::Common::Apache2::TRUNK->{regex})
4281             )
4282             |
4283             (?
4284             (?(?&word))
4285             [[:blank:]\h]+
4286             \-?in
4287             [[:blank:]\h]+
4288             \{
4289             [[:blank:]\h]*
4290             (?(?&list))
4291             [[:blank:]\h]*
4292             \}
4293             )
4294             )
4295             (?(DEFINE)
4296             (?
4297             (?:
4298             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
4299             (?
4300             (?&stringcomp)
4301             )
4302             )
4303             )
4304             |
4305             (?:
4306             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
4307             (?
4308             (?&integercomp)
4309             )
4310             )
4311             )
4312             |
4313             (?:
4314             (?:(?<=\W)|(?<=^)|(?<=\A))
4315             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
4316             [[:blank:]\h]+
4317             (? (?&word) )
4318             )
4319             |
4320             (?:
4321             (? (?&word) )
4322             [[:blank:]\h]+
4323             (?:
4324             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
4325             |
4326             \-(?ipmatch|strmatch|strcmatch|fnmatch)
4327             )
4328             [[:blank:]\h]+
4329             (? (?&word) )
4330             )
4331             |
4332             (?:
4333             (? (?&word) )
4334             [[:blank:]\h]+
4335             \-?in
4336             [[:blank:]\h]+
4337             (? (?&listfunc) )
4338             )
4339             |
4340             (?:
4341             (? (?&word) )
4342             [[:blank:]\h]+
4343             (? [\=|\!]\~ )
4344             [[:blank:]\h]+
4345             $Regexp::Common::Apache2::REGEXP->{regex}
4346             )
4347             |
4348             (?:
4349             (? (?&word) )
4350             [[:blank:]\h]+
4351             \-?in
4352             [[:blank:]\h]+
4353             \{
4354             [[:blank:]\h]*
4355             (? (?&list) )
4356             [[:blank:]\h]*
4357             \}
4358             )
4359             )
4360             (?
4361             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{true}(?=\W|\Z|$))
4362             |
4363             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{false}(?=\W|\Z|$))
4364             |
4365             (?:
4366             \![[:blank:]\h]*
4367             (? (?-2) )
4368             )
4369             |
4370             (?:
4371             (?(?=(?:.+?)\&\&(?:.+?))
4372             (? (?-2) )
4373             [[:blank:]\h]*
4374             \&\&
4375             [[:blank:]\h]*
4376             (? (?-2) )
4377             )
4378             )
4379             |
4380             (?:
4381             (?(?=(?:.+?)\|\|(?:.+?))
4382             (? (?-2) )
4383             [[:blank:]\h]*
4384             \|\|
4385             [[:blank:]\h]*
4386             (? (?-2) )
4387             )
4388             )
4389             |
4390             (?:
4391             (? (?&comp) )
4392             )
4393             |
4394             (?:
4395             \(
4396             [[:blank:]\h]*
4397             (? (?&cond) )
4398             [[:blank:]\h]*
4399             \)
4400             )
4401             )
4402             (?
4403             (?:
4404             (?[a-zA-Z]\w*)
4405             \(
4406             [[:blank:]\h]*
4407             (?
4408             (?> (?&func_words) )?
4409             )
4410             [[:blank:]\h]*
4411             \)
4412             )
4413             |
4414             (?:
4415             ( # paren group 1 (full function)
4416             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
4417             (? # paren group 2 (parens)
4418             \(
4419             (? # paren group 3 (contents of parens)
4420             (?:
4421             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
4422             |
4423             (?&paren_group) # Recurse to named capture group
4424             )*
4425             )
4426             \)
4427             )
4428             )
4429             )
4430             )
4431             (?
4432             (?:
4433             (? (?&word) )
4434             )
4435             |
4436             (?:
4437             (?:
4438             (? (?&word) )
4439             [[:blank:]\h]*\,[[:blank:]\h]*
4440             (? (?&list) )
4441             )
4442             |
4443             (?:
4444             (?
4445             (?:
4446             (?&word)
4447             [[:blank:]\h]*\,[[:blank:]\h]*
4448             )*
4449             (?&word)
4450             )
4451             (?:
4452             [[:blank:]\h]*\,[[:blank:]\h]*
4453             (? (?&word) )
4454             )?
4455             )
4456             )
4457             )
4458             (?
4459             (?:
4460             (?(?&word))
4461             [[:blank:]\h]+
4462             \-?(? (?:eq|ne|lt|le|gt|ge) )
4463             [[:blank:]\h]+
4464             (?(?&word))
4465             )
4466             )
4467             (?
4468             \bjoin\(
4469             [[:blank:]\h]*
4470             (?:
4471             (?:
4472             (? (?&list) )
4473             [[:blank:]]*\,[[:blank:]]*
4474             (? (?&word) )
4475             )
4476             |
4477             (? (?&list) )
4478             )
4479             [[:blank:]\h]*
4480             \)
4481             )
4482             (?
4483             (?:
4484             \{
4485             [[:blank:]\h]*
4486             (?(?&words))
4487             [[:blank:]\h]*
4488             \}
4489             )
4490             |
4491             (?:
4492             \(
4493             [[:blank:]\h]*
4494             (? (?&list) )
4495             [[:blank:]\h]*
4496             \)
4497             )
4498             |
4499             (?:
4500             (?(?&listfunc))
4501             )
4502             |
4503             (?:
4504             (?(?=\bsplit\()
4505             (?(?&split))
4506             )
4507             )
4508             )
4509             (?
4510             (?:
4511             (?[a-zA-Z]\w*)
4512             \(
4513             [[:blank:]\h]*
4514             (?
4515             (?> (?&func_words) )?
4516             )
4517             [[:blank:]\h]*
4518             \)
4519             )
4520             |
4521             (?:
4522             ( # paren group 1 (full function)
4523             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
4524             (? # paren group 2 (parens)
4525             \(
4526             (? # paren group 3 (contents of parens)
4527             (?:
4528             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
4529             |
4530             (?&paren_group) # Recurse to named capture group
4531             )*
4532             )
4533             \)
4534             )
4535             )
4536             )
4537             )
4538             (?
4539             (?:
4540             $Regexp::Common::Apache2::REGEXP->{regex}
4541             |
4542             (?:
4543             (? (?®sub) )
4544             )
4545             )
4546             )
4547             (?
4548             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
4549             |
4550             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
4551             )
4552             (?
4553             s(?${REGSEP})
4554             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
4555             \g{regsep}
4556             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
4557             \g{regsep}
4558             (?${REGFLAGS})?
4559             )
4560             (?
4561             split\(
4562             [[:blank:]\h]*
4563             (?(?®any))
4564             [[:blank:]\h]*\,[[:blank:]\h]*
4565             (?:
4566             (?:
4567             (? (?&word) )
4568             )
4569             |
4570             (?:
4571             (? (?&list) )
4572             )
4573             )
4574             [[:blank:]\h]*
4575             \)
4576             )
4577             (?
4578             (?:
4579             (?: (?&substring) )
4580             )
4581             |
4582             (?:
4583             (?: (?&substring)[[:blank:]\h]+(?&string) )
4584             )
4585             )
4586             (?
4587             (?:
4588             (?(?&word))
4589             [[:blank:]\h]+
4590             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
4591             [[:blank:]\h]+
4592             (?(?&word))
4593             )
4594             )
4595             (?
4596             \bsub\(
4597             [[:blank:]\h]*
4598             (?(?=(?:[s]${REGSEP}))
4599             (? (?®sub) )
4600             )
4601             [[:blank:]\h]*
4602             \,
4603             [[:blank:]\h]*
4604             (?
4605             (? (?>(?&word)) )
4606             )
4607             [[:blank:]\h]*
4608             \)
4609             )
4610             (?
4611             (?:
4612             (?$Regexp::Common::Apache2::REGEXP->{cstring})
4613             )
4614             |
4615             (?:
4616             (? (?&variable) )
4617             )
4618             )
4619             (?
4620             (?:
4621             \%\{
4622             (?:
4623             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
4624             )
4625             \}
4626             )
4627             |
4628             (?:
4629             \%\{
4630             (?:
4631             (?${VARNAME})
4632             )
4633             \}
4634             )
4635             |
4636             (?:
4637             \bv\(
4638             [[:blank:]\h]*
4639             (?["'])
4640             (?:
4641             (?${VARNAME})
4642             )
4643             [[:blank:]\h]*
4644             \g{var_quote}
4645             \)
4646             )
4647             |
4648             (?:
4649             (?:^|\A|(?
4650             (?
4651             \$(?\{)?
4652             (?${DIGIT})
4653             (?()\})
4654             )
4655             )
4656             |
4657             (?:
4658             \%\{\:
4659             (?:
4660             (? (?&word) )
4661             )
4662             \:\}
4663             )
4664             |
4665             (?:
4666             \%\{\:
4667             (?:
4668             (? (?&cond) )
4669             )
4670             \:\}
4671             )
4672             )
4673             (?
4674             (?:
4675             (? $Regexp::Common::Apache2::REGEXP->{digits} )
4676             )
4677             |
4678             (?:
4679             (?['"])
4680             (?:
4681             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
4682             )
4683             \g{word_quote}
4684             )
4685             |
4686             (?:
4687             (?['"])
4688             (?:
4689             (? (?&string) )
4690             )
4691             \g{word_quote}
4692             )
4693             |
4694             (?:
4695             \(
4696             [[:blank:]\h]*
4697             (? (?-2) )
4698             [[:blank:]\h]*
4699             \)
4700             )
4701             |
4702             (?:
4703             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
4704             (?
4705             (?: (?: (?-2)\. )+ (?-2) )
4706             )
4707             )
4708             )
4709             |
4710             (?:
4711             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
4712             )
4713             |
4714             (?:
4715             (?(?&variable))
4716             )
4717             |
4718             (?:
4719             (?(?=\bsub\b\()
4720             (? (?&sub) )
4721             )
4722             )
4723             |
4724             (?:
4725             (?(?=\bjoin\b\()
4726             (? (?&join) )
4727             )
4728             )
4729             |
4730             (?:
4731             (? (?&function) )
4732             )
4733             |
4734             (?:
4735             (? $Regexp::Common::Apache2::TRUNK->{regex} )
4736             )
4737             )
4738             (?
4739             (?:
4740             [[:blank:]\h]*\K
4741             (? (?&word) )
4742             [[:blank:]\h]*\,[[:blank:]\h]*
4743             (? (?&list) )
4744             )
4745             |
4746             (?:
4747             [[:blank:]\h]*\K
4748             (?
4749             (?:
4750             (?&word)
4751             [[:blank:]\h]*\,[[:blank:]\h]*
4752             )*
4753             (?&word)
4754             )
4755             (?:
4756             [[:blank:]\h]*\,[[:blank:]\h]*
4757             (? (?&word) )
4758             )?
4759             )
4760             |
4761             (?:
4762             [[:blank:]\h]*\K
4763             (? (?&word) )
4764             )
4765             )
4766             )
4767             /x;
4768              
4769             ## "true"
4770             ## | "false"
4771             ## | "!" cond
4772             ## | cond "&&" cond
4773             ## | cond "||" cond
4774             ## | "(" cond ")"
4775             ## | comp
4776 22         105363 $TRUNK->{cond} = qr/
4777             (?
4778             (?:
4779             (?(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{true}(?=\W|\Z|$))
4780             )
4781             |
4782             (?:
4783             (?(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{false}(?=\W|\Z|$))
4784             )
4785             |
4786             (?:
4787             (?:
4788             \(
4789             [[:blank:]\h]*
4790             (?
4791             (?&cond_recur)
4792             )
4793             [[:blank:]\h]*
4794             \)
4795             )
4796             )
4797             |
4798             (?:
4799             (?\![[:blank:]\h]*(?(?&cond_recur)))
4800             )
4801             |
4802             (?:
4803             (?(?=(?:.+?)\&\&(?:.+?))
4804             (?
4805             (?
4806             (?&cond_recur)
4807             )
4808             [[:blank:]\h]*
4809             \&\&
4810             [[:blank:]\h]*
4811             (?
4812             (?&cond_recur)
4813             )
4814             )
4815             )
4816             )
4817             |
4818             (?:
4819             (?(?=(?:.+?)\|\|(?:.+?))
4820             (?
4821             (?
4822             (?&cond_recur)
4823             )
4824             [[:blank:]\h]*
4825             \|\|
4826             [[:blank:]\h]*
4827             (?
4828             (?&cond_recur)
4829             )
4830             )
4831             )
4832             )
4833             |
4834             (?:
4835             (?(?&comp))
4836             )
4837             )
4838             (?(DEFINE)
4839             (?
4840             (?:
4841             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
4842             (?
4843             (?&stringcomp)
4844             )
4845             )
4846             )
4847             |
4848             (?:
4849             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
4850             (?
4851             (?&integercomp)
4852             )
4853             )
4854             )
4855             |
4856             (?:
4857             (?:(?<=\W)|(?<=^)|(?<=\A))
4858             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
4859             [[:blank:]\h]+
4860             (? (?&word) )
4861             )
4862             |
4863             (?:
4864             (? (?&word) )
4865             [[:blank:]\h]+
4866             (?:
4867             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
4868             |
4869             \-(?ipmatch|strmatch|strcmatch|fnmatch)
4870             )
4871             [[:blank:]\h]+
4872             (? (?&word) )
4873             )
4874             |
4875             (?:
4876             (? (?&word) )
4877             [[:blank:]\h]+
4878             \-?in
4879             [[:blank:]\h]+
4880             (? (?&listfunc) )
4881             )
4882             |
4883             (?:
4884             (? (?&word) )
4885             [[:blank:]\h]+
4886             (? [\=|\!]\~ )
4887             [[:blank:]\h]+
4888             $Regexp::Common::Apache2::REGEXP->{regex}
4889             )
4890             |
4891             (?:
4892             (? (?&word) )
4893             [[:blank:]\h]+
4894             \-?in
4895             [[:blank:]\h]+
4896             \{
4897             [[:blank:]\h]*
4898             (? (?&list) )
4899             [[:blank:]\h]*
4900             \}
4901             )
4902             )
4903             (?
4904             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{true}(?=\W|\Z|$))
4905             |
4906             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{false}(?=\W|\Z|$))
4907             |
4908             (?:
4909             \![[:blank:]\h]*
4910             (? (?-2) )
4911             )
4912             |
4913             (?:
4914             (?(?=(?:.+?)\&\&(?:.+?))
4915             (? (?-2) )
4916             [[:blank:]\h]*
4917             \&\&
4918             [[:blank:]\h]*
4919             (? (?-2) )
4920             )
4921             )
4922             |
4923             (?:
4924             (?(?=(?:.+?)\|\|(?:.+?))
4925             (? (?-2) )
4926             [[:blank:]\h]*
4927             \|\|
4928             [[:blank:]\h]*
4929             (? (?-2) )
4930             )
4931             )
4932             |
4933             (?:
4934             (? (?&comp) )
4935             )
4936             |
4937             (?:
4938             \(
4939             [[:blank:]\h]*
4940             (? (?&cond) )
4941             [[:blank:]\h]*
4942             \)
4943             )
4944             )
4945             (?
4946             (?:
4947             (?[a-zA-Z]\w*)
4948             \(
4949             [[:blank:]\h]*
4950             (?
4951             (?> (?&func_words) )?
4952             )
4953             [[:blank:]\h]*
4954             \)
4955             )
4956             |
4957             (?:
4958             ( # paren group 1 (full function)
4959             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
4960             (? # paren group 2 (parens)
4961             \(
4962             (? # paren group 3 (contents of parens)
4963             (?:
4964             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
4965             |
4966             (?&paren_group) # Recurse to named capture group
4967             )*
4968             )
4969             \)
4970             )
4971             )
4972             )
4973             )
4974             (?
4975             (?:
4976             (? (?&word) )
4977             )
4978             |
4979             (?:
4980             (?:
4981             (? (?&word) )
4982             [[:blank:]\h]*\,[[:blank:]\h]*
4983             (? (?&list) )
4984             )
4985             |
4986             (?:
4987             (?
4988             (?:
4989             (?&word)
4990             [[:blank:]\h]*\,[[:blank:]\h]*
4991             )*
4992             (?&word)
4993             )
4994             (?:
4995             [[:blank:]\h]*\,[[:blank:]\h]*
4996             (? (?&word) )
4997             )?
4998             )
4999             )
5000             )
5001             (?
5002             (?:
5003             (?(?&word))
5004             [[:blank:]\h]+
5005             \-?(? (?:eq|ne|lt|le|gt|ge) )
5006             [[:blank:]\h]+
5007             (?(?&word))
5008             )
5009             )
5010             (?
5011             \bjoin\(
5012             [[:blank:]\h]*
5013             (?:
5014             (?:
5015             (? (?&list) )
5016             [[:blank:]]*\,[[:blank:]]*
5017             (? (?&word) )
5018             )
5019             |
5020             (? (?&list) )
5021             )
5022             [[:blank:]\h]*
5023             \)
5024             )
5025             (?
5026             (?:
5027             \{
5028             [[:blank:]\h]*
5029             (?(?&words))
5030             [[:blank:]\h]*
5031             \}
5032             )
5033             |
5034             (?:
5035             \(
5036             [[:blank:]\h]*
5037             (? (?&list) )
5038             [[:blank:]\h]*
5039             \)
5040             )
5041             |
5042             (?:
5043             (?(?&listfunc))
5044             )
5045             |
5046             (?:
5047             (?(?=\bsplit\()
5048             (?(?&split))
5049             )
5050             )
5051             )
5052             (?
5053             (?:
5054             (?[a-zA-Z]\w*)
5055             \(
5056             [[:blank:]\h]*
5057             (?
5058             (?> (?&func_words) )?
5059             )
5060             [[:blank:]\h]*
5061             \)
5062             )
5063             |
5064             (?:
5065             ( # paren group 1 (full function)
5066             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
5067             (? # paren group 2 (parens)
5068             \(
5069             (? # paren group 3 (contents of parens)
5070             (?:
5071             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
5072             |
5073             (?&paren_group) # Recurse to named capture group
5074             )*
5075             )
5076             \)
5077             )
5078             )
5079             )
5080             )
5081             (?
5082             (?:
5083             $Regexp::Common::Apache2::REGEXP->{regex}
5084             |
5085             (?:
5086             (? (?®sub) )
5087             )
5088             )
5089             )
5090             (?
5091             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
5092             |
5093             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
5094             )
5095             (?
5096             s(?${REGSEP})
5097             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
5098             \g{regsep}
5099             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
5100             \g{regsep}
5101             (?${REGFLAGS})?
5102             )
5103             (?
5104             split\(
5105             [[:blank:]\h]*
5106             (?(?®any))
5107             [[:blank:]\h]*\,[[:blank:]\h]*
5108             (?:
5109             (?:
5110             (? (?&word) )
5111             )
5112             |
5113             (?:
5114             (? (?&list) )
5115             )
5116             )
5117             [[:blank:]\h]*
5118             \)
5119             )
5120             (?
5121             (?:
5122             (?: (?&substring) )
5123             )
5124             |
5125             (?:
5126             (?: (?&substring)[[:blank:]\h]+(?&string) )
5127             )
5128             )
5129             (?
5130             (?:
5131             (?(?&word))
5132             [[:blank:]\h]+
5133             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
5134             [[:blank:]\h]+
5135             (?(?&word))
5136             )
5137             )
5138             (?
5139             \bsub\(
5140             [[:blank:]\h]*
5141             (?(?=(?:[s]${REGSEP}))
5142             (? (?®sub) )
5143             )
5144             [[:blank:]\h]*
5145             \,
5146             [[:blank:]\h]*
5147             (?
5148             (? (?>(?&word)) )
5149             )
5150             [[:blank:]\h]*
5151             \)
5152             )
5153             (?
5154             (?:
5155             (?$Regexp::Common::Apache2::REGEXP->{cstring})
5156             )
5157             |
5158             (?:
5159             (? (?&variable) )
5160             )
5161             )
5162             (?
5163             (?:
5164             \%\{
5165             (?:
5166             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
5167             )
5168             \}
5169             )
5170             |
5171             (?:
5172             \%\{
5173             (?:
5174             (?${VARNAME})
5175             )
5176             \}
5177             )
5178             |
5179             (?:
5180             \bv\(
5181             [[:blank:]\h]*
5182             (?["'])
5183             (?:
5184             (?${VARNAME})
5185             )
5186             [[:blank:]\h]*
5187             \g{var_quote}
5188             \)
5189             )
5190             |
5191             (?:
5192             (?:^|\A|(?
5193             (?
5194             \$(?\{)?
5195             (?${DIGIT})
5196             (?()\})
5197             )
5198             )
5199             |
5200             (?:
5201             \%\{\:
5202             (?:
5203             (? (?&word) )
5204             )
5205             \:\}
5206             )
5207             |
5208             (?:
5209             \%\{\:
5210             (?:
5211             (? (cond_recur) )
5212             )
5213             \:\}
5214             )
5215             )
5216             (?
5217             (?:
5218             (? $Regexp::Common::Apache2::REGEXP->{digits} )
5219             )
5220             |
5221             (?:
5222             (?['"])
5223             (?:
5224             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
5225             )
5226             \g{word_quote}
5227             )
5228             |
5229             (?:
5230             (?['"])
5231             (?:
5232             (? (?&string) )
5233             )
5234             \g{word_quote}
5235             )
5236             |
5237             (?:
5238             \(
5239             [[:blank:]\h]*
5240             (? (?-2) )
5241             [[:blank:]\h]*
5242             \)
5243             )
5244             |
5245             (?:
5246             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
5247             (?
5248             (?: (?: (?-2)\. )+ (?-2) )
5249             )
5250             )
5251             )
5252             |
5253             (?:
5254             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
5255             )
5256             |
5257             (?:
5258             (?(?&variable))
5259             )
5260             |
5261             (?:
5262             (?(?=\bsub\b\()
5263             (? (?&sub) )
5264             )
5265             )
5266             |
5267             (?:
5268             (?(?=\bjoin\b\()
5269             (? (?&join) )
5270             )
5271             )
5272             |
5273             (?:
5274             (? (?&function) )
5275             )
5276             |
5277             (?:
5278             (? $Regexp::Common::Apache2::TRUNK->{regex} )
5279             )
5280             )
5281             (?
5282             (?:
5283             [[:blank:]\h]*\K
5284             (? (?&word) )
5285             [[:blank:]\h]*\,[[:blank:]\h]*
5286             (? (?&list) )
5287             )
5288             |
5289             (?:
5290             [[:blank:]\h]*\K
5291             (?
5292             (?:
5293             (?&word)
5294             [[:blank:]\h]*\,[[:blank:]\h]*
5295             )*
5296             (?&word)
5297             )
5298             (?:
5299             [[:blank:]\h]*\,[[:blank:]\h]*
5300             (? (?&word) )
5301             )?
5302             )
5303             |
5304             (?:
5305             [[:blank:]\h]*\K
5306             (? (?&word) )
5307             )
5308             )
5309             )
5310             /xi;
5311              
5312             ## cond
5313             ## | string
5314 22         149465 $TRUNK->{expr} = qr/
5315             (?
5316             (?:
5317             (?(?&cond))
5318             )
5319             |
5320             (?:
5321             (?(?&string))
5322             )
5323             )
5324             (?(DEFINE)
5325             (?
5326             (?:
5327             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
5328             (?
5329             (?&stringcomp)
5330             )
5331             )
5332             )
5333             |
5334             (?:
5335             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
5336             (?
5337             (?&integercomp)
5338             )
5339             )
5340             )
5341             |
5342             (?:
5343             (?:(?<=\W)|(?<=^)|(?<=\A))
5344             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
5345             [[:blank:]\h]+
5346             (? (?&word) )
5347             )
5348             |
5349             (?:
5350             (? (?&word) )
5351             [[:blank:]\h]+
5352             (?:
5353             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
5354             |
5355             \-(?ipmatch|strmatch|strcmatch|fnmatch)
5356             )
5357             [[:blank:]\h]+
5358             (? (?&word) )
5359             )
5360             |
5361             (?:
5362             (? (?&word) )
5363             [[:blank:]\h]+
5364             \-?in
5365             [[:blank:]\h]+
5366             (? (?&listfunc) )
5367             )
5368             |
5369             (?:
5370             (? (?&word) )
5371             [[:blank:]\h]+
5372             (? [\=|\!]\~ )
5373             [[:blank:]\h]+
5374             $Regexp::Common::Apache2::REGEXP->{regex}
5375             )
5376             |
5377             (?:
5378             (? (?&word) )
5379             [[:blank:]\h]+
5380             \-?in
5381             [[:blank:]\h]+
5382             \{
5383             [[:blank:]\h]*
5384             (? (?&list) )
5385             [[:blank:]\h]*
5386             \}
5387             )
5388             )
5389             (?
5390             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{true}(?=\W|\Z|$))
5391             |
5392             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{false}(?=\W|\Z|$))
5393             |
5394             (?:
5395             \![[:blank:]\h]*
5396             (? (?-2) )
5397             )
5398             |
5399             (?:
5400             (?(?=(?:.+?)\&\&(?:.+?))
5401             (? (?-2) )
5402             [[:blank:]\h]*
5403             \&\&
5404             [[:blank:]\h]*
5405             (? (?-2) )
5406             )
5407             )
5408             |
5409             (?:
5410             (?(?=(?:.+?)\|\|(?:.+?))
5411             (? (?-2) )
5412             [[:blank:]\h]*
5413             \|\|
5414             [[:blank:]\h]*
5415             (? (?-2) )
5416             )
5417             )
5418             |
5419             (?:
5420             (? (?&comp) )
5421             )
5422             |
5423             (?:
5424             \(
5425             [[:blank:]\h]*
5426             (? (?&cond) )
5427             [[:blank:]\h]*
5428             \)
5429             )
5430             )
5431             (?
5432             (?:
5433             (?[a-zA-Z]\w*)
5434             \(
5435             [[:blank:]\h]*
5436             (?
5437             (?> (?&func_words) )?
5438             )
5439             [[:blank:]\h]*
5440             \)
5441             )
5442             |
5443             (?:
5444             ( # paren group 1 (full function)
5445             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
5446             (? # paren group 2 (parens)
5447             \(
5448             (? # paren group 3 (contents of parens)
5449             (?:
5450             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
5451             |
5452             (?&paren_group) # Recurse to named capture group
5453             )*
5454             )
5455             \)
5456             )
5457             )
5458             )
5459             )
5460             (?
5461             (?:
5462             (? (?&word) )
5463             )
5464             |
5465             (?:
5466             (?:
5467             (? (?&word) )
5468             [[:blank:]\h]*\,[[:blank:]\h]*
5469             (? (?&list) )
5470             )
5471             |
5472             (?:
5473             (?
5474             (?:
5475             (?&word)
5476             [[:blank:]\h]*\,[[:blank:]\h]*
5477             )*
5478             (?&word)
5479             )
5480             (?:
5481             [[:blank:]\h]*\,[[:blank:]\h]*
5482             (? (?&word) )
5483             )?
5484             )
5485             )
5486             )
5487             (?
5488             (?:
5489             (?(?&word))
5490             [[:blank:]\h]+
5491             \-?(? (?:eq|ne|lt|le|gt|ge) )
5492             [[:blank:]\h]+
5493             (?(?&word))
5494             )
5495             )
5496             (?
5497             \bjoin\(
5498             [[:blank:]\h]*
5499             (?:
5500             (?:
5501             (? (?&list) )
5502             [[:blank:]]*\,[[:blank:]]*
5503             (? (?&word) )
5504             )
5505             |
5506             (? (?&list) )
5507             )
5508             [[:blank:]\h]*
5509             \)
5510             )
5511             (?
5512             (?:
5513             \{
5514             [[:blank:]\h]*
5515             (?(?&words))
5516             [[:blank:]\h]*
5517             \}
5518             )
5519             |
5520             (?:
5521             \(
5522             [[:blank:]\h]*
5523             (? (?&list) )
5524             [[:blank:]\h]*
5525             \)
5526             )
5527             |
5528             (?:
5529             (?(?&listfunc))
5530             )
5531             |
5532             (?:
5533             (?(?=\bsplit\()
5534             (?(?&split))
5535             )
5536             )
5537             )
5538             (?
5539             (?:
5540             (?[a-zA-Z]\w*)
5541             \(
5542             [[:blank:]\h]*
5543             (?
5544             (?> (?&func_words) )?
5545             )
5546             [[:blank:]\h]*
5547             \)
5548             )
5549             |
5550             (?:
5551             ( # paren group 1 (full function)
5552             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
5553             (? # paren group 2 (parens)
5554             \(
5555             (? # paren group 3 (contents of parens)
5556             (?:
5557             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
5558             |
5559             (?&paren_group) # Recurse to named capture group
5560             )*
5561             )
5562             \)
5563             )
5564             )
5565             )
5566             )
5567             (?
5568             (?:
5569             $Regexp::Common::Apache2::REGEXP->{regex}
5570             |
5571             (?:
5572             (? (?®sub) )
5573             )
5574             )
5575             )
5576             (?
5577             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
5578             |
5579             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
5580             )
5581             (?
5582             s(?${REGSEP})
5583             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
5584             \g{regsep}
5585             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
5586             \g{regsep}
5587             (?${REGFLAGS})?
5588             )
5589             (?
5590             split\(
5591             [[:blank:]\h]*
5592             (?(?®any))
5593             [[:blank:]\h]*\,[[:blank:]\h]*
5594             (?:
5595             (?:
5596             (? (?&word) )
5597             )
5598             |
5599             (?:
5600             (? (?&list) )
5601             )
5602             )
5603             [[:blank:]\h]*
5604             \)
5605             )
5606             (?
5607             (?:
5608             (?: (?&substring) )
5609             )
5610             |
5611             (?:
5612             (?: (?&substring)[[:blank:]\h]+(?&string) )
5613             )
5614             )
5615             (?
5616             (?:
5617             (?(?&word))
5618             [[:blank:]\h]+
5619             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
5620             [[:blank:]\h]+
5621             (?(?&word))
5622             )
5623             )
5624             (?
5625             \bsub\(
5626             [[:blank:]\h]*
5627             (?(?=(?:[s]${REGSEP}))
5628             (? (?®sub) )
5629             )
5630             [[:blank:]\h]*
5631             \,
5632             [[:blank:]\h]*
5633             (?
5634             (? (?>(?&word)) )
5635             )
5636             [[:blank:]\h]*
5637             \)
5638             )
5639             (?
5640             (?:
5641             (?$Regexp::Common::Apache2::REGEXP->{cstring})
5642             )
5643             |
5644             (?:
5645             (? (?&variable) )
5646             )
5647             )
5648             (?
5649             (?:
5650             \%\{
5651             (?:
5652             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
5653             )
5654             \}
5655             )
5656             |
5657             (?:
5658             \%\{
5659             (?:
5660             (?${VARNAME})
5661             )
5662             \}
5663             )
5664             |
5665             (?:
5666             \bv\(
5667             [[:blank:]\h]*
5668             (?["'])
5669             (?:
5670             (?${VARNAME})
5671             )
5672             [[:blank:]\h]*
5673             \g{var_quote}
5674             \)
5675             )
5676             |
5677             (?:
5678             (?:^|\A|(?
5679             (?
5680             \$(?\{)?
5681             (?${DIGIT})
5682             (?()\})
5683             )
5684             )
5685             |
5686             (?:
5687             \%\{\:
5688             (?:
5689             (? (?&word) )
5690             )
5691             \:\}
5692             )
5693             |
5694             (?:
5695             \%\{\:
5696             (?:
5697             (? (?&cond) )
5698             )
5699             \:\}
5700             )
5701             )
5702             (?
5703             (?:
5704             (? $Regexp::Common::Apache2::REGEXP->{digits} )
5705             )
5706             |
5707             (?:
5708             (?['"])
5709             (?:
5710             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
5711             )
5712             \g{word_quote}
5713             )
5714             |
5715             (?:
5716             (?['"])
5717             (?:
5718             (? (?&string) )
5719             )
5720             \g{word_quote}
5721             )
5722             |
5723             (?:
5724             \(
5725             [[:blank:]\h]*
5726             (? (?-2) )
5727             [[:blank:]\h]*
5728             \)
5729             )
5730             |
5731             (?:
5732             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
5733             (?
5734             (?: (?: (?-2)\. )+ (?-2) )
5735             )
5736             )
5737             )
5738             |
5739             (?:
5740             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
5741             )
5742             |
5743             (?:
5744             (?(?&variable))
5745             )
5746             |
5747             (?:
5748             (?(?=\bsub\b\()
5749             (? (?&sub) )
5750             )
5751             )
5752             |
5753             (?:
5754             (?(?=\bjoin\b\()
5755             (? (?&join) )
5756             )
5757             )
5758             |
5759             (?:
5760             (? (?&function) )
5761             )
5762             |
5763             (?:
5764             (? $Regexp::Common::Apache2::TRUNK->{regex} )
5765             )
5766             )
5767             (?
5768             (?:
5769             [[:blank:]\h]*\K
5770             (? (?&word) )
5771             [[:blank:]\h]*\,[[:blank:]\h]*
5772             (? (?&list) )
5773             )
5774             |
5775             (?:
5776             [[:blank:]\h]*\K
5777             (?
5778             (?:
5779             (?&word)
5780             [[:blank:]\h]*\,[[:blank:]\h]*
5781             )*
5782             (?&word)
5783             )
5784             (?:
5785             [[:blank:]\h]*\,[[:blank:]\h]*
5786             (? (?&word) )
5787             )?
5788             )
5789             |
5790             (?:
5791             [[:blank:]\h]*\K
5792             (? (?&word) )
5793             )
5794             )
5795             )
5796             /x;
5797            
5798             ## funcname "(" words ")"
5799             ## -> Same as LISTFUNC
5800 22         122236 $TRUNK->{function} = qr/
5801             (?
5802             (?:
5803             (?[a-zA-Z]\w*)
5804             \(
5805             [[:blank:]\h]*
5806             (?
5807             (?> (?&func_words) )?
5808             )
5809             [[:blank:]\h]*
5810             \)
5811             )
5812             |
5813             (?:
5814             ( # paren group 1 (full function)
5815             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
5816             (? # paren group 2 (parens)
5817             \(
5818             (? # paren group 3 (contents of parens)
5819             (?:
5820             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
5821             |
5822             (?&paren_group) # Recurse to named capture group
5823             )*
5824             )
5825             \)
5826             )
5827             )
5828             )
5829             )
5830             (?(DEFINE)
5831             (?
5832             (?:
5833             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
5834             (?
5835             (?&stringcomp)
5836             )
5837             )
5838             )
5839             |
5840             (?:
5841             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
5842             (?
5843             (?&integercomp)
5844             )
5845             )
5846             )
5847             |
5848             (?:
5849             (?:(?<=\W)|(?<=^)|(?<=\A))
5850             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
5851             [[:blank:]\h]+
5852             (? (?&word) )
5853             )
5854             |
5855             (?:
5856             (? (?&word) )
5857             [[:blank:]\h]+
5858             (?:
5859             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
5860             |
5861             \-(?ipmatch|strmatch|strcmatch|fnmatch)
5862             )
5863             [[:blank:]\h]+
5864             (? (?&word) )
5865             )
5866             |
5867             (?:
5868             (? (?&word) )
5869             [[:blank:]\h]+
5870             \-?in
5871             [[:blank:]\h]+
5872             (? (?&listfunc) )
5873             )
5874             |
5875             (?:
5876             (? (?&word) )
5877             [[:blank:]\h]+
5878             (? [\=|\!]\~ )
5879             [[:blank:]\h]+
5880             $Regexp::Common::Apache2::REGEXP->{regex}
5881             )
5882             |
5883             (?:
5884             (? (?&word) )
5885             [[:blank:]\h]+
5886             \-?in
5887             [[:blank:]\h]+
5888             \{
5889             [[:blank:]\h]*
5890             (? (?&list) )
5891             [[:blank:]\h]*
5892             \}
5893             )
5894             )
5895             (?
5896             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{true}(?=\W|\Z|$))
5897             |
5898             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{false}(?=\W|\Z|$))
5899             |
5900             (?:
5901             \![[:blank:]\h]*
5902             (? (?-2) )
5903             )
5904             |
5905             (?:
5906             (?(?=(?:.+?)\&\&(?:.+?))
5907             (? (?-2) )
5908             [[:blank:]\h]*
5909             \&\&
5910             [[:blank:]\h]*
5911             (? (?-2) )
5912             )
5913             )
5914             |
5915             (?:
5916             (?(?=(?:.+?)\|\|(?:.+?))
5917             (? (?-2) )
5918             [[:blank:]\h]*
5919             \|\|
5920             [[:blank:]\h]*
5921             (? (?-2) )
5922             )
5923             )
5924             |
5925             (?:
5926             (? (?&comp) )
5927             )
5928             |
5929             (?:
5930             \(
5931             [[:blank:]\h]*
5932             (? (?&cond) )
5933             [[:blank:]\h]*
5934             \)
5935             )
5936             )
5937             (?
5938             (?:
5939             (?[a-zA-Z]\w*)
5940             \(
5941             [[:blank:]\h]*
5942             (?
5943             (?> (?&func_words) )?
5944             )
5945             [[:blank:]\h]*
5946             \)
5947             )
5948             |
5949             (?:
5950             ( # paren group 1 (full function)
5951             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
5952             (? # paren group 2 (parens)
5953             \(
5954             (? # paren group 3 (contents of parens)
5955             (?:
5956             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
5957             |
5958             (?&paren_group) # Recurse to named capture group
5959             )*
5960             )
5961             \)
5962             )
5963             )
5964             )
5965             )
5966             (?
5967             (?:
5968             (? (?&word) )
5969             )
5970             |
5971             (?:
5972             (?:
5973             (? (?&word) )
5974             [[:blank:]\h]*\,[[:blank:]\h]*
5975             (? (?&list) )
5976             )
5977             |
5978             (?:
5979             (?
5980             (?:
5981             (?&word)
5982             [[:blank:]\h]*\,[[:blank:]\h]*
5983             )*
5984             (?&word)
5985             )
5986             (?:
5987             [[:blank:]\h]*\,[[:blank:]\h]*
5988             (? (?&word) )
5989             )?
5990             )
5991             )
5992             )
5993             (?
5994             (?:
5995             (?(?&word))
5996             [[:blank:]\h]+
5997             \-?(? (?:eq|ne|lt|le|gt|ge) )
5998             [[:blank:]\h]+
5999             (?(?&word))
6000             )
6001             )
6002             (?
6003             \bjoin\(
6004             [[:blank:]\h]*
6005             (?:
6006             (?:
6007             (? (?&list) )
6008             [[:blank:]]*\,[[:blank:]]*
6009             (? (?&word) )
6010             )
6011             |
6012             (? (?&list) )
6013             )
6014             [[:blank:]\h]*
6015             \)
6016             )
6017             (?
6018             (?:
6019             \{
6020             [[:blank:]\h]*
6021             (?(?&words))
6022             [[:blank:]\h]*
6023             \}
6024             )
6025             |
6026             (?:
6027             \(
6028             [[:blank:]\h]*
6029             (? (?&list) )
6030             [[:blank:]\h]*
6031             \)
6032             )
6033             |
6034             (?:
6035             (?(?&listfunc))
6036             )
6037             |
6038             (?:
6039             (?(?=\bsplit\()
6040             (?(?&split))
6041             )
6042             )
6043             )
6044             (?
6045             (?:
6046             (?[a-zA-Z]\w*)
6047             \(
6048             [[:blank:]\h]*
6049             (?
6050             (?> (?&func_words) )?
6051             )
6052             [[:blank:]\h]*
6053             \)
6054             )
6055             |
6056             (?:
6057             ( # paren group 1 (full function)
6058             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
6059             (? # paren group 2 (parens)
6060             \(
6061             (? # paren group 3 (contents of parens)
6062             (?:
6063             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
6064             |
6065             (?&paren_group) # Recurse to named capture group
6066             )*
6067             )
6068             \)
6069             )
6070             )
6071             )
6072             )
6073             (?
6074             (?:
6075             $Regexp::Common::Apache2::REGEXP->{regex}
6076             |
6077             (?:
6078             (? (?®sub) )
6079             )
6080             )
6081             )
6082             (?
6083             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
6084             |
6085             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
6086             )
6087             (?
6088             s(?${REGSEP})
6089             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
6090             \g{regsep}
6091             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
6092             \g{regsep}
6093             (?${REGFLAGS})?
6094             )
6095             (?
6096             split\(
6097             [[:blank:]\h]*
6098             (?(?®any))
6099             [[:blank:]\h]*\,[[:blank:]\h]*
6100             (?:
6101             (?:
6102             (? (?&word) )
6103             )
6104             |
6105             (?:
6106             (? (?&list) )
6107             )
6108             )
6109             [[:blank:]\h]*
6110             \)
6111             )
6112             (?
6113             (?:
6114             (?: (?&substring) )
6115             )
6116             |
6117             (?:
6118             (?: (?&substring)[[:blank:]\h]+(?&string) )
6119             )
6120             )
6121             (?
6122             (?:
6123             (?(?&word))
6124             [[:blank:]\h]+
6125             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
6126             [[:blank:]\h]+
6127             (?(?&word))
6128             )
6129             )
6130             (?
6131             \bsub\(
6132             [[:blank:]\h]*
6133             (?(?=(?:[s]${REGSEP}))
6134             (? (?®sub) )
6135             )
6136             [[:blank:]\h]*
6137             \,
6138             [[:blank:]\h]*
6139             (?
6140             (? (?>(?&word)) )
6141             )
6142             [[:blank:]\h]*
6143             \)
6144             )
6145             (?
6146             (?:
6147             (?$Regexp::Common::Apache2::REGEXP->{cstring})
6148             )
6149             |
6150             (?:
6151             (? (?&variable) )
6152             )
6153             )
6154             (?
6155             (?:
6156             \%\{
6157             (?:
6158             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
6159             )
6160             \}
6161             )
6162             |
6163             (?:
6164             \%\{
6165             (?:
6166             (?${VARNAME})
6167             )
6168             \}
6169             )
6170             |
6171             (?:
6172             \bv\(
6173             [[:blank:]\h]*
6174             (?["'])
6175             (?:
6176             (?${VARNAME})
6177             )
6178             [[:blank:]\h]*
6179             \g{var_quote}
6180             \)
6181             )
6182             |
6183             (?:
6184             (?:^|\A|(?
6185             (?
6186             \$(?\{)?
6187             (?${DIGIT})
6188             (?()\})
6189             )
6190             )
6191             |
6192             (?:
6193             \%\{\:
6194             (?:
6195             (? (?&word) )
6196             )
6197             \:\}
6198             )
6199             |
6200             (?:
6201             \%\{\:
6202             (?:
6203             (? (?&cond) )
6204             )
6205             \:\}
6206             )
6207             )
6208             (?
6209             (?:
6210             (? $Regexp::Common::Apache2::REGEXP->{digits} )
6211             )
6212             |
6213             (?:
6214             (?['"])
6215             (?:
6216             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
6217             )
6218             \g{word_quote}
6219             )
6220             |
6221             (?:
6222             (?['"])
6223             (?:
6224             (? (?&string) )
6225             )
6226             \g{word_quote}
6227             )
6228             |
6229             (?:
6230             \(
6231             [[:blank:]\h]*
6232             (? (?-2) )
6233             [[:blank:]\h]*
6234             \)
6235             )
6236             |
6237             (?:
6238             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
6239             (?
6240             (?: (?: (?-2)\. )+ (?-2) )
6241             )
6242             )
6243             )
6244             |
6245             (?:
6246             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
6247             )
6248             |
6249             (?:
6250             (?(?&variable))
6251             )
6252             |
6253             (?:
6254             (?(?=\bsub\b\()
6255             (? (?&sub) )
6256             )
6257             )
6258             |
6259             (?:
6260             (?(?=\bjoin\b\()
6261             (? (?&join) )
6262             )
6263             )
6264             |
6265             (?:
6266             (? (?&function_recur) )
6267             )
6268             |
6269             (?:
6270             (? $Regexp::Common::Apache2::TRUNK->{regex} )
6271             )
6272             )
6273             (?
6274             (?:
6275             [[:blank:]\h]*\K
6276             (? (?&word) )
6277             [[:blank:]\h]*\,[[:blank:]\h]*
6278             (? (?&list) )
6279             )
6280             |
6281             (?:
6282             [[:blank:]\h]*\K
6283             (?
6284             (?:
6285             (?&word)
6286             [[:blank:]\h]*\,[[:blank:]\h]*
6287             )*
6288             (?&word)
6289             )
6290             (?:
6291             [[:blank:]\h]*\,[[:blank:]\h]*
6292             (? (?&word) )
6293             )?
6294             )
6295             |
6296             (?:
6297             [[:blank:]\h]*\K
6298             (? (?&word) )
6299             )
6300             )
6301             )
6302             /x;
6303              
6304             ## word "-eq" word | word "eq" word
6305             ## | word "-ne" word | word "ne" word
6306             ## | word "-lt" word | word "lt" word
6307             ## | word "-le" word | word "le" word
6308             ## | word "-gt" word | word "gt" word
6309             ## | word "-ge" word | word "ge" word
6310 22         128953 $TRUNK->{integercomp} = qr/
6311             (?
6312             (?(?&word))
6313             [[:blank:]\h]+
6314             \-?(?eq|ne|lt|le|gt|ge)
6315             [[:blank:]\h]+
6316             (?(?&word))
6317             )
6318             (?(DEFINE)
6319             (?
6320             (?:
6321             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
6322             (?
6323             (?&stringcomp)
6324             )
6325             )
6326             )
6327             |
6328             (?:
6329             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
6330             (?
6331             (?&integercomp_recur)
6332             )
6333             )
6334             )
6335             |
6336             (?:
6337             (?:(?<=\W)|(?<=^)|(?<=\A))
6338             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
6339             [[:blank:]\h]+
6340             (? (?&word) )
6341             )
6342             |
6343             (?:
6344             (? (?&word) )
6345             [[:blank:]\h]+
6346             (?:
6347             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
6348             |
6349             \-(?ipmatch|strmatch|strcmatch|fnmatch)
6350             )
6351             [[:blank:]\h]+
6352             (? (?&word) )
6353             )
6354             |
6355             (?:
6356             (? (?&word) )
6357             [[:blank:]\h]+
6358             \-?in
6359             [[:blank:]\h]+
6360             (? (?&listfunc) )
6361             )
6362             |
6363             (?:
6364             (? (?&word) )
6365             [[:blank:]\h]+
6366             (? [\=|\!]\~ )
6367             [[:blank:]\h]+
6368             $Regexp::Common::Apache2::REGEXP->{regex}
6369             )
6370             |
6371             (?:
6372             (? (?&word) )
6373             [[:blank:]\h]+
6374             \-?in
6375             [[:blank:]\h]+
6376             \{
6377             [[:blank:]\h]*
6378             (? (?&list) )
6379             [[:blank:]\h]*
6380             \}
6381             )
6382             )
6383             (?
6384             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{true}(?=\W|\Z|$))
6385             |
6386             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{false}(?=\W|\Z|$))
6387             |
6388             (?:
6389             \![[:blank:]\h]*
6390             (? (?-2) )
6391             )
6392             |
6393             (?:
6394             (?(?=(?:.+?)\&\&(?:.+?))
6395             (? (?-2) )
6396             [[:blank:]\h]*
6397             \&\&
6398             [[:blank:]\h]*
6399             (? (?-2) )
6400             )
6401             )
6402             |
6403             (?:
6404             (?(?=(?:.+?)\|\|(?:.+?))
6405             (? (?-2) )
6406             [[:blank:]\h]*
6407             \|\|
6408             [[:blank:]\h]*
6409             (? (?-2) )
6410             )
6411             )
6412             |
6413             (?:
6414             (? (?&comp) )
6415             )
6416             |
6417             (?:
6418             \(
6419             [[:blank:]\h]*
6420             (? (?&cond) )
6421             [[:blank:]\h]*
6422             \)
6423             )
6424             )
6425             (?
6426             (?:
6427             (?[a-zA-Z]\w*)
6428             \(
6429             [[:blank:]\h]*
6430             (?
6431             (?> (?&func_words) )?
6432             )
6433             [[:blank:]\h]*
6434             \)
6435             )
6436             |
6437             (?:
6438             ( # paren group 1 (full function)
6439             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
6440             (? # paren group 2 (parens)
6441             \(
6442             (? # paren group 3 (contents of parens)
6443             (?:
6444             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
6445             |
6446             (?&paren_group) # Recurse to named capture group
6447             )*
6448             )
6449             \)
6450             )
6451             )
6452             )
6453             )
6454             (?
6455             (?:
6456             (? (?&word) )
6457             )
6458             |
6459             (?:
6460             (?:
6461             (? (?&word) )
6462             [[:blank:]\h]*\,[[:blank:]\h]*
6463             (? (?&list) )
6464             )
6465             |
6466             (?:
6467             (?
6468             (?:
6469             (?&word)
6470             [[:blank:]\h]*\,[[:blank:]\h]*
6471             )*
6472             (?&word)
6473             )
6474             (?:
6475             [[:blank:]\h]*\,[[:blank:]\h]*
6476             (? (?&word) )
6477             )?
6478             )
6479             )
6480             )
6481             (?
6482             (?:
6483             (?(?&word))
6484             [[:blank:]\h]+
6485             \-?(? (?:eq|ne|lt|le|gt|ge) )
6486             [[:blank:]\h]+
6487             (?(?&word))
6488             )
6489             )
6490             (?
6491             \bjoin\(
6492             [[:blank:]\h]*
6493             (?:
6494             (?:
6495             (? (?&list) )
6496             [[:blank:]]*\,[[:blank:]]*
6497             (? (?&word) )
6498             )
6499             |
6500             (? (?&list) )
6501             )
6502             [[:blank:]\h]*
6503             \)
6504             )
6505             (?
6506             (?:
6507             \{
6508             [[:blank:]\h]*
6509             (?(?&words))
6510             [[:blank:]\h]*
6511             \}
6512             )
6513             |
6514             (?:
6515             \(
6516             [[:blank:]\h]*
6517             (? (?&list) )
6518             [[:blank:]\h]*
6519             \)
6520             )
6521             |
6522             (?:
6523             (?(?&listfunc))
6524             )
6525             |
6526             (?:
6527             (?(?=\bsplit\()
6528             (?(?&split))
6529             )
6530             )
6531             )
6532             (?
6533             (?:
6534             (?[a-zA-Z]\w*)
6535             \(
6536             [[:blank:]\h]*
6537             (?
6538             (?> (?&func_words) )?
6539             )
6540             [[:blank:]\h]*
6541             \)
6542             )
6543             |
6544             (?:
6545             ( # paren group 1 (full function)
6546             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
6547             (? # paren group 2 (parens)
6548             \(
6549             (? # paren group 3 (contents of parens)
6550             (?:
6551             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
6552             |
6553             (?&paren_group) # Recurse to named capture group
6554             )*
6555             )
6556             \)
6557             )
6558             )
6559             )
6560             )
6561             (?
6562             (?:
6563             $Regexp::Common::Apache2::REGEXP->{regex}
6564             |
6565             (?:
6566             (? (?®sub) )
6567             )
6568             )
6569             )
6570             (?
6571             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
6572             |
6573             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
6574             )
6575             (?
6576             s(?${REGSEP})
6577             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
6578             \g{regsep}
6579             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
6580             \g{regsep}
6581             (?${REGFLAGS})?
6582             )
6583             (?
6584             split\(
6585             [[:blank:]\h]*
6586             (?(?®any))
6587             [[:blank:]\h]*\,[[:blank:]\h]*
6588             (?:
6589             (?:
6590             (? (?&word) )
6591             )
6592             |
6593             (?:
6594             (? (?&list) )
6595             )
6596             )
6597             [[:blank:]\h]*
6598             \)
6599             )
6600             (?
6601             (?:
6602             (?: (?&substring) )
6603             )
6604             |
6605             (?:
6606             (?: (?&substring)[[:blank:]\h]+(?&string) )
6607             )
6608             )
6609             (?
6610             (?:
6611             (?(?&word))
6612             [[:blank:]\h]+
6613             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
6614             [[:blank:]\h]+
6615             (?(?&word))
6616             )
6617             )
6618             (?
6619             \bsub\(
6620             [[:blank:]\h]*
6621             (?(?=(?:[s]${REGSEP}))
6622             (? (?®sub) )
6623             )
6624             [[:blank:]\h]*
6625             \,
6626             [[:blank:]\h]*
6627             (?
6628             (? (?>(?&word)) )
6629             )
6630             [[:blank:]\h]*
6631             \)
6632             )
6633             (?
6634             (?:
6635             (?$Regexp::Common::Apache2::REGEXP->{cstring})
6636             )
6637             |
6638             (?:
6639             (? (?&variable) )
6640             )
6641             )
6642             (?
6643             (?:
6644             \%\{
6645             (?:
6646             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
6647             )
6648             \}
6649             )
6650             |
6651             (?:
6652             \%\{
6653             (?:
6654             (?${VARNAME})
6655             )
6656             \}
6657             )
6658             |
6659             (?:
6660             \bv\(
6661             [[:blank:]\h]*
6662             (?["'])
6663             (?:
6664             (?${VARNAME})
6665             )
6666             [[:blank:]\h]*
6667             \g{var_quote}
6668             \)
6669             )
6670             |
6671             (?:
6672             (?:^|\A|(?
6673             (?
6674             \$(?\{)?
6675             (?${DIGIT})
6676             (?()\})
6677             )
6678             )
6679             |
6680             (?:
6681             \%\{\:
6682             (?:
6683             (? (?&word) )
6684             )
6685             \:\}
6686             )
6687             |
6688             (?:
6689             \%\{\:
6690             (?:
6691             (? (?&cond) )
6692             )
6693             \:\}
6694             )
6695             )
6696             (?
6697             (?:
6698             (? $Regexp::Common::Apache2::REGEXP->{digits} )
6699             )
6700             |
6701             (?:
6702             (?['"])
6703             (?:
6704             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
6705             )
6706             \g{word_quote}
6707             )
6708             |
6709             (?:
6710             (?['"])
6711             (?:
6712             (? (?&string) )
6713             )
6714             \g{word_quote}
6715             )
6716             |
6717             (?:
6718             \(
6719             [[:blank:]\h]*
6720             (? (?-2) )
6721             [[:blank:]\h]*
6722             \)
6723             )
6724             |
6725             (?:
6726             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
6727             (?
6728             (?: (?: (?-2)\. )+ (?-2) )
6729             )
6730             )
6731             )
6732             |
6733             (?:
6734             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
6735             )
6736             |
6737             (?:
6738             (?(?&variable))
6739             )
6740             |
6741             (?:
6742             (?(?=\bsub\b\()
6743             (? (?&sub) )
6744             )
6745             )
6746             |
6747             (?:
6748             (?(?=\bjoin\b\()
6749             (? (?&join) )
6750             )
6751             )
6752             |
6753             (?:
6754             (? (?&function) )
6755             )
6756             |
6757             (?:
6758             (? $Regexp::Common::Apache2::TRUNK->{regex} )
6759             )
6760             )
6761             (?
6762             (?:
6763             [[:blank:]\h]*\K
6764             (? (?&word) )
6765             [[:blank:]\h]*\,[[:blank:]\h]*
6766             (? (?&list) )
6767             )
6768             |
6769             (?:
6770             [[:blank:]\h]*\K
6771             (?
6772             (?:
6773             (?&word)
6774             [[:blank:]\h]*\,[[:blank:]\h]*
6775             )*
6776             (?&word)
6777             )
6778             (?:
6779             [[:blank:]\h]*\,[[:blank:]\h]*
6780             (? (?&word) )
6781             )?
6782             )
6783             |
6784             (?:
6785             [[:blank:]\h]*\K
6786             (? (?&word) )
6787             )
6788             )
6789             )
6790             /x;
6791            
6792             ## "join" ["("] list [")"]
6793             ## | "join" ["("] list "," word [")"]
6794 22         125441 $TRUNK->{join} = qr/
6795             (?
6796             join\(
6797             [[:blank:]\h]*
6798             (?:
6799             (?:
6800             (?(?&list))[[:blank:]]*\,[[:blank:]]*(?(?&word))
6801             )
6802             |
6803             (?:
6804             (?(?&list))
6805             )
6806             )
6807             [[:blank:]\h]*
6808             \)
6809             )
6810             (?(DEFINE)
6811             (?
6812             (?:
6813             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
6814             (?
6815             (?&stringcomp)
6816             )
6817             )
6818             )
6819             |
6820             (?:
6821             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
6822             (?
6823             (?&integercomp)
6824             )
6825             )
6826             )
6827             |
6828             (?:
6829             (?:(?<=\W)|(?<=^)|(?<=\A))
6830             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
6831             [[:blank:]\h]+
6832             (? (?&word) )
6833             )
6834             |
6835             (?:
6836             (? (?&word) )
6837             [[:blank:]\h]+
6838             (?:
6839             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
6840             |
6841             \-(?ipmatch|strmatch|strcmatch|fnmatch)
6842             )
6843             [[:blank:]\h]+
6844             (? (?&word) )
6845             )
6846             |
6847             (?:
6848             (? (?&word) )
6849             [[:blank:]\h]+
6850             \-?in
6851             [[:blank:]\h]+
6852             (? (?&listfunc) )
6853             )
6854             |
6855             (?:
6856             (? (?&word) )
6857             [[:blank:]\h]+
6858             (? [\=|\!]\~ )
6859             [[:blank:]\h]+
6860             $Regexp::Common::Apache2::REGEXP->{regex}
6861             )
6862             |
6863             (?:
6864             (? (?&word) )
6865             [[:blank:]\h]+
6866             \-?in
6867             [[:blank:]\h]+
6868             \{
6869             [[:blank:]\h]*
6870             (? (?&list) )
6871             [[:blank:]\h]*
6872             \}
6873             )
6874             )
6875             (?
6876             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{true}(?=\W|\Z|$))
6877             |
6878             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{false}(?=\W|\Z|$))
6879             |
6880             (?:
6881             \![[:blank:]\h]*
6882             (? (?-2) )
6883             )
6884             |
6885             (?:
6886             (?(?=(?:.+?)\&\&(?:.+?))
6887             (? (?-2) )
6888             [[:blank:]\h]*
6889             \&\&
6890             [[:blank:]\h]*
6891             (? (?-2) )
6892             )
6893             )
6894             |
6895             (?:
6896             (?(?=(?:.+?)\|\|(?:.+?))
6897             (? (?-2) )
6898             [[:blank:]\h]*
6899             \|\|
6900             [[:blank:]\h]*
6901             (? (?-2) )
6902             )
6903             )
6904             |
6905             (?:
6906             (? (?&comp) )
6907             )
6908             |
6909             (?:
6910             \(
6911             [[:blank:]\h]*
6912             (? (?&cond) )
6913             [[:blank:]\h]*
6914             \)
6915             )
6916             )
6917             (?
6918             (?:
6919             (?[a-zA-Z]\w*)
6920             \(
6921             [[:blank:]\h]*
6922             (?
6923             (?> (?&func_words) )?
6924             )
6925             [[:blank:]\h]*
6926             \)
6927             )
6928             |
6929             (?:
6930             ( # paren group 1 (full function)
6931             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
6932             (? # paren group 2 (parens)
6933             \(
6934             (? # paren group 3 (contents of parens)
6935             (?:
6936             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
6937             |
6938             (?&paren_group) # Recurse to named capture group
6939             )*
6940             )
6941             \)
6942             )
6943             )
6944             )
6945             )
6946             (?
6947             (?:
6948             (? (?&word) )
6949             )
6950             |
6951             (?:
6952             (?:
6953             (? (?&word) )
6954             [[:blank:]\h]*\,[[:blank:]\h]*
6955             (? (?&list) )
6956             )
6957             |
6958             (?:
6959             (?
6960             (?:
6961             (?&word)
6962             [[:blank:]\h]*\,[[:blank:]\h]*
6963             )*
6964             (?&word)
6965             )
6966             (?:
6967             [[:blank:]\h]*\,[[:blank:]\h]*
6968             (? (?&word) )
6969             )?
6970             )
6971             )
6972             )
6973             (?
6974             (?:
6975             (?(?&word))
6976             [[:blank:]\h]+
6977             \-?(? (?:eq|ne|lt|le|gt|ge) )
6978             [[:blank:]\h]+
6979             (?(?&word))
6980             )
6981             )
6982             (?
6983             \bjoin\(
6984             [[:blank:]\h]*
6985             (?:
6986             (?:
6987             (? (?&list) )
6988             [[:blank:]]*\,[[:blank:]]*
6989             (? (?&word) )
6990             )
6991             |
6992             (? (?&list) )
6993             )
6994             [[:blank:]\h]*
6995             \)
6996             )
6997             (?
6998             (?:
6999             \{
7000             [[:blank:]\h]*
7001             (?(?&words))
7002             [[:blank:]\h]*
7003             \}
7004             )
7005             |
7006             (?:
7007             \(
7008             [[:blank:]\h]*
7009             (? (?&list) )
7010             [[:blank:]\h]*
7011             \)
7012             )
7013             |
7014             (?:
7015             (?(?&listfunc))
7016             )
7017             |
7018             (?:
7019             (?(?=\bsplit\()
7020             (?(?&split))
7021             )
7022             )
7023             )
7024             (?
7025             (?:
7026             (?[a-zA-Z]\w*)
7027             \(
7028             [[:blank:]\h]*
7029             (?
7030             (?> (?&func_words) )?
7031             )
7032             [[:blank:]\h]*
7033             \)
7034             )
7035             |
7036             (?:
7037             ( # paren group 1 (full function)
7038             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
7039             (? # paren group 2 (parens)
7040             \(
7041             (? # paren group 3 (contents of parens)
7042             (?:
7043             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
7044             |
7045             (?&paren_group) # Recurse to named capture group
7046             )*
7047             )
7048             \)
7049             )
7050             )
7051             )
7052             )
7053             (?
7054             (?:
7055             $Regexp::Common::Apache2::REGEXP->{regex}
7056             |
7057             (?:
7058             (? (?®sub) )
7059             )
7060             )
7061             )
7062             (?
7063             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
7064             |
7065             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
7066             )
7067             (?
7068             s(?${REGSEP})
7069             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
7070             \g{regsep}
7071             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
7072             \g{regsep}
7073             (?${REGFLAGS})?
7074             )
7075             (?
7076             split\(
7077             [[:blank:]\h]*
7078             (?(?®any))
7079             [[:blank:]\h]*\,[[:blank:]\h]*
7080             (?:
7081             (?:
7082             (? (?&word) )
7083             )
7084             |
7085             (?:
7086             (? (?&list) )
7087             )
7088             )
7089             [[:blank:]\h]*
7090             \)
7091             )
7092             (?
7093             (?:
7094             (?: (?&substring) )
7095             )
7096             |
7097             (?:
7098             (?: (?&substring)[[:blank:]\h]+(?&string) )
7099             )
7100             )
7101             (?
7102             (?:
7103             (?(?&word))
7104             [[:blank:]\h]+
7105             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
7106             [[:blank:]\h]+
7107             (?(?&word))
7108             )
7109             )
7110             (?
7111             \bsub\(
7112             [[:blank:]\h]*
7113             (?(?=(?:[s]${REGSEP}))
7114             (? (?®sub) )
7115             )
7116             [[:blank:]\h]*
7117             \,
7118             [[:blank:]\h]*
7119             (?
7120             (? (?>(?&word)) )
7121             )
7122             [[:blank:]\h]*
7123             \)
7124             )
7125             (?
7126             (?:
7127             (?$Regexp::Common::Apache2::REGEXP->{cstring})
7128             )
7129             |
7130             (?:
7131             (? (?&variable) )
7132             )
7133             )
7134             (?
7135             (?:
7136             \%\{
7137             (?:
7138             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
7139             )
7140             \}
7141             )
7142             |
7143             (?:
7144             \%\{
7145             (?:
7146             (?${VARNAME})
7147             )
7148             \}
7149             )
7150             |
7151             (?:
7152             \bv\(
7153             [[:blank:]\h]*
7154             (?["'])
7155             (?:
7156             (?${VARNAME})
7157             )
7158             [[:blank:]\h]*
7159             \g{var_quote}
7160             \)
7161             )
7162             |
7163             (?:
7164             (?:^|\A|(?
7165             (?
7166             \$(?\{)?
7167             (?${DIGIT})
7168             (?()\})
7169             )
7170             )
7171             |
7172             (?:
7173             \%\{\:
7174             (?:
7175             (? (?&word) )
7176             )
7177             \:\}
7178             )
7179             |
7180             (?:
7181             \%\{\:
7182             (?:
7183             (? (?&cond) )
7184             )
7185             \:\}
7186             )
7187             )
7188             (?
7189             (?:
7190             (? $Regexp::Common::Apache2::REGEXP->{digits} )
7191             )
7192             |
7193             (?:
7194             (?['"])
7195             (?:
7196             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
7197             )
7198             \g{word_quote}
7199             )
7200             |
7201             (?:
7202             (?['"])
7203             (?:
7204             (? (?&string) )
7205             )
7206             \g{word_quote}
7207             )
7208             |
7209             (?:
7210             \(
7211             [[:blank:]\h]*
7212             (? (?-2) )
7213             [[:blank:]\h]*
7214             \)
7215             )
7216             |
7217             (?:
7218             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
7219             (?
7220             (?: (?: (?-2)\. )+ (?-2) )
7221             )
7222             )
7223             )
7224             |
7225             (?:
7226             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
7227             )
7228             |
7229             (?:
7230             (?(?&variable))
7231             )
7232             |
7233             (?:
7234             (?(?=\bsub\b\()
7235             (? (?&sub) )
7236             )
7237             )
7238             |
7239             (?:
7240             (?(?=\bjoin\b\()
7241             (? (?&join_recur) )
7242             )
7243             )
7244             |
7245             (?:
7246             (? (?&function) )
7247             )
7248             |
7249             (?:
7250             (? $Regexp::Common::Apache2::TRUNK->{regex} )
7251             )
7252             )
7253             (?
7254             (?:
7255             [[:blank:]\h]*\K
7256             (? (?&word) )
7257             [[:blank:]\h]*\,[[:blank:]\h]*
7258             (? (?&list) )
7259             )
7260             |
7261             (?:
7262             [[:blank:]\h]*\K
7263             (?
7264             (?:
7265             (?&word)
7266             [[:blank:]\h]*\,[[:blank:]\h]*
7267             )*
7268             (?&word)
7269             )
7270             (?:
7271             [[:blank:]\h]*\,[[:blank:]\h]*
7272             (? (?&word) )
7273             )?
7274             )
7275             |
7276             (?:
7277             [[:blank:]\h]*\K
7278             (? (?&word) )
7279             )
7280             )
7281             )
7282             /x;
7283              
7284             ## split
7285             ## | listfunc
7286             ## | "{" words "}"
7287             ## | "(" list ")"
7288 22         123112 $TRUNK->{list} = qr/
7289             (?
7290             (?:
7291             (?(?&listfunc))
7292             )
7293             |
7294             (?:
7295             \{
7296             [[:blank:]\h]*
7297             (?(?&words))
7298             [[:blank:]\h]*
7299             \}
7300             )
7301             |
7302             (?:
7303             (?(?&split))
7304             )
7305             |
7306             (?:
7307             \(
7308             [[:blank:]\h]*
7309             (? (?&list_recur) )
7310             [[:blank:]\h]*
7311             \)
7312             )
7313             )
7314             (?(DEFINE)
7315             (?
7316             (?:
7317             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
7318             (?
7319             (?&stringcomp)
7320             )
7321             )
7322             )
7323             |
7324             (?:
7325             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
7326             (?
7327             (?&integercomp)
7328             )
7329             )
7330             )
7331             |
7332             (?:
7333             (?:(?<=\W)|(?<=^)|(?<=\A))
7334             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
7335             [[:blank:]\h]+
7336             (? (?&word) )
7337             )
7338             |
7339             (?:
7340             (? (?&word) )
7341             [[:blank:]\h]+
7342             (?:
7343             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
7344             |
7345             \-(?ipmatch|strmatch|strcmatch|fnmatch)
7346             )
7347             [[:blank:]\h]+
7348             (? (?&word) )
7349             )
7350             |
7351             (?:
7352             (? (?&word) )
7353             [[:blank:]\h]+
7354             \-?in
7355             [[:blank:]\h]+
7356             (? (?&listfunc) )
7357             )
7358             |
7359             (?:
7360             (? (?&word) )
7361             [[:blank:]\h]+
7362             (? [\=|\!]\~ )
7363             [[:blank:]\h]+
7364             $Regexp::Common::Apache2::REGEXP->{regex}
7365             )
7366             |
7367             (?:
7368             (? (?&word) )
7369             [[:blank:]\h]+
7370             \-?in
7371             [[:blank:]\h]+
7372             \{
7373             [[:blank:]\h]*
7374             (? (?&list) )
7375             [[:blank:]\h]*
7376             \}
7377             )
7378             )
7379             (?
7380             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{true}(?=\W|\Z|$))
7381             |
7382             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{false}(?=\W|\Z|$))
7383             |
7384             (?:
7385             \![[:blank:]\h]*
7386             (? (?-2) )
7387             )
7388             |
7389             (?:
7390             (?(?=(?:.+?)\&\&(?:.+?))
7391             (? (?-2) )
7392             [[:blank:]\h]*
7393             \&\&
7394             [[:blank:]\h]*
7395             (? (?-2) )
7396             )
7397             )
7398             |
7399             (?:
7400             (?(?=(?:.+?)\|\|(?:.+?))
7401             (? (?-2) )
7402             [[:blank:]\h]*
7403             \|\|
7404             [[:blank:]\h]*
7405             (? (?-2) )
7406             )
7407             )
7408             |
7409             (?:
7410             (? (?&comp) )
7411             )
7412             |
7413             (?:
7414             \(
7415             [[:blank:]\h]*
7416             (? (?&cond) )
7417             [[:blank:]\h]*
7418             \)
7419             )
7420             )
7421             (?
7422             (?:
7423             (?[a-zA-Z]\w*)
7424             \(
7425             [[:blank:]\h]*
7426             (?
7427             (?> (?&func_words) )?
7428             )
7429             [[:blank:]\h]*
7430             \)
7431             )
7432             |
7433             (?:
7434             ( # paren group 1 (full function)
7435             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
7436             (? # paren group 2 (parens)
7437             \(
7438             (? # paren group 3 (contents of parens)
7439             (?:
7440             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
7441             |
7442             (?&paren_group) # Recurse to named capture group
7443             )*
7444             )
7445             \)
7446             )
7447             )
7448             )
7449             )
7450             (?
7451             (?:
7452             (? (?&word) )
7453             )
7454             |
7455             (?:
7456             (?:
7457             (? (?&word) )
7458             [[:blank:]\h]*\,[[:blank:]\h]*
7459             (? (?&list) )
7460             )
7461             |
7462             (?:
7463             (?
7464             (?:
7465             (?&word)
7466             [[:blank:]\h]*\,[[:blank:]\h]*
7467             )*
7468             (?&word)
7469             )
7470             (?:
7471             [[:blank:]\h]*\,[[:blank:]\h]*
7472             (? (?&word) )
7473             )?
7474             )
7475             )
7476             )
7477             (?
7478             (?:
7479             (?(?&word))
7480             [[:blank:]\h]+
7481             \-?(? (?:eq|ne|lt|le|gt|ge) )
7482             [[:blank:]\h]+
7483             (?(?&word))
7484             )
7485             )
7486             (?
7487             \bjoin\(
7488             [[:blank:]\h]*
7489             (?:
7490             (?:
7491             (? (?&list_recur) )
7492             [[:blank:]]*\,[[:blank:]]*
7493             (? (?&word) )
7494             )
7495             |
7496             (? (?&list_recur) )
7497             )
7498             [[:blank:]\h]*
7499             \)
7500             )
7501             (?
7502             (?:
7503             \{
7504             [[:blank:]\h]*
7505             (?(?&words))
7506             [[:blank:]\h]*
7507             \}
7508             )
7509             |
7510             (?:
7511             \(
7512             [[:blank:]\h]*
7513             (? (?&list) )
7514             [[:blank:]\h]*
7515             \)
7516             )
7517             |
7518             (?:
7519             (?(?&listfunc))
7520             )
7521             |
7522             (?:
7523             (?(?=\bsplit\()
7524             (?(?&split))
7525             )
7526             )
7527             )
7528             (?
7529             (?:
7530             (?[a-zA-Z]\w*)
7531             \(
7532             [[:blank:]\h]*
7533             (?
7534             (?> (?&func_words) )?
7535             )
7536             [[:blank:]\h]*
7537             \)
7538             )
7539             |
7540             (?:
7541             ( # paren group 1 (full function)
7542             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
7543             (? # paren group 2 (parens)
7544             \(
7545             (? # paren group 3 (contents of parens)
7546             (?:
7547             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
7548             |
7549             (?&paren_group) # Recurse to named capture group
7550             )*
7551             )
7552             \)
7553             )
7554             )
7555             )
7556             )
7557             (?
7558             (?:
7559             $Regexp::Common::Apache2::REGEXP->{regex}
7560             |
7561             (?:
7562             (? (?®sub) )
7563             )
7564             )
7565             )
7566             (?
7567             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
7568             |
7569             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
7570             )
7571             (?
7572             s(?${REGSEP})
7573             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
7574             \g{regsep}
7575             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
7576             \g{regsep}
7577             (?${REGFLAGS})?
7578             )
7579             (?
7580             split\(
7581             [[:blank:]\h]*
7582             (?(?®any))
7583             [[:blank:]\h]*\,[[:blank:]\h]*
7584             (?:
7585             (?:
7586             (? (?&word) )
7587             )
7588             |
7589             (?:
7590             (? (?&list_recur) )
7591             )
7592             )
7593             [[:blank:]\h]*
7594             \)
7595             )
7596             (?
7597             (?:
7598             (?: (?&substring) )
7599             )
7600             |
7601             (?:
7602             (?: (?&substring)[[:blank:]\h]+(?&string) )
7603             )
7604             )
7605             (?
7606             (?:
7607             (?(?&word))
7608             [[:blank:]\h]+
7609             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
7610             [[:blank:]\h]+
7611             (?(?&word))
7612             )
7613             )
7614             (?
7615             \bsub\(
7616             [[:blank:]\h]*
7617             (?(?=(?:[s]${REGSEP}))
7618             (? (?®sub) )
7619             )
7620             [[:blank:]\h]*
7621             \,
7622             [[:blank:]\h]*
7623             (?
7624             (? (?>(?&word)) )
7625             )
7626             [[:blank:]\h]*
7627             \)
7628             )
7629             (?
7630             (?:
7631             (?$Regexp::Common::Apache2::REGEXP->{cstring})
7632             )
7633             |
7634             (?:
7635             (? (?&variable) )
7636             )
7637             )
7638             (?
7639             (?:
7640             \%\{
7641             (?:
7642             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
7643             )
7644             \}
7645             )
7646             |
7647             (?:
7648             \%\{
7649             (?:
7650             (?${VARNAME})
7651             )
7652             \}
7653             )
7654             |
7655             (?:
7656             \bv\(
7657             [[:blank:]\h]*
7658             (?["'])
7659             (?:
7660             (?${VARNAME})
7661             )
7662             [[:blank:]\h]*
7663             \g{var_quote}
7664             \)
7665             )
7666             |
7667             (?:
7668             (?:^|\A|(?
7669             (?
7670             \$(?\{)?
7671             (?${DIGIT})
7672             (?()\})
7673             )
7674             )
7675             |
7676             (?:
7677             \%\{\:
7678             (?:
7679             (? (?&word) )
7680             )
7681             \:\}
7682             )
7683             |
7684             (?:
7685             \%\{\:
7686             (?:
7687             (? (?&cond) )
7688             )
7689             \:\}
7690             )
7691             )
7692             (?
7693             (?:
7694             (? $Regexp::Common::Apache2::REGEXP->{digits} )
7695             )
7696             |
7697             (?:
7698             (?['"])
7699             (?:
7700             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
7701             )
7702             \g{word_quote}
7703             )
7704             |
7705             (?:
7706             (?['"])
7707             (?:
7708             (? (?&string) )
7709             )
7710             \g{word_quote}
7711             )
7712             |
7713             (?:
7714             \(
7715             [[:blank:]\h]*
7716             (? (?-2) )
7717             [[:blank:]\h]*
7718             \)
7719             )
7720             |
7721             (?:
7722             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
7723             (?
7724             (?: (?: (?-2)\. )+ (?-2) )
7725             )
7726             )
7727             )
7728             |
7729             (?:
7730             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
7731             )
7732             |
7733             (?:
7734             (?(?&variable))
7735             )
7736             |
7737             (?:
7738             (?(?=\bsub\b\()
7739             (? (?&sub) )
7740             )
7741             )
7742             |
7743             (?:
7744             (?(?=\bjoin\b\()
7745             (? (?&join) )
7746             )
7747             )
7748             |
7749             (?:
7750             (? (?&function) )
7751             )
7752             |
7753             (?:
7754             (? $Regexp::Common::Apache2::TRUNK->{regex} )
7755             )
7756             )
7757             (?
7758             (?:
7759             [[:blank:]\h]*\K
7760             (? (?&word) )
7761             [[:blank:]\h]*\,[[:blank:]\h]*
7762             (? (?&list_recur) )
7763             )
7764             |
7765             (?:
7766             [[:blank:]\h]*\K
7767             (?
7768             (?:
7769             (?&word)
7770             [[:blank:]\h]*\,[[:blank:]\h]*
7771             )*
7772             (?&word)
7773             )
7774             (?:
7775             [[:blank:]\h]*\,[[:blank:]\h]*
7776             (? (?&word) )
7777             )?
7778             )
7779             |
7780             (?:
7781             [[:blank:]\h]*\K
7782             (? (?&word) )
7783             )
7784             )
7785             )
7786             /x;
7787              
7788             ## listfuncname "(" words ")"
7789             ## Use recursion at execution phase for words because it contains dependencies -> list -> listfunc
7790             #(??{$Regexp::Common::Apache2::TRUNK->{words}})
7791 22         121083 $TRUNK->{listfunc} = qr/
7792             (?
7793             (?:
7794             (?[a-zA-Z]\w*)
7795             \(
7796             [[:blank:]\h]*
7797             (?
7798             (?> (?&func_words) )?
7799             )
7800             [[:blank:]\h]*
7801             \)
7802             )
7803             |
7804             (?:
7805             ( # paren group 1 (full function)
7806             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
7807             (? # paren group 2 (parens)
7808             \(
7809             (? # paren group 3 (contents of parens)
7810             (?:
7811             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
7812             |
7813             (?&paren_group) # Recurse to named capture group
7814             )*
7815             )
7816             \)
7817             )
7818             )
7819             )
7820             )
7821             (?(DEFINE)
7822             (?
7823             (?:
7824             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
7825             (?
7826             (?&stringcomp)
7827             )
7828             )
7829             )
7830             |
7831             (?:
7832             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
7833             (?
7834             (?&integercomp)
7835             )
7836             )
7837             )
7838             |
7839             (?:
7840             (?:(?<=\W)|(?<=^)|(?<=\A))
7841             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
7842             [[:blank:]\h]+
7843             (? (?&word) )
7844             )
7845             |
7846             (?:
7847             (? (?&word) )
7848             [[:blank:]\h]+
7849             (?:
7850             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
7851             |
7852             \-(?ipmatch|strmatch|strcmatch|fnmatch)
7853             )
7854             [[:blank:]\h]+
7855             (? (?&word) )
7856             )
7857             |
7858             (?:
7859             (? (?&word) )
7860             [[:blank:]\h]+
7861             \-?in
7862             [[:blank:]\h]+
7863             (? (?&listfunc_recur) )
7864             )
7865             |
7866             (?:
7867             (? (?&word) )
7868             [[:blank:]\h]+
7869             (? [\=|\!]\~ )
7870             [[:blank:]\h]+
7871             $Regexp::Common::Apache2::REGEXP->{regex}
7872             )
7873             |
7874             (?:
7875             (? (?&word) )
7876             [[:blank:]\h]+
7877             \-?in
7878             [[:blank:]\h]+
7879             \{
7880             [[:blank:]\h]*
7881             (? (?&list) )
7882             [[:blank:]\h]*
7883             \}
7884             )
7885             )
7886             (?
7887             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{true}(?=\W|\Z|$))
7888             |
7889             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{false}(?=\W|\Z|$))
7890             |
7891             (?:
7892             \![[:blank:]\h]*
7893             (? (?-2) )
7894             )
7895             |
7896             (?:
7897             (?(?=(?:.+?)\&\&(?:.+?))
7898             (? (?-2) )
7899             [[:blank:]\h]*
7900             \&\&
7901             [[:blank:]\h]*
7902             (? (?-2) )
7903             )
7904             )
7905             |
7906             (?:
7907             (?(?=(?:.+?)\|\|(?:.+?))
7908             (? (?-2) )
7909             [[:blank:]\h]*
7910             \|\|
7911             [[:blank:]\h]*
7912             (? (?-2) )
7913             )
7914             )
7915             |
7916             (?:
7917             (? (?&comp) )
7918             )
7919             |
7920             (?:
7921             \(
7922             [[:blank:]\h]*
7923             (? (?&cond) )
7924             [[:blank:]\h]*
7925             \)
7926             )
7927             )
7928             (?
7929             (?:
7930             (?[a-zA-Z]\w*)
7931             \(
7932             [[:blank:]\h]*
7933             (?
7934             (?> (?&func_words) )?
7935             )
7936             [[:blank:]\h]*
7937             \)
7938             )
7939             |
7940             (?:
7941             ( # paren group 1 (full function)
7942             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
7943             (? # paren group 2 (parens)
7944             \(
7945             (? # paren group 3 (contents of parens)
7946             (?:
7947             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
7948             |
7949             (?&paren_group) # Recurse to named capture group
7950             )*
7951             )
7952             \)
7953             )
7954             )
7955             )
7956             )
7957             (?
7958             (?:
7959             (? (?&word) )
7960             )
7961             |
7962             (?:
7963             (?:
7964             (? (?&word) )
7965             [[:blank:]\h]*\,[[:blank:]\h]*
7966             (? (?&list) )
7967             )
7968             |
7969             (?:
7970             (?
7971             (?:
7972             (?&word)
7973             [[:blank:]\h]*\,[[:blank:]\h]*
7974             )*
7975             (?&word)
7976             )
7977             (?:
7978             [[:blank:]\h]*\,[[:blank:]\h]*
7979             (? (?&word) )
7980             )?
7981             )
7982             )
7983             )
7984             (?
7985             (?:
7986             (?(?&word))
7987             [[:blank:]\h]+
7988             \-?(? (?:eq|ne|lt|le|gt|ge) )
7989             [[:blank:]\h]+
7990             (?(?&word))
7991             )
7992             )
7993             (?
7994             \bjoin\(
7995             [[:blank:]\h]*
7996             (?:
7997             (?:
7998             (? (?&list) )
7999             [[:blank:]]*\,[[:blank:]]*
8000             (? (?&word) )
8001             )
8002             |
8003             (? (?&list) )
8004             )
8005             [[:blank:]\h]*
8006             \)
8007             )
8008             (?
8009             (?:
8010             \{
8011             [[:blank:]\h]*
8012             (?(?&words))
8013             [[:blank:]\h]*
8014             \}
8015             )
8016             |
8017             (?:
8018             \(
8019             [[:blank:]\h]*
8020             (? (?&list) )
8021             [[:blank:]\h]*
8022             \)
8023             )
8024             |
8025             (?:
8026             (?(?&listfunc_recur))
8027             )
8028             |
8029             (?:
8030             (?(?=\bsplit\()
8031             (?(?&split))
8032             )
8033             )
8034             )
8035             (?
8036             (?:
8037             (?[a-zA-Z]\w*)
8038             \(
8039             [[:blank:]\h]*
8040             (?
8041             (?> (?&func_words) )?
8042             )
8043             [[:blank:]\h]*
8044             \)
8045             )
8046             |
8047             (?:
8048             ( # paren group 1 (full function)
8049             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
8050             (? # paren group 2 (parens)
8051             \(
8052             (? # paren group 3 (contents of parens)
8053             (?:
8054             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
8055             |
8056             (?&paren_group) # Recurse to named capture group
8057             )*
8058             )
8059             \)
8060             )
8061             )
8062             )
8063             )
8064             (?
8065             (?:
8066             $Regexp::Common::Apache2::REGEXP->{regex}
8067             |
8068             (?:
8069             (? (?®sub) )
8070             )
8071             )
8072             )
8073             (?
8074             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
8075             |
8076             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
8077             )
8078             (?
8079             s(?${REGSEP})
8080             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
8081             \g{regsep}
8082             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
8083             \g{regsep}
8084             (?${REGFLAGS})?
8085             )
8086             (?
8087             split\(
8088             [[:blank:]\h]*
8089             (?(?®any))
8090             [[:blank:]\h]*\,[[:blank:]\h]*
8091             (?:
8092             (?:
8093             (? (?&word) )
8094             )
8095             |
8096             (?:
8097             (? (?&list) )
8098             )
8099             )
8100             [[:blank:]\h]*
8101             \)
8102             )
8103             (?
8104             (?:
8105             (?: (?&substring) )
8106             )
8107             |
8108             (?:
8109             (?: (?&substring)[[:blank:]\h]+(?&string) )
8110             )
8111             )
8112             (?
8113             (?:
8114             (?(?&word))
8115             [[:blank:]\h]+
8116             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
8117             [[:blank:]\h]+
8118             (?(?&word))
8119             )
8120             )
8121             (?
8122             \bsub\(
8123             [[:blank:]\h]*
8124             (?(?=(?:[s]${REGSEP}))
8125             (? (?®sub) )
8126             )
8127             [[:blank:]\h]*
8128             \,
8129             [[:blank:]\h]*
8130             (?
8131             (? (?>(?&word)) )
8132             )
8133             [[:blank:]\h]*
8134             \)
8135             )
8136             (?
8137             (?:
8138             (?$Regexp::Common::Apache2::REGEXP->{cstring})
8139             )
8140             |
8141             (?:
8142             (? (?&variable) )
8143             )
8144             )
8145             (?
8146             (?:
8147             \%\{
8148             (?:
8149             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
8150             )
8151             \}
8152             )
8153             |
8154             (?:
8155             \%\{
8156             (?:
8157             (?${VARNAME})
8158             )
8159             \}
8160             )
8161             |
8162             (?:
8163             \bv\(
8164             [[:blank:]\h]*
8165             (?["'])
8166             (?:
8167             (?${VARNAME})
8168             )
8169             [[:blank:]\h]*
8170             \g{var_quote}
8171             \)
8172             )
8173             |
8174             (?:
8175             (?:^|\A|(?
8176             (?
8177             \$(?\{)?
8178             (?${DIGIT})
8179             (?()\})
8180             )
8181             )
8182             |
8183             (?:
8184             \%\{\:
8185             (?:
8186             (? (?&word) )
8187             )
8188             \:\}
8189             )
8190             |
8191             (?:
8192             \%\{\:
8193             (?:
8194             (? (?&cond) )
8195             )
8196             \:\}
8197             )
8198             )
8199             (?
8200             (?:
8201             (? $Regexp::Common::Apache2::REGEXP->{digits} )
8202             )
8203             |
8204             (?:
8205             (?['"])
8206             (?:
8207             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
8208             )
8209             \g{word_quote}
8210             )
8211             |
8212             (?:
8213             (?['"])
8214             (?:
8215             (? (?&string) )
8216             )
8217             \g{word_quote}
8218             )
8219             |
8220             (?:
8221             \(
8222             [[:blank:]\h]*
8223             (? (?-2) )
8224             [[:blank:]\h]*
8225             \)
8226             )
8227             |
8228             (?:
8229             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
8230             (?
8231             (?: (?: (?-2)\. )+ (?-2) )
8232             )
8233             )
8234             )
8235             |
8236             (?:
8237             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
8238             )
8239             |
8240             (?:
8241             (?(?&variable))
8242             )
8243             |
8244             (?:
8245             (?(?=\bsub\b\()
8246             (? (?&sub) )
8247             )
8248             )
8249             |
8250             (?:
8251             (?(?=\bjoin\b\()
8252             (? (?&join) )
8253             )
8254             )
8255             |
8256             (?:
8257             (? (?&function) )
8258             )
8259             |
8260             (?:
8261             (? $Regexp::Common::Apache2::TRUNK->{regex} )
8262             )
8263             )
8264             (?
8265             (?:
8266             [[:blank:]\h]*\K
8267             (? (?&word) )
8268             [[:blank:]\h]*\,[[:blank:]\h]*
8269             (? (?&list) )
8270             )
8271             |
8272             (?:
8273             [[:blank:]\h]*\K
8274             (?
8275             (?:
8276             (?&word)
8277             [[:blank:]\h]*\,[[:blank:]\h]*
8278             )*
8279             (?&word)
8280             )
8281             (?:
8282             [[:blank:]\h]*\,[[:blank:]\h]*
8283             (? (?&word) )
8284             )?
8285             )
8286             |
8287             (?:
8288             [[:blank:]\h]*\K
8289             (? (?&word) )
8290             )
8291             )
8292             )
8293             /x;
8294              
8295             ## regex | regsub
8296 22         4713 $TRUNK->{regany} = qr/
8297             (?
8298             (?:
8299             (?$Regexp::Common::Apache2::TRUNK->{regex})
8300             |
8301             (?:
8302             (?(?®sub))
8303             )
8304             )
8305             )
8306             (?(DEFINE)
8307             (?
8308             s(?${REGSEP})
8309             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
8310             \g{regsep}
8311             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
8312             \g{regsep}
8313             (?${REGFLAGS})?
8314             )
8315             )
8316             /x;
8317              
8318             ## "s" regsep regpattern regsep string regsep [regflags]
8319 22         1247 $TRUNK->{regsub} = qr/
8320             (?
8321             s(?${REGSEP})
8322             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
8323             \g{regsep}
8324             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
8325             \g{regsep}
8326             (?${REGFLAGS})?
8327             )
8328             /x;
8329              
8330             ## "split" ["("] regany "," list [")"]
8331             ## | "split" ["("] regany "," word [")"]
8332 22         122764 $TRUNK->{split} = qr/
8333             (?
8334             split\(
8335             [[:blank:]\h]*
8336             (?(?®any))
8337             [[:blank:]\h]*\,[[:blank:]\h]*
8338             (?:
8339             (?:
8340             (?(?&word))
8341             )
8342             |
8343             (?:
8344             (?(?&list))
8345             )
8346             )
8347             [[:blank:]\h]*
8348             \)
8349             )
8350             (?(DEFINE)
8351             (?
8352             (?:
8353             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
8354             (?
8355             (?&stringcomp)
8356             )
8357             )
8358             )
8359             |
8360             (?:
8361             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
8362             (?
8363             (?&integercomp)
8364             )
8365             )
8366             )
8367             |
8368             (?:
8369             (?:(?<=\W)|(?<=^)|(?<=\A))
8370             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
8371             [[:blank:]\h]+
8372             (? (?&word) )
8373             )
8374             |
8375             (?:
8376             (? (?&word) )
8377             [[:blank:]\h]+
8378             (?:
8379             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
8380             |
8381             \-(?ipmatch|strmatch|strcmatch|fnmatch)
8382             )
8383             [[:blank:]\h]+
8384             (? (?&word) )
8385             )
8386             |
8387             (?:
8388             (? (?&word) )
8389             [[:blank:]\h]+
8390             \-?in
8391             [[:blank:]\h]+
8392             (? (?&listfunc) )
8393             )
8394             |
8395             (?:
8396             (? (?&word) )
8397             [[:blank:]\h]+
8398             (? [\=|\!]\~ )
8399             [[:blank:]\h]+
8400             $Regexp::Common::Apache2::REGEXP->{regex}
8401             )
8402             |
8403             (?:
8404             (? (?&word) )
8405             [[:blank:]\h]+
8406             \-?in
8407             [[:blank:]\h]+
8408             \{
8409             [[:blank:]\h]*
8410             (? (?&list) )
8411             [[:blank:]\h]*
8412             \}
8413             )
8414             )
8415             (?
8416             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{true}(?=\W|\Z|$))
8417             |
8418             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{false}(?=\W|\Z|$))
8419             |
8420             (?:
8421             \![[:blank:]\h]*
8422             (? (?-2) )
8423             )
8424             |
8425             (?:
8426             (?(?=(?:.+?)\&\&(?:.+?))
8427             (? (?-2) )
8428             [[:blank:]\h]*
8429             \&\&
8430             [[:blank:]\h]*
8431             (? (?-2) )
8432             )
8433             )
8434             |
8435             (?:
8436             (?(?=(?:.+?)\|\|(?:.+?))
8437             (? (?-2) )
8438             [[:blank:]\h]*
8439             \|\|
8440             [[:blank:]\h]*
8441             (? (?-2) )
8442             )
8443             )
8444             |
8445             (?:
8446             (? (?&comp) )
8447             )
8448             |
8449             (?:
8450             \(
8451             [[:blank:]\h]*
8452             (? (?&cond) )
8453             [[:blank:]\h]*
8454             \)
8455             )
8456             )
8457             (?
8458             (?:
8459             (?[a-zA-Z]\w*)
8460             \(
8461             [[:blank:]\h]*
8462             (?
8463             (?> (?&func_words) )?
8464             )
8465             [[:blank:]\h]*
8466             \)
8467             )
8468             |
8469             (?:
8470             ( # paren group 1 (full function)
8471             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
8472             (? # paren group 2 (parens)
8473             \(
8474             (? # paren group 3 (contents of parens)
8475             (?:
8476             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
8477             |
8478             (?&paren_group) # Recurse to named capture group
8479             )*
8480             )
8481             \)
8482             )
8483             )
8484             )
8485             )
8486             (?
8487             (?:
8488             (? (?&word) )
8489             )
8490             |
8491             (?:
8492             (?:
8493             (? (?&word) )
8494             [[:blank:]\h]*\,[[:blank:]\h]*
8495             (? (?&list) )
8496             )
8497             |
8498             (?:
8499             (?
8500             (?:
8501             (?&word)
8502             [[:blank:]\h]*\,[[:blank:]\h]*
8503             )*
8504             (?&word)
8505             )
8506             (?:
8507             [[:blank:]\h]*\,[[:blank:]\h]*
8508             (? (?&word) )
8509             )?
8510             )
8511             )
8512             )
8513             (?
8514             (?:
8515             (?(?&word))
8516             [[:blank:]\h]+
8517             \-?(? (?:eq|ne|lt|le|gt|ge) )
8518             [[:blank:]\h]+
8519             (?(?&word))
8520             )
8521             )
8522             (?
8523             \bjoin\(
8524             [[:blank:]\h]*
8525             (?:
8526             (?:
8527             (? (?&list) )
8528             [[:blank:]]*\,[[:blank:]]*
8529             (? (?&word) )
8530             )
8531             |
8532             (? (?&list) )
8533             )
8534             [[:blank:]\h]*
8535             \)
8536             )
8537             (?
8538             (?:
8539             \{
8540             [[:blank:]\h]*
8541             (?(?&words))
8542             [[:blank:]\h]*
8543             \}
8544             )
8545             |
8546             (?:
8547             \(
8548             [[:blank:]\h]*
8549             (? (?&list) )
8550             [[:blank:]\h]*
8551             \)
8552             )
8553             |
8554             (?:
8555             (?(?&listfunc))
8556             )
8557             |
8558             (?:
8559             (?(?=\bsplit\()
8560             (?(?&split_recur))
8561             )
8562             )
8563             )
8564             (?
8565             (?:
8566             (?[a-zA-Z]\w*)
8567             \(
8568             [[:blank:]\h]*
8569             (?
8570             (?> (?&func_words) )?
8571             )
8572             [[:blank:]\h]*
8573             \)
8574             )
8575             |
8576             (?:
8577             ( # paren group 1 (full function)
8578             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
8579             (? # paren group 2 (parens)
8580             \(
8581             (? # paren group 3 (contents of parens)
8582             (?:
8583             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
8584             |
8585             (?&paren_group) # Recurse to named capture group
8586             )*
8587             )
8588             \)
8589             )
8590             )
8591             )
8592             )
8593             (?
8594             (?:
8595             $Regexp::Common::Apache2::REGEXP->{regex}
8596             |
8597             (?:
8598             (? (?®sub) )
8599             )
8600             )
8601             )
8602             (?
8603             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
8604             |
8605             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
8606             )
8607             (?
8608             s(?${REGSEP})
8609             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
8610             \g{regsep}
8611             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
8612             \g{regsep}
8613             (?${REGFLAGS})?
8614             )
8615             (?
8616             split\(
8617             [[:blank:]\h]*
8618             (?(?®any))
8619             [[:blank:]\h]*\,[[:blank:]\h]*
8620             (?:
8621             (?:
8622             (? (?&word) )
8623             )
8624             |
8625             (?:
8626             (? (?&list) )
8627             )
8628             )
8629             [[:blank:]\h]*
8630             \)
8631             )
8632             (?
8633             (?:
8634             (?: (?&substring) )
8635             )
8636             |
8637             (?:
8638             (?: (?&substring)[[:blank:]\h]+(?&string) )
8639             )
8640             )
8641             (?
8642             (?:
8643             (?(?&word))
8644             [[:blank:]\h]+
8645             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
8646             [[:blank:]\h]+
8647             (?(?&word))
8648             )
8649             )
8650             (?
8651             \bsub\(
8652             [[:blank:]\h]*
8653             (?(?=(?:[s]${REGSEP}))
8654             (? (?®sub) )
8655             )
8656             [[:blank:]\h]*
8657             \,
8658             [[:blank:]\h]*
8659             (?
8660             (? (?>(?&word)) )
8661             )
8662             [[:blank:]\h]*
8663             \)
8664             )
8665             (?
8666             (?:
8667             (?$Regexp::Common::Apache2::REGEXP->{cstring})
8668             )
8669             |
8670             (?:
8671             (? (?&variable) )
8672             )
8673             )
8674             (?
8675             (?:
8676             \%\{
8677             (?:
8678             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
8679             )
8680             \}
8681             )
8682             |
8683             (?:
8684             \%\{
8685             (?:
8686             (?${VARNAME})
8687             )
8688             \}
8689             )
8690             |
8691             (?:
8692             \bv\(
8693             [[:blank:]\h]*
8694             (?["'])
8695             (?:
8696             (?${VARNAME})
8697             )
8698             [[:blank:]\h]*
8699             \g{var_quote}
8700             \)
8701             )
8702             |
8703             (?:
8704             (?:^|\A|(?
8705             (?
8706             \$(?\{)?
8707             (?${DIGIT})
8708             (?()\})
8709             )
8710             )
8711             |
8712             (?:
8713             \%\{\:
8714             (?:
8715             (? (?&word) )
8716             )
8717             \:\}
8718             )
8719             |
8720             (?:
8721             \%\{\:
8722             (?:
8723             (? (?&cond) )
8724             )
8725             \:\}
8726             )
8727             )
8728             (?
8729             (?:
8730             (? $Regexp::Common::Apache2::REGEXP->{digits} )
8731             )
8732             |
8733             (?:
8734             (?['"])
8735             (?:
8736             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
8737             )
8738             \g{word_quote}
8739             )
8740             |
8741             (?:
8742             (?['"])
8743             (?:
8744             (? (?&string) )
8745             )
8746             \g{word_quote}
8747             )
8748             |
8749             (?:
8750             \(
8751             [[:blank:]\h]*
8752             (? (?-2) )
8753             [[:blank:]\h]*
8754             \)
8755             )
8756             |
8757             (?:
8758             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
8759             (?
8760             (?: (?: (?-2)\. )+ (?-2) )
8761             )
8762             )
8763             )
8764             |
8765             (?:
8766             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
8767             )
8768             |
8769             (?:
8770             (?(?&variable))
8771             )
8772             |
8773             (?:
8774             (?(?=\bsub\b\()
8775             (? (?&sub) )
8776             )
8777             )
8778             |
8779             (?:
8780             (?(?=\bjoin\b\()
8781             (? (?&join) )
8782             )
8783             )
8784             |
8785             (?:
8786             (? (?&function) )
8787             )
8788             |
8789             (?:
8790             (? $Regexp::Common::Apache2::TRUNK->{regex} )
8791             )
8792             )
8793             (?
8794             (?:
8795             [[:blank:]\h]*\K
8796             (? (?&word) )
8797             [[:blank:]\h]*\,[[:blank:]\h]*
8798             (? (?&list) )
8799             )
8800             |
8801             (?:
8802             [[:blank:]\h]*\K
8803             (?
8804             (?:
8805             (?&word)
8806             [[:blank:]\h]*\,[[:blank:]\h]*
8807             )*
8808             (?&word)
8809             )
8810             (?:
8811             [[:blank:]\h]*\,[[:blank:]\h]*
8812             (? (?&word) )
8813             )?
8814             )
8815             |
8816             (?:
8817             [[:blank:]\h]*\K
8818             (? (?&word) )
8819             )
8820             )
8821             )
8822             /x;
8823              
8824             ## substring
8825             ## | string substring
8826 22         107879 $TRUNK->{string} = qr/
8827             (?
8828             (?:
8829             (?&substring)
8830             )
8831             |
8832             (?:
8833             (?:(?&string_recur)[[:blank:]\h]+(?&substring))
8834             )
8835             )
8836             (?(DEFINE)
8837             (?
8838             (?:
8839             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
8840             (?
8841             (?&stringcomp)
8842             )
8843             )
8844             )
8845             |
8846             (?:
8847             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
8848             (?
8849             (?&integercomp)
8850             )
8851             )
8852             )
8853             |
8854             (?:
8855             (?:(?<=\W)|(?<=^)|(?<=\A))
8856             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
8857             [[:blank:]\h]+
8858             (? (?&word) )
8859             )
8860             |
8861             (?:
8862             (? (?&word) )
8863             [[:blank:]\h]+
8864             (?:
8865             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
8866             |
8867             \-(?ipmatch|strmatch|strcmatch|fnmatch)
8868             )
8869             [[:blank:]\h]+
8870             (? (?&word) )
8871             )
8872             |
8873             (?:
8874             (? (?&word) )
8875             [[:blank:]\h]+
8876             \-?in
8877             [[:blank:]\h]+
8878             (? (?&listfunc) )
8879             )
8880             |
8881             (?:
8882             (? (?&word) )
8883             [[:blank:]\h]+
8884             (? [\=|\!]\~ )
8885             [[:blank:]\h]+
8886             $Regexp::Common::Apache2::REGEXP->{regex}
8887             )
8888             |
8889             (?:
8890             (? (?&word) )
8891             [[:blank:]\h]+
8892             \-?in
8893             [[:blank:]\h]+
8894             \{
8895             [[:blank:]\h]*
8896             (? (?&list) )
8897             [[:blank:]\h]*
8898             \}
8899             )
8900             )
8901             (?
8902             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{true}(?=\W|\Z|$))
8903             |
8904             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{false}(?=\W|\Z|$))
8905             |
8906             (?:
8907             \![[:blank:]\h]*
8908             (? (?-2) )
8909             )
8910             |
8911             (?:
8912             (?(?=(?:.+?)\&\&(?:.+?))
8913             (? (?-2) )
8914             [[:blank:]\h]*
8915             \&\&
8916             [[:blank:]\h]*
8917             (? (?-2) )
8918             )
8919             )
8920             |
8921             (?:
8922             (?(?=(?:.+?)\|\|(?:.+?))
8923             (? (?-2) )
8924             [[:blank:]\h]*
8925             \|\|
8926             [[:blank:]\h]*
8927             (? (?-2) )
8928             )
8929             )
8930             |
8931             (?:
8932             (? (?&comp) )
8933             )
8934             |
8935             (?:
8936             \(
8937             [[:blank:]\h]*
8938             (? (?&cond) )
8939             [[:blank:]\h]*
8940             \)
8941             )
8942             )
8943             (?
8944             (?:
8945             (?[a-zA-Z]\w*)
8946             \(
8947             [[:blank:]\h]*
8948             (?
8949             (?> (?&func_words) )?
8950             )
8951             [[:blank:]\h]*
8952             \)
8953             )
8954             |
8955             (?:
8956             ( # paren group 1 (full function)
8957             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
8958             (? # paren group 2 (parens)
8959             \(
8960             (? # paren group 3 (contents of parens)
8961             (?:
8962             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
8963             |
8964             (?&paren_group) # Recurse to named capture group
8965             )*
8966             )
8967             \)
8968             )
8969             )
8970             )
8971             )
8972             (?
8973             (?:
8974             (? (?&word) )
8975             )
8976             |
8977             (?:
8978             (?:
8979             (? (?&word) )
8980             [[:blank:]\h]*\,[[:blank:]\h]*
8981             (? (?&list) )
8982             )
8983             |
8984             (?:
8985             (?
8986             (?:
8987             (?&word)
8988             [[:blank:]\h]*\,[[:blank:]\h]*
8989             )*
8990             (?&word)
8991             )
8992             (?:
8993             [[:blank:]\h]*\,[[:blank:]\h]*
8994             (? (?&word) )
8995             )?
8996             )
8997             )
8998             )
8999             (?
9000             (?:
9001             (?(?&word))
9002             [[:blank:]\h]+
9003             \-?(? (?:eq|ne|lt|le|gt|ge) )
9004             [[:blank:]\h]+
9005             (?(?&word))
9006             )
9007             )
9008             (?
9009             \bjoin\(
9010             [[:blank:]\h]*
9011             (?:
9012             (?:
9013             (? (?&list) )
9014             [[:blank:]]*\,[[:blank:]]*
9015             (? (?&word) )
9016             )
9017             |
9018             (? (?&list) )
9019             )
9020             [[:blank:]\h]*
9021             \)
9022             )
9023             (?
9024             (?:
9025             \{
9026             [[:blank:]\h]*
9027             (?(?&words))
9028             [[:blank:]\h]*
9029             \}
9030             )
9031             |
9032             (?:
9033             \(
9034             [[:blank:]\h]*
9035             (? (?&list) )
9036             [[:blank:]\h]*
9037             \)
9038             )
9039             |
9040             (?:
9041             (?(?&listfunc))
9042             )
9043             |
9044             (?:
9045             (?(?=\bsplit\()
9046             (?(?&split))
9047             )
9048             )
9049             )
9050             (?
9051             (?:
9052             (?[a-zA-Z]\w*)
9053             \(
9054             [[:blank:]\h]*
9055             (?
9056             (?> (?&func_words) )?
9057             )
9058             [[:blank:]\h]*
9059             \)
9060             )
9061             |
9062             (?:
9063             ( # paren group 1 (full function)
9064             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
9065             (? # paren group 2 (parens)
9066             \(
9067             (? # paren group 3 (contents of parens)
9068             (?:
9069             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
9070             |
9071             (?&paren_group) # Recurse to named capture group
9072             )*
9073             )
9074             \)
9075             )
9076             )
9077             )
9078             )
9079             (?
9080             (?:
9081             $Regexp::Common::Apache2::REGEXP->{regex}
9082             |
9083             (?:
9084             (? (?®sub) )
9085             )
9086             )
9087             )
9088             (?
9089             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
9090             |
9091             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
9092             )
9093             (?
9094             s(?${REGSEP})
9095             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
9096             \g{regsep}
9097             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
9098             \g{regsep}
9099             (?${REGFLAGS})?
9100             )
9101             (?
9102             split\(
9103             [[:blank:]\h]*
9104             (?(?®any))
9105             [[:blank:]\h]*\,[[:blank:]\h]*
9106             (?:
9107             (?:
9108             (? (?&word) )
9109             )
9110             |
9111             (?:
9112             (? (?&list) )
9113             )
9114             )
9115             [[:blank:]\h]*
9116             \)
9117             )
9118             (?
9119             (?:
9120             (?:(?-1)[[:blank:]\h]+(?&substring))
9121             )
9122             |
9123             (?:
9124             (?: (?&substring) )
9125             )
9126             )
9127             (?
9128             (?:
9129             (?(?&word))
9130             [[:blank:]\h]+
9131             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
9132             [[:blank:]\h]+
9133             (?(?&word))
9134             )
9135             )
9136             (?
9137             \bsub\(
9138             [[:blank:]\h]*
9139             (?(?=(?:[s]${REGSEP}))
9140             (? (?®sub) )
9141             )
9142             [[:blank:]\h]*
9143             \,
9144             [[:blank:]\h]*
9145             (?
9146             (? (?>(?&word)) )
9147             )
9148             [[:blank:]\h]*
9149             \)
9150             )
9151             (?
9152             (?:
9153             (?$Regexp::Common::Apache2::REGEXP->{cstring})
9154             )
9155             |
9156             (?:
9157             (? (?&variable) )
9158             )
9159             )
9160             (?
9161             (?:
9162             \%\{
9163             (?:
9164             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
9165             )
9166             \}
9167             )
9168             |
9169             (?:
9170             \%\{
9171             (?:
9172             (?${VARNAME})
9173             )
9174             \}
9175             )
9176             |
9177             (?:
9178             \bv\(
9179             [[:blank:]\h]*
9180             (?["'])
9181             (?:
9182             (?${VARNAME})
9183             )
9184             [[:blank:]\h]*
9185             \g{var_quote}
9186             \)
9187             )
9188             |
9189             (?:
9190             (?:^|\A|(?
9191             (?
9192             \$(?\{)?
9193             (?${DIGIT})
9194             (?()\})
9195             )
9196             )
9197             |
9198             (?:
9199             \%\{\:
9200             (?:
9201             (? (?&word) )
9202             )
9203             \:\}
9204             )
9205             |
9206             (?:
9207             \%\{\:
9208             (?:
9209             (? (?&cond) )
9210             )
9211             \:\}
9212             )
9213             )
9214             (?
9215             (?:
9216             (? $Regexp::Common::Apache2::REGEXP->{digits} )
9217             )
9218             |
9219             (?:
9220             (?['"])
9221             (?:
9222             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
9223             )
9224             \g{word_quote}
9225             )
9226             |
9227             (?:
9228             (?['"])
9229             (?:
9230             (? (?&string_recur) )
9231             )
9232             \g{word_quote}
9233             )
9234             |
9235             (?:
9236             \(
9237             [[:blank:]\h]*
9238             (? (?-2) )
9239             [[:blank:]\h]*
9240             \)
9241             )
9242             |
9243             (?:
9244             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
9245             (?
9246             (?: (?: (?-2)\. )+ (?-2) )
9247             )
9248             )
9249             )
9250             |
9251             (?:
9252             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
9253             )
9254             |
9255             (?:
9256             (?(?&variable))
9257             )
9258             |
9259             (?:
9260             (?(?=\bsub\b\()
9261             (? (?&sub) )
9262             )
9263             )
9264             |
9265             (?:
9266             (?(?=\bjoin\b\()
9267             (? (?&join) )
9268             )
9269             )
9270             |
9271             (?:
9272             (? (?&function) )
9273             )
9274             |
9275             (?:
9276             (? $Regexp::Common::Apache2::TRUNK->{regex} )
9277             )
9278             )
9279             (?
9280             (?:
9281             [[:blank:]\h]*\K
9282             (? (?&word) )
9283             [[:blank:]\h]*\,[[:blank:]\h]*
9284             (? (?&list) )
9285             )
9286             |
9287             (?:
9288             [[:blank:]\h]*\K
9289             (?
9290             (?:
9291             (?&word)
9292             [[:blank:]\h]*\,[[:blank:]\h]*
9293             )*
9294             (?&word)
9295             )
9296             (?:
9297             [[:blank:]\h]*\,[[:blank:]\h]*
9298             (? (?&word) )
9299             )?
9300             )
9301             |
9302             (?:
9303             [[:blank:]\h]*\K
9304             (? (?&word) )
9305             )
9306             )
9307             )/x;
9308              
9309             ## word "==" word
9310             ## | word "!=" word
9311             ## | word "<" word
9312             ## | word "<=" word
9313             ## | word ">" word
9314             ## | word ">=" word
9315 22         127966 $TRUNK->{stringcomp} = qr/
9316             (?
9317             (?(?&word))
9318             [[:blank:]\h]+
9319             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
9320             [[:blank:]\h]+
9321             (?(?&word))
9322             )
9323             (?(DEFINE)
9324             (?
9325             (?:
9326             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
9327             (?
9328             (?&stringcomp_recur)
9329             )
9330             )
9331             )
9332             |
9333             (?:
9334             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
9335             (?
9336             (?&integercomp)
9337             )
9338             )
9339             )
9340             |
9341             (?:
9342             (?:(?<=\W)|(?<=^)|(?<=\A))
9343             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
9344             [[:blank:]\h]+
9345             (? (?&word) )
9346             )
9347             |
9348             (?:
9349             (? (?&word) )
9350             [[:blank:]\h]+
9351             (?:
9352             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
9353             |
9354             \-(?ipmatch|strmatch|strcmatch|fnmatch)
9355             )
9356             [[:blank:]\h]+
9357             (? (?&word) )
9358             )
9359             |
9360             (?:
9361             (? (?&word) )
9362             [[:blank:]\h]+
9363             \-?in
9364             [[:blank:]\h]+
9365             (? (?&listfunc) )
9366             )
9367             |
9368             (?:
9369             (? (?&word) )
9370             [[:blank:]\h]+
9371             (? [\=|\!]\~ )
9372             [[:blank:]\h]+
9373             $Regexp::Common::Apache2::REGEXP->{regex}
9374             )
9375             |
9376             (?:
9377             (? (?&word) )
9378             [[:blank:]\h]+
9379             \-?in
9380             [[:blank:]\h]+
9381             \{
9382             [[:blank:]\h]*
9383             (? (?&list) )
9384             [[:blank:]\h]*
9385             \}
9386             )
9387             )
9388             (?
9389             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{true}(?=\W|\Z|$))
9390             |
9391             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{false}(?=\W|\Z|$))
9392             |
9393             (?:
9394             \![[:blank:]\h]*
9395             (? (?-2) )
9396             )
9397             |
9398             (?:
9399             (?(?=(?:.+?)\&\&(?:.+?))
9400             (? (?-2) )
9401             [[:blank:]\h]*
9402             \&\&
9403             [[:blank:]\h]*
9404             (? (?-2) )
9405             )
9406             )
9407             |
9408             (?:
9409             (?(?=(?:.+?)\|\|(?:.+?))
9410             (? (?-2) )
9411             [[:blank:]\h]*
9412             \|\|
9413             [[:blank:]\h]*
9414             (? (?-2) )
9415             )
9416             )
9417             |
9418             (?:
9419             (? (?&comp) )
9420             )
9421             |
9422             (?:
9423             \(
9424             [[:blank:]\h]*
9425             (? (?&cond) )
9426             [[:blank:]\h]*
9427             \)
9428             )
9429             )
9430             (?
9431             (?:
9432             (?[a-zA-Z]\w*)
9433             \(
9434             [[:blank:]\h]*
9435             (?
9436             (?> (?&func_words) )?
9437             )
9438             [[:blank:]\h]*
9439             \)
9440             )
9441             |
9442             (?:
9443             ( # paren group 1 (full function)
9444             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
9445             (? # paren group 2 (parens)
9446             \(
9447             (? # paren group 3 (contents of parens)
9448             (?:
9449             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
9450             |
9451             (?&paren_group) # Recurse to named capture group
9452             )*
9453             )
9454             \)
9455             )
9456             )
9457             )
9458             )
9459             (?
9460             (?:
9461             (? (?&word) )
9462             )
9463             |
9464             (?:
9465             (?:
9466             (? (?&word) )
9467             [[:blank:]\h]*\,[[:blank:]\h]*
9468             (? (?&list) )
9469             )
9470             |
9471             (?:
9472             (?
9473             (?:
9474             (?&word)
9475             [[:blank:]\h]*\,[[:blank:]\h]*
9476             )*
9477             (?&word)
9478             )
9479             (?:
9480             [[:blank:]\h]*\,[[:blank:]\h]*
9481             (? (?&word) )
9482             )?
9483             )
9484             )
9485             )
9486             (?
9487             (?:
9488             (?(?&word))
9489             [[:blank:]\h]+
9490             \-?(? (?:eq|ne|lt|le|gt|ge) )
9491             [[:blank:]\h]+
9492             (?(?&word))
9493             )
9494             )
9495             (?
9496             \bjoin\(
9497             [[:blank:]\h]*
9498             (?:
9499             (?:
9500             (? (?&list) )
9501             [[:blank:]]*\,[[:blank:]]*
9502             (? (?&word) )
9503             )
9504             |
9505             (? (?&list) )
9506             )
9507             [[:blank:]\h]*
9508             \)
9509             )
9510             (?
9511             (?:
9512             \{
9513             [[:blank:]\h]*
9514             (?(?&words))
9515             [[:blank:]\h]*
9516             \}
9517             )
9518             |
9519             (?:
9520             \(
9521             [[:blank:]\h]*
9522             (? (?&list) )
9523             [[:blank:]\h]*
9524             \)
9525             )
9526             |
9527             (?:
9528             (?(?&listfunc))
9529             )
9530             |
9531             (?:
9532             (?(?=\bsplit\()
9533             (?(?&split))
9534             )
9535             )
9536             )
9537             (?
9538             (?:
9539             (?[a-zA-Z]\w*)
9540             \(
9541             [[:blank:]\h]*
9542             (?
9543             (?> (?&func_words) )?
9544             )
9545             [[:blank:]\h]*
9546             \)
9547             )
9548             |
9549             (?:
9550             ( # paren group 1 (full function)
9551             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
9552             (? # paren group 2 (parens)
9553             \(
9554             (? # paren group 3 (contents of parens)
9555             (?:
9556             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
9557             |
9558             (?&paren_group) # Recurse to named capture group
9559             )*
9560             )
9561             \)
9562             )
9563             )
9564             )
9565             )
9566             (?
9567             (?:
9568             $Regexp::Common::Apache2::REGEXP->{regex}
9569             |
9570             (?:
9571             (? (?®sub) )
9572             )
9573             )
9574             )
9575             (?
9576             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
9577             |
9578             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
9579             )
9580             (?
9581             s(?${REGSEP})
9582             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
9583             \g{regsep}
9584             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
9585             \g{regsep}
9586             (?${REGFLAGS})?
9587             )
9588             (?
9589             split\(
9590             [[:blank:]\h]*
9591             (?(?®any))
9592             [[:blank:]\h]*\,[[:blank:]\h]*
9593             (?:
9594             (?:
9595             (? (?&word) )
9596             )
9597             |
9598             (?:
9599             (? (?&list) )
9600             )
9601             )
9602             [[:blank:]\h]*
9603             \)
9604             )
9605             (?
9606             (?:
9607             (?: (?&substring) )
9608             )
9609             |
9610             (?:
9611             (?: (?&substring)[[:blank:]\h]+(?&string) )
9612             )
9613             )
9614             (?
9615             (?:
9616             (?(?&word))
9617             [[:blank:]\h]+
9618             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
9619             [[:blank:]\h]+
9620             (?(?&word))
9621             )
9622             )
9623             (?
9624             \bsub\(
9625             [[:blank:]\h]*
9626             (?(?=(?:[s]${REGSEP}))
9627             (? (?®sub) )
9628             )
9629             [[:blank:]\h]*
9630             \,
9631             [[:blank:]\h]*
9632             (?
9633             (? (?>(?&word)) )
9634             )
9635             [[:blank:]\h]*
9636             \)
9637             )
9638             (?
9639             (?:
9640             (?$Regexp::Common::Apache2::REGEXP->{cstring})
9641             )
9642             |
9643             (?:
9644             (? (?&variable) )
9645             )
9646             )
9647             (?
9648             (?:
9649             \%\{
9650             (?:
9651             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
9652             )
9653             \}
9654             )
9655             |
9656             (?:
9657             \%\{
9658             (?:
9659             (?${VARNAME})
9660             )
9661             \}
9662             )
9663             |
9664             (?:
9665             \bv\(
9666             [[:blank:]\h]*
9667             (?["'])
9668             (?:
9669             (?${VARNAME})
9670             )
9671             [[:blank:]\h]*
9672             \g{var_quote}
9673             \)
9674             )
9675             |
9676             (?:
9677             (?:^|\A|(?
9678             (?
9679             \$(?\{)?
9680             (?${DIGIT})
9681             (?()\})
9682             )
9683             )
9684             |
9685             (?:
9686             \%\{\:
9687             (?:
9688             (? (?&word) )
9689             )
9690             \:\}
9691             )
9692             |
9693             (?:
9694             \%\{\:
9695             (?:
9696             (? (?&cond) )
9697             )
9698             \:\}
9699             )
9700             )
9701             (?
9702             (?:
9703             (? $Regexp::Common::Apache2::REGEXP->{digits} )
9704             )
9705             |
9706             (?:
9707             (?['"])
9708             (?:
9709             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
9710             )
9711             \g{word_quote}
9712             )
9713             |
9714             (?:
9715             (?['"])
9716             (?:
9717             (? (?&string) )
9718             )
9719             \g{word_quote}
9720             )
9721             |
9722             (?:
9723             \(
9724             [[:blank:]\h]*
9725             (? (?-2) )
9726             [[:blank:]\h]*
9727             \)
9728             )
9729             |
9730             (?:
9731             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
9732             (?
9733             (?: (?: (?-2)\. )+ (?-2) )
9734             )
9735             )
9736             )
9737             |
9738             (?:
9739             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
9740             )
9741             |
9742             (?:
9743             (?(?&variable))
9744             )
9745             |
9746             (?:
9747             (?(?=\bsub\b\()
9748             (? (?&sub) )
9749             )
9750             )
9751             |
9752             (?:
9753             (?(?=\bjoin\b\()
9754             (? (?&join) )
9755             )
9756             )
9757             |
9758             (?:
9759             (? (?&function) )
9760             )
9761             |
9762             (?:
9763             (? $Regexp::Common::Apache2::TRUNK->{regex} )
9764             )
9765             )
9766             (?
9767             (?:
9768             [[:blank:]\h]*\K
9769             (? (?&word) )
9770             [[:blank:]\h]*\,[[:blank:]\h]*
9771             (? (?&list) )
9772             )
9773             |
9774             (?:
9775             [[:blank:]\h]*\K
9776             (?
9777             (?:
9778             (?&word)
9779             [[:blank:]\h]*\,[[:blank:]\h]*
9780             )*
9781             (?&word)
9782             )
9783             (?:
9784             [[:blank:]\h]*\,[[:blank:]\h]*
9785             (? (?&word) )
9786             )?
9787             )
9788             |
9789             (?:
9790             [[:blank:]\h]*\K
9791             (? (?&word) )
9792             )
9793             )
9794             )
9795             /x;
9796              
9797             ## "sub" ["("] regsub "," word [")"]
9798 22         123243 $TRUNK->{sub} = qr/
9799             (?
9800             sub\(
9801             [[:blank:]\h]*
9802             (?(?®sub))
9803             [[:blank:]\h]*
9804             \,
9805             [[:blank:]\h]*
9806             (?:
9807             (?
9808             (?&word)
9809             )
9810             )
9811             [[:blank:]\h]*
9812             \)
9813             )
9814             (?(DEFINE)
9815             (?
9816             (?:
9817             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
9818             (?
9819             (?&stringcomp)
9820             )
9821             )
9822             )
9823             |
9824             (?:
9825             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
9826             (?
9827             (?&integercomp)
9828             )
9829             )
9830             )
9831             |
9832             (?:
9833             (?:(?<=\W)|(?<=^)|(?<=\A))
9834             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
9835             [[:blank:]\h]+
9836             (? (?&word) )
9837             )
9838             |
9839             (?:
9840             (? (?&word) )
9841             [[:blank:]\h]+
9842             (?:
9843             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
9844             |
9845             \-(?ipmatch|strmatch|strcmatch|fnmatch)
9846             )
9847             [[:blank:]\h]+
9848             (? (?&word) )
9849             )
9850             |
9851             (?:
9852             (? (?&word) )
9853             [[:blank:]\h]+
9854             \-?in
9855             [[:blank:]\h]+
9856             (? (?&listfunc) )
9857             )
9858             |
9859             (?:
9860             (? (?&word) )
9861             [[:blank:]\h]+
9862             (? [\=|\!]\~ )
9863             [[:blank:]\h]+
9864             $Regexp::Common::Apache2::REGEXP->{regex}
9865             )
9866             |
9867             (?:
9868             (? (?&word) )
9869             [[:blank:]\h]+
9870             \-?in
9871             [[:blank:]\h]+
9872             \{
9873             [[:blank:]\h]*
9874             (? (?&list) )
9875             [[:blank:]\h]*
9876             \}
9877             )
9878             )
9879             (?
9880             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{true}(?=\W|\Z|$))
9881             |
9882             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{false}(?=\W|\Z|$))
9883             |
9884             (?:
9885             \![[:blank:]\h]*
9886             (? (?-2) )
9887             )
9888             |
9889             (?:
9890             (?(?=(?:.+?)\&\&(?:.+?))
9891             (? (?-2) )
9892             [[:blank:]\h]*
9893             \&\&
9894             [[:blank:]\h]*
9895             (? (?-2) )
9896             )
9897             )
9898             |
9899             (?:
9900             (?(?=(?:.+?)\|\|(?:.+?))
9901             (? (?-2) )
9902             [[:blank:]\h]*
9903             \|\|
9904             [[:blank:]\h]*
9905             (? (?-2) )
9906             )
9907             )
9908             |
9909             (?:
9910             (? (?&comp) )
9911             )
9912             |
9913             (?:
9914             \(
9915             [[:blank:]\h]*
9916             (? (?&cond) )
9917             [[:blank:]\h]*
9918             \)
9919             )
9920             )
9921             (?
9922             (?:
9923             (?[a-zA-Z]\w*)
9924             \(
9925             [[:blank:]\h]*
9926             (?
9927             (?> (?&func_words) )?
9928             )
9929             [[:blank:]\h]*
9930             \)
9931             )
9932             |
9933             (?:
9934             ( # paren group 1 (full function)
9935             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
9936             (? # paren group 2 (parens)
9937             \(
9938             (? # paren group 3 (contents of parens)
9939             (?:
9940             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
9941             |
9942             (?&paren_group) # Recurse to named capture group
9943             )*
9944             )
9945             \)
9946             )
9947             )
9948             )
9949             )
9950             (?
9951             (?:
9952             (? (?&word) )
9953             )
9954             |
9955             (?:
9956             (?:
9957             (? (?&word) )
9958             [[:blank:]\h]*\,[[:blank:]\h]*
9959             (? (?&list) )
9960             )
9961             |
9962             (?:
9963             (?
9964             (?:
9965             (?&word)
9966             [[:blank:]\h]*\,[[:blank:]\h]*
9967             )*
9968             (?&word)
9969             )
9970             (?:
9971             [[:blank:]\h]*\,[[:blank:]\h]*
9972             (? (?&word) )
9973             )?
9974             )
9975             )
9976             )
9977             (?
9978             (?:
9979             (?(?&word))
9980             [[:blank:]\h]+
9981             \-?(? (?:eq|ne|lt|le|gt|ge) )
9982             [[:blank:]\h]+
9983             (?(?&word))
9984             )
9985             )
9986             (?
9987             \bjoin\(
9988             [[:blank:]\h]*
9989             (?:
9990             (?:
9991             (? (?&list) )
9992             [[:blank:]]*\,[[:blank:]]*
9993             (? (?&word) )
9994             )
9995             |
9996             (? (?&list) )
9997             )
9998             [[:blank:]\h]*
9999             \)
10000             )
10001             (?
10002             (?:
10003             \{
10004             [[:blank:]\h]*
10005             (?(?&words))
10006             [[:blank:]\h]*
10007             \}
10008             )
10009             |
10010             (?:
10011             \(
10012             [[:blank:]\h]*
10013             (? (?&list) )
10014             [[:blank:]\h]*
10015             \)
10016             )
10017             |
10018             (?:
10019             (?(?&listfunc))
10020             )
10021             |
10022             (?:
10023             (?(?=\bsplit\()
10024             (?(?&split))
10025             )
10026             )
10027             )
10028             (?
10029             (?:
10030             (?[a-zA-Z]\w*)
10031             \(
10032             [[:blank:]\h]*
10033             (?
10034             (?> (?&func_words) )?
10035             )
10036             [[:blank:]\h]*
10037             \)
10038             )
10039             |
10040             (?:
10041             ( # paren group 1 (full function)
10042             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
10043             (? # paren group 2 (parens)
10044             \(
10045             (? # paren group 3 (contents of parens)
10046             (?:
10047             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
10048             |
10049             (?&paren_group) # Recurse to named capture group
10050             )*
10051             )
10052             \)
10053             )
10054             )
10055             )
10056             )
10057             (?
10058             (?:
10059             $Regexp::Common::Apache2::REGEXP->{regex}
10060             |
10061             (?:
10062             (? (?®sub) )
10063             )
10064             )
10065             )
10066             (?
10067             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
10068             |
10069             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
10070             )
10071             (?
10072             s(?${REGSEP})
10073             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
10074             \g{regsep}
10075             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
10076             \g{regsep}
10077             (?${REGFLAGS})?
10078             )
10079             (?
10080             split\(
10081             [[:blank:]\h]*
10082             (?(?®any))
10083             [[:blank:]\h]*\,[[:blank:]\h]*
10084             (?:
10085             (?:
10086             (? (?&word) )
10087             )
10088             |
10089             (?:
10090             (? (?&list) )
10091             )
10092             )
10093             [[:blank:]\h]*
10094             \)
10095             )
10096             (?
10097             (?:
10098             (?: (?&substring) )
10099             )
10100             |
10101             (?:
10102             (?: (?&substring)[[:blank:]\h]+(?&string) )
10103             )
10104             )
10105             (?
10106             (?:
10107             (?(?&word))
10108             [[:blank:]\h]+
10109             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
10110             [[:blank:]\h]+
10111             (?(?&word))
10112             )
10113             )
10114             (?
10115             \bsub\(
10116             [[:blank:]\h]*
10117             (?(?=(?:[s]${REGSEP}))
10118             (? (?®sub) )
10119             )
10120             [[:blank:]\h]*
10121             \,
10122             [[:blank:]\h]*
10123             (?
10124             (? (?>(?&word)) )
10125             )
10126             [[:blank:]\h]*
10127             \)
10128             )
10129             (?
10130             (?:
10131             (?$Regexp::Common::Apache2::REGEXP->{cstring})
10132             )
10133             |
10134             (?:
10135             (? (?&variable) )
10136             )
10137             )
10138             (?
10139             (?:
10140             \%\{
10141             (?:
10142             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
10143             )
10144             \}
10145             )
10146             |
10147             (?:
10148             \%\{
10149             (?:
10150             (?${VARNAME})
10151             )
10152             \}
10153             )
10154             |
10155             (?:
10156             \bv\(
10157             [[:blank:]\h]*
10158             (?["'])
10159             (?:
10160             (?${VARNAME})
10161             )
10162             [[:blank:]\h]*
10163             \g{var_quote}
10164             \)
10165             )
10166             |
10167             (?:
10168             (?:^|\A|(?
10169             (?
10170             \$(?\{)?
10171             (?${DIGIT})
10172             (?()\})
10173             )
10174             )
10175             |
10176             (?:
10177             \%\{\:
10178             (?:
10179             (? (?&word) )
10180             )
10181             \:\}
10182             )
10183             |
10184             (?:
10185             \%\{\:
10186             (?:
10187             (? (?&cond) )
10188             )
10189             \:\}
10190             )
10191             )
10192             (?
10193             (?:
10194             (? $Regexp::Common::Apache2::REGEXP->{digits} )
10195             )
10196             |
10197             (?:
10198             (?['"])
10199             (?:
10200             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
10201             )
10202             \g{word_quote}
10203             )
10204             |
10205             (?:
10206             (?['"])
10207             (?:
10208             (? (?&string) )
10209             )
10210             \g{word_quote}
10211             )
10212             |
10213             (?:
10214             \(
10215             [[:blank:]\h]*
10216             (? (?-2) )
10217             [[:blank:]\h]*
10218             \)
10219             )
10220             |
10221             (?:
10222             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
10223             (?
10224             (?: (?: (?-2)\. )+ (?-2) )
10225             )
10226             )
10227             )
10228             |
10229             (?:
10230             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
10231             )
10232             |
10233             (?:
10234             (?(?&variable))
10235             )
10236             |
10237             (?:
10238             (?(?=\bsub\b\()
10239             (? (?&sub_recur) )
10240             )
10241             )
10242             |
10243             (?:
10244             (?(?=\bjoin\b\()
10245             (? (?&join) )
10246             )
10247             )
10248             |
10249             (?:
10250             (? (?&function) )
10251             )
10252             |
10253             (?:
10254             (? $Regexp::Common::Apache2::TRUNK->{regex} )
10255             )
10256             )
10257             (?
10258             (?:
10259             [[:blank:]\h]*\K
10260             (? (?&word) )
10261             [[:blank:]\h]*\,[[:blank:]\h]*
10262             (? (?&list) )
10263             )
10264             |
10265             (?:
10266             [[:blank:]\h]*\K
10267             (?
10268             (?:
10269             (?&word)
10270             [[:blank:]\h]*\,[[:blank:]\h]*
10271             )*
10272             (?&word)
10273             )
10274             (?:
10275             [[:blank:]\h]*\,[[:blank:]\h]*
10276             (? (?&word) )
10277             )?
10278             )
10279             |
10280             (?:
10281             [[:blank:]\h]*\K
10282             (? (?&word) )
10283             )
10284             )
10285             )
10286             /x;
10287              
10288             ## cstring
10289             ## | variable
10290 22         99353 $TRUNK->{substring} = qr/
10291             (?
10292             (?:$Regexp::Common::Apache2::TRUNK->{cstring})
10293             |
10294             (?:
10295             (? (?&variable) )
10296             )
10297             )
10298             (?(DEFINE)
10299             (?
10300             (?:
10301             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
10302             (?
10303             (?&stringcomp)
10304             )
10305             )
10306             )
10307             |
10308             (?:
10309             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
10310             (?
10311             (?&integercomp)
10312             )
10313             )
10314             )
10315             |
10316             (?:
10317             (?:(?<=\W)|(?<=^)|(?<=\A))
10318             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
10319             [[:blank:]\h]+
10320             (? (?&word) )
10321             )
10322             |
10323             (?:
10324             (? (?&word) )
10325             [[:blank:]\h]+
10326             (?:
10327             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
10328             |
10329             \-(?ipmatch|strmatch|strcmatch|fnmatch)
10330             )
10331             [[:blank:]\h]+
10332             (? (?&word) )
10333             )
10334             |
10335             (?:
10336             (? (?&word) )
10337             [[:blank:]\h]+
10338             \-?in
10339             [[:blank:]\h]+
10340             (? (?&listfunc) )
10341             )
10342             |
10343             (?:
10344             (? (?&word) )
10345             [[:blank:]\h]+
10346             (? [\=|\!]\~ )
10347             [[:blank:]\h]+
10348             $Regexp::Common::Apache2::REGEXP->{regex}
10349             )
10350             |
10351             (?:
10352             (? (?&word) )
10353             [[:blank:]\h]+
10354             \-?in
10355             [[:blank:]\h]+
10356             \{
10357             [[:blank:]\h]*
10358             (? (?&list) )
10359             [[:blank:]\h]*
10360             \}
10361             )
10362             )
10363             (?
10364             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{true}(?=\W|\Z|$))
10365             |
10366             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{false}(?=\W|\Z|$))
10367             |
10368             (?:
10369             \![[:blank:]\h]*
10370             (? (?-2) )
10371             )
10372             |
10373             (?:
10374             (?(?=(?:.+?)\&\&(?:.+?))
10375             (? (?-2) )
10376             [[:blank:]\h]*
10377             \&\&
10378             [[:blank:]\h]*
10379             (? (?-2) )
10380             )
10381             )
10382             |
10383             (?:
10384             (?(?=(?:.+?)\|\|(?:.+?))
10385             (? (?-2) )
10386             [[:blank:]\h]*
10387             \|\|
10388             [[:blank:]\h]*
10389             (? (?-2) )
10390             )
10391             )
10392             |
10393             (?:
10394             (? (?&comp) )
10395             )
10396             |
10397             (?:
10398             \(
10399             [[:blank:]\h]*
10400             (? (?&cond) )
10401             [[:blank:]\h]*
10402             \)
10403             )
10404             )
10405             (?
10406             (?:
10407             (?[a-zA-Z]\w*)
10408             \(
10409             [[:blank:]\h]*
10410             (?
10411             (?> (?&func_words) )?
10412             )
10413             [[:blank:]\h]*
10414             \)
10415             )
10416             |
10417             (?:
10418             ( # paren group 1 (full function)
10419             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
10420             (? # paren group 2 (parens)
10421             \(
10422             (? # paren group 3 (contents of parens)
10423             (?:
10424             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
10425             |
10426             (?&paren_group) # Recurse to named capture group
10427             )*
10428             )
10429             \)
10430             )
10431             )
10432             )
10433             )
10434             (?
10435             (?:
10436             (? (?&word) )
10437             )
10438             |
10439             (?:
10440             (?:
10441             (? (?&word) )
10442             [[:blank:]\h]*\,[[:blank:]\h]*
10443             (? (?&list) )
10444             )
10445             |
10446             (?:
10447             (?
10448             (?:
10449             (?&word)
10450             [[:blank:]\h]*\,[[:blank:]\h]*
10451             )*
10452             (?&word)
10453             )
10454             (?:
10455             [[:blank:]\h]*\,[[:blank:]\h]*
10456             (? (?&word) )
10457             )?
10458             )
10459             )
10460             )
10461             (?
10462             (?:
10463             (?(?&word))
10464             [[:blank:]\h]+
10465             \-?(? (?:eq|ne|lt|le|gt|ge) )
10466             [[:blank:]\h]+
10467             (?(?&word))
10468             )
10469             )
10470             (?
10471             \bjoin\(
10472             [[:blank:]\h]*
10473             (?:
10474             (?:
10475             (? (?&list) )
10476             [[:blank:]]*\,[[:blank:]]*
10477             (? (?&word) )
10478             )
10479             |
10480             (? (?&list) )
10481             )
10482             [[:blank:]\h]*
10483             \)
10484             )
10485             (?
10486             (?:
10487             \{
10488             [[:blank:]\h]*
10489             (?(?&words))
10490             [[:blank:]\h]*
10491             \}
10492             )
10493             |
10494             (?:
10495             \(
10496             [[:blank:]\h]*
10497             (? (?&list) )
10498             [[:blank:]\h]*
10499             \)
10500             )
10501             |
10502             (?:
10503             (?(?&listfunc))
10504             )
10505             |
10506             (?:
10507             (?(?=\bsplit\()
10508             (?(?&split))
10509             )
10510             )
10511             )
10512             (?
10513             (?:
10514             (?[a-zA-Z]\w*)
10515             \(
10516             [[:blank:]\h]*
10517             (?
10518             (?> (?&func_words) )?
10519             )
10520             [[:blank:]\h]*
10521             \)
10522             )
10523             |
10524             (?:
10525             ( # paren group 1 (full function)
10526             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
10527             (? # paren group 2 (parens)
10528             \(
10529             (? # paren group 3 (contents of parens)
10530             (?:
10531             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
10532             |
10533             (?&paren_group) # Recurse to named capture group
10534             )*
10535             )
10536             \)
10537             )
10538             )
10539             )
10540             )
10541             (?
10542             (?:
10543             $Regexp::Common::Apache2::REGEXP->{regex}
10544             |
10545             (?:
10546             (? (?®sub) )
10547             )
10548             )
10549             )
10550             (?
10551             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
10552             |
10553             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
10554             )
10555             (?
10556             s(?${REGSEP})
10557             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
10558             \g{regsep}
10559             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
10560             \g{regsep}
10561             (?${REGFLAGS})?
10562             )
10563             (?
10564             split\(
10565             [[:blank:]\h]*
10566             (?(?®any))
10567             [[:blank:]\h]*\,[[:blank:]\h]*
10568             (?:
10569             (?:
10570             (? (?&word) )
10571             )
10572             |
10573             (?:
10574             (? (?&list) )
10575             )
10576             )
10577             [[:blank:]\h]*
10578             \)
10579             )
10580             (?
10581             (?:
10582             (?:(?-1)[[:blank:]\h]+(?&substring_recur))
10583             )
10584             |
10585             (?:
10586             (?: (?&substring_recur) )
10587             )
10588             )
10589             (?
10590             (?:
10591             (?(?&word))
10592             [[:blank:]\h]+
10593             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
10594             [[:blank:]\h]+
10595             (?(?&word))
10596             )
10597             )
10598             (?
10599             \bsub\(
10600             [[:blank:]\h]*
10601             (?(?=(?:[s]${REGSEP}))
10602             (? (?®sub) )
10603             )
10604             [[:blank:]\h]*
10605             \,
10606             [[:blank:]\h]*
10607             (?
10608             (? (?>(?&word)) )
10609             )
10610             [[:blank:]\h]*
10611             \)
10612             )
10613             (?
10614             (?:
10615             (?$Regexp::Common::Apache2::REGEXP->{cstring})
10616             )
10617             |
10618             (?:
10619             (? (?&variable) )
10620             )
10621             )
10622             (?
10623             (?:
10624             \%\{
10625             (?:
10626             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
10627             )
10628             \}
10629             )
10630             |
10631             (?:
10632             \%\{
10633             (?:
10634             (?${VARNAME})
10635             )
10636             \}
10637             )
10638             |
10639             (?:
10640             \bv\(
10641             [[:blank:]\h]*
10642             (?["'])
10643             (?:
10644             (?${VARNAME})
10645             )
10646             [[:blank:]\h]*
10647             \g{var_quote}
10648             \)
10649             )
10650             |
10651             (?:
10652             (?:^|\A|(?
10653             (?
10654             \$(?\{)?
10655             (?${DIGIT})
10656             (?()\})
10657             )
10658             )
10659             |
10660             (?:
10661             \%\{\:
10662             (?:
10663             (? (?&word) )
10664             )
10665             \:\}
10666             )
10667             |
10668             (?:
10669             \%\{\:
10670             (?:
10671             (? (?&cond) )
10672             )
10673             \:\}
10674             )
10675             )
10676             (?
10677             (?:
10678             (? $Regexp::Common::Apache2::REGEXP->{digits} )
10679             )
10680             |
10681             (?:
10682             (?['"])
10683             (?:
10684             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
10685             )
10686             \g{word_quote}
10687             )
10688             |
10689             (?:
10690             (?['"])
10691             (?:
10692             (? (?&string) )
10693             )
10694             \g{word_quote}
10695             )
10696             |
10697             (?:
10698             \(
10699             [[:blank:]\h]*
10700             (? (?-2) )
10701             [[:blank:]\h]*
10702             \)
10703             )
10704             |
10705             (?:
10706             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
10707             (?
10708             (?: (?: (?-2)\. )+ (?-2) )
10709             )
10710             )
10711             )
10712             |
10713             (?:
10714             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
10715             )
10716             |
10717             (?:
10718             (?(?&variable))
10719             )
10720             |
10721             (?:
10722             (?(?=\bsub\b\()
10723             (? (?&sub) )
10724             )
10725             )
10726             |
10727             (?:
10728             (?(?=\bjoin\b\()
10729             (? (?&join) )
10730             )
10731             )
10732             |
10733             (?:
10734             (? (?&function) )
10735             )
10736             |
10737             (?:
10738             (? $Regexp::Common::Apache2::TRUNK->{regex} )
10739             )
10740             )
10741             (?
10742             (?:
10743             [[:blank:]\h]*\K
10744             (? (?&word) )
10745             [[:blank:]\h]*\,[[:blank:]\h]*
10746             (? (?&list) )
10747             )
10748             |
10749             (?:
10750             [[:blank:]\h]*\K
10751             (?
10752             (?:
10753             (?&word)
10754             [[:blank:]\h]*\,[[:blank:]\h]*
10755             )*
10756             (?&word)
10757             )
10758             (?:
10759             [[:blank:]\h]*\,[[:blank:]\h]*
10760             (? (?&word) )
10761             )?
10762             )
10763             |
10764             (?:
10765             [[:blank:]\h]*\K
10766             (? (?&word) )
10767             )
10768             )
10769             )
10770             /x;
10771              
10772             ## "%{" varname "}"
10773             ## | "%{" funcname ":" funcargs "}"
10774             ## | "%{:" word ":}"
10775             ## | "%{:" cond ":}"
10776             ## | rebackref
10777 22         128224 $TRUNK->{variable} = qr/
10778             (?
10779             (?:
10780             (?:^|\A|(?
10781             (?:
10782             (?(?${FUNCNAME})\:(?(?>\\\}|[^\}])*+))
10783             )
10784             \}
10785             )
10786             |
10787             (?:
10788             (?:^|\A|(?
10789             (?:
10790             (?${VARNAME})
10791             )
10792             \}
10793             )
10794             |
10795             (?:
10796             \bv\(
10797             [[:blank:]\h]*
10798             (?["'])
10799             (?:
10800             (?${VARNAME})
10801             )
10802             [[:blank:]\h]*
10803             \g{var_quote}
10804             \)
10805             )
10806             |
10807             (?:
10808             (?:^|\A|(?
10809             (?
10810             \$(?\{)?
10811             (?${DIGIT})
10812             (?()\})
10813             )
10814             )
10815             |
10816             (?:
10817             (?:^|\A|(?
10818             (?(?=(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{)))
10819             (? (?&word) )
10820             )
10821             \:\}
10822             )
10823             |
10824             (?:
10825             (?:^|\A|(?
10826             (?:
10827             (?(?&cond))
10828             )
10829             \:\}
10830             )
10831             )
10832             (?(DEFINE)
10833             (?
10834             (?:
10835             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
10836             (?
10837             (?&stringcomp)
10838             )
10839             )
10840             )
10841             |
10842             (?:
10843             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
10844             (?
10845             (?&integercomp)
10846             )
10847             )
10848             )
10849             |
10850             (?:
10851             (?:(?<=\W)|(?<=^)|(?<=\A))
10852             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
10853             [[:blank:]\h]+
10854             (? (?&word) )
10855             )
10856             |
10857             (?:
10858             (? (?&word) )
10859             [[:blank:]\h]+
10860             (?:
10861             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
10862             |
10863             \-(?ipmatch|strmatch|strcmatch|fnmatch)
10864             )
10865             [[:blank:]\h]+
10866             (? (?&word) )
10867             )
10868             |
10869             (?:
10870             (? (?&word) )
10871             [[:blank:]\h]+
10872             \-?in
10873             [[:blank:]\h]+
10874             (? (?&listfunc) )
10875             )
10876             |
10877             (?:
10878             (? (?&word) )
10879             [[:blank:]\h]+
10880             (? [\=|\!]\~ )
10881             [[:blank:]\h]+
10882             $Regexp::Common::Apache2::REGEXP->{regex}
10883             )
10884             |
10885             (?:
10886             (? (?&word) )
10887             [[:blank:]\h]+
10888             \-?in
10889             [[:blank:]\h]+
10890             \{
10891             [[:blank:]\h]*
10892             (? (?&list) )
10893             [[:blank:]\h]*
10894             \}
10895             )
10896             )
10897             (?
10898             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{true}(?=\W|\Z|$))
10899             |
10900             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{false}(?=\W|\Z|$))
10901             |
10902             (?:
10903             \![[:blank:]\h]*
10904             (? (?-2) )
10905             )
10906             |
10907             (?:
10908             (?(?=(?:.+?)\&\&(?:.+?))
10909             (? (?-2) )
10910             [[:blank:]\h]*
10911             \&\&
10912             [[:blank:]\h]*
10913             (? (?-2) )
10914             )
10915             )
10916             |
10917             (?:
10918             (?(?=(?:.+?)\|\|(?:.+?))
10919             (? (?-2) )
10920             [[:blank:]\h]*
10921             \|\|
10922             [[:blank:]\h]*
10923             (? (?-2) )
10924             )
10925             )
10926             |
10927             (?:
10928             (? (?&comp) )
10929             )
10930             |
10931             (?:
10932             \(
10933             [[:blank:]\h]*
10934             (? (?&cond) )
10935             [[:blank:]\h]*
10936             \)
10937             )
10938             )
10939             (?
10940             (?:
10941             (?[a-zA-Z]\w*)
10942             \(
10943             [[:blank:]\h]*
10944             (?
10945             (?> (?&func_words) )?
10946             )
10947             [[:blank:]\h]*
10948             \)
10949             )
10950             |
10951             (?:
10952             ( # paren group 1 (full function)
10953             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
10954             (? # paren group 2 (parens)
10955             \(
10956             (? # paren group 3 (contents of parens)
10957             (?:
10958             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
10959             |
10960             (?&paren_group) # Recurse to named capture group
10961             )*
10962             )
10963             \)
10964             )
10965             )
10966             )
10967             )
10968             (?
10969             (?:
10970             (? (?&word) )
10971             )
10972             |
10973             (?:
10974             (?:
10975             (? (?&word) )
10976             [[:blank:]\h]*\,[[:blank:]\h]*
10977             (? (?&list) )
10978             )
10979             |
10980             (?:
10981             (?
10982             (?:
10983             (?&word)
10984             [[:blank:]\h]*\,[[:blank:]\h]*
10985             )*
10986             (?&word)
10987             )
10988             (?:
10989             [[:blank:]\h]*\,[[:blank:]\h]*
10990             (? (?&word) )
10991             )?
10992             )
10993             )
10994             )
10995             (?
10996             (?:
10997             (?(?&word))
10998             [[:blank:]\h]+
10999             \-?(? (?:eq|ne|lt|le|gt|ge) )
11000             [[:blank:]\h]+
11001             (?(?&word))
11002             )
11003             )
11004             (?
11005             \bjoin\(
11006             [[:blank:]\h]*
11007             (?:
11008             (?:
11009             (? (?&list) )
11010             [[:blank:]]*\,[[:blank:]]*
11011             (? (?&word) )
11012             )
11013             |
11014             (? (?&list) )
11015             )
11016             [[:blank:]\h]*
11017             \)
11018             )
11019             (?
11020             (?:
11021             \{
11022             [[:blank:]\h]*
11023             (?(?&words))
11024             [[:blank:]\h]*
11025             \}
11026             )
11027             |
11028             (?:
11029             \(
11030             [[:blank:]\h]*
11031             (? (?&list) )
11032             [[:blank:]\h]*
11033             \)
11034             )
11035             |
11036             (?:
11037             (?(?&listfunc))
11038             )
11039             |
11040             (?:
11041             (?(?=\bsplit\()
11042             (?(?&split))
11043             )
11044             )
11045             )
11046             (?
11047             (?:
11048             (?[a-zA-Z]\w*)
11049             \(
11050             [[:blank:]\h]*
11051             (?
11052             (?> (?&func_words) )?
11053             )
11054             [[:blank:]\h]*
11055             \)
11056             )
11057             |
11058             (?:
11059             ( # paren group 1 (full function)
11060             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
11061             (? # paren group 2 (parens)
11062             \(
11063             (? # paren group 3 (contents of parens)
11064             (?:
11065             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
11066             |
11067             (?&paren_group) # Recurse to named capture group
11068             )*
11069             )
11070             \)
11071             )
11072             )
11073             )
11074             )
11075             (?
11076             (?:
11077             $Regexp::Common::Apache2::REGEXP->{regex}
11078             |
11079             (?:
11080             (? (?®sub) )
11081             )
11082             )
11083             )
11084             (?
11085             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
11086             |
11087             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
11088             )
11089             (?
11090             s(?${REGSEP})
11091             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
11092             \g{regsep}
11093             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
11094             \g{regsep}
11095             (?${REGFLAGS})?
11096             )
11097             (?
11098             split\(
11099             [[:blank:]\h]*
11100             (?(?®any))
11101             [[:blank:]\h]*\,[[:blank:]\h]*
11102             (?:
11103             (?:
11104             (? (?&word) )
11105             )
11106             |
11107             (?:
11108             (? (?&list) )
11109             )
11110             )
11111             [[:blank:]\h]*
11112             \)
11113             )
11114             (?
11115             (?:
11116             (?: (?&substring) )
11117             )
11118             |
11119             (?:
11120             (?: (?&substring)[[:blank:]\h]+(?&string) )
11121             )
11122             )
11123             (?
11124             (?:
11125             (?$Regexp::Common::Apache2::REGEXP->{cstring})
11126             )
11127             |
11128             (?:
11129             (? (?&variable_recur) )
11130             )
11131             )
11132             (?
11133             (?:
11134             (?(?&word))
11135             [[:blank:]\h]+
11136             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
11137             [[:blank:]\h]+
11138             (?(?&word))
11139             )
11140             )
11141             (?
11142             \bsub\(
11143             [[:blank:]\h]*
11144             (?(?=(?:[s]${REGSEP}))
11145             (? (?®sub) )
11146             )
11147             [[:blank:]\h]*
11148             \,
11149             [[:blank:]\h]*
11150             (?
11151             (? (?>(?&word)) )
11152             )
11153             [[:blank:]\h]*
11154             \)
11155             )
11156             (?
11157             (?:
11158             \%\{
11159             (?:
11160             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
11161             )
11162             \}
11163             )
11164             |
11165             (?:
11166             \%\{
11167             (?:
11168             (?${VARNAME})
11169             )
11170             \}
11171             )
11172             |
11173             (?:
11174             \bv\(
11175             [[:blank:]\h]*
11176             (?["'])
11177             (?:
11178             (?${VARNAME})
11179             )
11180             [[:blank:]\h]*
11181             \g{var_quote}
11182             \)
11183             )
11184             |
11185             (?:
11186             (?:^|\A|(?
11187             (?
11188             \$(?\{)?
11189             (?${DIGIT})
11190             (?()\})
11191             )
11192             )
11193             |
11194             (?:
11195             \%\{\:
11196             (?:
11197             (? (?&word) )
11198             )
11199             \:\}
11200             )
11201             |
11202             (?:
11203             \%\{\:
11204             (?:
11205             (? (?&cond) )
11206             )
11207             \:\}
11208             )
11209             )
11210             (?
11211             (?:
11212             (? $Regexp::Common::Apache2::REGEXP->{digits} )
11213             )
11214             |
11215             (?:
11216             (?['"])
11217             (?:
11218             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
11219             )
11220             \g{word_quote}
11221             )
11222             |
11223             (?:
11224             (?['"])
11225             (?:
11226             (? (?&string) )
11227             )
11228             \g{word_quote}
11229             )
11230             |
11231             (?:
11232             \(
11233             [[:blank:]\h]*
11234             (? (?-2) )
11235             [[:blank:]\h]*
11236             \)
11237             )
11238             |
11239             (?:
11240             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
11241             (?
11242             (?: (?: (?-2)\. )+ (?-2) )
11243             )
11244             )
11245             )
11246             |
11247             (?:
11248             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
11249             )
11250             |
11251             (?:
11252             (?(?&variable_recur))
11253             )
11254             |
11255             (?:
11256             (?(?=\bsub\b\()
11257             (? (?&sub) )
11258             )
11259             )
11260             |
11261             (?:
11262             (?(?=\bjoin\b\()
11263             (? (?&join) )
11264             )
11265             )
11266             |
11267             (?:
11268             (? (?&function) )
11269             )
11270             |
11271             (?:
11272             (? $Regexp::Common::Apache2::TRUNK->{regex} )
11273             )
11274             )
11275             (?
11276             (?:
11277             [[:blank:]\h]*\K
11278             (? (?&word) )
11279             [[:blank:]\h]*\,[[:blank:]\h]*
11280             (? (?&list) )
11281             )
11282             |
11283             (?:
11284             [[:blank:]\h]*\K
11285             (?
11286             (?:
11287             (?&word)
11288             [[:blank:]\h]*\,[[:blank:]\h]*
11289             )*
11290             (?&word)
11291             )
11292             (?:
11293             [[:blank:]\h]*\,[[:blank:]\h]*
11294             (? (?&word) )
11295             )?
11296             )
11297             |
11298             (?:
11299             [[:blank:]\h]*\K
11300             (? (?&word) )
11301             )
11302             )
11303             )
11304             /x;
11305              
11306             ## digits
11307             ## | "'" string "'"
11308             ## | '"' string '"'
11309             ## | word "." word
11310             ## | variable
11311             ## | sub
11312             ## | join
11313             ## | function
11314             ## | "(" word ")"
11315 22         230133 $TRUNK->{word} = qr/
11316             (?
11317             (?:
11318             (?$Regexp::Common::Apache2::TRUNK->{digits})
11319             )
11320             |
11321             (?:
11322             (?\')
11323             (?:
11324             (? (?&string) )
11325             )
11326             \'
11327             )
11328             |
11329             (?:
11330             (?\")
11331             (?:
11332             (? (?&string) )
11333             )
11334             \"
11335             )
11336             |
11337             (?:
11338             (?\()
11339             [[:blank:]\h]*
11340             (?(?&word_recur))
11341             [[:blank:]\h]*
11342             (?\))
11343             )
11344             |
11345             (?:
11346             (? (?: (?&word_recur)\. )+ (?&word_recur) )
11347             )
11348             |
11349             (?:
11350             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
11351             )
11352             |
11353             (?:
11354             (?(?&variable))
11355             )
11356             |
11357             (?:
11358             (?(?&sub))
11359             )
11360             |
11361             (?:
11362             (?(?&join))
11363             )
11364             |
11365             (?:
11366             (?(?&function))
11367             )
11368             |
11369             (?:
11370             $Regexp::Common::Apache2::TRUNK->{regex}
11371             )
11372             )
11373             (?(DEFINE)
11374             (?
11375             (?:
11376             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
11377             (?
11378             (?&stringcomp)
11379             )
11380             )
11381             )
11382             |
11383             (?:
11384             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
11385             (?
11386             (?&integercomp)
11387             )
11388             )
11389             )
11390             |
11391             (?:
11392             (?:(?<=\W)|(?<=^)|(?<=\A))
11393             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
11394             [[:blank:]\h]+
11395             (? (?&word_recur) )
11396             )
11397             |
11398             (?:
11399             (? (?&word_recur) )
11400             [[:blank:]\h]+
11401             (?:
11402             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
11403             |
11404             \-(?ipmatch|strmatch|strcmatch|fnmatch)
11405             )
11406             [[:blank:]\h]+
11407             (? (?&word_recur) )
11408             )
11409             |
11410             (?:
11411             (? (?&word_recur) )
11412             [[:blank:]\h]+
11413             \-?in
11414             [[:blank:]\h]+
11415             (? (?&listfunc) )
11416             )
11417             |
11418             (?:
11419             (? (?&word_recur) )
11420             [[:blank:]\h]+
11421             (? [\=|\!]\~ )
11422             [[:blank:]\h]+
11423             $Regexp::Common::Apache2::REGEXP->{regex}
11424             )
11425             |
11426             (?:
11427             (? (?&word_recur) )
11428             [[:blank:]\h]+
11429             \-?in
11430             [[:blank:]\h]+
11431             \{
11432             [[:blank:]\h]*
11433             (? (?&list) )
11434             [[:blank:]\h]*
11435             \}
11436             )
11437             )
11438             (?
11439             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{true}(?=\W|\Z|$))
11440             |
11441             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{false}(?=\W|\Z|$))
11442             |
11443             (?:
11444             \![[:blank:]\h]*
11445             (? (?-2) )
11446             )
11447             |
11448             (?:
11449             (?(?=(?:.+?)\&\&(?:.+?))
11450             (? (?-2) )
11451             [[:blank:]\h]*
11452             \&\&
11453             [[:blank:]\h]*
11454             (? (?-2) )
11455             )
11456             )
11457             |
11458             (?:
11459             (?(?=(?:.+?)\|\|(?:.+?))
11460             (? (?-2) )
11461             [[:blank:]\h]*
11462             \|\|
11463             [[:blank:]\h]*
11464             (? (?-2) )
11465             )
11466             )
11467             |
11468             (?:
11469             (? (?&comp) )
11470             )
11471             |
11472             (?:
11473             \(
11474             [[:blank:]\h]*
11475             (? (?&cond) )
11476             [[:blank:]\h]*
11477             \)
11478             )
11479             )
11480             (?
11481             (?:
11482             (?[a-zA-Z]\w*)
11483             \(
11484             [[:blank:]\h]*
11485             (?
11486             (?> (?&func_words) )?
11487             )
11488             [[:blank:]\h]*
11489             \)
11490             )
11491             |
11492             (?:
11493             ( # paren group 1 (full function)
11494             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
11495             (? # paren group 2 (parens)
11496             \(
11497             (? # paren group 3 (contents of parens)
11498             (?:
11499             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
11500             |
11501             (?&paren_group) # Recurse to named capture group
11502             )*
11503             )
11504             \)
11505             )
11506             )
11507             )
11508             )
11509             (?
11510             (?:
11511             (? (?&word) )
11512             )
11513             |
11514             (?:
11515             (?:
11516             (? (?&word) )
11517             [[:blank:]\h]*\,[[:blank:]\h]*
11518             (? (?&list) )
11519             )
11520             |
11521             (?:
11522             (?
11523             (?:
11524             (?&word)
11525             [[:blank:]\h]*\,[[:blank:]\h]*
11526             )*
11527             (?&word)
11528             )
11529             (?:
11530             [[:blank:]\h]*\,[[:blank:]\h]*
11531             (? (?&word) )
11532             )?
11533             )
11534             )
11535             )
11536             (?
11537             (?:
11538             (?(?&word_recur))
11539             [[:blank:]\h]+
11540             \-?(? (?:eq|ne|lt|le|gt|ge) )
11541             [[:blank:]\h]+
11542             (?(?&word_recur))
11543             )
11544             )
11545             (?
11546             \bjoin\(
11547             [[:blank:]\h]*
11548             (?:
11549             (?:
11550             (? (?&list) )
11551             [[:blank:]]*\,[[:blank:]]*
11552             (? (?&word_recur) )
11553             )
11554             |
11555             (? (?&list) )
11556             )
11557             [[:blank:]\h]*
11558             \)
11559             )
11560             (?
11561             (?:
11562             \{
11563             [[:blank:]\h]*
11564             (?(?&words))
11565             [[:blank:]\h]*
11566             \}
11567             )
11568             |
11569             (?:
11570             \(
11571             [[:blank:]\h]*
11572             (? (?&list) )
11573             [[:blank:]\h]*
11574             \)
11575             )
11576             |
11577             (?:
11578             (?(?&listfunc))
11579             )
11580             |
11581             (?:
11582             (?(?=\bsplit\()
11583             (?(?&split))
11584             )
11585             )
11586             )
11587             (?
11588             (?:
11589             (?[a-zA-Z]\w*)
11590             \(
11591             [[:blank:]\h]*
11592             (?
11593             (?> (?&func_words) )?
11594             )
11595             [[:blank:]\h]*
11596             \)
11597             )
11598             |
11599             (?:
11600             ( # paren group 1 (full function)
11601             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
11602             (? # paren group 2 (parens)
11603             \(
11604             (? # paren group 3 (contents of parens)
11605             (?:
11606             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
11607             |
11608             (?&paren_group) # Recurse to named capture group
11609             )*
11610             )
11611             \)
11612             )
11613             )
11614             )
11615             )
11616             (?
11617             (?:
11618             $Regexp::Common::Apache2::REGEXP->{regex}
11619             |
11620             (?:
11621             (? (?®sub) )
11622             )
11623             )
11624             )
11625             (?
11626             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
11627             |
11628             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
11629             )
11630             (?
11631             s(?${REGSEP})
11632             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
11633             \g{regsep}
11634             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
11635             \g{regsep}
11636             (?${REGFLAGS})?
11637             )
11638             (?
11639             split\(
11640             [[:blank:]\h]*
11641             (?(?®any))
11642             [[:blank:]\h]*\,[[:blank:]\h]*
11643             (?:
11644             (?:
11645             (? (?&word_recur) )
11646             )
11647             |
11648             (?:
11649             (? (?&list) )
11650             )
11651             )
11652             [[:blank:]\h]*
11653             \)
11654             )
11655             (?
11656             (?:
11657             (?: (?&substring) )
11658             )
11659             |
11660             (?:
11661             (?: (?&substring)[[:blank:]\h]+(?&string) )
11662             )
11663             )
11664             (?
11665             (?:
11666             (?(?&word_recur))
11667             [[:blank:]\h]+
11668             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
11669             [[:blank:]\h]+
11670             (?(?&word_recur))
11671             )
11672             )
11673             (?
11674             \bsub\(
11675             [[:blank:]\h]*
11676             (?(?=(?:[s]${REGSEP}))
11677             (? (?®sub) )
11678             )
11679             [[:blank:]\h]*
11680             \,
11681             [[:blank:]\h]*
11682             (?
11683             (? (?>(?&word_recur)) )
11684             )
11685             [[:blank:]\h]*
11686             \)
11687             )
11688             (?
11689             (?:
11690             (?$Regexp::Common::Apache2::REGEXP->{cstring})
11691             )
11692             |
11693             (?:
11694             (? (?&variable) )
11695             )
11696             )
11697             (?
11698             (?:
11699             \%\{
11700             (?:
11701             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
11702             )
11703             \}
11704             )
11705             |
11706             (?:
11707             \%\{
11708             (?:
11709             (?${VARNAME})
11710             )
11711             \}
11712             )
11713             |
11714             (?:
11715             \bv\(
11716             [[:blank:]\h]*
11717             (?["'])
11718             (?:
11719             (?${VARNAME})
11720             )
11721             [[:blank:]\h]*
11722             \g{var_quote}
11723             \)
11724             )
11725             |
11726             (?:
11727             (?:^|\A|(?
11728             (?
11729             \$(?\{)?
11730             (?${DIGIT})
11731             (?()\})
11732             )
11733             )
11734             |
11735             (?:
11736             \%\{\:
11737             (?:
11738             (? (?&word_recur) )
11739             )
11740             \:\}
11741             )
11742             |
11743             (?:
11744             \%\{\:
11745             (?:
11746             (? (?&cond) )
11747             )
11748             \:\}
11749             )
11750             )
11751             (?
11752             (?:
11753             (? $Regexp::Common::Apache2::REGEXP->{digits} )
11754             )
11755             |
11756             (?:
11757             (?['"])
11758             (?:
11759             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
11760             )
11761             \g{word_quote}
11762             )
11763             |
11764             (?:
11765             (?['"])
11766             (?:
11767             (? (?&string) )
11768             )
11769             \g{word_quote}
11770             )
11771             |
11772             (?:
11773             \(
11774             [[:blank:]\h]*
11775             (? (?-2) )
11776             [[:blank:]\h]*
11777             \)
11778             )
11779             |
11780             (?:
11781             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
11782             (?
11783             (?: (?: (?-2)\. )+ (?-2) )
11784             )
11785             )
11786             )
11787             |
11788             (?:
11789             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
11790             )
11791             |
11792             (?:
11793             (?(?&variable))
11794             )
11795             |
11796             (?:
11797             (?(?=\bsub\b\()
11798             (? (?&sub) )
11799             )
11800             )
11801             |
11802             (?:
11803             (?(?=\bjoin\b\()
11804             (? (?&join) )
11805             )
11806             )
11807             |
11808             (?:
11809             (? (?&function) )
11810             )
11811             |
11812             (?:
11813             (? $Regexp::Common::Apache2::TRUNK->{regex} )
11814             )
11815             )
11816             (?
11817             (?:
11818             [[:blank:]\h]*\K
11819             (? (?&word_recur) )
11820             [[:blank:]\h]*\,[[:blank:]\h]*
11821             (? (?&list) )
11822             )
11823             |
11824             (?:
11825             [[:blank:]\h]*\K
11826             (?
11827             (?:
11828             (?&word_recur)
11829             [[:blank:]\h]*\,[[:blank:]\h]*
11830             )*
11831             (?&word_recur)
11832             )
11833             (?:
11834             [[:blank:]\h]*\,[[:blank:]\h]*
11835             (? (?&word_recur) )
11836             )?
11837             )
11838             |
11839             (?:
11840             [[:blank:]\h]*\K
11841             (? (?&word_recur) )
11842             )
11843             )
11844             )
11845             /x;
11846            
11847             ## word
11848             ## | word "," list
11849 22         143292 $TRUNK->{words} = qr/
11850             (?
11851             (?:
11852             (?:
11853             (?
11854             (?:
11855             (?&word)
11856             [[:blank:]\h]*\,[[:blank:]\h]*
11857             )*
11858             (?&word)
11859             )
11860             (?:
11861             [[:blank:]\h]*\,[[:blank:]\h]*
11862             (? (?&word) )
11863             )?
11864             )
11865             |
11866             (?:
11867             (?(?&word))
11868             [[:blank:]\h]*\,[[:blank:]\h]*
11869             (?(?&list))
11870             )
11871             |
11872             (?:
11873             (?(?&word))
11874             )
11875             )
11876             )
11877             (?(DEFINE)
11878             (?
11879             (?:
11880             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*(?:\=\=|\!\=|\<|\<\=|\>|\>\=)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
11881             (?
11882             (?&stringcomp)
11883             )
11884             )
11885             )
11886             |
11887             (?:
11888             (?(?=(?:(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))(?:.+?)[[:blank:]\h]*\-?(?:eq|ne|lt|le|gt|ge)[[:blank:]\h]*(?:(?:\([[:blank:]\h]*)?(?:[0-9\"\']|${FUNCNAME}\(|\%\{))))
11889             (?
11890             (?&integercomp)
11891             )
11892             )
11893             )
11894             |
11895             (?:
11896             (?:(?<=\W)|(?<=^)|(?<=\A))
11897             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
11898             [[:blank:]\h]+
11899             (? (?&word) )
11900             )
11901             |
11902             (?:
11903             (? (?&word) )
11904             [[:blank:]\h]+
11905             (?:
11906             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
11907             |
11908             \-(?ipmatch|strmatch|strcmatch|fnmatch)
11909             )
11910             [[:blank:]\h]+
11911             (? (?&word) )
11912             )
11913             |
11914             (?:
11915             (? (?&word) )
11916             [[:blank:]\h]+
11917             \-?in
11918             [[:blank:]\h]+
11919             (? (?&listfunc) )
11920             )
11921             |
11922             (?:
11923             (? (?&word) )
11924             [[:blank:]\h]+
11925             (? [\=|\!]\~ )
11926             [[:blank:]\h]+
11927             $Regexp::Common::Apache2::REGEXP->{regex}
11928             )
11929             |
11930             (?:
11931             (? (?&word) )
11932             [[:blank:]\h]+
11933             \-?in
11934             [[:blank:]\h]+
11935             \{
11936             [[:blank:]\h]*
11937             (? (?&list) )
11938             [[:blank:]\h]*
11939             \}
11940             )
11941             )
11942             (?
11943             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{true}(?=\W|\Z|$))
11944             |
11945             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::TRUNK->{false}(?=\W|\Z|$))
11946             |
11947             (?:
11948             \![[:blank:]\h]*
11949             (? (?-2) )
11950             )
11951             |
11952             (?:
11953             (?(?=(?:.+?)\&\&(?:.+?))
11954             (? (?-2) )
11955             [[:blank:]\h]*
11956             \&\&
11957             [[:blank:]\h]*
11958             (? (?-2) )
11959             )
11960             )
11961             |
11962             (?:
11963             (?(?=(?:.+?)\|\|(?:.+?))
11964             (? (?-2) )
11965             [[:blank:]\h]*
11966             \|\|
11967             [[:blank:]\h]*
11968             (? (?-2) )
11969             )
11970             )
11971             |
11972             (?:
11973             (? (?&comp) )
11974             )
11975             |
11976             (?:
11977             \(
11978             [[:blank:]\h]*
11979             (? (?&cond) )
11980             [[:blank:]\h]*
11981             \)
11982             )
11983             )
11984             (?
11985             (?:
11986             (?[a-zA-Z]\w*)
11987             \(
11988             [[:blank:]\h]*
11989             (?
11990             (?> (?&func_words) )?
11991             )
11992             [[:blank:]\h]*
11993             \)
11994             )
11995             |
11996             (?:
11997             ( # paren group 1 (full function)
11998             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
11999             (? # paren group 2 (parens)
12000             \(
12001             (? # paren group 3 (contents of parens)
12002             (?:
12003             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
12004             |
12005             (?&paren_group) # Recurse to named capture group
12006             )*
12007             )
12008             \)
12009             )
12010             )
12011             )
12012             )
12013             (?
12014             (?:
12015             (? (?&word) )
12016             )
12017             |
12018             (?:
12019             (?:
12020             (? (?&word) )
12021             [[:blank:]\h]*\,[[:blank:]\h]*
12022             (? (?&list) )
12023             )
12024             |
12025             (?:
12026             (?
12027             (?:
12028             (?&word)
12029             [[:blank:]\h]*\,[[:blank:]\h]*
12030             )*
12031             (?&word)
12032             )
12033             (?:
12034             [[:blank:]\h]*\,[[:blank:]\h]*
12035             (? (?&word) )
12036             )?
12037             )
12038             )
12039             )
12040             (?
12041             (?:
12042             (?(?&word))
12043             [[:blank:]\h]+
12044             \-?(? (?:eq|ne|lt|le|gt|ge) )
12045             [[:blank:]\h]+
12046             (?(?&word))
12047             )
12048             )
12049             (?
12050             \bjoin\(
12051             [[:blank:]\h]*
12052             (?:
12053             (?:
12054             (? (?&list) )
12055             [[:blank:]]*\,[[:blank:]]*
12056             (? (?&word) )
12057             )
12058             |
12059             (? (?&list) )
12060             )
12061             [[:blank:]\h]*
12062             \)
12063             )
12064             (?
12065             (?:
12066             \{
12067             [[:blank:]\h]*
12068             (?(?&words_recur))
12069             [[:blank:]\h]*
12070             \}
12071             )
12072             |
12073             (?:
12074             \(
12075             [[:blank:]\h]*
12076             (? (?&list) )
12077             [[:blank:]\h]*
12078             \)
12079             )
12080             |
12081             (?:
12082             (?(?&listfunc))
12083             )
12084             |
12085             (?:
12086             (?(?=\bsplit\()
12087             (?(?&split))
12088             )
12089             )
12090             )
12091             (?
12092             (?:
12093             (?[a-zA-Z]\w*)
12094             \(
12095             [[:blank:]\h]*
12096             (?
12097             (?> (?&func_words) )?
12098             )
12099             [[:blank:]\h]*
12100             \)
12101             )
12102             |
12103             (?:
12104             ( # paren group 1 (full function)
12105             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
12106             (? # paren group 2 (parens)
12107             \(
12108             (? # paren group 3 (contents of parens)
12109             (?:
12110             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
12111             |
12112             (?&paren_group) # Recurse to named capture group
12113             )*
12114             )
12115             \)
12116             )
12117             )
12118             )
12119             )
12120             (?
12121             (?:
12122             $Regexp::Common::Apache2::REGEXP->{regex}
12123             |
12124             (?:
12125             (? (?®sub) )
12126             )
12127             )
12128             )
12129             (?
12130             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
12131             |
12132             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
12133             )
12134             (?
12135             s(?${REGSEP})
12136             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
12137             \g{regsep}
12138             (?(?>\\\g{regsep}|(?!\g{regsep}).)*+)
12139             \g{regsep}
12140             (?${REGFLAGS})?
12141             )
12142             (?
12143             split\(
12144             [[:blank:]\h]*
12145             (?(?®any))
12146             [[:blank:]\h]*\,[[:blank:]\h]*
12147             (?:
12148             (?:
12149             (? (?&word) )
12150             )
12151             |
12152             (?:
12153             (? (?&list) )
12154             )
12155             )
12156             [[:blank:]\h]*
12157             \)
12158             )
12159             (?
12160             (?:
12161             (?: (?&substring) )
12162             )
12163             |
12164             (?:
12165             (?: (?&substring)[[:blank:]\h]+(?&string) )
12166             )
12167             )
12168             (?
12169             (?:
12170             (?(?&word))
12171             [[:blank:]\h]+
12172             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
12173             [[:blank:]\h]+
12174             (?(?&word))
12175             )
12176             )
12177             (?
12178             \bsub\(
12179             [[:blank:]\h]*
12180             (?(?=(?:[s]${REGSEP}))
12181             (? (?®sub) )
12182             )
12183             [[:blank:]\h]*
12184             \,
12185             [[:blank:]\h]*
12186             (?
12187             (? (?>(?&word)) )
12188             )
12189             [[:blank:]\h]*
12190             \)
12191             )
12192             (?
12193             (?:
12194             (?$Regexp::Common::Apache2::REGEXP->{cstring})
12195             )
12196             |
12197             (?:
12198             (? (?&variable) )
12199             )
12200             )
12201             (?
12202             (?:
12203             \%\{
12204             (?:
12205             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
12206             )
12207             \}
12208             )
12209             |
12210             (?:
12211             \%\{
12212             (?:
12213             (?${VARNAME})
12214             )
12215             \}
12216             )
12217             |
12218             (?:
12219             \bv\(
12220             [[:blank:]\h]*
12221             (?["'])
12222             (?:
12223             (?${VARNAME})
12224             )
12225             [[:blank:]\h]*
12226             \g{var_quote}
12227             \)
12228             )
12229             |
12230             (?:
12231             (?:^|\A|(?
12232             (?
12233             \$(?\{)?
12234             (?${DIGIT})
12235             (?()\})
12236             )
12237             )
12238             |
12239             (?:
12240             \%\{\:
12241             (?:
12242             (? (?&word) )
12243             )
12244             \:\}
12245             )
12246             |
12247             (?:
12248             \%\{\:
12249             (?:
12250             (? (?&cond) )
12251             )
12252             \:\}
12253             )
12254             )
12255             (?
12256             (?:
12257             (? $Regexp::Common::Apache2::REGEXP->{digits} )
12258             )
12259             |
12260             (?:
12261             (?['"])
12262             (?:
12263             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
12264             )
12265             \g{word_quote}
12266             )
12267             |
12268             (?:
12269             (?['"])
12270             (?:
12271             (? (?&string) )
12272             )
12273             \g{word_quote}
12274             )
12275             |
12276             (?:
12277             \(
12278             [[:blank:]\h]*
12279             (? (?-2) )
12280             [[:blank:]\h]*
12281             \)
12282             )
12283             |
12284             (?:
12285             (?(?=(?:(?>\\\.|(?!\.).)*+\.(?:.+?)))
12286             (?
12287             (?: (?: (?-2)\. )+ (?-2) )
12288             )
12289             )
12290             )
12291             |
12292             (?:
12293             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
12294             )
12295             |
12296             (?:
12297             (?(?&variable))
12298             )
12299             |
12300             (?:
12301             (?(?=\bsub\b\()
12302             (? (?&sub) )
12303             )
12304             )
12305             |
12306             (?:
12307             (?(?=\bjoin\b\()
12308             (? (?&join) )
12309             )
12310             )
12311             |
12312             (?:
12313             (? (?&function) )
12314             )
12315             |
12316             (?:
12317             (? $Regexp::Common::Apache2::TRUNK->{regex} )
12318             )
12319             )
12320             (?
12321             (?:
12322             [[:blank:]\h]*\K
12323             (? (?&word) )
12324             [[:blank:]\h]*\,[[:blank:]\h]*
12325             (? (?&list) )
12326             )
12327             |
12328             (?:
12329             [[:blank:]\h]*\K
12330             (?
12331             (?:
12332             (?&word)
12333             [[:blank:]\h]*\,[[:blank:]\h]*
12334             )*
12335             (?&word)
12336             )
12337             (?:
12338             [[:blank:]\h]*\,[[:blank:]\h]*
12339             (? (?&word) )
12340             )?
12341             )
12342             |
12343             (?:
12344             [[:blank:]\h]*\K
12345             (? (?&word) )
12346             )
12347             )
12348             )
12349             /x;
12350              
12351             ## Here is the addition to be compliant with expression from 2.3.12 and before,
12352             ## ie old fashioned variable such as $REQUEST_URI instead of the modern version %{REQUEST_URI}
12353             @$REGEXP_LEGACY{qw( unary_op digit digits rebackref regpattern regflags regsep regex funcname varname text cstring true false )} =
12354 22         3806 @$REGEXP{qw( unary_op digit digits rebackref regpattern regflags regsep regex funcname varname text cstring true false )};
12355              
12356             ## stringcomp
12357             ## | integercomp
12358             ## | unaryop word
12359             ## | word binaryop word
12360             ## | word "in" listfunc
12361             ## | word "=~" regex
12362             ## | word "!~" regex
12363             ## | word "in" "{" list "}"
12364             ## Ref:
12365             ##
12366             ##
12367             ## Here we allow regular expression to be writen like: expression = //, ie without the ~
12368 22         56345 $REGEXP_LEGACY->{comp} = qr/
12369             (?
12370             (?:
12371             (?(?&stringcomp))
12372             )
12373             |
12374             (?:
12375             (?(?&integercomp))
12376             )
12377             |
12378             (?
12379             (?:(?<=\W)|(?<=^)|(?<=\A))
12380             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
12381             [[:blank:]\h]+
12382             (?(?&word))
12383             )
12384             |
12385             (?
12386             (?(?&word))
12387             [[:blank:]\h]+
12388             (?[\=\=|\=|\!\=])
12389             [[:blank:]\h]+
12390             (?(?®ex))
12391             )
12392             |
12393             (?
12394             (?(?&word))
12395             [[:blank:]\h]+
12396             (?:
12397             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
12398             |
12399             \-(?ipmatch|strmatch|strcmatch|fnmatch)
12400             )
12401             [[:blank:]\h]+
12402             (?(?&word))
12403             )
12404             |
12405             (?
12406             (? (?&word) )
12407             [[:blank:]\h]+
12408             \-?in
12409             [[:blank:]\h]+
12410             (?(?&listfunc))
12411             )
12412             |
12413             (?
12414             (?(?&word))
12415             [[:blank:]\h]+
12416             (?[\=|\!]\~)
12417             [[:blank:]\h]+
12418             (?$Regexp::Common::Apache2::REGEXP->{regex})
12419             )
12420             |
12421             (?
12422             (?(?&word))
12423             [[:blank:]\h]+
12424             \-?in
12425             [[:blank:]\h]+
12426             \{
12427             [[:blank:]\h]*
12428             (?(?&words))
12429             [[:blank:]\h]*
12430             \}
12431             )
12432             )
12433             (?(DEFINE)
12434             (?
12435             (?:
12436             (? (?&stringcomp) )
12437             )
12438             |
12439             (?:
12440             (? (?&integercomp) )
12441             )
12442             |
12443             (?:
12444             (?:(?<=\W)|(?<=^)|(?<=\A))
12445             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
12446             [[:blank:]\h]+
12447             (? (?&word) )
12448             )
12449             |
12450             (?:
12451             (? (?&word) )
12452             [[:blank:]\h]+
12453             (?:
12454             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
12455             |
12456             \-(?ipmatch|strmatch|strcmatch|fnmatch)
12457             )
12458             [[:blank:]\h]+
12459             (? (?&word) )
12460             )
12461             |
12462             (?:
12463             (? (?&word) )
12464             [[:blank:]\h]+
12465             \-?in
12466             [[:blank:]\h]+
12467             (? (?&listfunc) )
12468             )
12469             |
12470             (?:
12471             (? (?&word) )
12472             [[:blank:]\h]+
12473             (? [\=|\!]\~ )
12474             [[:blank:]\h]+
12475             $Regexp::Common::Apache2::REGEXP->{regex}
12476             )
12477             |
12478             (?
12479             (?=)
12480             (?(?&word))
12481             [[:blank:]\h]+
12482             (?[\=\=|\=|\!\=])
12483             [[:blank:]\h]+
12484             (?(?®ex))
12485             )
12486             |
12487             (?:
12488             (? (?&word) )
12489             [[:blank:]\h]+
12490             \-?in
12491             [[:blank:]\h]+
12492             \{
12493             [[:blank:]\h]*
12494             (? (?&words) )
12495             [[:blank:]\h]*
12496             \}
12497             )
12498             )
12499             (?
12500             (?:
12501             (?[a-zA-Z]\w*)
12502             \(
12503             [[:blank:]\h]*
12504             (?
12505             (?> (?&func_words) )?
12506             )
12507             [[:blank:]\h]*
12508             \)
12509             )
12510             |
12511             (?:
12512             ( # paren group 1 (full function)
12513             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
12514             (? # paren group 2 (parens)
12515             \(
12516             (? # paren group 3 (contents of parens)
12517             (?:
12518             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
12519             |
12520             (?&paren_group) # Recurse to named capture group
12521             )*
12522             )
12523             \)
12524             )
12525             )
12526             )
12527             )
12528             (?
12529             (?:
12530             (?
12531             (?:
12532             (?&word)
12533             [[:blank:]\h]*\,[[:blank:]\h]*
12534             )*
12535             (?&word)
12536             )
12537             (?:
12538             [[:blank:]\h]*\,[[:blank:]\h]*
12539             (? (?&word) )
12540             )?
12541             )
12542             |
12543             (?:
12544             (? (?&word) )
12545             [[:blank:]\h]*\,[[:blank:]\h]*
12546             (? (?-2) )
12547             )
12548             |
12549             (?:
12550             (? (?&word) )
12551             )
12552             )
12553             (?
12554             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::REGEXP_LEGACY->{true}(?=\W|\Z|$))
12555             |
12556             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::REGEXP_LEGACY->{false}(?=\W|\Z|$))
12557             |
12558             (?:
12559             \(
12560             [[:blank:]\h]*
12561             (? (?&cond) )
12562             [[:blank:]\h]*
12563             \)
12564             )
12565             |
12566             (?:
12567             \![[:blank:]\h]*
12568             (? (?-2) )
12569             )
12570             |
12571             (?:
12572             (?(?=(?:.+?)\&\&(?:.+?))
12573             (? (?-2) )
12574             [[:blank:]\h]*
12575             \&\&
12576             [[:blank:]\h]*
12577             (? (?-2) )
12578             )
12579             )
12580             |
12581             (?:
12582             (?(?=(?:.+?)\|\|(?:.+?))
12583             (? (?-2) )
12584             [[:blank:]\h]*
12585             \|\|
12586             [[:blank:]\h]*
12587             (? (?-2) )
12588             )
12589             )
12590             |
12591             (?:
12592             (? (?&comp_recur) )
12593             )
12594             |
12595             (?:
12596             (?(?&variable))
12597             )
12598             )
12599             (?
12600             (?:
12601             (?[a-zA-Z]\w*)
12602             \(
12603             [[:blank:]\h]*
12604             (?
12605             (?> (?&func_words) )?
12606             )
12607             [[:blank:]\h]*
12608             \)
12609             )
12610             |
12611             (?:
12612             ( # paren group 1 (full function)
12613             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
12614             (? # paren group 2 (parens)
12615             \(
12616             (? # paren group 3 (contents of parens)
12617             (?:
12618             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
12619             |
12620             (?&paren_group) # Recurse to named capture group
12621             )*
12622             )
12623             \)
12624             )
12625             )
12626             )
12627             )
12628             (?
12629             (?:
12630             (?
12631             (?:
12632             (?&word)
12633             [[:blank:]\h]*\,[[:blank:]\h]*
12634             )*
12635             (?&word)
12636             )
12637             (?:
12638             [[:blank:]\h]*\,[[:blank:]\h]*
12639             (? (?&word) )
12640             )?
12641             )
12642             |
12643             (?:
12644             (? (?&word) )
12645             [[:blank:]\h]*\,[[:blank:]\h]*
12646             (? (?-2) )
12647             )
12648             |
12649             (?:
12650             (? (?&word) )
12651             )
12652             )
12653             (?
12654             (?:
12655             (?(?&word))
12656             [[:blank:]\h]+
12657             \-?(? (?:eq|ne|lt|le|gt|ge) )
12658             [[:blank:]\h]+
12659             (?(?&word))
12660             )
12661             )
12662             (?
12663             (?:
12664             (?[a-zA-Z]\w*)
12665             \(
12666             [[:blank:]\h]*
12667             (?
12668             (?> (?&func_words) )?
12669             )
12670             [[:blank:]\h]*
12671             \)
12672             )
12673             |
12674             (?:
12675             ( # paren group 1 (full function)
12676             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
12677             (? # paren group 2 (parens)
12678             \(
12679             (? # paren group 3 (contents of parens)
12680             (?:
12681             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
12682             |
12683             (?&paren_group) # Recurse to named capture group
12684             )*
12685             )
12686             \)
12687             )
12688             )
12689             )
12690             )
12691             (?
12692             (?:
12693             (?
12694             (?:
12695             (?&word)
12696             [[:blank:]\h]*\,[[:blank:]\h]*
12697             )*
12698             (?&word)
12699             )
12700             (?:
12701             [[:blank:]\h]*\,[[:blank:]\h]*
12702             (? (?&word) )
12703             )?
12704             )
12705             |
12706             (?:
12707             (? (?&word) )
12708             [[:blank:]\h]*\,[[:blank:]\h]*
12709             (? (?-2) )
12710             )
12711             |
12712             (?:
12713             (? (?&word) )
12714             )
12715             )
12716             (?
12717             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
12718             |
12719             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
12720             )
12721             (?
12722             (?:
12723             (?: (?&substring)[[:blank:]\h]+(?&string) )
12724             )
12725             |
12726             (?:
12727             (?: (?&substring) )
12728             )
12729             )
12730             (?
12731             (?:
12732             (?(?&word))
12733             [[:blank:]\h]+
12734             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
12735             [[:blank:]\h]+
12736             (?(?&word))
12737             )
12738             )
12739             (?
12740             (?:
12741             (?$Regexp::Common::Apache2::REGEXP->{cstring})
12742             )
12743             |
12744             (?:
12745             (? (?&variable) )
12746             )
12747             |
12748             (?:
12749             \$(?\{)?(?${DIGIT})(?()\})
12750             )
12751             )
12752             (?
12753             (?:
12754             \$(?\{)?(?[a-zA-Z\_]\w*)(?()\})
12755             )
12756             |
12757             (?:
12758             \%\{
12759             (?:
12760             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
12761             )
12762             \}
12763             )
12764             |
12765             (?:
12766             \%\{
12767             (?:
12768             (?${VARNAME})
12769             )
12770             \}
12771             )
12772             |
12773             (?:
12774             \bv\(
12775             [[:blank:]\h]*
12776             (?["'])
12777             (?:
12778             (?${VARNAME})
12779             )
12780             [[:blank:]\h]*
12781             \g{var_quote}
12782             \)
12783             )
12784             |
12785             (?:
12786             (?:^|\A|(?
12787             (?
12788             \$(?\{)?
12789             (?${DIGIT})
12790             (?()\})
12791             )
12792             )
12793             )
12794             (?
12795             (?:
12796             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
12797             )
12798             |
12799             (?:
12800             (?['"])
12801             (?:
12802             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
12803             )
12804             \g{word_quote}
12805             )
12806             |
12807             (?:
12808             (?['"])
12809             (?:
12810             (? (?&string) )
12811             )
12812             \g{word_quote}
12813             )
12814             |
12815             (?:
12816             (? (?: (?-2)\. )+ (?-2) )
12817             )
12818             |
12819             (?:
12820             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
12821             )
12822             |
12823             (?:
12824             (?(?&variable))
12825             )
12826             |
12827             (?:
12828             (? (?&function) )
12829             )
12830             |
12831             (?:
12832             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
12833             )
12834             )
12835             (?
12836             (?:
12837             (? (?&word) )
12838             [[:blank:]\h]*\,[[:blank:]\h]*
12839             (? (?-2) )
12840             )
12841             |
12842             (?:
12843             (? (?&word) )
12844             )
12845             )
12846             )
12847             /x;
12848              
12849             ## "true"
12850             ## | "false"
12851             ## | "!" cond
12852             ## | cond "&&" cond
12853             ## | cond "||" cond
12854             ## | "(" cond ")"
12855             ## | comp
12856 22         77758 $REGEXP_LEGACY->{cond} = qr/
12857             (?
12858             (?:
12859             (?(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::REGEXP_LEGACY->{true}(?=\W|\Z|$))
12860             )
12861             |
12862             (?:
12863             (?(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::REGEXP_LEGACY->{false}(?=\W|\Z|$))
12864             )
12865             |
12866             (?:
12867             (?:\([[:blank:]\h]*(?(?&cond_recur))[[:blank:]\h]*\))
12868             )
12869             |
12870             (?:
12871             (?\![[:blank:]\h]*(?(?&cond_recur)))
12872             )
12873             |
12874             (?:
12875             (?(?=(?:.+?)\&\&(?:.+?))
12876             (?(?(?&cond_recur))[[:blank:]\h]*\&\&[[:blank:]\h]*(?(?&cond_recur)))
12877             )
12878             )
12879             |
12880             (?:
12881             (?(?=(?:.+?)\|\|(?:.+?))
12882             (?(?(?&cond_recur))[[:blank:]\h]*\|\|[[:blank:]\h]*(?(?&cond_recur)))
12883             )
12884             )
12885             |
12886             (?:
12887             (?(?&comp))
12888             )
12889             |
12890             (?:
12891             (?(?&variable))
12892             )
12893             )
12894             (?(DEFINE)
12895             (?
12896             (?:
12897             (? (?&stringcomp) )
12898             )
12899             |
12900             (?:
12901             (? (?&integercomp) )
12902             )
12903             |
12904             (?:
12905             (?:(?<=\W)|(?<=^)|(?<=\A))
12906             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
12907             [[:blank:]\h]+
12908             (? (?&word) )
12909             )
12910             |
12911             (?:
12912             (? (?&word) )
12913             [[:blank:]\h]+
12914             (?:
12915             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
12916             |
12917             \-(?ipmatch|strmatch|strcmatch|fnmatch)
12918             )
12919             [[:blank:]\h]+
12920             (? (?&word) )
12921             )
12922             |
12923             (?:
12924             (? (?&word) )
12925             [[:blank:]\h]+
12926             \-?in
12927             [[:blank:]\h]+
12928             (? (?&listfunc) )
12929             )
12930             |
12931             (?:
12932             (? (?&word) )
12933             [[:blank:]\h]+
12934             (? [\=|\!]\~ )
12935             [[:blank:]\h]+
12936             $Regexp::Common::Apache2::REGEXP->{regex}
12937             )
12938             |
12939             (?
12940             (?=)
12941             (?(?&word))
12942             [[:blank:]\h]+
12943             (?[\=\=|\=|\!\=])
12944             [[:blank:]\h]+
12945             (?(?®ex))
12946             )
12947             |
12948             (?:
12949             (? (?&word) )
12950             [[:blank:]\h]+
12951             \-?in
12952             [[:blank:]\h]+
12953             \{
12954             [[:blank:]\h]*
12955             (? (?&words) )
12956             [[:blank:]\h]*
12957             \}
12958             )
12959             )
12960             (?
12961             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::REGEXP_LEGACY->{true}(?=\W|\Z|$))
12962             |
12963             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::REGEXP_LEGACY->{false}(?=\W|\Z|$))
12964             |
12965             (?:
12966             \(
12967             [[:blank:]\h]*
12968             (? (?&cond_recur) )
12969             [[:blank:]\h]*
12970             \)
12971             )
12972             |
12973             (?:
12974             \![[:blank:]\h]*
12975             (? (?-2) )
12976             )
12977             |
12978             (?:
12979             (?(?=(?:.+?)\&\&(?:.+?))
12980             (? (?-2) )
12981             [[:blank:]\h]*
12982             \&\&
12983             [[:blank:]\h]*
12984             (? (?-2) )
12985             )
12986             )
12987             |
12988             (?:
12989             (?(?=(?:.+?)\|\|(?:.+?))
12990             (? (?-2) )
12991             [[:blank:]\h]*
12992             \|\|
12993             [[:blank:]\h]*
12994             (? (?-2) )
12995             )
12996             )
12997             |
12998             (?:
12999             (? (?&comp) )
13000             )
13001             |
13002             (?:
13003             (?(?&variable))
13004             )
13005             )
13006             (?
13007             (?:
13008             (?[a-zA-Z]\w*)
13009             \(
13010             [[:blank:]\h]*
13011             (?
13012             (?> (?&func_words) )?
13013             )
13014             [[:blank:]\h]*
13015             \)
13016             )
13017             |
13018             (?:
13019             ( # paren group 1 (full function)
13020             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
13021             (? # paren group 2 (parens)
13022             \(
13023             (? # paren group 3 (contents of parens)
13024             (?:
13025             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
13026             |
13027             (?&paren_group) # Recurse to named capture group
13028             )*
13029             )
13030             \)
13031             )
13032             )
13033             )
13034             )
13035             (?
13036             (?:
13037             (?
13038             (?:
13039             (?&word)
13040             [[:blank:]\h]*\,[[:blank:]\h]*
13041             )*
13042             (?&word)
13043             )
13044             (?:
13045             [[:blank:]\h]*\,[[:blank:]\h]*
13046             (? (?&word) )
13047             )?
13048             )
13049             |
13050             (?:
13051             (? (?&word) )
13052             [[:blank:]\h]*\,[[:blank:]\h]*
13053             (? (?-2) )
13054             )
13055             |
13056             (?:
13057             (? (?&word) )
13058             )
13059             )
13060             (?
13061             (?:
13062             (?(?&word))
13063             [[:blank:]\h]+
13064             \-?(? (?:eq|ne|lt|le|gt|ge) )
13065             [[:blank:]\h]+
13066             (?(?&word))
13067             )
13068             )
13069             (?
13070             (?:
13071             (?[a-zA-Z]\w*)
13072             \(
13073             [[:blank:]\h]*
13074             (?
13075             (?> (?&func_words) )?
13076             )
13077             [[:blank:]\h]*
13078             \)
13079             )
13080             |
13081             (?:
13082             ( # paren group 1 (full function)
13083             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
13084             (? # paren group 2 (parens)
13085             \(
13086             (? # paren group 3 (contents of parens)
13087             (?:
13088             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
13089             |
13090             (?&paren_group) # Recurse to named capture group
13091             )*
13092             )
13093             \)
13094             )
13095             )
13096             )
13097             )
13098             (?
13099             (?:
13100             (?
13101             (?:
13102             (?&word)
13103             [[:blank:]\h]*\,[[:blank:]\h]*
13104             )*
13105             (?&word)
13106             )
13107             (?:
13108             [[:blank:]\h]*\,[[:blank:]\h]*
13109             (? (?&word) )
13110             )?
13111             )
13112             |
13113             (?:
13114             (? (?&word) )
13115             [[:blank:]\h]*\,[[:blank:]\h]*
13116             (? (?-2) )
13117             )
13118             |
13119             (?:
13120             (? (?&word) )
13121             )
13122             )
13123             (?
13124             (?:
13125             (?: (?&substring)[[:blank:]\h]+(?&string) )
13126             )
13127             |
13128             (?:
13129             (?: (?&substring) )
13130             )
13131             )
13132             (?
13133             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
13134             |
13135             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
13136             )
13137             (?
13138             (?:
13139             (?(?&word))
13140             [[:blank:]\h]+
13141             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
13142             [[:blank:]\h]+
13143             (?(?&word))
13144             )
13145             )
13146             (?
13147             (?:
13148             (?$Regexp::Common::Apache2::REGEXP->{cstring})
13149             )
13150             |
13151             (?:
13152             (? (?&variable) )
13153             )
13154             |
13155             (?:
13156             \$(?\{)?(?${DIGIT})(?()\})
13157             )
13158             )
13159             (?
13160             (?:
13161             \$(?\{)?(?[a-zA-Z\_]\w*)(?()\})
13162             )
13163             |
13164             (?:
13165             \%\{
13166             (?:
13167             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
13168             )
13169             \}
13170             )
13171             |
13172             (?:
13173             \%\{
13174             (?:
13175             (?${VARNAME})
13176             )
13177             \}
13178             )
13179             |
13180             (?:
13181             \bv\(
13182             [[:blank:]\h]*
13183             (?["'])
13184             (?:
13185             (?${VARNAME})
13186             )
13187             [[:blank:]\h]*
13188             \g{var_quote}
13189             \)
13190             )
13191             |
13192             (?:
13193             (?:^|\A|(?
13194             (?
13195             \$(?\{)?
13196             (?${DIGIT})
13197             (?()\})
13198             )
13199             )
13200             )
13201             (?
13202             (?:
13203             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
13204             )
13205             |
13206             (?:
13207             (?['"])
13208             (?:
13209             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
13210             )
13211             \g{word_quote}
13212             )
13213             |
13214             (?:
13215             (?['"])
13216             (?:
13217             (? (?&string) )
13218             )
13219             \g{word_quote}
13220             )
13221             |
13222             (?:
13223             (? (?: (?-2)\. )+ (?-2) )
13224             )
13225             |
13226             (?:
13227             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
13228             )
13229             |
13230             (?:
13231             (?(?&variable))
13232             )
13233             |
13234             (?:
13235             (? (?&function) )
13236             )
13237             |
13238             (?:
13239             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
13240             )
13241             )
13242             (?
13243             (?:
13244             (? (?&word) )
13245             [[:blank:]\h]*\,[[:blank:]\h]*
13246             (? (?-2) )
13247             )
13248             |
13249             (?:
13250             (? (?&word) )
13251             )
13252             )
13253             )
13254             /xi;
13255              
13256             ## cond
13257             ## | string
13258 22         52771 $REGEXP_LEGACY->{expr} = qr/
13259             (?
13260             (?:
13261             (?(?&cond))
13262             )
13263             |
13264             (?:
13265             (?(?&string))
13266             )
13267             )
13268             (?(DEFINE)
13269             (?
13270             (?:
13271             (? (?&stringcomp) )
13272             )
13273             |
13274             (?:
13275             (? (?&integercomp) )
13276             )
13277             |
13278             (?:
13279             (?:(?<=\W)|(?<=^)|(?<=\A))
13280             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
13281             [[:blank:]\h]+
13282             (? (?&word) )
13283             )
13284             |
13285             (?:
13286             (? (?&word) )
13287             [[:blank:]\h]+
13288             (?:
13289             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
13290             |
13291             \-(?ipmatch|strmatch|strcmatch|fnmatch)
13292             )
13293             [[:blank:]\h]+
13294             (? (?&word) )
13295             )
13296             |
13297             (?:
13298             (? (?&word) )
13299             [[:blank:]\h]+
13300             \-?in
13301             [[:blank:]\h]+
13302             (? (?&listfunc) )
13303             )
13304             |
13305             (?:
13306             (? (?&word) )
13307             [[:blank:]\h]+
13308             (? [\=|\!]\~ )
13309             [[:blank:]\h]+
13310             $Regexp::Common::Apache2::REGEXP->{regex}
13311             )
13312             |
13313             (?
13314             (?=)
13315             (?(?&word))
13316             [[:blank:]\h]+
13317             (?[\=\=|\=|\!\=])
13318             [[:blank:]\h]+
13319             (?(?®ex))
13320             )
13321             |
13322             (?:
13323             (? (?&word) )
13324             [[:blank:]\h]+
13325             \-?in
13326             [[:blank:]\h]+
13327             \{
13328             [[:blank:]\h]*
13329             (? (?&words) )
13330             [[:blank:]\h]*
13331             \}
13332             )
13333             )
13334             (?
13335             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::REGEXP_LEGACY->{true}(?=\W|\Z|$))
13336             |
13337             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::REGEXP_LEGACY->{false}(?=\W|\Z|$))
13338             |
13339             (?:
13340             \(
13341             [[:blank:]\h]*
13342             (? (?&cond) )
13343             [[:blank:]\h]*
13344             \)
13345             )
13346             |
13347             (?:
13348             \![[:blank:]\h]*
13349             (? (?-2) )
13350             )
13351             |
13352             (?:
13353             (?(?=(?:.+?)\&\&(?:.+?))
13354             (? (?-2) )
13355             [[:blank:]\h]*
13356             \&\&
13357             [[:blank:]\h]*
13358             (? (?-2) )
13359             )
13360             )
13361             |
13362             (?:
13363             (?(?=(?:.+?)\|\|(?:.+?))
13364             (? (?-2) )
13365             [[:blank:]\h]*
13366             \|\|
13367             [[:blank:]\h]*
13368             (? (?-2) )
13369             )
13370             )
13371             |
13372             (?:
13373             (? (?&comp) )
13374             )
13375             |
13376             (?:
13377             (?(?&variable))
13378             )
13379             )
13380             (?
13381             (?:
13382             (?[a-zA-Z]\w*)
13383             \(
13384             [[:blank:]\h]*
13385             (?
13386             (?> (?&func_words) )?
13387             )
13388             [[:blank:]\h]*
13389             \)
13390             )
13391             |
13392             (?:
13393             ( # paren group 1 (full function)
13394             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
13395             (? # paren group 2 (parens)
13396             \(
13397             (? # paren group 3 (contents of parens)
13398             (?:
13399             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
13400             |
13401             (?&paren_group) # Recurse to named capture group
13402             )*
13403             )
13404             \)
13405             )
13406             )
13407             )
13408             )
13409             (?
13410             (?:
13411             (?
13412             (?:
13413             (?&word)
13414             [[:blank:]\h]*\,[[:blank:]\h]*
13415             )*
13416             (?&word)
13417             )
13418             (?:
13419             [[:blank:]\h]*\,[[:blank:]\h]*
13420             (? (?&word) )
13421             )?
13422             )
13423             |
13424             (?:
13425             (? (?&word) )
13426             [[:blank:]\h]*\,[[:blank:]\h]*
13427             (? (?-2) )
13428             )
13429             |
13430             (?:
13431             (? (?&word) )
13432             )
13433             )
13434             (?
13435             (?:
13436             (?(?&word))
13437             [[:blank:]\h]+
13438             \-?(? (?:eq|ne|lt|le|gt|ge) )
13439             [[:blank:]\h]+
13440             (?(?&word))
13441             )
13442             )
13443             (?
13444             (?:
13445             (?[a-zA-Z]\w*)
13446             \(
13447             [[:blank:]\h]*
13448             (?
13449             (?> (?&func_words) )?
13450             )
13451             [[:blank:]\h]*
13452             \)
13453             )
13454             |
13455             (?:
13456             ( # paren group 1 (full function)
13457             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
13458             (? # paren group 2 (parens)
13459             \(
13460             (? # paren group 3 (contents of parens)
13461             (?:
13462             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
13463             |
13464             (?&paren_group) # Recurse to named capture group
13465             )*
13466             )
13467             \)
13468             )
13469             )
13470             )
13471             )
13472             (?
13473             (?:
13474             (?
13475             (?:
13476             (?&word)
13477             [[:blank:]\h]*\,[[:blank:]\h]*
13478             )*
13479             (?&word)
13480             )
13481             (?:
13482             [[:blank:]\h]*\,[[:blank:]\h]*
13483             (? (?&word) )
13484             )?
13485             )
13486             |
13487             (?:
13488             (? (?&word) )
13489             [[:blank:]\h]*\,[[:blank:]\h]*
13490             (? (?-2) )
13491             )
13492             |
13493             (?:
13494             (? (?&word) )
13495             )
13496             )
13497             (?
13498             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
13499             |
13500             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
13501             )
13502             (?
13503             (?:
13504             (?: (?&substring)[[:blank:]\h]+(?&string) )
13505             )
13506             |
13507             (?:
13508             (?: (?&substring) )
13509             )
13510             )
13511             (?
13512             (?:
13513             (?(?&word))
13514             [[:blank:]\h]+
13515             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
13516             [[:blank:]\h]+
13517             (?(?&word))
13518             )
13519             )
13520             (?
13521             (?:
13522             (?$Regexp::Common::Apache2::REGEXP->{cstring})
13523             )
13524             |
13525             (?:
13526             (? (?&variable) )
13527             )
13528             |
13529             (?:
13530             \$(?\{)?(?${DIGIT})(?()\})
13531             )
13532             )
13533             (?
13534             (?:
13535             \$(?\{)?(?[a-zA-Z\_]\w*)(?()\})
13536             )
13537             |
13538             (?:
13539             \%\{
13540             (?:
13541             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
13542             )
13543             \}
13544             )
13545             |
13546             (?:
13547             \%\{
13548             (?:
13549             (?${VARNAME})
13550             )
13551             \}
13552             )
13553             |
13554             (?:
13555             \bv\(
13556             [[:blank:]\h]*
13557             (?["'])
13558             (?:
13559             (?${VARNAME})
13560             )
13561             [[:blank:]\h]*
13562             \g{var_quote}
13563             \)
13564             )
13565             |
13566             (?:
13567             (?:^|\A|(?
13568             (?
13569             \$(?\{)?
13570             (?${DIGIT})
13571             (?()\})
13572             )
13573             )
13574             )
13575             (?
13576             (?:
13577             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
13578             )
13579             |
13580             (?:
13581             (?['"])
13582             (?:
13583             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
13584             )
13585             \g{word_quote}
13586             )
13587             |
13588             (?:
13589             (?['"])
13590             (?:
13591             (? (?&string) )
13592             )
13593             \g{word_quote}
13594             )
13595             |
13596             (?:
13597             (? (?: (?-2)\. )+ (?-2) )
13598             )
13599             |
13600             (?:
13601             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
13602             )
13603             |
13604             (?:
13605             (?(?&variable))
13606             )
13607             |
13608             (?:
13609             (? (?&function) )
13610             )
13611             |
13612             (?:
13613             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
13614             )
13615             )
13616             (?
13617             (?:
13618             (? (?&word) )
13619             [[:blank:]\h]*\,[[:blank:]\h]*
13620             (? (?-2) )
13621             )
13622             |
13623             (?:
13624             (? (?&word) )
13625             )
13626             )
13627             )
13628             /x;
13629              
13630             ## funcname "(" words ")"
13631             ## -> Same as LISTFUNC
13632 22         26577 $REGEXP_LEGACY->{function} = qr/
13633             (?
13634             (?:
13635             (?[a-zA-Z]\w*)
13636             \(
13637             [[:blank:]\h]*
13638             (?
13639             (?> (?&func_words) )?
13640             )
13641             [[:blank:]\h]*
13642             \)
13643             )
13644             |
13645             (?:
13646             ( # paren group 1 (full function)
13647             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
13648             (? # paren group 2 (parens)
13649             \(
13650             (? # paren group 3 (contents of parens)
13651             (?:
13652             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
13653             |
13654             (?&paren_group) # Recurse to named capture group
13655             )*
13656             )
13657             \)
13658             )
13659             )
13660             )
13661             )
13662             (?(DEFINE)
13663             (?
13664             (?:
13665             (? (?&stringcomp) )
13666             )
13667             |
13668             (?:
13669             (? (?&integercomp) )
13670             )
13671             |
13672             (?:
13673             (?:(?<=\W)|(?<=^)|(?<=\A))
13674             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
13675             [[:blank:]\h]+
13676             (? (?&word) )
13677             )
13678             |
13679             (?:
13680             (? (?&word) )
13681             [[:blank:]\h]+
13682             (?:
13683             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
13684             |
13685             \-(?ipmatch|strmatch|strcmatch|fnmatch)
13686             )
13687             [[:blank:]\h]+
13688             (? (?&word) )
13689             )
13690             |
13691             (?:
13692             (? (?&word) )
13693             [[:blank:]\h]+
13694             \-?in
13695             [[:blank:]\h]+
13696             (? (?&listfunc) )
13697             )
13698             |
13699             (?:
13700             (? (?&word) )
13701             [[:blank:]\h]+
13702             (? [\=|\!]\~ )
13703             [[:blank:]\h]+
13704             $Regexp::Common::Apache2::REGEXP->{regex}
13705             )
13706             |
13707             (?
13708             (?=)
13709             (?(?&word))
13710             [[:blank:]\h]+
13711             (?[\=\=|\=|\!\=])
13712             [[:blank:]\h]+
13713             (?(?®ex))
13714             )
13715             |
13716             (?:
13717             (? (?&word) )
13718             [[:blank:]\h]+
13719             \-?in
13720             [[:blank:]\h]+
13721             \{
13722             [[:blank:]\h]*
13723             (? (?&words) )
13724             [[:blank:]\h]*
13725             \}
13726             )
13727             )
13728             (?
13729             (?:
13730             (?[a-zA-Z]\w*)
13731             \(
13732             [[:blank:]\h]*
13733             (?
13734             (?> (?&func_words) )?
13735             )
13736             [[:blank:]\h]*
13737             \)
13738             )
13739             |
13740             (?:
13741             ( # paren group 1 (full function)
13742             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
13743             (? # paren group 2 (parens)
13744             \(
13745             (? # paren group 3 (contents of parens)
13746             (?:
13747             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
13748             |
13749             (?&paren_group) # Recurse to named capture group
13750             )*
13751             )
13752             \)
13753             )
13754             )
13755             )
13756             )
13757             (?
13758             (?:
13759             (?
13760             (?:
13761             (?&word)
13762             [[:blank:]\h]*\,[[:blank:]\h]*
13763             )*
13764             (?&word)
13765             )
13766             (?:
13767             [[:blank:]\h]*\,[[:blank:]\h]*
13768             (? (?&word) )
13769             )?
13770             )
13771             |
13772             (?:
13773             (? (?&word) )
13774             [[:blank:]\h]*\,[[:blank:]\h]*
13775             (? (?-2) )
13776             )
13777             |
13778             (?:
13779             (? (?&word) )
13780             )
13781             )
13782             (?
13783             (?:
13784             (?(?&word))
13785             [[:blank:]\h]+
13786             \-?(? (?:eq|ne|lt|le|gt|ge) )
13787             [[:blank:]\h]+
13788             (?(?&word))
13789             )
13790             )
13791             (?
13792             (?:
13793             (?[a-zA-Z]\w*)
13794             \(
13795             [[:blank:]\h]*
13796             (?
13797             (?> (?&func_words) )?
13798             )
13799             [[:blank:]\h]*
13800             \)
13801             )
13802             |
13803             (?:
13804             ( # paren group 1 (full function)
13805             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
13806             (? # paren group 2 (parens)
13807             \(
13808             (? # paren group 3 (contents of parens)
13809             (?:
13810             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
13811             |
13812             (?&paren_group) # Recurse to named capture group
13813             )*
13814             )
13815             \)
13816             )
13817             )
13818             )
13819             )
13820             (?
13821             (?:
13822             (?
13823             (?:
13824             (?&word)
13825             [[:blank:]\h]*\,[[:blank:]\h]*
13826             )*
13827             (?&word)
13828             )
13829             (?:
13830             [[:blank:]\h]*\,[[:blank:]\h]*
13831             (? (?&word) )
13832             )?
13833             )
13834             |
13835             (?:
13836             (? (?&word) )
13837             [[:blank:]\h]*\,[[:blank:]\h]*
13838             (? (?-2) )
13839             )
13840             |
13841             (?:
13842             (? (?&word) )
13843             )
13844             )
13845             (?
13846             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
13847             |
13848             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
13849             )
13850             (?
13851             (?:
13852             (?: (?&substring)[[:blank:]\h]+(?&string) )
13853             )
13854             |
13855             (?:
13856             (?: (?&substring) )
13857             )
13858             )
13859             (?
13860             (?:
13861             (?(?&word))
13862             [[:blank:]\h]+
13863             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
13864             [[:blank:]\h]+
13865             (?(?&word))
13866             )
13867             )
13868             (?
13869             (?:
13870             (?$Regexp::Common::Apache2::REGEXP->{cstring})
13871             )
13872             |
13873             (?:
13874             (? (?&variable) )
13875             )
13876             |
13877             (?:
13878             \$(?\{)?(?${DIGIT})(?()\})
13879             )
13880             )
13881             (?
13882             (?:
13883             \$(?\{)?(?[a-zA-Z\_]\w*)(?()\})
13884             )
13885             |
13886             (?:
13887             \%\{
13888             (?:
13889             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
13890             )
13891             \}
13892             )
13893             |
13894             (?:
13895             \%\{
13896             (?:
13897             (?${VARNAME})
13898             )
13899             \}
13900             )
13901             |
13902             (?:
13903             \bv\(
13904             [[:blank:]\h]*
13905             (?["'])
13906             (?:
13907             (?${VARNAME})
13908             )
13909             [[:blank:]\h]*
13910             \g{var_quote}
13911             \)
13912             )
13913             |
13914             (?:
13915             (?:^|\A|(?
13916             (?
13917             \$(?\{)?
13918             (?${DIGIT})
13919             (?()\})
13920             )
13921             )
13922             )
13923             (?
13924             (?:
13925             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
13926             )
13927             |
13928             (?:
13929             (?['"])
13930             (?:
13931             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
13932             )
13933             \g{word_quote}
13934             )
13935             |
13936             (?:
13937             (?['"])
13938             (?:
13939             (? (?&string) )
13940             )
13941             \g{word_quote}
13942             )
13943             |
13944             (?:
13945             (? (?: (?-2)\. )+ (?-2) )
13946             )
13947             |
13948             (?:
13949             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
13950             )
13951             |
13952             (?:
13953             (?(?&variable))
13954             )
13955             |
13956             (?:
13957             (? (?&function_recur) )
13958             )
13959             |
13960             (?:
13961             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
13962             )
13963             )
13964             (?
13965             (?:
13966             (? (?&word) )
13967             [[:blank:]\h]*\,[[:blank:]\h]*
13968             (? (?-2) )
13969             )
13970             |
13971             (?:
13972             (? (?&word) )
13973             )
13974             )
13975             )
13976             /x;
13977              
13978             ## word "-eq" word | word "eq" word
13979             ## | word "-ne" word | word "ne" word
13980             ## | word "-lt" word | word "lt" word
13981             ## | word "-le" word | word "le" word
13982             ## | word "-gt" word | word "gt" word
13983             ## | word "-ge" word | word "ge" word
13984 22         26534 $REGEXP_LEGACY->{integercomp} = qr/
13985             (?
13986             (?(?&word))
13987             [[:blank:]\h]+
13988             \-?(?eq|ne|lt|le|gt|ge)
13989             [[:blank:]\h]+
13990             (?(?&word))
13991             )
13992             (?(DEFINE)
13993             (?
13994             (?:
13995             (? (?&stringcomp) )
13996             )
13997             |
13998             (?:
13999             (? (?&integercomp_recur) )
14000             )
14001             |
14002             (?:
14003             (?:(?<=\W)|(?<=^)|(?<=\A))
14004             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
14005             [[:blank:]\h]+
14006             (? (?&word) )
14007             )
14008             |
14009             (?:
14010             (? (?&word) )
14011             [[:blank:]\h]+
14012             (?:
14013             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
14014             |
14015             \-(?ipmatch|strmatch|strcmatch|fnmatch)
14016             )
14017             [[:blank:]\h]+
14018             (? (?&word) )
14019             )
14020             |
14021             (?:
14022             (? (?&word) )
14023             [[:blank:]\h]+
14024             \-?in
14025             [[:blank:]\h]+
14026             (? (?&listfunc) )
14027             )
14028             |
14029             (?:
14030             (? (?&word) )
14031             [[:blank:]\h]+
14032             (? [\=|\!]\~ )
14033             [[:blank:]\h]+
14034             $Regexp::Common::Apache2::REGEXP->{regex}
14035             )
14036             |
14037             (?
14038             (?=)
14039             (?(?&word))
14040             [[:blank:]\h]+
14041             (?[\=\=|\=|\!\=])
14042             [[:blank:]\h]+
14043             (?(?®ex))
14044             )
14045             |
14046             (?:
14047             (? (?&word) )
14048             [[:blank:]\h]+
14049             \-?in
14050             [[:blank:]\h]+
14051             \{
14052             [[:blank:]\h]*
14053             (? (?&words) )
14054             [[:blank:]\h]*
14055             \}
14056             )
14057             )
14058             (?
14059             (?:
14060             (?[a-zA-Z]\w*)
14061             \(
14062             [[:blank:]\h]*
14063             (?
14064             (?> (?&func_words) )?
14065             )
14066             [[:blank:]\h]*
14067             \)
14068             )
14069             |
14070             (?:
14071             ( # paren group 1 (full function)
14072             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
14073             (? # paren group 2 (parens)
14074             \(
14075             (? # paren group 3 (contents of parens)
14076             (?:
14077             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
14078             |
14079             (?&paren_group) # Recurse to named capture group
14080             )*
14081             )
14082             \)
14083             )
14084             )
14085             )
14086             )
14087             (?
14088             (?:
14089             (?
14090             (?:
14091             (?&word)
14092             [[:blank:]\h]*\,[[:blank:]\h]*
14093             )*
14094             (?&word)
14095             )
14096             (?:
14097             [[:blank:]\h]*\,[[:blank:]\h]*
14098             (? (?&word) )
14099             )?
14100             )
14101             |
14102             (?:
14103             (? (?&word) )
14104             [[:blank:]\h]*\,[[:blank:]\h]*
14105             (? (?-2) )
14106             )
14107             |
14108             (?:
14109             (? (?&word) )
14110             )
14111             )
14112             (?
14113             (?:
14114             (?(?&word))
14115             [[:blank:]\h]+
14116             \-?(? (?:eq|ne|lt|le|gt|ge) )
14117             [[:blank:]\h]+
14118             (?(?&word))
14119             )
14120             )
14121             (?
14122             (?:
14123             (?[a-zA-Z]\w*)
14124             \(
14125             [[:blank:]\h]*
14126             (?
14127             (?> (?&func_words) )?
14128             )
14129             [[:blank:]\h]*
14130             \)
14131             )
14132             |
14133             (?:
14134             ( # paren group 1 (full function)
14135             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
14136             (? # paren group 2 (parens)
14137             \(
14138             (? # paren group 3 (contents of parens)
14139             (?:
14140             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
14141             |
14142             (?&paren_group) # Recurse to named capture group
14143             )*
14144             )
14145             \)
14146             )
14147             )
14148             )
14149             )
14150             (?
14151             (?:
14152             (?
14153             (?:
14154             (?&word)
14155             [[:blank:]\h]*\,[[:blank:]\h]*
14156             )*
14157             (?&word)
14158             )
14159             (?:
14160             [[:blank:]\h]*\,[[:blank:]\h]*
14161             (? (?&word) )
14162             )?
14163             )
14164             |
14165             (?:
14166             (? (?&word) )
14167             [[:blank:]\h]*\,[[:blank:]\h]*
14168             (? (?-2) )
14169             )
14170             |
14171             (?:
14172             (? (?&word) )
14173             )
14174             )
14175             (?
14176             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
14177             |
14178             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
14179             )
14180             (?
14181             (?:
14182             (?: (?&substring)[[:blank:]\h]+(?&string) )
14183             )
14184             |
14185             (?:
14186             (?: (?&substring) )
14187             )
14188             )
14189             (?
14190             (?:
14191             (?(?&word))
14192             [[:blank:]\h]+
14193             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
14194             [[:blank:]\h]+
14195             (?(?&word))
14196             )
14197             )
14198             (?
14199             (?:
14200             (?$Regexp::Common::Apache2::REGEXP->{cstring})
14201             )
14202             |
14203             (?:
14204             (? (?&variable) )
14205             )
14206             |
14207             (?:
14208             \$(?\{)?(?${DIGIT})(?()\})
14209             )
14210             )
14211             (?
14212             (?:
14213             \$(?\{)?(?[a-zA-Z\_]\w*)(?()\})
14214             )
14215             |
14216             (?:
14217             \%\{
14218             (?:
14219             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
14220             )
14221             \}
14222             )
14223             |
14224             (?:
14225             \%\{
14226             (?:
14227             (?${VARNAME})
14228             )
14229             \}
14230             )
14231             |
14232             (?:
14233             \bv\(
14234             [[:blank:]\h]*
14235             (?["'])
14236             (?:
14237             (?${VARNAME})
14238             )
14239             [[:blank:]\h]*
14240             \g{var_quote}
14241             \)
14242             )
14243             |
14244             (?:
14245             (?:^|\A|(?
14246             (?
14247             \$(?\{)?
14248             (?${DIGIT})
14249             (?()\})
14250             )
14251             )
14252             )
14253             (?
14254             (?:
14255             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
14256             )
14257             |
14258             (?:
14259             (?['"])
14260             (?:
14261             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
14262             )
14263             \g{word_quote}
14264             )
14265             |
14266             (?:
14267             (?['"])
14268             (?:
14269             (? (?&string) )
14270             )
14271             \g{word_quote}
14272             )
14273             |
14274             (?:
14275             (? (?: (?-2)\. )+ (?-2) )
14276             )
14277             |
14278             (?:
14279             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
14280             )
14281             |
14282             (?:
14283             (?(?&variable))
14284             )
14285             |
14286             (?:
14287             (? (?&function) )
14288             )
14289             |
14290             (?:
14291             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
14292             )
14293             )
14294             (?
14295             (?:
14296             (? (?&word) )
14297             [[:blank:]\h]*\,[[:blank:]\h]*
14298             (? (?-2) )
14299             )
14300             |
14301             (?:
14302             (? (?&word) )
14303             )
14304             )
14305             )
14306             /x;
14307            
14308             ## listfuncname "(" words ")"
14309             ## Use recursion at execution phase for words because it contains dependencies -> list -> listfunc
14310             #(??{$Regexp::Common::Apache2::REGEXP_LEGACY->{words}})
14311 22         39562 $REGEXP_LEGACY->{listfunc} = qr/
14312             (?
14313             (?:
14314             (?[a-zA-Z]\w*)
14315             \(
14316             [[:blank:]\h]*
14317             (?
14318             (?> (?&func_words) )?
14319             )
14320             [[:blank:]\h]*
14321             \)
14322             )
14323             |
14324             (?:
14325             ( # paren group 1 (full function)
14326             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
14327             (? # paren group 2 (parens)
14328             \(
14329             (? # paren group 3 (contents of parens)
14330             (?:
14331             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
14332             |
14333             (?&paren_group) # Recurse to named capture group
14334             )*
14335             )
14336             \)
14337             )
14338             )
14339             )
14340             )
14341             (?(DEFINE)
14342             (?
14343             (?:
14344             (? (?&stringcomp) )
14345             )
14346             |
14347             (?:
14348             (? (?&integercomp) )
14349             )
14350             |
14351             (?:
14352             (?:(?<=\W)|(?<=^)|(?<=\A))
14353             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
14354             [[:blank:]\h]+
14355             (? (?&word) )
14356             )
14357             |
14358             (?:
14359             (? (?&word) )
14360             [[:blank:]\h]+
14361             (?:
14362             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
14363             |
14364             \-(?ipmatch|strmatch|strcmatch|fnmatch)
14365             )
14366             [[:blank:]\h]+
14367             (? (?&word) )
14368             )
14369             |
14370             (?:
14371             (? (?&word) )
14372             [[:blank:]\h]+
14373             \-?in
14374             [[:blank:]\h]+
14375             (? (?&listfunc_recur) )
14376             )
14377             |
14378             (?:
14379             (? (?&word) )
14380             [[:blank:]\h]+
14381             (? [\=|\!]\~ )
14382             [[:blank:]\h]+
14383             $Regexp::Common::Apache2::REGEXP->{regex}
14384             )
14385             |
14386             (?
14387             (?=)
14388             (?(?&word))
14389             [[:blank:]\h]+
14390             (?[\=\=|\=|\!\=])
14391             [[:blank:]\h]+
14392             (?(?®ex))
14393             )
14394             |
14395             (?:
14396             (? (?&word) )
14397             [[:blank:]\h]+
14398             \-?in
14399             [[:blank:]\h]+
14400             \{
14401             [[:blank:]\h]*
14402             (? (?&words) )
14403             [[:blank:]\h]*
14404             \}
14405             )
14406             )
14407             (?
14408             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::REGEXP_LEGACY->{true}(?=\W|\Z|$))
14409             |
14410             (?:(?:(?<=\W)|(?<=\A)|(?<=^))$Regexp::Common::Apache2::REGEXP_LEGACY->{false}(?=\W|\Z|$))
14411             |
14412             (?:
14413             \(
14414             [[:blank:]\h]*
14415             (? (?&cond) )
14416             [[:blank:]\h]*
14417             \)
14418             )
14419             |
14420             (?:
14421             \![[:blank:]\h]*
14422             (? (?-2) )
14423             )
14424             |
14425             (?:
14426             (?(?=(?:.+?)\&\&(?:.+?))
14427             (? (?-2) )
14428             [[:blank:]\h]*
14429             \&\&
14430             [[:blank:]\h]*
14431             (? (?-2) )
14432             )
14433             )
14434             |
14435             (?:
14436             (?(?=(?:.+?)\|\|(?:.+?))
14437             (? (?-2) )
14438             [[:blank:]\h]*
14439             \|\|
14440             [[:blank:]\h]*
14441             (? (?-2) )
14442             )
14443             )
14444             |
14445             (?:
14446             (? (?&comp) )
14447             )
14448             |
14449             (?:
14450             (?(?&variable))
14451             )
14452             )
14453             (?
14454             (?:
14455             (?[a-zA-Z]\w*)
14456             \(
14457             [[:blank:]\h]*
14458             (?
14459             (?> (?&func_words) )?
14460             )
14461             [[:blank:]\h]*
14462             \)
14463             )
14464             |
14465             (?:
14466             ( # paren group 1 (full function)
14467             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
14468             (? # paren group 2 (parens)
14469             \(
14470             (? # paren group 3 (contents of parens)
14471             (?:
14472             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
14473             |
14474             (?&paren_group) # Recurse to named capture group
14475             )*
14476             )
14477             \)
14478             )
14479             )
14480             )
14481             )
14482             (?
14483             (?:
14484             (?
14485             (?:
14486             (?&word)
14487             [[:blank:]\h]*\,[[:blank:]\h]*
14488             )*
14489             (?&word)
14490             )
14491             (?:
14492             [[:blank:]\h]*\,[[:blank:]\h]*
14493             (? (?&word) )
14494             )?
14495             )
14496             |
14497             (?:
14498             (? (?&word) )
14499             [[:blank:]\h]*\,[[:blank:]\h]*
14500             (? (?-2) )
14501             )
14502             |
14503             (?:
14504             (? (?&word) )
14505             )
14506             )
14507             (?
14508             (?:
14509             (?(?&word))
14510             [[:blank:]\h]+
14511             \-?(? (?:eq|ne|lt|le|gt|ge) )
14512             [[:blank:]\h]+
14513             (?(?&word))
14514             )
14515             )
14516             (?
14517             (?:
14518             (?[a-zA-Z]\w*)
14519             \(
14520             [[:blank:]\h]*
14521             (?
14522             (?> (?&func_words) )?
14523             )
14524             [[:blank:]\h]*
14525             \)
14526             )
14527             |
14528             (?:
14529             ( # paren group 1 (full function)
14530             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
14531             (? # paren group 2 (parens)
14532             \(
14533             (? # paren group 3 (contents of parens)
14534             (?:
14535             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
14536             |
14537             (?&paren_group) # Recurse to named capture group
14538             )*
14539             )
14540             \)
14541             )
14542             )
14543             )
14544             )
14545             (?
14546             (?:
14547             (?
14548             (?:
14549             (?&word)
14550             [[:blank:]\h]*\,[[:blank:]\h]*
14551             )*
14552             (?&word)
14553             )
14554             (?:
14555             [[:blank:]\h]*\,[[:blank:]\h]*
14556             (? (?&word) )
14557             )?
14558             )
14559             |
14560             (?:
14561             (? (?&word) )
14562             [[:blank:]\h]*\,[[:blank:]\h]*
14563             (? (?-2) )
14564             )
14565             |
14566             (?:
14567             (? (?&word) )
14568             )
14569             )
14570             (?
14571             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
14572             |
14573             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
14574             )
14575             (?
14576             (?:
14577             (?: (?&substring)[[:blank:]\h]+(?&string) )
14578             )
14579             |
14580             (?:
14581             (?: (?&substring) )
14582             )
14583             )
14584             (?
14585             (?:
14586             (?(?&word))
14587             [[:blank:]\h]+
14588             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
14589             [[:blank:]\h]+
14590             (?(?&word))
14591             )
14592             )
14593             (?
14594             (?:
14595             (?$Regexp::Common::Apache2::REGEXP->{cstring})
14596             )
14597             |
14598             (?:
14599             (? (?&variable) )
14600             )
14601             |
14602             (?:
14603             \$(?\{)?(?${DIGIT})(?()\})
14604             )
14605             )
14606             (?
14607             (?:
14608             \$(?\{)?(?[a-zA-Z\_]\w*)(?()\})
14609             )
14610             |
14611             (?:
14612             \%\{
14613             (?:
14614             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
14615             )
14616             \}
14617             )
14618             |
14619             (?:
14620             \%\{
14621             (?:
14622             (?${VARNAME})
14623             )
14624             \}
14625             )
14626             |
14627             (?:
14628             \bv\(
14629             [[:blank:]\h]*
14630             (?["'])
14631             (?:
14632             (?${VARNAME})
14633             )
14634             [[:blank:]\h]*
14635             \g{var_quote}
14636             \)
14637             )
14638             |
14639             (?:
14640             (?:^|\A|(?
14641             (?
14642             \$(?\{)?
14643             (?${DIGIT})
14644             (?()\})
14645             )
14646             )
14647             )
14648             (?
14649             (?:
14650             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
14651             )
14652             |
14653             (?:
14654             (?['"])
14655             (?:
14656             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
14657             )
14658             \g{word_quote}
14659             )
14660             |
14661             (?:
14662             (?['"])
14663             (?:
14664             (? (?&string) )
14665             )
14666             \g{word_quote}
14667             )
14668             |
14669             (?:
14670             (? (?: (?-2)\. )+ (?-2) )
14671             )
14672             |
14673             (?:
14674             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
14675             )
14676             |
14677             (?:
14678             (?(?&variable))
14679             )
14680             |
14681             (?:
14682             (? (?&function) )
14683             )
14684             |
14685             (?:
14686             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
14687             )
14688             )
14689             (?
14690             (?:
14691             (? (?&word) )
14692             [[:blank:]\h]*\,[[:blank:]\h]*
14693             (? (?-2) )
14694             )
14695             |
14696             (?:
14697             (? (?&word) )
14698             )
14699             )
14700             )
14701             /x;
14702              
14703             ## substring
14704             ## | string substring
14705 22         25468 $REGEXP_LEGACY->{string} = qr/
14706             (?
14707             (?:
14708             (?&substring) # Recurse on the entire substring regexp
14709             )
14710             |
14711             (?:
14712             (?:(?&string_recur)[[:blank:]\h]+(?&substring))
14713             )
14714             )
14715             (?(DEFINE)
14716             (?
14717             (?:
14718             (? (?&stringcomp) )
14719             )
14720             |
14721             (?:
14722             (? (?&integercomp) )
14723             )
14724             |
14725             (?:
14726             (?:(?<=\W)|(?<=^)|(?<=\A))
14727             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
14728             [[:blank:]\h]+
14729             (? (?&word) )
14730             )
14731             |
14732             (?:
14733             (? (?&word) )
14734             [[:blank:]\h]+
14735             (?:
14736             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
14737             |
14738             \-(?ipmatch|strmatch|strcmatch|fnmatch)
14739             )
14740             [[:blank:]\h]+
14741             (? (?&word) )
14742             )
14743             |
14744             (?:
14745             (? (?&word) )
14746             [[:blank:]\h]+
14747             \-?in
14748             [[:blank:]\h]+
14749             (? (?&listfunc) )
14750             )
14751             |
14752             (?:
14753             (? (?&word) )
14754             [[:blank:]\h]+
14755             (? [\=|\!]\~ )
14756             [[:blank:]\h]+
14757             $Regexp::Common::Apache2::REGEXP->{regex}
14758             )
14759             |
14760             (?
14761             (?=)
14762             (?(?&word))
14763             [[:blank:]\h]+
14764             (?[\=\=|\=|\!\=])
14765             [[:blank:]\h]+
14766             (?(?®ex))
14767             )
14768             |
14769             (?:
14770             (? (?&word) )
14771             [[:blank:]\h]+
14772             \-?in
14773             [[:blank:]\h]+
14774             \{
14775             [[:blank:]\h]*
14776             (? (?&words) )
14777             [[:blank:]\h]*
14778             \}
14779             )
14780             )
14781             (?
14782             (?:
14783             (?[a-zA-Z]\w*)
14784             \(
14785             [[:blank:]\h]*
14786             (?
14787             (?> (?&func_words) )?
14788             )
14789             [[:blank:]\h]*
14790             \)
14791             )
14792             |
14793             (?:
14794             ( # paren group 1 (full function)
14795             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
14796             (? # paren group 2 (parens)
14797             \(
14798             (? # paren group 3 (contents of parens)
14799             (?:
14800             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
14801             |
14802             (?&paren_group) # Recurse to named capture group
14803             )*
14804             )
14805             \)
14806             )
14807             )
14808             )
14809             )
14810             (?
14811             (?:
14812             (?
14813             (?:
14814             (?&word)
14815             [[:blank:]\h]*\,[[:blank:]\h]*
14816             )*
14817             (?&word)
14818             )
14819             (?:
14820             [[:blank:]\h]*\,[[:blank:]\h]*
14821             (? (?&word) )
14822             )?
14823             )
14824             |
14825             (?:
14826             (? (?&word) )
14827             [[:blank:]\h]*\,[[:blank:]\h]*
14828             (? (?-2) )
14829             )
14830             |
14831             (?:
14832             (? (?&word) )
14833             )
14834             )
14835             (?
14836             (?:
14837             (?(?&word))
14838             [[:blank:]\h]+
14839             \-?(? (?:eq|ne|lt|le|gt|ge) )
14840             [[:blank:]\h]+
14841             (?(?&word))
14842             )
14843             )
14844             (?
14845             (?:
14846             (?[a-zA-Z]\w*)
14847             \(
14848             [[:blank:]\h]*
14849             (?
14850             (?> (?&func_words) )?
14851             )
14852             [[:blank:]\h]*
14853             \)
14854             )
14855             |
14856             (?:
14857             ( # paren group 1 (full function)
14858             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
14859             (? # paren group 2 (parens)
14860             \(
14861             (? # paren group 3 (contents of parens)
14862             (?:
14863             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
14864             |
14865             (?&paren_group) # Recurse to named capture group
14866             )*
14867             )
14868             \)
14869             )
14870             )
14871             )
14872             )
14873             (?
14874             (?:
14875             (?
14876             (?:
14877             (?&word)
14878             [[:blank:]\h]*\,[[:blank:]\h]*
14879             )*
14880             (?&word)
14881             )
14882             (?:
14883             [[:blank:]\h]*\,[[:blank:]\h]*
14884             (? (?&word) )
14885             )?
14886             )
14887             |
14888             (?:
14889             (? (?&word) )
14890             [[:blank:]\h]*\,[[:blank:]\h]*
14891             (? (?-2) )
14892             )
14893             |
14894             (?:
14895             (? (?&word) )
14896             )
14897             )
14898             (?
14899             (?:
14900             (?: (?&substring)[[:blank:]\h]+(?&string_recur) )
14901             )
14902             |
14903             (?:
14904             (?: (?&substring) )
14905             )
14906             )
14907             (?
14908             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
14909             |
14910             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
14911             )
14912             (?
14913             (?:
14914             (?(?&word))
14915             [[:blank:]\h]+
14916             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
14917             [[:blank:]\h]+
14918             (?(?&word))
14919             )
14920             )
14921             (?
14922             (?:
14923             (?$Regexp::Common::Apache2::REGEXP->{cstring})
14924             )
14925             |
14926             (?:
14927             (? (?&variable) )
14928             )
14929             |
14930             (?:
14931             \$(?\{)?(?${DIGIT})(?()\})
14932             )
14933             )
14934             (?
14935             (?:
14936             \$(?\{)?(?[a-zA-Z\_]\w*)(?()\})
14937             )
14938             |
14939             (?:
14940             \%\{
14941             (?:
14942             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
14943             )
14944             \}
14945             )
14946             |
14947             (?:
14948             \%\{
14949             (?:
14950             (?${VARNAME})
14951             )
14952             \}
14953             )
14954             |
14955             (?:
14956             \bv\(
14957             [[:blank:]\h]*
14958             (?["'])
14959             (?:
14960             (?${VARNAME})
14961             )
14962             [[:blank:]\h]*
14963             \g{var_quote}
14964             \)
14965             )
14966             |
14967             (?:
14968             (?:^|\A|(?
14969             (?
14970             \$(?\{)?
14971             (?${DIGIT})
14972             (?()\})
14973             )
14974             )
14975             )
14976             (?
14977             (?:
14978             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
14979             )
14980             |
14981             (?:
14982             (?['"])
14983             (?:
14984             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
14985             )
14986             \g{word_quote}
14987             )
14988             |
14989             (?:
14990             (?['"])
14991             (?:
14992             (? (?&string_recur) )
14993             )
14994             \g{word_quote}
14995             )
14996             |
14997             (?:
14998             (? (?: (?-2)\. )+ (?-2) )
14999             )
15000             |
15001             (?:
15002             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
15003             )
15004             |
15005             (?:
15006             (?(?&variable))
15007             )
15008             |
15009             (?:
15010             (? (?&function) )
15011             )
15012             |
15013             (?:
15014             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
15015             )
15016             )
15017             (?
15018             (?:
15019             (? (?&word) )
15020             [[:blank:]\h]*\,[[:blank:]\h]*
15021             (? (?-2) )
15022             )
15023             |
15024             (?:
15025             (? (?&word) )
15026             )
15027             )
15028             )/x;
15029              
15030             ## word "==" word
15031             ## | word "!=" word
15032             ## | word "<" word
15033             ## | word "<=" word
15034             ## | word ">" word
15035             ## | word ">=" word
15036 22         26689 $REGEXP_LEGACY->{stringcomp} = qr/
15037             (?
15038             (?(?&word))
15039             [[:blank:]\h]+
15040             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
15041             [[:blank:]\h]+
15042             (?(?&word))
15043             )
15044             (?(DEFINE)
15045             (?
15046             (?:
15047             (? (?&stringcomp_recur) )
15048             )
15049             |
15050             (?:
15051             (? (?&integercomp) )
15052             )
15053             |
15054             (?:
15055             (?:(?<=\W)|(?<=^)|(?<=\A))
15056             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
15057             [[:blank:]\h]+
15058             (? (?&word) )
15059             )
15060             |
15061             (?:
15062             (? (?&word) )
15063             [[:blank:]\h]+
15064             (?:
15065             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
15066             |
15067             \-(?ipmatch|strmatch|strcmatch|fnmatch)
15068             )
15069             [[:blank:]\h]+
15070             (? (?&word) )
15071             )
15072             |
15073             (?:
15074             (? (?&word) )
15075             [[:blank:]\h]+
15076             \-?in
15077             [[:blank:]\h]+
15078             (? (?&listfunc) )
15079             )
15080             |
15081             (?:
15082             (? (?&word) )
15083             [[:blank:]\h]+
15084             (? [\=|\!]\~ )
15085             [[:blank:]\h]+
15086             $Regexp::Common::Apache2::REGEXP->{regex}
15087             )
15088             |
15089             (?
15090             (?=)
15091             (?(?&word))
15092             [[:blank:]\h]+
15093             (?[\=\=|\=|\!\=])
15094             [[:blank:]\h]+
15095             (?(?®ex))
15096             )
15097             |
15098             (?:
15099             (? (?&word) )
15100             [[:blank:]\h]+
15101             \-?in
15102             [[:blank:]\h]+
15103             \{
15104             [[:blank:]\h]*
15105             (? (?&words) )
15106             [[:blank:]\h]*
15107             \}
15108             )
15109             )
15110             (?
15111             (?:
15112             (?[a-zA-Z]\w*)
15113             \(
15114             [[:blank:]\h]*
15115             (?
15116             (?> (?&func_words) )?
15117             )
15118             [[:blank:]\h]*
15119             \)
15120             )
15121             |
15122             (?:
15123             ( # paren group 1 (full function)
15124             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
15125             (? # paren group 2 (parens)
15126             \(
15127             (? # paren group 3 (contents of parens)
15128             (?:
15129             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
15130             |
15131             (?&paren_group) # Recurse to named capture group
15132             )*
15133             )
15134             \)
15135             )
15136             )
15137             )
15138             )
15139             (?
15140             (?:
15141             (?
15142             (?:
15143             (?&word)
15144             [[:blank:]\h]*\,[[:blank:]\h]*
15145             )*
15146             (?&word)
15147             )
15148             (?:
15149             [[:blank:]\h]*\,[[:blank:]\h]*
15150             (? (?&word) )
15151             )?
15152             )
15153             |
15154             (?:
15155             (? (?&word) )
15156             [[:blank:]\h]*\,[[:blank:]\h]*
15157             (? (?-2) )
15158             )
15159             |
15160             (?:
15161             (? (?&word) )
15162             )
15163             )
15164             (?
15165             (?:
15166             (?(?&word))
15167             [[:blank:]\h]+
15168             \-?(? (?:eq|ne|lt|le|gt|ge) )
15169             [[:blank:]\h]+
15170             (?(?&word))
15171             )
15172             )
15173             (?
15174             (?:
15175             (?[a-zA-Z]\w*)
15176             \(
15177             [[:blank:]\h]*
15178             (?
15179             (?> (?&func_words) )?
15180             )
15181             [[:blank:]\h]*
15182             \)
15183             )
15184             |
15185             (?:
15186             ( # paren group 1 (full function)
15187             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
15188             (? # paren group 2 (parens)
15189             \(
15190             (? # paren group 3 (contents of parens)
15191             (?:
15192             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
15193             |
15194             (?&paren_group) # Recurse to named capture group
15195             )*
15196             )
15197             \)
15198             )
15199             )
15200             )
15201             )
15202             (?
15203             (?:
15204             (?
15205             (?:
15206             (?&word)
15207             [[:blank:]\h]*\,[[:blank:]\h]*
15208             )*
15209             (?&word)
15210             )
15211             (?:
15212             [[:blank:]\h]*\,[[:blank:]\h]*
15213             (? (?&word) )
15214             )?
15215             )
15216             |
15217             (?:
15218             (? (?&word) )
15219             [[:blank:]\h]*\,[[:blank:]\h]*
15220             (? (?-2) )
15221             )
15222             |
15223             (?:
15224             (? (?&word) )
15225             )
15226             )
15227             (?
15228             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
15229             |
15230             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
15231             )
15232             (?
15233             (?:
15234             (?: (?&substring)[[:blank:]\h]+(?&string) )
15235             )
15236             |
15237             (?:
15238             (?: (?&substring) )
15239             )
15240             )
15241             (?
15242             (?:
15243             (?(?&word))
15244             [[:blank:]\h]+
15245             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
15246             [[:blank:]\h]+
15247             (?(?&word))
15248             )
15249             )
15250             (?
15251             (?:
15252             (?$Regexp::Common::Apache2::REGEXP->{cstring})
15253             )
15254             |
15255             (?:
15256             (? (?&variable) )
15257             )
15258             |
15259             (?:
15260             \$(?\{)?(?${DIGIT})(?()\})
15261             )
15262             )
15263             (?
15264             (?:
15265             \$(?\{)?(?[a-zA-Z\_]\w*)(?()\})
15266             )
15267             |
15268             (?:
15269             \%\{
15270             (?:
15271             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
15272             )
15273             \}
15274             )
15275             |
15276             (?:
15277             \%\{
15278             (?:
15279             (?${VARNAME})
15280             )
15281             \}
15282             )
15283             |
15284             (?:
15285             \bv\(
15286             [[:blank:]\h]*
15287             (?["'])
15288             (?:
15289             (?${VARNAME})
15290             )
15291             [[:blank:]\h]*
15292             \g{var_quote}
15293             \)
15294             )
15295             |
15296             (?:
15297             (?:^|\A|(?
15298             (?
15299             \$(?\{)?
15300             (?${DIGIT})
15301             (?()\})
15302             )
15303             )
15304             )
15305             (?
15306             (?:
15307             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
15308             )
15309             |
15310             (?:
15311             (?['"])
15312             (?:
15313             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
15314             )
15315             \g{word_quote}
15316             )
15317             |
15318             (?:
15319             (?['"])
15320             (?:
15321             (? (?&string) )
15322             )
15323             \g{word_quote}
15324             )
15325             |
15326             (?:
15327             (? (?: (?-2)\. )+ (?-2) )
15328             )
15329             |
15330             (?:
15331             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
15332             )
15333             |
15334             (?:
15335             (?(?&variable))
15336             )
15337             |
15338             (?:
15339             (? (?&function) )
15340             )
15341             |
15342             (?:
15343             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
15344             )
15345             )
15346             (?
15347             (?:
15348             (? (?&word) )
15349             [[:blank:]\h]*\,[[:blank:]\h]*
15350             (? (?-2) )
15351             )
15352             |
15353             (?:
15354             (? (?&word) )
15355             )
15356             )
15357             )
15358             /x;
15359              
15360 22         24557 $REGEXP_LEGACY->{substring} = qr/
15361             (?
15362             (?:$Regexp::Common::Apache2::REGEXP_LEGACY->{cstring})
15363             |
15364             (?:
15365             (?&variable)
15366             )
15367             |
15368             (?:
15369             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
15370             )
15371             )
15372             (?(DEFINE)
15373             (?
15374             (?:
15375             (? (?&stringcomp) )
15376             )
15377             |
15378             (?:
15379             (? (?&integercomp) )
15380             )
15381             |
15382             (?:
15383             (?:(?<=\W)|(?<=^)|(?<=\A))
15384             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
15385             [[:blank:]\h]+
15386             (? (?&word) )
15387             )
15388             |
15389             (?:
15390             (? (?&word) )
15391             [[:blank:]\h]+
15392             (?:
15393             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
15394             |
15395             \-(?ipmatch|strmatch|strcmatch|fnmatch)
15396             )
15397             [[:blank:]\h]+
15398             (? (?&word) )
15399             )
15400             |
15401             (?:
15402             (? (?&word) )
15403             [[:blank:]\h]+
15404             \-?in
15405             [[:blank:]\h]+
15406             (? (?&listfunc) )
15407             )
15408             |
15409             (?:
15410             (? (?&word) )
15411             [[:blank:]\h]+
15412             (? [\=|\!]\~ )
15413             [[:blank:]\h]+
15414             $Regexp::Common::Apache2::REGEXP->{regex}
15415             )
15416             |
15417             (?
15418             (?=)
15419             (?(?&word))
15420             [[:blank:]\h]+
15421             (?[\=\=|\=|\!\=])
15422             [[:blank:]\h]+
15423             (?(?®ex))
15424             )
15425             |
15426             (?:
15427             (? (?&word) )
15428             [[:blank:]\h]+
15429             \-?in
15430             [[:blank:]\h]+
15431             \{
15432             [[:blank:]\h]*
15433             (? (?&words) )
15434             [[:blank:]\h]*
15435             \}
15436             )
15437             )
15438             (?
15439             (?:
15440             (?[a-zA-Z]\w*)
15441             \(
15442             [[:blank:]\h]*
15443             (?
15444             (?> (?&func_words) )?
15445             )
15446             [[:blank:]\h]*
15447             \)
15448             )
15449             |
15450             (?:
15451             ( # paren group 1 (full function)
15452             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
15453             (? # paren group 2 (parens)
15454             \(
15455             (? # paren group 3 (contents of parens)
15456             (?:
15457             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
15458             |
15459             (?&paren_group) # Recurse to named capture group
15460             )*
15461             )
15462             \)
15463             )
15464             )
15465             )
15466             )
15467             (?
15468             (?:
15469             (?
15470             (?:
15471             (?&word)
15472             [[:blank:]\h]*\,[[:blank:]\h]*
15473             )*
15474             (?&word)
15475             )
15476             (?:
15477             [[:blank:]\h]*\,[[:blank:]\h]*
15478             (? (?&word) )
15479             )?
15480             )
15481             |
15482             (?:
15483             (? (?&word) )
15484             [[:blank:]\h]*\,[[:blank:]\h]*
15485             (? (?-2) )
15486             )
15487             |
15488             (?:
15489             (? (?&word) )
15490             )
15491             )
15492             (?
15493             (?:
15494             (?(?&word))
15495             [[:blank:]\h]+
15496             \-?(? (?:eq|ne|lt|le|gt|ge) )
15497             [[:blank:]\h]+
15498             (?(?&word))
15499             )
15500             )
15501             (?
15502             (?:
15503             (?[a-zA-Z]\w*)
15504             \(
15505             [[:blank:]\h]*
15506             (?
15507             (?> (?&func_words) )?
15508             )
15509             [[:blank:]\h]*
15510             \)
15511             )
15512             |
15513             (?:
15514             ( # paren group 1 (full function)
15515             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
15516             (? # paren group 2 (parens)
15517             \(
15518             (? # paren group 3 (contents of parens)
15519             (?:
15520             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
15521             |
15522             (?&paren_group) # Recurse to named capture group
15523             )*
15524             )
15525             \)
15526             )
15527             )
15528             )
15529             )
15530             (?
15531             (?:
15532             (?
15533             (?:
15534             (?&word)
15535             [[:blank:]\h]*\,[[:blank:]\h]*
15536             )*
15537             (?&word)
15538             )
15539             (?:
15540             [[:blank:]\h]*\,[[:blank:]\h]*
15541             (? (?&word) )
15542             )?
15543             )
15544             |
15545             (?:
15546             (? (?&word) )
15547             [[:blank:]\h]*\,[[:blank:]\h]*
15548             (? (?-2) )
15549             )
15550             |
15551             (?:
15552             (? (?&word) )
15553             )
15554             )
15555             (?
15556             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
15557             |
15558             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
15559             )
15560             (?
15561             (?:
15562             (?: (?&substring_recur)[[:blank:]\h]+(?&string) )
15563             )
15564             |
15565             (?:
15566             (?: (?&substring_recur) )
15567             )
15568             )
15569             (?
15570             (?:
15571             (?(?&word))
15572             [[:blank:]\h]+
15573             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
15574             [[:blank:]\h]+
15575             (?(?&word))
15576             )
15577             )
15578             (?
15579             (?:
15580             (?$Regexp::Common::Apache2::REGEXP->{cstring})
15581             )
15582             |
15583             (?:
15584             (? (?&variable) )
15585             )
15586             |
15587             (?:
15588             \$(?\{)?(?${DIGIT})(?()\})
15589             )
15590             )
15591             (?
15592             (?:
15593             \$(?\{)?(?[a-zA-Z\_]\w*)(?()\})
15594             )
15595             |
15596             (?:
15597             \%\{
15598             (?:
15599             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
15600             )
15601             \}
15602             )
15603             |
15604             (?:
15605             \%\{
15606             (?:
15607             (?${VARNAME})
15608             )
15609             \}
15610             )
15611             |
15612             (?:
15613             \bv\(
15614             [[:blank:]\h]*
15615             (?["'])
15616             (?:
15617             (?${VARNAME})
15618             )
15619             [[:blank:]\h]*
15620             \g{var_quote}
15621             \)
15622             )
15623             |
15624             (?:
15625             (?:^|\A|(?
15626             (?
15627             \$(?\{)?
15628             (?${DIGIT})
15629             (?()\})
15630             )
15631             )
15632             )
15633             (?
15634             (?:
15635             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
15636             )
15637             |
15638             (?:
15639             (?['"])
15640             (?:
15641             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
15642             )
15643             \g{word_quote}
15644             )
15645             |
15646             (?:
15647             (?['"])
15648             (?:
15649             (? (?&string) )
15650             )
15651             \g{word_quote}
15652             )
15653             |
15654             (?:
15655             (? (?: (?-2)\. )+ (?-2) )
15656             )
15657             |
15658             (?:
15659             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
15660             )
15661             |
15662             (?:
15663             (?(?&variable))
15664             )
15665             |
15666             (?:
15667             (? (?&function) )
15668             )
15669             |
15670             (?:
15671             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
15672             )
15673             )
15674             (?
15675             (?:
15676             (? (?&word) )
15677             [[:blank:]\h]*\,[[:blank:]\h]*
15678             (? (?-2) )
15679             )
15680             |
15681             (?:
15682             (? (?&word) )
15683             )
15684             )
15685             )
15686             /x;
15687              
15688             ## "%{" varname "}"
15689             ## | "%{" funcname ":" funcargs "}"
15690             ## | "v('" varname "')"
15691             ## | "%{:" word ":}"
15692             ## | "%{:" cond ":}"
15693             ## | rebackref
15694 22         25540 $REGEXP_LEGACY->{variable} = qr/
15695             (?
15696             (?:
15697             (?:^|\A|(?\{)?(?[a-zA-Z\_]\w*)(?()\})
15698             )
15699             |
15700             (?:
15701             (?:^|\A|(?
15702             (?:
15703             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
15704             )
15705             \}
15706             )
15707             |
15708             (?:
15709             (?:^|\A|(?
15710             (?:
15711             (?${VARNAME})
15712             )
15713             \}
15714             )
15715             |
15716             (?:
15717             \bv\(
15718             [[:blank:]\h]*
15719             (?["'])
15720             (?:
15721             (?${VARNAME})
15722             )
15723             [[:blank:]\h]*
15724             \g{var_quote}
15725             \)
15726             )
15727             |
15728             (?:
15729             (?:^|\A|(?
15730             (?
15731             \$(?\{)?
15732             (?${DIGIT})
15733             (?()\})
15734             )
15735             )
15736             )
15737             (?(DEFINE)
15738             (?
15739             (?:
15740             (? (?&stringcomp) )
15741             )
15742             |
15743             (?:
15744             (? (?&integercomp) )
15745             )
15746             |
15747             (?:
15748             (?:(?<=\W)|(?<=^)|(?<=\A))
15749             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
15750             [[:blank:]\h]+
15751             (? (?&word) )
15752             )
15753             |
15754             (?:
15755             (? (?&word) )
15756             [[:blank:]\h]+
15757             (?:
15758             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
15759             |
15760             \-(?ipmatch|strmatch|strcmatch|fnmatch)
15761             )
15762             [[:blank:]\h]+
15763             (? (?&word) )
15764             )
15765             |
15766             (?:
15767             (? (?&word) )
15768             [[:blank:]\h]+
15769             \-?in
15770             [[:blank:]\h]+
15771             (? (?&listfunc) )
15772             )
15773             |
15774             (?:
15775             (? (?&word) )
15776             [[:blank:]\h]+
15777             (? [\=|\!]\~ )
15778             [[:blank:]\h]+
15779             $Regexp::Common::Apache2::REGEXP->{regex}
15780             )
15781             |
15782             (?
15783             (?=)
15784             (?(?&word))
15785             [[:blank:]\h]+
15786             (?[\=\=|\=|\!\=])
15787             [[:blank:]\h]+
15788             (?(?®ex))
15789             )
15790             |
15791             (?:
15792             (? (?&word) )
15793             [[:blank:]\h]+
15794             \-?in
15795             [[:blank:]\h]+
15796             \{
15797             [[:blank:]\h]*
15798             (? (?&words) )
15799             [[:blank:]\h]*
15800             \}
15801             )
15802             )
15803             (?
15804             (?:
15805             (?[a-zA-Z]\w*)
15806             \(
15807             [[:blank:]\h]*
15808             (?
15809             (?> (?&func_words) )?
15810             )
15811             [[:blank:]\h]*
15812             \)
15813             )
15814             |
15815             (?:
15816             ( # paren group 1 (full function)
15817             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
15818             (? # paren group 2 (parens)
15819             \(
15820             (? # paren group 3 (contents of parens)
15821             (?:
15822             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
15823             |
15824             (?&paren_group) # Recurse to named capture group
15825             )*
15826             )
15827             \)
15828             )
15829             )
15830             )
15831             )
15832             (?
15833             (?:
15834             (?
15835             (?:
15836             (?&word)
15837             [[:blank:]\h]*\,[[:blank:]\h]*
15838             )*
15839             (?&word)
15840             )
15841             (?:
15842             [[:blank:]\h]*\,[[:blank:]\h]*
15843             (? (?&word) )
15844             )?
15845             )
15846             |
15847             (?:
15848             (? (?&word) )
15849             [[:blank:]\h]*\,[[:blank:]\h]*
15850             (? (?-2) )
15851             )
15852             |
15853             (?:
15854             (? (?&word) )
15855             )
15856             )
15857             (?
15858             (?:
15859             (?(?&word))
15860             [[:blank:]\h]+
15861             \-?(? (?:eq|ne|lt|le|gt|ge) )
15862             [[:blank:]\h]+
15863             (?(?&word))
15864             )
15865             )
15866             (?
15867             (?:
15868             (?[a-zA-Z]\w*)
15869             \(
15870             [[:blank:]\h]*
15871             (?
15872             (?> (?&func_words) )?
15873             )
15874             [[:blank:]\h]*
15875             \)
15876             )
15877             |
15878             (?:
15879             ( # paren group 1 (full function)
15880             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
15881             (? # paren group 2 (parens)
15882             \(
15883             (? # paren group 3 (contents of parens)
15884             (?:
15885             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
15886             |
15887             (?&paren_group) # Recurse to named capture group
15888             )*
15889             )
15890             \)
15891             )
15892             )
15893             )
15894             )
15895             (?
15896             (?:
15897             (?
15898             (?:
15899             (?&word)
15900             [[:blank:]\h]*\,[[:blank:]\h]*
15901             )*
15902             (?&word)
15903             )
15904             (?:
15905             [[:blank:]\h]*\,[[:blank:]\h]*
15906             (? (?&word) )
15907             )?
15908             )
15909             |
15910             (?:
15911             (? (?&word) )
15912             [[:blank:]\h]*\,[[:blank:]\h]*
15913             (? (?-2) )
15914             )
15915             |
15916             (?:
15917             (? (?&word) )
15918             )
15919             )
15920             (?
15921             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
15922             |
15923             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
15924             )
15925             (?
15926             (?:
15927             (?: (?&substring)[[:blank:]\h]+(?&string) )
15928             )
15929             |
15930             (?:
15931             (?: (?&substring) )
15932             )
15933             )
15934             (?
15935             (?:
15936             (?$Regexp::Common::Apache2::REGEXP->{cstring})
15937             )
15938             |
15939             (?:
15940             (? (?&variable_recur) )
15941             )
15942             |
15943             (?:
15944             \$(?\{)?(?${DIGIT})(?()\})
15945             )
15946             )
15947             (?
15948             (?:
15949             (?(?&word))
15950             [[:blank:]\h]+
15951             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
15952             [[:blank:]\h]+
15953             (?(?&word))
15954             )
15955             )
15956             (?
15957             (?:
15958             \$(?\{)?(?[a-zA-Z\_]\w*)(?()\})
15959             )
15960             |
15961             (?:
15962             \%\{
15963             (?:
15964             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
15965             )
15966             \}
15967             )
15968             |
15969             (?:
15970             \%\{
15971             (?:
15972             (?${VARNAME})
15973             )
15974             \}
15975             )
15976             |
15977             (?:
15978             \bv\(
15979             [[:blank:]\h]*
15980             (?["'])
15981             (?:
15982             (?${VARNAME})
15983             )
15984             [[:blank:]\h]*
15985             \g{var_quote}
15986             \)
15987             )
15988             |
15989             (?:
15990             (?:^|\A|(?
15991             (?
15992             \$(?\{)?
15993             (?${DIGIT})
15994             (?()\})
15995             )
15996             )
15997             )
15998             (?
15999             (?:
16000             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
16001             )
16002             |
16003             (?:
16004             (?['"])
16005             (?:
16006             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
16007             )
16008             \g{word_quote}
16009             )
16010             |
16011             (?:
16012             (?['"])
16013             (?:
16014             (? (?&string) )
16015             )
16016             \g{word_quote}
16017             )
16018             |
16019             (?:
16020             (? (?: (?-2)\. )+ (?-2) )
16021             )
16022             |
16023             (?:
16024             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
16025             )
16026             |
16027             (?:
16028             (?(?&variable_recur))
16029             )
16030             |
16031             (?:
16032             (? (?&function) )
16033             )
16034             |
16035             (?:
16036             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
16037             )
16038             )
16039             (?
16040             (?:
16041             (? (?&word) )
16042             [[:blank:]\h]*\,[[:blank:]\h]*
16043             (? (?-2) )
16044             )
16045             |
16046             (?:
16047             (? (?&word) )
16048             )
16049             )
16050             )
16051             /x;
16052              
16053             ## digits
16054             ## | "'" string "'"
16055             ## | '"' string '"'
16056             ## | word "." word
16057             ## | variable
16058             ## | sub
16059             ## | join
16060             ## | function
16061             ## | "(" word ")"
16062 22         31374 $REGEXP_LEGACY->{word} = qr/
16063             (?
16064             (?:
16065             (?$Regexp::Common::Apache2::REGEXP_LEGACY->{digits})
16066             )
16067             |
16068             (?:
16069             (?\')
16070             (?:
16071             (? (?&string) )
16072             )
16073             \'
16074             )
16075             |
16076             (?:
16077             (?\")
16078             (?:
16079             (? (?&string) )
16080             )
16081             \"
16082             )
16083             |
16084             (?:
16085             (?
16086             (?: (?&word_recur)\. )+ (?&word_recur)
16087             )
16088             )
16089             |
16090             (?:
16091             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
16092             )
16093             |
16094             (?:
16095             (?(?&variable))
16096             )
16097             |
16098             (?:
16099             (?(?&function))
16100             )
16101             |
16102             (?:
16103             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
16104             )
16105             )
16106             (?(DEFINE)
16107             (?
16108             (?:
16109             (? (?&stringcomp) )
16110             )
16111             |
16112             (?:
16113             (? (?&integercomp) )
16114             )
16115             |
16116             (?:
16117             (?:(?<=\W)|(?<=^)|(?<=\A))
16118             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
16119             [[:blank:]\h]+
16120             (? (?&word_recur) )
16121             )
16122             |
16123             (?:
16124             (? (?&word_recur) )
16125             [[:blank:]\h]+
16126             (?:
16127             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
16128             |
16129             \-(?ipmatch|strmatch|strcmatch|fnmatch)
16130             )
16131             [[:blank:]\h]+
16132             (? (?&word_recur) )
16133             )
16134             |
16135             (?:
16136             (? (?&word_recur) )
16137             [[:blank:]\h]+
16138             \-?in
16139             [[:blank:]\h]+
16140             (? (?&listfunc) )
16141             )
16142             |
16143             (?:
16144             (? (?&word_recur) )
16145             [[:blank:]\h]+
16146             (? [\=|\!]\~ )
16147             [[:blank:]\h]+
16148             $Regexp::Common::Apache2::REGEXP->{regex}
16149             )
16150             |
16151             (?
16152             (?=)
16153             (?(?&word_recur))
16154             [[:blank:]\h]+
16155             (?[\=\=|\=|\!\=])
16156             [[:blank:]\h]+
16157             (?(?®ex))
16158             )
16159             |
16160             (?:
16161             (? (?&word_recur) )
16162             [[:blank:]\h]+
16163             \-?in
16164             [[:blank:]\h]+
16165             \{
16166             [[:blank:]\h]*
16167             (? (?&words) )
16168             [[:blank:]\h]*
16169             \}
16170             )
16171             )
16172             (?
16173             (?:
16174             (?[a-zA-Z]\w*)
16175             \(
16176             [[:blank:]\h]*
16177             (?
16178             (?> (?&func_words) )?
16179             )
16180             [[:blank:]\h]*
16181             \)
16182             )
16183             |
16184             (?:
16185             ( # paren group 1 (full function)
16186             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
16187             (? # paren group 2 (parens)
16188             \(
16189             (? # paren group 3 (contents of parens)
16190             (?:
16191             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
16192             |
16193             (?&paren_group) # Recurse to named capture group
16194             )*
16195             )
16196             \)
16197             )
16198             )
16199             )
16200             )
16201             (?
16202             (?:
16203             (?
16204             (?:
16205             (?&word)
16206             [[:blank:]\h]*\,[[:blank:]\h]*
16207             )*
16208             (?&word)
16209             )
16210             (?:
16211             [[:blank:]\h]*\,[[:blank:]\h]*
16212             (? (?&word) )
16213             )?
16214             )
16215             |
16216             (?:
16217             (? (?&word) )
16218             [[:blank:]\h]*\,[[:blank:]\h]*
16219             (? (?-2) )
16220             )
16221             |
16222             (?:
16223             (? (?&word) )
16224             )
16225             )
16226             (?
16227             (?:
16228             (?(?&word_recur))
16229             [[:blank:]\h]+
16230             \-?(? (?:eq|ne|lt|le|gt|ge) )
16231             [[:blank:]\h]+
16232             (?(?&word_recur))
16233             )
16234             )
16235             (?
16236             (?:
16237             (?[a-zA-Z]\w*)
16238             \(
16239             [[:blank:]\h]*
16240             (?
16241             (?> (?&func_words) )?
16242             )
16243             [[:blank:]\h]*
16244             \)
16245             )
16246             |
16247             (?:
16248             ( # paren group 1 (full function)
16249             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
16250             (? # paren group 2 (parens)
16251             \(
16252             (? # paren group 3 (contents of parens)
16253             (?:
16254             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
16255             |
16256             (?&paren_group) # Recurse to named capture group
16257             )*
16258             )
16259             \)
16260             )
16261             )
16262             )
16263             )
16264             (?
16265             (?:
16266             (?
16267             (?:
16268             (?&word)
16269             [[:blank:]\h]*\,[[:blank:]\h]*
16270             )*
16271             (?&word)
16272             )
16273             (?:
16274             [[:blank:]\h]*\,[[:blank:]\h]*
16275             (? (?&word) )
16276             )?
16277             )
16278             |
16279             (?:
16280             (? (?&word) )
16281             [[:blank:]\h]*\,[[:blank:]\h]*
16282             (? (?-2) )
16283             )
16284             |
16285             (?:
16286             (? (?&word) )
16287             )
16288             )
16289             (?
16290             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
16291             |
16292             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
16293             )
16294             (?
16295             (?:
16296             (?: (?&substring)[[:blank:]\h]+(?&string) )
16297             )
16298             |
16299             (?:
16300             (?: (?&substring) )
16301             )
16302             )
16303             (?
16304             (?:
16305             (?(?&word_recur))
16306             [[:blank:]\h]+
16307             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
16308             [[:blank:]\h]+
16309             (?(?&word_recur))
16310             )
16311             )
16312             (?
16313             (?:
16314             (?$Regexp::Common::Apache2::REGEXP->{cstring})
16315             )
16316             |
16317             (?:
16318             (? (?&variable) )
16319             )
16320             |
16321             (?:
16322             \$(?\{)?(?${DIGIT})(?()\})
16323             )
16324             )
16325             (?
16326             (?:
16327             \$(?\{)?(?[a-zA-Z\_]\w*)(?()\})
16328             )
16329             |
16330             (?:
16331             \%\{
16332             (?:
16333             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
16334             )
16335             \}
16336             )
16337             |
16338             (?:
16339             \%\{
16340             (?:
16341             (?${VARNAME})
16342             )
16343             \}
16344             )
16345             |
16346             (?:
16347             \bv\(
16348             [[:blank:]\h]*
16349             (?["'])
16350             (?:
16351             (?${VARNAME})
16352             )
16353             [[:blank:]\h]*
16354             \g{var_quote}
16355             \)
16356             )
16357             |
16358             (?:
16359             (?:^|\A|(?
16360             (?
16361             \$(?\{)?
16362             (?${DIGIT})
16363             (?()\})
16364             )
16365             )
16366             )
16367             (?
16368             (?:
16369             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
16370             )
16371             |
16372             (?:
16373             (?['"])
16374             (?:
16375             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
16376             )
16377             \g{word_quote}
16378             )
16379             |
16380             (?:
16381             (?['"])
16382             (?:
16383             (? (?&string) )
16384             )
16385             \g{word_quote}
16386             )
16387             |
16388             (?:
16389             (? (?: (?-2)\. )+ (?-2) )
16390             )
16391             |
16392             (?:
16393             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
16394             )
16395             |
16396             (?:
16397             (?(?&variable))
16398             )
16399             |
16400             (?:
16401             (? (?&function) )
16402             )
16403             |
16404             (?:
16405             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
16406             )
16407             )
16408             (?
16409             (?:
16410             (? (?&word_recur) )
16411             [[:blank:]\h]*\,[[:blank:]\h]*
16412             (? (?-2) )
16413             )
16414             |
16415             (?:
16416             (? (?&word_recur) )
16417             )
16418             )
16419             )
16420             /x;
16421            
16422             ## word
16423             ## | word "," list
16424 22         27840 $REGEXP_LEGACY->{words} = qr/
16425             (?
16426             (?:
16427             (?:
16428             (?(?&word))
16429             [[:blank:]\h]*\,[[:blank:]\h]*
16430             (?(?&words_recur))
16431             )
16432             |
16433             (?:
16434             (?(?&word))
16435             )
16436             )
16437             )
16438             (?(DEFINE)
16439             (?
16440             (?:
16441             (? (?&stringcomp) )
16442             )
16443             |
16444             (?:
16445             (? (?&integercomp) )
16446             )
16447             |
16448             (?:
16449             (?:(?<=\W)|(?<=^)|(?<=\A))
16450             \-(?[d|e|f|s|L|h|F|U|A|n|z|T|R])
16451             [[:blank:]\h]+
16452             (? (?&word) )
16453             )
16454             |
16455             (?:
16456             (? (?&word) )
16457             [[:blank:]\h]+
16458             (?:
16459             (?\=\=|\=|\!\=|\<|\<\=|\>|\>\=|(?:\b\-?(?:eq|ne|le|le|gt|ge)\b))
16460             |
16461             \-(?ipmatch|strmatch|strcmatch|fnmatch)
16462             )
16463             [[:blank:]\h]+
16464             (? (?&word) )
16465             )
16466             |
16467             (?:
16468             (? (?&word) )
16469             [[:blank:]\h]+
16470             \-?in
16471             [[:blank:]\h]+
16472             (? (?&listfunc) )
16473             )
16474             |
16475             (?:
16476             (? (?&word) )
16477             [[:blank:]\h]+
16478             (? [\=|\!]\~ )
16479             [[:blank:]\h]+
16480             $Regexp::Common::Apache2::REGEXP->{regex}
16481             )
16482             |
16483             (?
16484             (?=)
16485             (?(?&word))
16486             [[:blank:]\h]+
16487             (?[\=\=|\=|\!\=])
16488             [[:blank:]\h]+
16489             (?(?®ex))
16490             )
16491             |
16492             (?:
16493             (? (?&word) )
16494             [[:blank:]\h]+
16495             \-?in
16496             [[:blank:]\h]+
16497             \{
16498             [[:blank:]\h]*
16499             (? (?&words) )
16500             [[:blank:]\h]*
16501             \}
16502             )
16503             )
16504             (?
16505             (?:
16506             (?[a-zA-Z]\w*)
16507             \(
16508             [[:blank:]\h]*
16509             (?
16510             (?> (?&func_words) )?
16511             )
16512             [[:blank:]\h]*
16513             \)
16514             )
16515             |
16516             (?:
16517             ( # paren group 1 (full function)
16518             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
16519             (? # paren group 2 (parens)
16520             \(
16521             (? # paren group 3 (contents of parens)
16522             (?:
16523             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
16524             |
16525             (?&paren_group) # Recurse to named capture group
16526             )*
16527             )
16528             \)
16529             )
16530             )
16531             )
16532             )
16533             (?
16534             (?:
16535             (?
16536             (?:
16537             (?&word)
16538             [[:blank:]\h]*\,[[:blank:]\h]*
16539             )*
16540             (?&word)
16541             )
16542             (?:
16543             [[:blank:]\h]*\,[[:blank:]\h]*
16544             (? (?&word) )
16545             )?
16546             )
16547             |
16548             (?:
16549             (? (?&word) )
16550             [[:blank:]\h]*\,[[:blank:]\h]*
16551             (? (?-2) )
16552             )
16553             |
16554             (?:
16555             (? (?&word) )
16556             )
16557             )
16558             (?
16559             (?:
16560             (?(?&word))
16561             [[:blank:]\h]+
16562             \-?(? (?:eq|ne|lt|le|gt|ge) )
16563             [[:blank:]\h]+
16564             (?(?&word))
16565             )
16566             )
16567             (?
16568             (?:
16569             (?[a-zA-Z]\w*)
16570             \(
16571             [[:blank:]\h]*
16572             (?
16573             (?> (?&func_words) )?
16574             )
16575             [[:blank:]\h]*
16576             \)
16577             )
16578             |
16579             (?:
16580             ( # paren group 1 (full function)
16581             (?[a-zA-Z_]\w*)? # possible a function with its name, or just parenthesis
16582             (? # paren group 2 (parens)
16583             \(
16584             (? # paren group 3 (contents of parens)
16585             (?:
16586             (?> (?:\\[()]|(?![()]).)+ ) # escaped parens or no parens
16587             |
16588             (?&paren_group) # Recurse to named capture group
16589             )*
16590             )
16591             \)
16592             )
16593             )
16594             )
16595             )
16596             (?
16597             (?:
16598             (?
16599             (?:
16600             (?&word)
16601             [[:blank:]\h]*\,[[:blank:]\h]*
16602             )*
16603             (?&word)
16604             )
16605             (?:
16606             [[:blank:]\h]*\,[[:blank:]\h]*
16607             (? (?&word) )
16608             )?
16609             )
16610             |
16611             (?:
16612             (? (?&word) )
16613             [[:blank:]\h]*\,[[:blank:]\h]*
16614             (? (?-2) )
16615             )
16616             |
16617             (?:
16618             (? (?&word) )
16619             )
16620             )
16621             (?
16622             (?:(?\/)(?(?>\\[[:cntrl:]\/]|[^[:cntrl:]\/])*+)\/(?[i|s|m|g]+)?)
16623             |
16624             (?:m(?[\/\#\$\%\^\|\?\!\'\"\,\;\:\.\_\-])(?(?>\\\g{regsep}|(?!\g{regsep}).)*+)\g{regsep}(?[i|s|m|g]+)?)
16625             )
16626             (?
16627             (?:
16628             (?: (?&substring)[[:blank:]\h]+(?&string) )
16629             )
16630             |
16631             (?:
16632             (?: (?&substring) )
16633             )
16634             )
16635             (?
16636             (?:
16637             (?(?&word))
16638             [[:blank:]\h]+
16639             (?\=\=|\!\=|\<|\<\=|\>|\>\=)
16640             [[:blank:]\h]+
16641             (?(?&word))
16642             )
16643             )
16644             (?
16645             (?:
16646             (?$Regexp::Common::Apache2::REGEXP->{cstring})
16647             )
16648             |
16649             (?:
16650             (? (?&variable) )
16651             )
16652             |
16653             (?:
16654             \$(?\{)?(?${DIGIT})(?()\})
16655             )
16656             )
16657             (?
16658             (?:
16659             \$(?\{)?(?[a-zA-Z\_]\w*)(?()\})
16660             )
16661             |
16662             (?:
16663             \%\{
16664             (?:
16665             (?${FUNCNAME})\:(?(?>\\\}|[^\}])*+)
16666             )
16667             \}
16668             )
16669             |
16670             (?:
16671             \%\{
16672             (?:
16673             (?${VARNAME})
16674             )
16675             \}
16676             )
16677             |
16678             (?:
16679             \bv\(
16680             [[:blank:]\h]*
16681             (?["'])
16682             (?:
16683             (?${VARNAME})
16684             )
16685             [[:blank:]\h]*
16686             \g{var_quote}
16687             \)
16688             )
16689             |
16690             (?:
16691             (?:^|\A|(?
16692             (?
16693             \$(?\{)?
16694             (?${DIGIT})
16695             (?()\})
16696             )
16697             )
16698             )
16699             (?
16700             (?:
16701             (? $Regexp::Common::Apache2::REGEXP_LEGACY->{digits} )
16702             )
16703             |
16704             (?:
16705             (?['"])
16706             (?:
16707             (? (?>\\\g{word_quote}|(?!\g{word_quote}).)*+ )
16708             )
16709             \g{word_quote}
16710             )
16711             |
16712             (?:
16713             (?['"])
16714             (?:
16715             (? (?&string) )
16716             )
16717             \g{word_quote}
16718             )
16719             |
16720             (?:
16721             (? (?: (?-2)\. )+ (?-2) )
16722             )
16723             |
16724             (?:
16725             (?:^|\A|(?\{)?(?${DIGIT})(?()\})
16726             )
16727             |
16728             (?:
16729             (?(?&variable))
16730             )
16731             |
16732             (?:
16733             (? (?&function) )
16734             )
16735             |
16736             (?:
16737             $Regexp::Common::Apache2::REGEXP_LEGACY->{regex}
16738             )
16739             )
16740             (?
16741             (?:
16742             (? (?&word) )
16743             [[:blank:]\h]*\,[[:blank:]\h]*
16744             (? (?-2) )
16745             )
16746             |
16747             (?:
16748             (? (?&word) )
16749             )
16750             )
16751             )
16752             /x;
16753              
16754             pattern name => [qw( Apache2 -legacy=1 -trunk=1 ) ],
16755             create => sub
16756             {
16757 0         0 my( $self, $flags ) = @_;
16758 0         0 my %re = %$REGEXP;
16759             ## Override vanilla regular expressions by the extended ones
16760 0 0       0 if( $flags->{'-legacy'} )
    0          
16761             {
16762 0         0 my @k = keys( %$REGEXP_LEGACY );
16763 0         0 @re{ @k } = @$REGEXP_LEGACY{ @k };
16764             }
16765             elsif( $flags->{'-trunk'} )
16766             {
16767 0         0 my @k = keys( %$TRUNK );
16768 0         0 @re{ @k } = @$TRUNK{ @k };
16769             }
16770 0         0 my $pat = join( '|' => values( %re ) );
16771 0         0 return( "(?k:$pat)" );
16772 22         949 };
16773              
16774             pattern name => [qw( Apache2 Comp )],
16775 22         2451 create => $REGEXP->{comp};
16776              
16777             pattern name => [qw( Apache2 Cond )],
16778 22         2322 create => $REGEXP->{cond};
16779              
16780             pattern name => [qw( Apache2 Digits )],
16781 22         1581 create => $REGEXP->{digits};
16782              
16783             pattern name => [qw( Apache2 Expression )],
16784 22         991 create => $REGEXP->{expr};
16785              
16786             pattern name => [qw( Apache2 Function )],
16787 22         1575 create => $REGEXP->{function};
16788              
16789             pattern name => [qw( Apache2 IntegerComp )],
16790 22         1518 create => $REGEXP->{integercomp};
16791              
16792             pattern name => [qw( Apache2 ListFunc )],
16793 22         1666 create => $REGEXP->{listfunc};
16794              
16795             pattern name => [qw( Apache2 Regexp )],
16796 22         1892 create => $REGEXP->{regex};
16797              
16798             pattern name => [qw( Apache2 String )],
16799 22         1321 create => $REGEXP->{string};
16800              
16801             pattern name => [qw( Apache2 StringComp )],
16802 22         1463 create => $REGEXP->{stringcomp};
16803              
16804             pattern name => [qw( Apache2 Substring )],
16805 22         1543 create => $REGEXP->{substring};
16806              
16807             pattern name => [qw( Apache2 Variable )],
16808 22         1470 create => $REGEXP->{variable};
16809              
16810             pattern name => [qw( Apache2 Word )],
16811 22         1698 create => $REGEXP->{word};
16812              
16813             pattern name => [qw( Apache2 Words )],
16814 22         1565 create => $REGEXP->{words};
16815              
16816             ## Apache2 Trunk expressions
16817             pattern name => [qw( Apache2 TrunkComp )],
16818 22         1478 create => $TRUNK->{comp};
16819              
16820             pattern name => [qw( Apache2 TrunkCond )],
16821 22         1690 create => $TRUNK->{cond};
16822              
16823             pattern name => [qw( Apache2 TrunkDigits )],
16824 22         1620 create => $TRUNK->{digits};
16825              
16826             pattern name => [qw( Apache2 TrunkExpression )],
16827 22         999 create => $TRUNK->{expr};
16828              
16829             pattern name => [qw( Apache2 TrunkFunction )],
16830 22         1709 create => $TRUNK->{function};
16831              
16832             pattern name => [qw( Apache2 TrunkIntegerComp )],
16833 22         1823 create => $TRUNK->{integercomp};
16834              
16835             pattern name => [qw( Apache2 TrunkJoin )],
16836 22         1684 create => $TRUNK->{join};
16837              
16838             pattern name => [qw( Apache2 TrunkList )],
16839 22         1809 create => $TRUNK->{list};
16840              
16841             pattern name => [qw( Apache2 TrunkListFunc )],
16842 22         1618 create => $TRUNK->{listfunc};
16843              
16844             pattern name => [qw( Apache2 TrunkRegany )],
16845 22         1588 create => $TRUNK->{regany};
16846              
16847             pattern name => [qw( Apache2 TrunkRegexp )],
16848 22         1210 create => $TRUNK->{regex};
16849              
16850             pattern name => [qw( Apache2 TrunkRegsub )],
16851 22         1066 create => $TRUNK->{regsub};
16852              
16853             pattern name => [qw( Apache2 TrunkSplit )],
16854 22         995 create => $TRUNK->{split};
16855              
16856             pattern name => [qw( Apache2 TrunkString )],
16857 22         1685 create => $TRUNK->{string};
16858              
16859             pattern name => [qw( Apache2 TrunkStringComp )],
16860 22         1623 create => $TRUNK->{stringcomp};
16861              
16862             pattern name => [qw( Apache2 TrunkSub )],
16863 22         1616 create => $TRUNK->{sub};
16864              
16865             pattern name => [qw( Apache2 TrunkSubstring )],
16866 22         1633 create => $TRUNK->{substring};
16867              
16868             pattern name => [qw( Apache2 TrunkVariable )],
16869 22         1664 create => $TRUNK->{variable};
16870              
16871             pattern name => [qw( Apache2 TrunkWord )],
16872 22         2003 create => $TRUNK->{word};
16873              
16874             pattern name => [qw( Apache2 TrunkWords )],
16875 22         1750 create => $TRUNK->{words};
16876              
16877             ## Legacy expressions
16878             pattern name => [qw( Apache2 LegacyComp )],
16879 22         2054 create => $REGEXP_LEGACY->{comp};
16880              
16881             pattern name => [qw( Apache2 LegacyCond )],
16882 22         1625 create => $REGEXP_LEGACY->{cond};
16883              
16884             pattern name => [qw( Apache2 LegacyDigits )],
16885 22         1509 create => $REGEXP_LEGACY->{digits};
16886              
16887             pattern name => [qw( Apache2 LegacyExpression )],
16888 22         1034 create => $REGEXP_LEGACY->{expr};
16889              
16890             pattern name => [qw( Apache2 LegacyFunction )],
16891 22         1636 create => $REGEXP_LEGACY->{function};
16892              
16893             pattern name => [qw( Apache2 LegacyIntegerComp )],
16894 22         1575 create => $REGEXP_LEGACY->{integercomp};
16895              
16896             pattern name => [qw( Apache2 LegacyListFunc )],
16897 22         1852 create => $REGEXP_LEGACY->{listfunc};
16898              
16899             pattern name => [qw( Apache2 LegacyRegexp )],
16900 22         1759 create => $REGEXP_LEGACY->{regex};
16901              
16902             pattern name => [qw( Apache2 LegacyString )],
16903 22         1169 create => $REGEXP_LEGACY->{string};
16904              
16905             pattern name => [qw( Apache2 LegacyStringComp )],
16906 22         1538 create => $REGEXP_LEGACY->{stringcomp};
16907              
16908             pattern name => [qw( Apache2 LegacySubstring )],
16909 22         1454 create => $REGEXP_LEGACY->{substring};
16910              
16911             pattern name => [qw( Apache2 LegacyVariable )],
16912 22         1547 create => $REGEXP_LEGACY->{variable};
16913              
16914             pattern name => [qw( Apache2 LegacyWord )],
16915 22         1685 create => $REGEXP_LEGACY->{word};
16916              
16917             pattern name => [qw( Apache2 LegacyWords )],
16918 22         1551 create => $REGEXP_LEGACY->{words};
16919             };
16920              
16921             {
16922             package
16923             Regexp::Common::Apache2::Boolean;
16924             BEGIN
16925             {
16926 22     22   4679 use strict;
  22         42  
  22         566  
16927 22     22   91 use warnings;
  22         40  
  22         2242  
16928             use overload
16929 0     0   0 "0+" => sub{ ${$_[0]} },
  0         0  
16930 0     0   0 "++" => sub{ $_[0] = ${$_[0]} + 1 },
  0         0  
16931 0     0   0 "--" => sub{ $_[0] = ${$_[0]} - 1 },
  0         0  
16932 22     22   113 fallback => 1;
  22         39  
  22         251  
16933 22     22   6936 our( $VERSION ) = '0.1.0';
16934             };
16935              
16936 0 0   0     sub new { return( $_[1] ? $true : $false ); }
16937              
16938 0     0     sub defined { return( 1 ); }
16939              
16940             our $true = do{ bless( \( my $dummy = 1 ) => Regexp::Common::Apache2::Boolean ) };
16941             our $false = do{ bless( \( my $dummy = 0 ) => Regexp::Common::Apache2::Boolean ) };
16942              
16943 0     0     sub true () { $true }
16944 0     0     sub false () { $false }
16945              
16946 0     0     sub is_bool ($) { UNIVERSAL::isa( $_[0], Regexp::Common::Apache2::Boolean ) }
16947 0 0   0     sub is_true ($) { $_[0] && UNIVERSAL::isa( $_[0], Regexp::Common::Apache2::Boolean ) }
16948 0 0   0     sub is_false ($) { !$_[0] && UNIVERSAL::isa( $_[0], Regexp::Common::Apache2::Boolean ) }
16949              
16950             sub TO_JSON
16951             {
16952             ## JSON does not check that the value is a proper true or false. It stupidly assumes this is a string
16953             ## The only way to make it understand is to return a scalar ref of 1 or 0
16954             # return( $_[0] ? 'true' : 'false' );
16955 0 0   0     return( $_[0] ? \1 : \0 );
16956             }
16957             }
16958              
16959             1;
16960              
16961             __END__