File Coverage

blib/lib/Spp/Grammar.pm
Criterion Covered Total %
statement 8 9 88.8
branch n/a
condition n/a
subroutine 3 4 75.0
pod 0 1 0.0
total 11 14 78.5


line stmt bran cond sub pod time code
1             package Spp::Grammar;
2              
3 2     2   31 use 5.012;
  2         5  
4 2     2   9 no warnings "experimental";
  2         4  
  2         66  
5              
6 2     2   11 use Exporter;
  2         34  
  2         192  
7             our @ISA = qw(Exporter);
8             our @EXPORT = qw(get_grammar);
9              
10             sub get_grammar {
11             return << 'EOF'
12              
13             spp = |_ Spec|+ $ ;
14              
15             _ = |\s+ _comm|+ ;
16             _comm = '//' ~ $$ ;
17              
18             Spec = Token \s* '=' |_ Branch @rule|+ |';' $| ;
19            
20             @rule = |
21             Group In Out Qstr Qint
22             Token Str String Kstr Point
23             Cclass Char Chclass
24             Sym Expr Assert Any
25             Look Not Till Int
26             | ;
27              
28             Branch = '|' |_ @rule|+ '|' ;
29             Group = '{' |_ Branch @rule|+ '}' ;
30              
31             In = '<' ;
32             Out = '>' ;
33             Qstr = '#' ;
34             Qint = '&' ;
35              
36             Token = [@\a\-]+ ;
37             Kstr = ':' [\a\-]+ ;
38             Point = '0x' \x+ ;
39              
40             Str = \' |Chars Char|+ \' ;
41             Chars = [^\\']+ ;
42              
43             String = \" |Schars Char|+ \" ;
44             Schars = [^\\"]+ ;
45              
46             Cclass = \\ [ adhlsuvwxADHLSUVWX] ;
47             Char = \\ . ;
48              
49             Chclass = \[ Flip? |_ Cclass Char Range Cchar|+ \] ;
50             Flip = '^' ;
51             Range = \w \- \w ;
52             Cchar = [^ \s \] \/ \\] ;
53              
54             Assert = | '^^' '$$' '^' '$' | ;
55             Any = '.' ;
56              
57             Look = Rept Flag? ;
58             Rept = [?*+] ;
59             Flag = '?' ;
60             Not = '!' ;
61             Till = '~' ;
62              
63             Sym = '$' [\a\-]+ ;
64             Expr = '(' |_ @atom|+ ')' ;
65             Array = '[' |_ @atom|* ']' ;
66             Sub = [\a\-]+ ;
67             Int = \d+ ;
68             @atom = | Expr Array Str Sub Sym Kstr Int | ;
69              
70             EOF
71 0     0 0   }
72              
73             1;