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   27 use 5.012;
  2         6  
4 2     2   8 no warnings 'experimental';
  2         4  
  2         56  
5              
6 2     2   26 use Exporter;
  2         5  
  2         165  
7             our @ISA = qw(Exporter);
8             our @EXPORT = qw(get_spp_grammar);
9              
10             sub get_spp_grammar {
11             return <<'EOF'
12              
13              
14             door = |_ Spec|+ $ ;
15              
16             _ = |\s+ _comm|+ ;
17             _comm = '//' ~ $$ ;
18              
19             Spec = Token \s* '=' |_ Branch rule|+ |';' $| ;
20              
21             rule = |
22             Group Token Str String Kstr
23             Cclass Char Chclass
24             Sym Expr Assert Any
25             Look Not Till
26             | ;
27              
28             Branch = '|' |_ rule|+ '|' ;
29             Group = '{' |_ Branch rule|+ '}' ;
30              
31             Token = [\a\-]+ ;
32             Kstr = ':' [\a\-]+ ;
33              
34             Str = \' |Chars Char|+ \' ;
35             Chars = [^\\']+ ;
36              
37             String = \" |Schars Char|+ \" ;
38             Schars = [^\\"]+ ;
39              
40             Cclass = \\ [ adhlsuvwxADHLSUVWX] ;
41             Char = \\ . ;
42              
43             Chclass = \[ Flip? |_ Cclass Char Range Cchar|+ \] ;
44             Flip = '^' ;
45             Range = \w \- \w ;
46             Cchar = [^ \s \] \/ \\] ;
47              
48             Assert = | '^^' '$$' '^' '$' | ;
49             Any = '.' ;
50              
51             Look = Rept Flag? ;
52             Rept = [?*+] ;
53             Flag = '?' ;
54             Not = '!' ;
55             Till = '~' ;
56              
57             Sym = [@$] [\a\-]+ ;
58             Sub = [\a\-]+ ;
59             Expr = '(' |_ atom|+ ')' ;
60             Array = '[' |_ atom|* ']' ;
61             atom = | Array Sub Sym Kstr | ;
62              
63              
64             EOF
65 0     0 0   }
66             1;