/** * Example of grammar composition in Pegged */ module pegged.examples.composition; import pegged.grammar; import pegged.examples.strings, pegged.examples.numbers; mixin(grammar(` LOG: LogFile <- LogLine+ eoi LogLine < String ':' Numbers (',' Numbers)* eol? `)); unittest { auto log =` "File1": 0.00, 0.01, 0.00, 0.00 "File2": 1.0, 2.0, 3.14 "File3": 0.00, 10 `; assert(LOG(log).successful); } enum g = grammar(` LOG2: LogFile <- LogLine+ eoi LogLine < String Numbers.Hexa ':' Numbers (',' Numbers)* `); mixin(g); unittest { enum log =` "File1" 123AC7AF : 123, 78.265, 0.00 "File2" 31F039DC9BE : 49.45, 42.220, 0.02, -22.3 "File3" D0043869930 : 0 `; assert(LOG2(log).successful); }