File Coverage

blib/lib/MarpaX/Languages/ECMAScript/AST/Grammar/CharacterClasses.pm
Criterion Covered Total %
statement 82 122 67.2
branch n/a
condition n/a
subroutine 61 101 60.4
pod 96 96 100.0
total 239 319 74.9


line stmt bran cond sub pod time code
1 1     1   5 use strict;
  1         2  
  1         37  
2 1     1   5 use warnings FATAL => 'all';
  1         3  
  1         54  
3              
4             package MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses;
5 1     1   5 use Exporter 'import';
  1         2  
  1         36  
6 1     1   1084 use Encode qw/decode/;
  1         13229  
  1         2281  
7              
8             # ABSTRACT: ECMAScript, character classes
9              
10             our $VERSION = '0.018'; # VERSION
11              
12              
13             our @EXPORT_OK = qw/
14             BOM
15             BS
16             CR
17             FF
18             Isb
19             IsBackslash
20             IsBOM
21             IsCaret
22             IsCR
23             IsDecimalDigit
24             IsDollar
25             IsDot
26             IsDquote
27             IseOrE
28             Ise
29             IsE
30             IsEight
31             IsEscapeCharacter
32             IsExponentIndicator
33             Isf
34             IsFF
35             IsHexDigit
36             IsIdentityEscape
37             IsLbracket
38             IsLcurly
39             IsLF
40             IsLineTerminator
41             IsLparen
42             IsLS
43             IsMinus
44             Isn
45             IsNBSP
46             IsNine
47             IsNonZeroDigit
48             IsNULL
49             IsOctalDigit
50             IsPatternCharacter
51             IsPipe
52             IsPlus
53             IsPS
54             IsQuestion_Mark
55             Isr
56             IsRbracket
57             IsRcurly
58             IsRegularExpressionNonTerminator
59             IsRegularExpressionNonTerminatorButNotOneOfBackslashOrSlashOrLbracket
60             IsRegularExpressionNonTerminatorButNotOneOfRbracketOrBackslash
61             IsRegularExpressionNonTerminatorButNotOneOfStarOrBackslashOrSlashOrLbracket
62             IsRparen
63             IsSingleEscapeCharacter
64             IsSlash
65             IsSourceCharacter
66             IsSourceCharacterButNotLineTerminator
67             IsSourceCharacterButNotOneOfBackslashOrRbracketOrMinus
68             IsSourceCharacterButNotOneOfDquoteOrBackslashOrLineTerminator
69             IsSourceCharacterButNotOneOfDquoteOrBackslashOrU0000ThroughU001F
70             IsSourceCharacterButNotOneOfEscapeCharacterOrLineTerminator
71             IsSourceCharacterButNotOneOfSlashOrStar
72             IsSourceCharacterButNotOneOfSlashOrStarOrLineTerminator
73             IsSourceCharacterButNotOneOfSquoteOrBackslashOrLineTerminator
74             IsSourceCharacterButNotSlash
75             IsSourceCharacterButNotStar
76             IsSourceCharacterButNotStarOrLineTerminator
77             IsSP
78             IsSquote
79             IsStar
80             Ist
81             IsTAB
82             Isu
83             IsU0000ThroughU001F
84             IsUnderscore
85             IsUnicodeCombiningMark
86             IsUnicodeConnectorPunctuation
87             IsUnicodeDigit
88             IsUnicodeLetter
89             IsUSP
90             Isv
91             IsVT
92             IsWhiteSpace
93             Isx
94             IsZero
95             IsZeroToThree
96             IsFourToSeven
97             IsZWJ
98             IsZWNJ
99             LineTerminator
100             LF
101             LS
102             NBSP
103             NULL
104             PS
105             SP
106             TAB
107             USP
108             VT
109             WhiteSpace
110             /;
111             our %EXPORT_TAGS = ('all' => \@EXPORT_OK);
112              
113             our $STAR = sprintf('%x', ord('*'));
114             our $SLASH = sprintf('%x', ord('/'));
115             our $BACKSLASH = sprintf('%x', ord('\\'));
116             our $DQUOTE = sprintf('%x', ord('"'));
117             our $SQUOTE = sprintf('%x', ord("'"));
118             our $a = sprintf('%x', ord('a'));
119             our $b = sprintf('%x', ord('b'));
120             our $c = sprintf('%x', ord('c'));
121             our $d = sprintf('%x', ord('d'));
122             our $e = sprintf('%x', ord('e'));
123             our $f = sprintf('%x', ord('f'));
124             our $n = sprintf('%x', ord('n'));
125             our $r = sprintf('%x', ord('r'));
126             our $t = sprintf('%x', ord('t'));
127             our $u = sprintf('%x', ord('u'));
128             our $v = sprintf('%x', ord('v'));
129             our $x = sprintf('%x', ord('x'));
130             our $A = sprintf('%x', ord('A'));
131             our $B = sprintf('%x', ord('B'));
132             our $C = sprintf('%x', ord('C'));
133             our $D = sprintf('%x', ord('D'));
134             our $E = sprintf('%x', ord('E'));
135             our $F = sprintf('%x', ord('F'));
136             our $LBRACKET = sprintf('%x', ord('['));
137             our $RBRACKET = sprintf('%x', ord(']'));
138             our $LPAREN = sprintf('%x', ord('('));
139             our $RPAREN = sprintf('%x', ord(')'));
140             our $LCURLY = sprintf('%x', ord('{'));
141             our $RCURLY = sprintf('%x', ord('}'));
142             our $CARET = sprintf('%x', ord('^'));
143             our $DOLLAR = sprintf('%x', ord('$'));
144             our $UNDERSCORE = sprintf('%x', ord('_'));
145             our $DOT = sprintf('%x', ord('.'));
146             our $PLUS = sprintf('%x', ord('+'));
147             our $QUESTION_MARK = sprintf('%x', ord('?'));
148             our $PIPE = sprintf('%x', ord('|'));
149             our $MINUS = sprintf('%x', ord('-'));
150             our $ZERO = sprintf('%x', ord('0'));
151             our $ONE = sprintf('%x', ord('1'));
152             our $TWO = sprintf('%x', ord('2'));
153             our $THREE = sprintf('%x', ord('3'));
154             our $FOUR = sprintf('%x', ord('4'));
155             our $FIVE = sprintf('%x', ord('5'));
156             our $SIX = sprintf('%x', ord('6'));
157             our $SEVEN = sprintf('%x', ord('7'));
158             our $EIGHT = sprintf('%x', ord('8'));
159             our $NINE = sprintf('%x', ord('9'));
160              
161              
162 6     6 1 326 sub IsWhiteSpace { return <
163             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsTAB
164             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsVT
165             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsFF
166             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsSP
167             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsNBSP
168             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsBOM
169             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsUSP
170             END
171             }
172              
173              
174             sub WhiteSpace { return [
175 1         4 @{TAB()},
  1         5  
176 1         6 @{VT()},
177 1         6 @{FF()},
178 1         4 @{SP()},
179 1         4 @{NBSP()},
180 1         5 @{BOM()},
181 1     1 1 3 @{USP()},
182             ];
183             }
184              
185              
186 24     24 1 2035 sub IsSourceCharacter { return <
187             +utf8::Any
188             END
189             }
190              
191              
192 0     0 1 0 sub IsZWNJ { return <
193             200C
194             END
195             }
196              
197              
198 0     0 1 0 sub IsZWJ { return <
199             200D
200             END
201             }
202              
203              
204 6     6 1 522 sub IsBOM { return <
205             FEFF
206             END
207             }
208              
209              
210 1     1 1 3 sub BOM { return [ "\N{U+FEFF}" ] }
211              
212              
213 0     0 1 0 sub BS { return [ "\N{U+0008}" ] }
214              
215              
216 6     6 1 609 sub IsTAB { return <
217             0009
218             END
219             }
220              
221              
222 1     1 1 4 sub TAB { return [ "\N{U+0009}" ] }
223              
224              
225 6     6 1 570 sub IsVT { return <
226             000B
227             END
228             }
229              
230              
231 1     1 1 3 sub VT { return [ "\N{U+000B}" ] }
232              
233              
234 6     6 1 563 sub IsFF { return <
235             000C
236             END
237             }
238              
239              
240 1     1 1 4 sub FF { return [ "\N{U+000C}" ] }
241              
242              
243 6     6 1 538 sub IsSP { return <
244             0020
245             END
246             }
247              
248              
249 1     1 1 4 sub SP { return [ "\N{U+0020}" ] }
250              
251              
252 6     6 1 530 sub IsNBSP { return <
253             00A0
254             END
255             }
256              
257              
258 1     1 1 4 sub NBSP { return [ "\N{U+00A0}" ] }
259              
260              
261 6     6 1 538 sub IsUSP { return <
262             +utf8::Zs
263             END
264             }
265              
266              
267             our @USP = ();
268             {
269             #
270             # We do as "unichars". And hardcode restriction to 65535, i.e.
271             # the maximum supported by ECMAScript
272             #
273             foreach (0..65535) {
274             # gaggy UTF-16 surrogates are invalid UTF-8 code points
275             next if ($_ >= 0xD800 && $_ <= 0xDFFF);
276              
277             # from utf8.c in perl src; must avoid fatals in 5.10
278             next if ($_ >= 0xFDD0 && $_ <= 0xFDEF);
279              
280             next if (0xFFFE == ($_ & 0xFFFE)); # both FFFE and FFFF
281              
282             # see "Unicode non-character %s is illegal for interchange" in perldiag(1)
283 1     1   11 $_ = do { no warnings "utf8"; chr($_) };
  1         4  
  1         133  
284              
285             # fixes "the Unicode bug"
286             unless (utf8::is_utf8($_)) {
287             $_ = decode("iso-8859-1", $_);
288             }
289              
290             if ($_ =~ /\p{Zs}/) {
291             push(@USP, $_);
292             }
293             }
294             }
295              
296 1     1 1 14 sub USP { return \@USP }
297              
298              
299 21     21 1 2443 sub IsLF { return <
300             000A
301             END
302             }
303              
304              
305 1     1 1 5 sub LF { return [ "\N{U+000A}" ]; }
306              
307              
308 21     21 1 22984 sub IsCR { return <
309             000D
310             END
311             }
312              
313              
314 1     1 1 4 sub CR { return [ "\N{U+000D}" ]; }
315              
316              
317 0     0 1 0 sub IsNULL { return <
318             0000
319             END
320             }
321              
322              
323 0     0 1 0 sub NULL { return [ "\N{U+0000}" ]; }
324              
325              
326 20     20 1 2204 sub IsLS { return <
327             2028
328             END
329             }
330              
331              
332 1     1 1 4 sub LS { return [ "\N{U+2028}" ]; }
333              
334              
335 20     20 1 2115 sub IsPS { return <
336             2029
337             END
338             }
339              
340              
341 1     1 1 7 sub PS { return [ "\N{U+2029}" ]; }
342              
343              
344 6     6 1 851 sub IsSourceCharacterButNotStar { return <
345             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsSourceCharacter
346             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsStar
347             END
348             }
349              
350              
351 0     0 1 0 sub IsSourceCharacterButNotStarOrLineTerminator { return <
352             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsSourceCharacter
353             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsStar
354             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsLineTerminator
355             END
356             }
357              
358              
359 0     0 1 0 sub IsSourceCharacterButNotOneOfDquoteOrBackslashOrU0000ThroughU001F { return <
360             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsSourceCharacter
361             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsDquote
362             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsBackslash
363             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsU0000ThroughU001F
364             END
365             }
366              
367              
368 0     0 1 0 sub IsSourceCharacterButNotOneOfSlashOrStar { return <
369             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsSourceCharacter
370             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsSlash
371             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsStar
372             END
373             }
374              
375              
376 6     6 1 652 sub IsSourceCharacterButNotSlash { return <
377             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsSourceCharacter
378             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsSlash
379             END
380             }
381              
382              
383 0     0 1 0 sub IsSourceCharacterButNotOneOfSlashOrStarOrLineTerminator { return <
384             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsSourceCharacter
385             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsSlash
386             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsStar
387             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsLineTerminator
388             END
389             }
390              
391              
392 18     18 1 2916 sub IsLineTerminator { return <
393             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsLF
394             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsCR
395             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsLS
396             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsPS
397             END
398             }
399              
400              
401             sub LineTerminator { return
402             [
403 1         6 @{LF()},
  1         7  
404 1         4 @{CR()},
405 1         8 @{LS()},
406 1     1 1 3 @{PS()}
407             ]; }
408              
409              
410 6     6 1 715 sub IsSourceCharacterButNotLineTerminator { return <
411             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsSourceCharacter
412             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsLineTerminator
413             END
414             }
415              
416              
417 2     2 1 265 sub IsUnicodeLetter { return <
418             +utf8::Lu
419             +utf8::Ll
420             +utf8::Lt
421             +utf8::Lm
422             +utf8::Lo
423             +utf8::Nl
424             END
425             }
426              
427              
428 0     0 1 0 sub IsUnicodeCombiningMark { return <
429             +utf8::Mn
430             +utf8::Mc
431             END
432             }
433              
434              
435 0     0 1 0 sub IsUnicodeDigit { return <
436             +utf8::Nd
437             END
438             }
439              
440              
441 0     0 1 0 sub IsUnicodeConnectorPunctuation { return <
442             +utf8::Pc
443             END
444             }
445              
446              
447 0     0 1 0 sub IsU0000ThroughU001F { return <
448             0000\t001F
449             END
450             }
451              
452              
453 2     2 1 535 sub IsSourceCharacterButNotOneOfDquoteOrBackslashOrLineTerminator { return <
454             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsSourceCharacter
455             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsDquote
456             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsBackslash
457             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsLineTerminator
458             END
459             }
460              
461              
462 2     2 1 669 sub IsSourceCharacterButNotOneOfSquoteOrBackslashOrLineTerminator { return <
463             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsSourceCharacter
464             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsSquote
465             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsBackslash
466             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsLineTerminator
467             END
468             }
469              
470              
471 4     4 1 822 sub IsSingleEscapeCharacter { return <
472             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsSquote
473             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsDquote
474             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsBackslash
475             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::Isb
476             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::Isf
477             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::Isn
478             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::Isr
479             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::Ist
480             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::Isv
481             END
482             }
483              
484             #
485             # Note: PosixDigit is a perl extension, changed to be coherent with RT #91120
486             #
487              
488 5     5 1 713 sub IsDecimalDigit { return <
489             $ZERO\t$NINE
490             END
491             }
492              
493              
494 2     2 1 531 sub IsOctalDigit { return <
495             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsDecimalDigit
496             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsEight
497             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsNine
498             END
499             }
500              
501              
502 0     0 1 0 sub IsNonZeroDigit { return <
503             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsDecimalDigit
504             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsZero
505             END
506             }
507              
508              
509 2     2 1 358 sub IsEscapeCharacter { return <
510             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsSingleEscapeCharacter
511             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsDecimalDigit
512             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::Isx
513             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::Isu
514             END
515             }
516              
517              
518 2     2 1 552 sub IsSourceCharacterButNotOneOfEscapeCharacterOrLineTerminator { return <
519             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsSourceCharacter
520             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsEscapeCharacter
521             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsLineTerminator
522             END
523             }
524              
525              
526 0     0 1 0 sub IsRegularExpressionNonTerminator { return <
527             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsSourceCharacter
528             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsLineTerminator
529             END
530             }
531              
532              
533 0     0 1 0 sub IsRegularExpressionNonTerminatorButNotOneOfStarOrBackslashOrSlashOrLbracket { return <
534             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsRegularExpressionNonTerminator
535             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsStar
536             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsBackslash
537             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsSlash
538             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsLbracket
539             END
540             }
541              
542              
543 0     0 1 0 sub IsRegularExpressionNonTerminatorButNotOneOfBackslashOrSlashOrLbracket { return <
544             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsRegularExpressionNonTerminator
545             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsBackslash
546             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsSlash
547             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsLbracket
548             END
549             }
550              
551              
552 0     0 1 0 sub IsRegularExpressionNonTerminatorButNotOneOfRbracketOrBackslash { return <
553             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsRegularExpressionNonTerminator
554             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsRbracket
555             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsBackslash
556             END
557             }
558              
559             #
560             # Note: PosixXDigit is a perl extension, not available before perl-5.12.5 RT #91120
561             #
562              
563 4     4 1 6460 sub IsHexDigit { return <
564             $ZERO\t$NINE
565             $A\t$F
566             $a\t$f
567             END
568             }
569              
570              
571 0     0 1 0 sub IsIdentityEscape { return <
572             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsSourceCharacter
573             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsUnicodeLetter
574             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsDollar
575             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsUnderscore
576             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsUnicodeCombiningMark
577             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsUnicodeDigit
578             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsUnicodeConnectorPunctuation
579             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsZWNJ
580             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsZWJ
581             END
582             }
583              
584              
585 0     0 1 0 sub IsExponentIndicator { return <
586             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::Ise
587             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsE
588             END
589             }
590              
591              
592 0     0 1 0 sub IsPatternCharacter { return <
593             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsRegularExpressionNonTerminator
594             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsCaret
595             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsDollar
596             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsBackslash
597             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsDot
598             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsStar
599             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsPlus
600             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsQuestion_Mark
601             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsLparen
602             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsRparen
603             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsLbracket
604             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsRbracket
605             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsLcurly
606             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsRcurly
607             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsPipe
608             END
609             }
610              
611              
612 0     0 1 0 sub IsSourceCharacterButNotOneOfBackslashOrRbracketOrMinus { return <
613             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsSourceCharacter
614             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsBackslash
615             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsRbracket
616             -MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsMinus
617             END
618             }
619              
620             # -------------------------------------------------------------------
621              
622              
623 2     2 1 222 sub Isx { return <
624             $x
625             END
626             }
627              
628              
629 2     2 1 197 sub Isu { return <
630             $u
631             END
632             }
633              
634              
635 0     0 1 0 sub IsUnderscore { return <
636             $UNDERSCORE
637             END
638             }
639              
640              
641 4     4 1 409 sub Isv { return <
642             $v
643             END
644             }
645              
646              
647 6     6 1 924 sub IsStar { return <
648             $STAR
649             END
650             }
651              
652              
653 8     8 1 835 sub IsBackslash { return <
654             $BACKSLASH
655             END
656             }
657              
658              
659 0     0 1 0 sub IsCaret { return <
660             $CARET
661             END
662             }
663              
664              
665 0     0 1 0 sub IsDollar { return <
666             $DOLLAR
667             END
668             }
669              
670              
671 0     0 1 0 sub IsDot { return <
672             $DOT
673             END
674             }
675              
676              
677 0     0 1 0 sub IsLparen { return <
678             $LPAREN
679             END
680             }
681              
682              
683 0     0 1 0 sub IsRparen { return <
684             $RPAREN
685             END
686             }
687              
688              
689 0     0 1 0 sub IsLcurly { return <
690             $LCURLY
691             END
692             }
693              
694              
695 0     0 1 0 sub IsRcurly { return <
696             $RCURLY
697             END
698             }
699              
700              
701 0     0 1 0 sub IsQuestion_Mark { return <
702             $QUESTION_MARK
703             END
704             }
705              
706              
707 0     0 1 0 sub IsPlus { return <
708             $PLUS
709             END
710             }
711              
712              
713 0     0 1 0 sub IsMinus { return <
714             $MINUS
715             END
716             }
717              
718              
719 8     8 1 190391 sub IsSquote { return <
720             $SQUOTE
721             END
722             }
723              
724              
725 6     6 1 865 sub IsDquote { return <
726             $DQUOTE
727             END
728             }
729              
730              
731 0     0 1 0 sub IsPipe { return <
732             $PIPE
733             END
734             }
735              
736              
737 6     6 1 1037 sub IsSlash { return <
738             $SLASH
739             END
740             }
741              
742              
743 0     0 1 0 sub IsLbracket { return <
744             $LBRACKET
745             END
746             }
747              
748              
749 0     0 1 0 sub IsRbracket { return <
750             $RBRACKET
751             END
752             }
753              
754              
755              
756 4     4 1 400 sub Isb { return <
757             $b
758             END
759             }
760              
761              
762 4     4 1 405 sub Isf { return <
763             $f
764             END
765             }
766              
767              
768 0     0 1 0 sub Ise { return <
769             $e
770             END
771             }
772              
773              
774 0     0 1 0 sub IsE { return <
775             $E
776             END
777             }
778              
779              
780 0     0 1 0 sub IseOrE { return <
781             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::Ise
782             +MarpaX::Languages::ECMAScript::AST::Grammar::CharacterClasses::IsE
783             END
784             }
785              
786              
787 4     4 1 408 sub Isn { return <
788             $n
789             END
790             }
791              
792              
793 4     4 1 401 sub Isr { return <
794             $r
795             END
796             }
797              
798              
799 4     4 1 400 sub Ist { return <
800             $t
801             END
802             }
803              
804              
805 0     0 1 0 sub IsZero { return <
806             $ZERO
807             END
808             }
809              
810              
811 2     2 1 211 sub IsEight { return <
812             $EIGHT
813             END
814             }
815              
816              
817 2     2 1 211 sub IsNine { return <
818             $NINE
819             END
820             }
821              
822              
823 2     2 1 499 sub IsZeroToThree { return <
824             $ZERO
825             $ONE
826             $TWO
827             $THREE
828             END
829             }
830              
831              
832 2     2 1 531 sub IsFourToSeven { return <
833             $FOUR
834             $FIVE
835             $SIX
836             $SEVEN
837             END
838             }
839              
840              
841             1;
842              
843             __END__