File Coverage

blib/lib/Pegex/TOML/Grammar.pm
Criterion Covered Total %
statement 6 7 85.7
branch n/a
condition n/a
subroutine 2 3 66.6
pod 1 1 100.0
total 9 11 81.8


line stmt bran cond sub pod time code
1             package Pegex::TOML::Grammar;
2 1     1   7 use Pegex::Base;
  1         3  
  1         6  
3             extends 'Pegex::Grammar';
4              
5 1     1   1334 use constant file => './share/toml.pgx';
  1         2  
  1         1025  
6              
7             sub make_tree { # Generated/Inlined by Pegex::Grammar (0.72)
8             {
9 0     0 1   '+grammar' => 'toml',
10             '+include' => 'pegex-atoms',
11             '+toprule' => 'toml',
12             '+version' => '0.0.1',
13             '_' => {
14             '.rgx' => qr/\G[\ \t]*/
15             },
16             'array' => {
17             '.any' => [
18             {
19             '.ref' => 'empty_array'
20             },
21             {
22             '.ref' => 'string_array'
23             },
24             {
25             '.ref' => 'datetime_array'
26             },
27             {
28             '.ref' => 'float_array'
29             },
30             {
31             '.ref' => 'integer_array'
32             },
33             {
34             '.ref' => 'boolean_array'
35             },
36             {
37             '.ref' => 'array_array'
38             }
39             ]
40             },
41             'array_array' => {
42             '.all' => [
43             {
44             '.rgx' => qr/\G\[/
45             },
46             {
47             '.ref' => '_'
48             },
49             {
50             '.all' => [
51             {
52             '.ref' => 'array'
53             },
54             {
55             '+min' => 0,
56             '-flat' => 1,
57             '.all' => [
58             {
59             '.ref' => 'comma'
60             },
61             {
62             '.ref' => 'array'
63             }
64             ]
65             }
66             ]
67             },
68             {
69             '.ref' => '_'
70             },
71             {
72             '.rgx' => qr/\G\]/
73             }
74             ]
75             },
76             'boolean' => {
77             '.rgx' => qr/\G(true|false)/
78             },
79             'boolean_array' => {
80             '.all' => [
81             {
82             '.rgx' => qr/\G\[/
83             },
84             {
85             '.ref' => '_'
86             },
87             {
88             '.all' => [
89             {
90             '.ref' => 'boolean'
91             },
92             {
93             '+min' => 0,
94             '-flat' => 1,
95             '.all' => [
96             {
97             '.ref' => 'comma'
98             },
99             {
100             '.ref' => 'boolean'
101             }
102             ]
103             }
104             ]
105             },
106             {
107             '.ref' => '_'
108             },
109             {
110             '.rgx' => qr/\G\]/
111             }
112             ]
113             },
114             'comma' => {
115             '.rgx' => qr/\G(?:[\ \t]*,[\ \t]*)/
116             },
117             'datetime' => {
118             '.rgx' => qr/\G((?:[1-9][0-9][0-9][0-9])\-(digit[0-9])\-(digit[0-9])T(digit[0-9]):(digit[0-9]):(digit[0-9])(\.[0-9]+)?Z)/
119             },
120             'datetime_array' => {
121             '.all' => [
122             {
123             '.rgx' => qr/\G\[/
124             },
125             {
126             '.ref' => '_'
127             },
128             {
129             '.all' => [
130             {
131             '.ref' => 'datetime'
132             },
133             {
134             '+min' => 0,
135             '-flat' => 1,
136             '.all' => [
137             {
138             '.ref' => 'comma'
139             },
140             {
141             '.ref' => 'datetime'
142             }
143             ]
144             }
145             ]
146             },
147             {
148             '.ref' => '_'
149             },
150             {
151             '.rgx' => qr/\G\]/
152             }
153             ]
154             },
155             'document' => {
156             '+min' => 1,
157             '.ref' => 'key_group'
158             },
159             'empty_array' => {
160             '.all' => [
161             {
162             '.rgx' => qr/\G\[/
163             },
164             {
165             '.ref' => '_'
166             },
167             {
168             '.rgx' => qr/\G\]/
169             }
170             ]
171             },
172             'float' => {
173             '.rgx' => qr/\G((?:\-?[1-9][0-9]*)\.[0-9]+)/
174             },
175             'float_array' => {
176             '.all' => [
177             {
178             '.rgx' => qr/\G\[/
179             },
180             {
181             '.ref' => '_'
182             },
183             {
184             '.all' => [
185             {
186             '.ref' => 'float'
187             },
188             {
189             '+min' => 0,
190             '-flat' => 1,
191             '.all' => [
192             {
193             '.ref' => 'comma'
194             },
195             {
196             '.ref' => 'float'
197             }
198             ]
199             }
200             ]
201             },
202             {
203             '.ref' => '_'
204             },
205             {
206             '.rgx' => qr/\G\]/
207             }
208             ]
209             },
210             'header_line' => {
211             '.all' => [
212             {
213             '.ref' => 'ignore'
214             },
215             {
216             '.rgx' => qr/\G\[/
217             },
218             {
219             '.ref' => 'key_name'
220             },
221             {
222             '.rgx' => qr/\G\]/
223             },
224             {
225             '.ref' => 'line_end'
226             }
227             ]
228             },
229             'ignore' => {
230             '.rgx' => qr/\G(?:(?:(?:\#.*)|[\ \t]|\r?\n)*)/
231             },
232             'integer' => {
233             '.rgx' => qr/\G((?:\-?[1-9][0-9]*))/
234             },
235             'integer_array' => {
236             '.all' => [
237             {
238             '.rgx' => qr/\G\[/
239             },
240             {
241             '.ref' => '_'
242             },
243             {
244             '.all' => [
245             {
246             '.ref' => 'integer'
247             },
248             {
249             '+min' => 0,
250             '-flat' => 1,
251             '.all' => [
252             {
253             '.ref' => 'comma'
254             },
255             {
256             '.ref' => 'integer'
257             }
258             ]
259             }
260             ]
261             },
262             {
263             '.ref' => '_'
264             },
265             {
266             '.rgx' => qr/\G\]/
267             }
268             ]
269             },
270             'key_group' => {
271             '.all' => [
272             {
273             '+max' => 1,
274             '.ref' => 'header_line'
275             },
276             {
277             '+min' => 1,
278             '.ref' => 'value_line'
279             },
280             {
281             '.ref' => 'ignore'
282             }
283             ]
284             },
285             'key_name' => {
286             '.rgx' => qr/\G([^\[\]\.]+(?:\.[^\[\]\.]+)*)/
287             },
288             'line_end' => {
289             '.rgx' => qr/\G(?:[\ \t]*(?:\#.*)?\r?\n)/
290             },
291             'name' => {
292             '.rgx' => qr/\G(\w+)/
293             },
294             'string' => {
295             '.rgx' => qr/\G\"((?:\\[0tnr\"\\]|[^\"])*)\"/
296             },
297             'string_array' => {
298             '.all' => [
299             {
300             '.rgx' => qr/\G\[/
301             },
302             {
303             '.ref' => '_'
304             },
305             {
306             '.all' => [
307             {
308             '.ref' => 'string'
309             },
310             {
311             '+min' => 0,
312             '-flat' => 1,
313             '.all' => [
314             {
315             '.ref' => 'comma'
316             },
317             {
318             '.ref' => 'string'
319             }
320             ]
321             }
322             ]
323             },
324             {
325             '.ref' => '_'
326             },
327             {
328             '.rgx' => qr/\G\]/
329             }
330             ]
331             },
332             'toml' => {
333             '.ref' => 'document'
334             },
335             'value' => {
336             '.any' => [
337             {
338             '.ref' => 'string'
339             },
340             {
341             '.ref' => 'datetime'
342             },
343             {
344             '.ref' => 'float'
345             },
346             {
347             '.ref' => 'integer'
348             },
349             {
350             '.ref' => 'boolean'
351             },
352             {
353             '.ref' => 'array'
354             }
355             ]
356             },
357             'value_line' => {
358             '.all' => [
359             {
360             '.ref' => 'ignore'
361             },
362             {
363             '.ref' => 'name'
364             },
365             {
366             '.ref' => '_'
367             },
368             {
369             '.rgx' => qr/\G=/
370             },
371             {
372             '.ref' => '_'
373             },
374             {
375             '.ref' => 'value'
376             },
377             {
378             '.ref' => 'line_end'
379             }
380             ]
381             }
382             }
383             }
384              
385             1;