1 /++
2 This module was automatically generated from the following grammar:
3 
4 
5 # This is the PEG extended grammar used by Pegged
6 Pegged:
7 
8 # Syntactic rules:
9 Grammar      <- Spacing GrammarName Definition+ :eoi
10 Definition   <- LhsName Arrow Expression
11 Expression   <- FirstExpression / LongestExpression
12 FirstExpression   <- :OR? Sequence (:OR Sequence)+
13 LongestExpression <- :(OR / LONGEST_OR)? Sequence (:LONGEST_OR Sequence)*
14 Sequence     <- Prefix+
15 Prefix       <- (POS / NEG / FUSE / DISCARD / KEEP / DROP / PROPAGATE)* Suffix
16 Suffix       <- Primary (OPTION / ZEROORMORE / ONEORMORE / Action)*
17 Primary      <- !(LhsName Arrow)
18                 ( RhsName
19                 / :OPEN Expression :CLOSE
20                 / Literal
21                 / CILiteral
22                 / CharClass
23                 / ANY)
24 # Lexical syntax
25 Identifier   <- identifier
26 GrammarName  <- Identifier ParamList? Spacing :':' Spacing
27 LhsName      <- Identifier ParamList? Spacing
28 RhsName      <- Identifier ArgList? (NAMESEP Identifier ArgList?)* Spacing         # NAMESEP is *not* discarded
29 ParamList    <- :OPEN Param (:SEPARATOR Param)*  :CLOSE
30 Param        <- DefaultParam / SingleParam
31 DefaultParam <- Identifier Spacing :ASSIGN Expression
32 SingleParam  <- Identifier Spacing
33 ArgList      <- :OPEN Expression (:SEPARATOR Expression)* :CLOSE
34 
35 Literal      <- quote       ~(!quote Char)*       quote       !'i' Spacing
36               / doublequote ~(!doublequote Char)* doublequote !'i' Spacing
37 CILiteral    <- quote       ~(!quote Char)*       quote       :'i' Spacing
38               / doublequote ~(!doublequote Char)* doublequote :'i' Spacing
39 CharClass    <- :'[' (!']' CharRange)* :']' Spacing
40 CharRange    <- Char '-' Char / Char
41 
42 # Terminals
43 Char         <~ backslash ( quote
44                           / doublequote
45                           / backquote
46                           / backslash
47                           / '-'
48                           / '['
49                           / ']'
50                           / [nrt]
51                           / [0-2][0-7][0-7]
52                           / [0-7][0-7]?
53                           / 'x' hexDigit hexDigit
54                           / 'u' hexDigit hexDigit hexDigit hexDigit
55                           / 'U' hexDigit hexDigit hexDigit hexDigit hexDigit hexDigit hexDigit hexDigit
56                           )
57               / . # or anything else
58 
59 Arrow        <- LEFTARROW / FUSEARROW / DISCARDARROW / KEEPARROW / DROPARROW / PROPAGATEARROW / ACTIONARROW / SPACEARROW
60 LEFTARROW    <- '<-' Spacing
61 FUSEARROW    <- '<~' Spacing
62 DISCARDARROW <- '<:' Spacing
63 KEEPARROW    <- '<^' Spacing
64 DROPARROW    <- '<;' Spacing
65 PROPAGATEARROW <- '<%' Spacing
66 SPACEARROW   <- '<' Spacing
67 ACTIONARROW  <- '<' Action Spacing
68 
69 OR           <- '/' Spacing
70 LONGEST_OR   <- '|' Spacing
71 
72 POS          <- '&' Spacing
73 NEG          <- '!' Spacing
74 FUSE         <- '~' Spacing
75 DISCARD      <- ':' Spacing
76 KEEP         <- '^' Spacing
77 DROP         <- ';' Spacing
78 PROPAGATE    <- '%' Spacing
79 
80 OPTION       <- '?' Spacing
81 ZEROORMORE   <- '*' Spacing
82 ONEORMORE    <- '+' Spacing
83 ACTIONOPEN   <- '{' Spacing
84 ACTIONCLOSE  <- '}' Spacing
85 SEPARATOR    <- ',' Spacing
86 ASSIGN       <- '=' Spacing
87 NAMESEP      <- '.'   # No Spacing
88 OPEN         <- '(' Spacing
89 CLOSE        <- ')' Spacing
90 ANY          <- '.' Spacing
91 Spacing      <: (blank / Comment)*
92 Comment      <- '#' (!eol .)* :eol
93 Space        <- spacing / "\\t" / "\\n" / "\\r"
94 
95 # Action Rule
96 Action      <- :ACTIONOPEN Spacing ((Lambda / qualifiedIdentifier)
97 (:SEPARATOR (Lambda / qualifiedIdentifier))*) Spacing :ACTIONCLOSE
98 Lambda      <~ (!(ACTIONCLOSE/SEPARATOR) (LambdaItems / NestedList('{',LambdaItems,'}') / .))*
99 
100 LambdaItems <- ~DComment / ~DString / ~DParamList
101 DString     <- WYSString / DBQString / TKNString / DLMString
102 
103 WYSString   <- 'r' doublequote (!doublequote .)* doublequote /
104                backquote (!backquote .)* backquote
105 
106 DBQString   <- doublequote (!doublequote Char)* doublequote
107 
108 TKNString   <- (&'q{' ('q' NestedList('{',DString,'}')))
109 
110 DLMString   <- ('q' doublequote) ( (&'{' NestedList('{',DString,'}'))
111                                  / (&'[' NestedList('[',DString,']'))
112                                  / (&'(' NestedList('(',DString,')'))
113                                  / (&'<' NestedList('<',DString,'>'))
114                                  ) doublequote
115 
116 DComment             <- DLineComment / DBlockComment / DNestingBlockComment
117 
118 DLineComment         <- "//" (!endOfLine .)* endOfLine
119 DBlockComment        <- "/*" (!"*/" .)* "*/"
120 DNestingBlockComment <- NestedList("/+","+/")
121 
122 DParamList <- NestedList('(',')')
123 
124 # Linear nested lists with and without special items
125 NestedList(L,Items,R)   <- ^L ( !(L/R/Items) . )* ( Items
126                                                   / NestedList(L,Items,R)
127                                                   / ( !(L/R/Items) . )*
128                                                   )* ( !(L/R/Items) . )* ^R
129 
130 NestedList(L,R) <- ^L ( !(L/R) . )* (NestedList(L,R) / ( !(L/R) . )*)* ( !(L/R) . )* ^R
131 
132 
133 +/
134 module pegged.parser;
135 
136 public import pegged.peg;
137 import std.algorithm: startsWith;
138 import std.functional: toDelegate;
139 
140 struct GenericPegged(TParseTree)
141 {
142 	import std.functional : toDelegate;
143     import pegged.dynamic.grammar;
144 	static import pegged.peg;
145     struct Pegged
146     {
147     enum name = "Pegged";
148     static ParseTree delegate(ParseTree)[string] before;
149     static ParseTree delegate(ParseTree)[string] after;
150     static ParseTree delegate(ParseTree)[string] rules;
151     static this()
152     {
153         rules["Grammar"] = toDelegate(&Grammar);
154         rules["Definition"] = toDelegate(&Definition);
155         rules["Expression"] = toDelegate(&Expression);
156         rules["FirstExpression"] = toDelegate(&FirstExpression);
157         rules["LongestExpression"] = toDelegate(&LongestExpression);
158         rules["Sequence"] = toDelegate(&Sequence);
159         rules["Prefix"] = toDelegate(&Prefix);
160         rules["Suffix"] = toDelegate(&Suffix);
161         rules["Primary"] = toDelegate(&Primary);
162         rules["Identifier"] = toDelegate(&Identifier);
163         rules["GrammarName"] = toDelegate(&GrammarName);
164         rules["LhsName"] = toDelegate(&LhsName);
165         rules["RhsName"] = toDelegate(&RhsName);
166         rules["ParamList"] = toDelegate(&ParamList);
167         rules["Param"] = toDelegate(&Param);
168         rules["DefaultParam"] = toDelegate(&DefaultParam);
169         rules["SingleParam"] = toDelegate(&SingleParam);
170         rules["ArgList"] = toDelegate(&ArgList);
171         rules["Literal"] = toDelegate(&Literal);
172         rules["CILiteral"] = toDelegate(&CILiteral);
173         rules["CharClass"] = toDelegate(&CharClass);
174         rules["CharRange"] = toDelegate(&CharRange);
175         rules["Char"] = toDelegate(&Char);
176         rules["Arrow"] = toDelegate(&Arrow);
177         rules["LEFTARROW"] = toDelegate(&LEFTARROW);
178         rules["FUSEARROW"] = toDelegate(&FUSEARROW);
179         rules["DISCARDARROW"] = toDelegate(&DISCARDARROW);
180         rules["KEEPARROW"] = toDelegate(&KEEPARROW);
181         rules["DROPARROW"] = toDelegate(&DROPARROW);
182         rules["PROPAGATEARROW"] = toDelegate(&PROPAGATEARROW);
183         rules["SPACEARROW"] = toDelegate(&SPACEARROW);
184         rules["ACTIONARROW"] = toDelegate(&ACTIONARROW);
185         rules["OR"] = toDelegate(&OR);
186         rules["LONGEST_OR"] = toDelegate(&LONGEST_OR);
187         rules["POS"] = toDelegate(&POS);
188         rules["NEG"] = toDelegate(&NEG);
189         rules["FUSE"] = toDelegate(&FUSE);
190         rules["DISCARD"] = toDelegate(&DISCARD);
191         rules["KEEP"] = toDelegate(&KEEP);
192         rules["DROP"] = toDelegate(&DROP);
193         rules["PROPAGATE"] = toDelegate(&PROPAGATE);
194         rules["OPTION"] = toDelegate(&OPTION);
195         rules["ZEROORMORE"] = toDelegate(&ZEROORMORE);
196         rules["ONEORMORE"] = toDelegate(&ONEORMORE);
197         rules["ACTIONOPEN"] = toDelegate(&ACTIONOPEN);
198         rules["ACTIONCLOSE"] = toDelegate(&ACTIONCLOSE);
199         rules["SEPARATOR"] = toDelegate(&SEPARATOR);
200         rules["ASSIGN"] = toDelegate(&ASSIGN);
201         rules["NAMESEP"] = toDelegate(&NAMESEP);
202         rules["OPEN"] = toDelegate(&OPEN);
203         rules["CLOSE"] = toDelegate(&CLOSE);
204         rules["ANY"] = toDelegate(&ANY);
205         rules["Spacing"] = toDelegate(&Spacing);
206     }
207 
208     template hooked(alias r, string name)
209     {
210         static ParseTree hooked(ParseTree p)
211         {
212             ParseTree result;
213 
214             if (name in before)
215             {
216                 result = before[name](p);
217                 if (result.successful)
218                     return result;
219             }
220 
221             result = r(p);
222             if (result.successful || name !in after)
223                 return result;
224 
225             result = after[name](p);
226             return result;
227         }
228 
229         static ParseTree hooked(string input)
230         {
231             return hooked!(r, name)(ParseTree("",false,[],input));
232         }
233     }
234 
235     static void addRuleBefore(string parentRule, string ruleSyntax)
236     {
237         // enum name is the current grammar name
238         DynamicGrammar dg = pegged.dynamic.grammar.grammar(name ~ ": " ~ ruleSyntax, rules);
239         foreach(ruleName,rule; dg.rules)
240             if (ruleName != "Spacing") // Keep the local Spacing rule, do not overwrite it
241                 rules[ruleName] = rule;
242         before[parentRule] = rules[dg.startingRule];
243     }
244 
245     static void addRuleAfter(string parentRule, string ruleSyntax)
246     {
247         // enum name is the current grammar named
248         DynamicGrammar dg = pegged.dynamic.grammar.grammar(name ~ ": " ~ ruleSyntax, rules);
249         foreach(name,rule; dg.rules)
250         {
251             if (name != "Spacing")
252                 rules[name] = rule;
253         }
254         after[parentRule] = rules[dg.startingRule];
255     }
256 
257     static bool isRule(string s)
258     {
259 		import std.algorithm : startsWith;
260         return s.startsWith("Pegged.");
261     }
262     mixin decimateTree;
263 
264     static TParseTree Grammar(TParseTree p)
265     {
266         if(__ctfe)
267         {
268             return         pegged.peg.defined!(pegged.peg.and!(Spacing, GrammarName, pegged.peg.oneOrMore!(Definition), pegged.peg.discard!(eoi)), "Pegged.Grammar")(p);
269         }
270         else
271         {
272             return hooked!(pegged.peg.defined!(pegged.peg.and!(Spacing, GrammarName, pegged.peg.oneOrMore!(Definition), pegged.peg.discard!(eoi)), "Pegged.Grammar"), "Grammar")(p);
273         }
274     }
275     static TParseTree Grammar(string s)
276     {
277         if(__ctfe)
278             return         pegged.peg.defined!(pegged.peg.and!(Spacing, GrammarName, pegged.peg.oneOrMore!(Definition), pegged.peg.discard!(eoi)), "Pegged.Grammar")(TParseTree("", false,[], s));
279         else
280         {
281             forgetMemo();
282             return hooked!(pegged.peg.defined!(pegged.peg.and!(Spacing, GrammarName, pegged.peg.oneOrMore!(Definition), pegged.peg.discard!(eoi)), "Pegged.Grammar"), "Grammar")(TParseTree("", false,[], s));
283         }
284     }
285     static string Grammar(GetName g)
286     {
287         return "Pegged.Grammar";
288     }
289 
290     static TParseTree Definition(TParseTree p)
291     {
292         if(__ctfe)
293         {
294             return         pegged.peg.defined!(pegged.peg.and!(LhsName, Arrow, Expression), "Pegged.Definition")(p);
295         }
296         else
297         {
298             return hooked!(pegged.peg.defined!(pegged.peg.and!(LhsName, Arrow, Expression), "Pegged.Definition"), "Definition")(p);
299         }
300     }
301     static TParseTree Definition(string s)
302     {
303         if(__ctfe)
304             return         pegged.peg.defined!(pegged.peg.and!(LhsName, Arrow, Expression), "Pegged.Definition")(TParseTree("", false,[], s));
305         else
306         {
307             forgetMemo();
308             return hooked!(pegged.peg.defined!(pegged.peg.and!(LhsName, Arrow, Expression), "Pegged.Definition"), "Definition")(TParseTree("", false,[], s));
309         }
310     }
311     static string Definition(GetName g)
312     {
313         return "Pegged.Definition";
314     }
315 
316     static TParseTree Expression(TParseTree p)
317     {
318         if(__ctfe)
319         {
320             return         pegged.peg.defined!(pegged.peg.or!(FirstExpression, LongestExpression), "Pegged.Expression")(p);
321         }
322         else
323         {
324             return hooked!(pegged.peg.defined!(pegged.peg.or!(FirstExpression, LongestExpression), "Pegged.Expression"), "Expression")(p);
325         }
326     }
327     static TParseTree Expression(string s)
328     {
329         if(__ctfe)
330             return         pegged.peg.defined!(pegged.peg.or!(FirstExpression, LongestExpression), "Pegged.Expression")(TParseTree("", false,[], s));
331         else
332         {
333             forgetMemo();
334             return hooked!(pegged.peg.defined!(pegged.peg.or!(FirstExpression, LongestExpression), "Pegged.Expression"), "Expression")(TParseTree("", false,[], s));
335         }
336     }
337     static string Expression(GetName g)
338     {
339         return "Pegged.Expression";
340     }
341 
342     static TParseTree FirstExpression(TParseTree p)
343     {
344         if(__ctfe)
345         {
346             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.option!(OR)), Sequence, pegged.peg.oneOrMore!(pegged.peg.and!(pegged.peg.discard!(OR), Sequence))), "Pegged.FirstExpression")(p);
347         }
348         else
349         {
350             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.option!(OR)), Sequence, pegged.peg.oneOrMore!(pegged.peg.and!(pegged.peg.discard!(OR), Sequence))), "Pegged.FirstExpression"), "FirstExpression")(p);
351         }
352     }
353     static TParseTree FirstExpression(string s)
354     {
355         if(__ctfe)
356             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.option!(OR)), Sequence, pegged.peg.oneOrMore!(pegged.peg.and!(pegged.peg.discard!(OR), Sequence))), "Pegged.FirstExpression")(TParseTree("", false,[], s));
357         else
358         {
359             forgetMemo();
360             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.option!(OR)), Sequence, pegged.peg.oneOrMore!(pegged.peg.and!(pegged.peg.discard!(OR), Sequence))), "Pegged.FirstExpression"), "FirstExpression")(TParseTree("", false,[], s));
361         }
362     }
363     static string FirstExpression(GetName g)
364     {
365         return "Pegged.FirstExpression";
366     }
367 
368     static TParseTree LongestExpression(TParseTree p)
369     {
370         if(__ctfe)
371         {
372             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.option!(pegged.peg.or!(OR, LONGEST_OR))), Sequence, pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.discard!(LONGEST_OR), Sequence))), "Pegged.LongestExpression")(p);
373         }
374         else
375         {
376             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.option!(pegged.peg.or!(OR, LONGEST_OR))), Sequence, pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.discard!(LONGEST_OR), Sequence))), "Pegged.LongestExpression"), "LongestExpression")(p);
377         }
378     }
379     static TParseTree LongestExpression(string s)
380     {
381         if(__ctfe)
382             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.option!(pegged.peg.or!(OR, LONGEST_OR))), Sequence, pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.discard!(LONGEST_OR), Sequence))), "Pegged.LongestExpression")(TParseTree("", false,[], s));
383         else
384         {
385             forgetMemo();
386             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.option!(pegged.peg.or!(OR, LONGEST_OR))), Sequence, pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.discard!(LONGEST_OR), Sequence))), "Pegged.LongestExpression"), "LongestExpression")(TParseTree("", false,[], s));
387         }
388     }
389     static string LongestExpression(GetName g)
390     {
391         return "Pegged.LongestExpression";
392     }
393 
394     static TParseTree Sequence(TParseTree p)
395     {
396         if(__ctfe)
397         {
398             return         pegged.peg.defined!(pegged.peg.oneOrMore!(Prefix), "Pegged.Sequence")(p);
399         }
400         else
401         {
402             return hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(Prefix), "Pegged.Sequence"), "Sequence")(p);
403         }
404     }
405     static TParseTree Sequence(string s)
406     {
407         if(__ctfe)
408             return         pegged.peg.defined!(pegged.peg.oneOrMore!(Prefix), "Pegged.Sequence")(TParseTree("", false,[], s));
409         else
410         {
411             forgetMemo();
412             return hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(Prefix), "Pegged.Sequence"), "Sequence")(TParseTree("", false,[], s));
413         }
414     }
415     static string Sequence(GetName g)
416     {
417         return "Pegged.Sequence";
418     }
419 
420     static TParseTree Prefix(TParseTree p)
421     {
422         if(__ctfe)
423         {
424             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.or!(POS, NEG, FUSE, DISCARD, KEEP, DROP, PROPAGATE)), Suffix), "Pegged.Prefix")(p);
425         }
426         else
427         {
428             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.or!(POS, NEG, FUSE, DISCARD, KEEP, DROP, PROPAGATE)), Suffix), "Pegged.Prefix"), "Prefix")(p);
429         }
430     }
431     static TParseTree Prefix(string s)
432     {
433         if(__ctfe)
434             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.or!(POS, NEG, FUSE, DISCARD, KEEP, DROP, PROPAGATE)), Suffix), "Pegged.Prefix")(TParseTree("", false,[], s));
435         else
436         {
437             forgetMemo();
438             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.zeroOrMore!(pegged.peg.or!(POS, NEG, FUSE, DISCARD, KEEP, DROP, PROPAGATE)), Suffix), "Pegged.Prefix"), "Prefix")(TParseTree("", false,[], s));
439         }
440     }
441     static string Prefix(GetName g)
442     {
443         return "Pegged.Prefix";
444     }
445 
446     static TParseTree Suffix(TParseTree p)
447     {
448         if(__ctfe)
449         {
450             return         pegged.peg.defined!(pegged.peg.and!(Primary, pegged.peg.zeroOrMore!(pegged.peg.or!(OPTION, ZEROORMORE, ONEORMORE, Action))), "Pegged.Suffix")(p);
451         }
452         else
453         {
454             return hooked!(pegged.peg.defined!(pegged.peg.and!(Primary, pegged.peg.zeroOrMore!(pegged.peg.or!(OPTION, ZEROORMORE, ONEORMORE, Action))), "Pegged.Suffix"), "Suffix")(p);
455         }
456     }
457     static TParseTree Suffix(string s)
458     {
459         if(__ctfe)
460             return         pegged.peg.defined!(pegged.peg.and!(Primary, pegged.peg.zeroOrMore!(pegged.peg.or!(OPTION, ZEROORMORE, ONEORMORE, Action))), "Pegged.Suffix")(TParseTree("", false,[], s));
461         else
462         {
463             forgetMemo();
464             return hooked!(pegged.peg.defined!(pegged.peg.and!(Primary, pegged.peg.zeroOrMore!(pegged.peg.or!(OPTION, ZEROORMORE, ONEORMORE, Action))), "Pegged.Suffix"), "Suffix")(TParseTree("", false,[], s));
465         }
466     }
467     static string Suffix(GetName g)
468     {
469         return "Pegged.Suffix";
470     }
471 
472     static TParseTree Primary(TParseTree p)
473     {
474         if(__ctfe)
475         {
476             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.and!(LhsName, Arrow)), pegged.peg.or!(RhsName, pegged.peg.and!(pegged.peg.discard!(OPEN), Expression, pegged.peg.discard!(CLOSE)), Literal, CILiteral, CharClass, ANY)), "Pegged.Primary")(p);
477         }
478         else
479         {
480             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.and!(LhsName, Arrow)), pegged.peg.or!(RhsName, pegged.peg.and!(pegged.peg.discard!(OPEN), Expression, pegged.peg.discard!(CLOSE)), Literal, CILiteral, CharClass, ANY)), "Pegged.Primary"), "Primary")(p);
481         }
482     }
483     static TParseTree Primary(string s)
484     {
485         if(__ctfe)
486             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.and!(LhsName, Arrow)), pegged.peg.or!(RhsName, pegged.peg.and!(pegged.peg.discard!(OPEN), Expression, pegged.peg.discard!(CLOSE)), Literal, CILiteral, CharClass, ANY)), "Pegged.Primary")(TParseTree("", false,[], s));
487         else
488         {
489             forgetMemo();
490             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.and!(LhsName, Arrow)), pegged.peg.or!(RhsName, pegged.peg.and!(pegged.peg.discard!(OPEN), Expression, pegged.peg.discard!(CLOSE)), Literal, CILiteral, CharClass, ANY)), "Pegged.Primary"), "Primary")(TParseTree("", false,[], s));
491         }
492     }
493     static string Primary(GetName g)
494     {
495         return "Pegged.Primary";
496     }
497 
498     static TParseTree Identifier(TParseTree p)
499     {
500         if(__ctfe)
501         {
502             return         pegged.peg.defined!(identifier, "Pegged.Identifier")(p);
503         }
504         else
505         {
506             return hooked!(pegged.peg.defined!(identifier, "Pegged.Identifier"), "Identifier")(p);
507         }
508     }
509     static TParseTree Identifier(string s)
510     {
511         if(__ctfe)
512             return         pegged.peg.defined!(identifier, "Pegged.Identifier")(TParseTree("", false,[], s));
513         else
514         {
515             forgetMemo();
516             return hooked!(pegged.peg.defined!(identifier, "Pegged.Identifier"), "Identifier")(TParseTree("", false,[], s));
517         }
518     }
519     static string Identifier(GetName g)
520     {
521         return "Pegged.Identifier";
522     }
523 
524     static TParseTree GrammarName(TParseTree p)
525     {
526         if(__ctfe)
527         {
528             return         pegged.peg.defined!(pegged.peg.and!(Identifier, pegged.peg.option!(ParamList), Spacing, pegged.peg.discard!(pegged.peg.literal!(":")), Spacing), "Pegged.GrammarName")(p);
529         }
530         else
531         {
532             return hooked!(pegged.peg.defined!(pegged.peg.and!(Identifier, pegged.peg.option!(ParamList), Spacing, pegged.peg.discard!(pegged.peg.literal!(":")), Spacing), "Pegged.GrammarName"), "GrammarName")(p);
533         }
534     }
535     static TParseTree GrammarName(string s)
536     {
537         if(__ctfe)
538             return         pegged.peg.defined!(pegged.peg.and!(Identifier, pegged.peg.option!(ParamList), Spacing, pegged.peg.discard!(pegged.peg.literal!(":")), Spacing), "Pegged.GrammarName")(TParseTree("", false,[], s));
539         else
540         {
541             forgetMemo();
542             return hooked!(pegged.peg.defined!(pegged.peg.and!(Identifier, pegged.peg.option!(ParamList), Spacing, pegged.peg.discard!(pegged.peg.literal!(":")), Spacing), "Pegged.GrammarName"), "GrammarName")(TParseTree("", false,[], s));
543         }
544     }
545     static string GrammarName(GetName g)
546     {
547         return "Pegged.GrammarName";
548     }
549 
550     static TParseTree LhsName(TParseTree p)
551     {
552         if(__ctfe)
553         {
554             return         pegged.peg.defined!(pegged.peg.and!(Identifier, pegged.peg.option!(ParamList), Spacing), "Pegged.LhsName")(p);
555         }
556         else
557         {
558             return hooked!(pegged.peg.defined!(pegged.peg.and!(Identifier, pegged.peg.option!(ParamList), Spacing), "Pegged.LhsName"), "LhsName")(p);
559         }
560     }
561     static TParseTree LhsName(string s)
562     {
563         if(__ctfe)
564             return         pegged.peg.defined!(pegged.peg.and!(Identifier, pegged.peg.option!(ParamList), Spacing), "Pegged.LhsName")(TParseTree("", false,[], s));
565         else
566         {
567             forgetMemo();
568             return hooked!(pegged.peg.defined!(pegged.peg.and!(Identifier, pegged.peg.option!(ParamList), Spacing), "Pegged.LhsName"), "LhsName")(TParseTree("", false,[], s));
569         }
570     }
571     static string LhsName(GetName g)
572     {
573         return "Pegged.LhsName";
574     }
575 
576     static TParseTree RhsName(TParseTree p)
577     {
578         if(__ctfe)
579         {
580             return         pegged.peg.defined!(pegged.peg.and!(Identifier, pegged.peg.option!(ArgList), pegged.peg.zeroOrMore!(pegged.peg.and!(NAMESEP, Identifier, pegged.peg.option!(ArgList))), Spacing), "Pegged.RhsName")(p);
581         }
582         else
583         {
584             return hooked!(pegged.peg.defined!(pegged.peg.and!(Identifier, pegged.peg.option!(ArgList), pegged.peg.zeroOrMore!(pegged.peg.and!(NAMESEP, Identifier, pegged.peg.option!(ArgList))), Spacing), "Pegged.RhsName"), "RhsName")(p);
585         }
586     }
587     static TParseTree RhsName(string s)
588     {
589         if(__ctfe)
590             return         pegged.peg.defined!(pegged.peg.and!(Identifier, pegged.peg.option!(ArgList), pegged.peg.zeroOrMore!(pegged.peg.and!(NAMESEP, Identifier, pegged.peg.option!(ArgList))), Spacing), "Pegged.RhsName")(TParseTree("", false,[], s));
591         else
592         {
593             forgetMemo();
594             return hooked!(pegged.peg.defined!(pegged.peg.and!(Identifier, pegged.peg.option!(ArgList), pegged.peg.zeroOrMore!(pegged.peg.and!(NAMESEP, Identifier, pegged.peg.option!(ArgList))), Spacing), "Pegged.RhsName"), "RhsName")(TParseTree("", false,[], s));
595         }
596     }
597     static string RhsName(GetName g)
598     {
599         return "Pegged.RhsName";
600     }
601 
602     static TParseTree ParamList(TParseTree p)
603     {
604         if(__ctfe)
605         {
606             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(OPEN), Param, pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.discard!(SEPARATOR), Param)), pegged.peg.discard!(CLOSE)), "Pegged.ParamList")(p);
607         }
608         else
609         {
610             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(OPEN), Param, pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.discard!(SEPARATOR), Param)), pegged.peg.discard!(CLOSE)), "Pegged.ParamList"), "ParamList")(p);
611         }
612     }
613     static TParseTree ParamList(string s)
614     {
615         if(__ctfe)
616             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(OPEN), Param, pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.discard!(SEPARATOR), Param)), pegged.peg.discard!(CLOSE)), "Pegged.ParamList")(TParseTree("", false,[], s));
617         else
618         {
619             forgetMemo();
620             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(OPEN), Param, pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.discard!(SEPARATOR), Param)), pegged.peg.discard!(CLOSE)), "Pegged.ParamList"), "ParamList")(TParseTree("", false,[], s));
621         }
622     }
623     static string ParamList(GetName g)
624     {
625         return "Pegged.ParamList";
626     }
627 
628     static TParseTree Param(TParseTree p)
629     {
630         if(__ctfe)
631         {
632             return         pegged.peg.defined!(pegged.peg.or!(DefaultParam, SingleParam), "Pegged.Param")(p);
633         }
634         else
635         {
636             return hooked!(pegged.peg.defined!(pegged.peg.or!(DefaultParam, SingleParam), "Pegged.Param"), "Param")(p);
637         }
638     }
639     static TParseTree Param(string s)
640     {
641         if(__ctfe)
642             return         pegged.peg.defined!(pegged.peg.or!(DefaultParam, SingleParam), "Pegged.Param")(TParseTree("", false,[], s));
643         else
644         {
645             forgetMemo();
646             return hooked!(pegged.peg.defined!(pegged.peg.or!(DefaultParam, SingleParam), "Pegged.Param"), "Param")(TParseTree("", false,[], s));
647         }
648     }
649     static string Param(GetName g)
650     {
651         return "Pegged.Param";
652     }
653 
654     static TParseTree DefaultParam(TParseTree p)
655     {
656         if(__ctfe)
657         {
658             return         pegged.peg.defined!(pegged.peg.and!(Identifier, Spacing, pegged.peg.discard!(ASSIGN), Expression), "Pegged.DefaultParam")(p);
659         }
660         else
661         {
662             return hooked!(pegged.peg.defined!(pegged.peg.and!(Identifier, Spacing, pegged.peg.discard!(ASSIGN), Expression), "Pegged.DefaultParam"), "DefaultParam")(p);
663         }
664     }
665     static TParseTree DefaultParam(string s)
666     {
667         if(__ctfe)
668             return         pegged.peg.defined!(pegged.peg.and!(Identifier, Spacing, pegged.peg.discard!(ASSIGN), Expression), "Pegged.DefaultParam")(TParseTree("", false,[], s));
669         else
670         {
671             forgetMemo();
672             return hooked!(pegged.peg.defined!(pegged.peg.and!(Identifier, Spacing, pegged.peg.discard!(ASSIGN), Expression), "Pegged.DefaultParam"), "DefaultParam")(TParseTree("", false,[], s));
673         }
674     }
675     static string DefaultParam(GetName g)
676     {
677         return "Pegged.DefaultParam";
678     }
679 
680     static TParseTree SingleParam(TParseTree p)
681     {
682         if(__ctfe)
683         {
684             return         pegged.peg.defined!(pegged.peg.and!(Identifier, Spacing), "Pegged.SingleParam")(p);
685         }
686         else
687         {
688             return hooked!(pegged.peg.defined!(pegged.peg.and!(Identifier, Spacing), "Pegged.SingleParam"), "SingleParam")(p);
689         }
690     }
691     static TParseTree SingleParam(string s)
692     {
693         if(__ctfe)
694             return         pegged.peg.defined!(pegged.peg.and!(Identifier, Spacing), "Pegged.SingleParam")(TParseTree("", false,[], s));
695         else
696         {
697             forgetMemo();
698             return hooked!(pegged.peg.defined!(pegged.peg.and!(Identifier, Spacing), "Pegged.SingleParam"), "SingleParam")(TParseTree("", false,[], s));
699         }
700     }
701     static string SingleParam(GetName g)
702     {
703         return "Pegged.SingleParam";
704     }
705 
706     static TParseTree ArgList(TParseTree p)
707     {
708         if(__ctfe)
709         {
710             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(OPEN), Expression, pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.discard!(SEPARATOR), Expression)), pegged.peg.discard!(CLOSE)), "Pegged.ArgList")(p);
711         }
712         else
713         {
714             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(OPEN), Expression, pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.discard!(SEPARATOR), Expression)), pegged.peg.discard!(CLOSE)), "Pegged.ArgList"), "ArgList")(p);
715         }
716     }
717     static TParseTree ArgList(string s)
718     {
719         if(__ctfe)
720             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(OPEN), Expression, pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.discard!(SEPARATOR), Expression)), pegged.peg.discard!(CLOSE)), "Pegged.ArgList")(TParseTree("", false,[], s));
721         else
722         {
723             forgetMemo();
724             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(OPEN), Expression, pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.discard!(SEPARATOR), Expression)), pegged.peg.discard!(CLOSE)), "Pegged.ArgList"), "ArgList")(TParseTree("", false,[], s));
725         }
726     }
727     static string ArgList(GetName g)
728     {
729         return "Pegged.ArgList";
730     }
731 
732     static TParseTree Literal(TParseTree p)
733     {
734         if(__ctfe)
735         {
736             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(quote, pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(quote), Char))), quote, pegged.peg.negLookahead!(pegged.peg.literal!("i")), Spacing), pegged.peg.and!(doublequote, pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(doublequote), Char))), doublequote, pegged.peg.negLookahead!(pegged.peg.literal!("i")), Spacing)), "Pegged.Literal")(p);
737         }
738         else
739         {
740             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(quote, pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(quote), Char))), quote, pegged.peg.negLookahead!(pegged.peg.literal!("i")), Spacing), pegged.peg.and!(doublequote, pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(doublequote), Char))), doublequote, pegged.peg.negLookahead!(pegged.peg.literal!("i")), Spacing)), "Pegged.Literal"), "Literal")(p);
741         }
742     }
743     static TParseTree Literal(string s)
744     {
745         if(__ctfe)
746             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(quote, pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(quote), Char))), quote, pegged.peg.negLookahead!(pegged.peg.literal!("i")), Spacing), pegged.peg.and!(doublequote, pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(doublequote), Char))), doublequote, pegged.peg.negLookahead!(pegged.peg.literal!("i")), Spacing)), "Pegged.Literal")(TParseTree("", false,[], s));
747         else
748         {
749             forgetMemo();
750             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(quote, pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(quote), Char))), quote, pegged.peg.negLookahead!(pegged.peg.literal!("i")), Spacing), pegged.peg.and!(doublequote, pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(doublequote), Char))), doublequote, pegged.peg.negLookahead!(pegged.peg.literal!("i")), Spacing)), "Pegged.Literal"), "Literal")(TParseTree("", false,[], s));
751         }
752     }
753     static string Literal(GetName g)
754     {
755         return "Pegged.Literal";
756     }
757 
758     static TParseTree CILiteral(TParseTree p)
759     {
760         if(__ctfe)
761         {
762             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(quote, pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(quote), Char))), quote, pegged.peg.discard!(pegged.peg.literal!("i")), Spacing), pegged.peg.and!(doublequote, pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(doublequote), Char))), doublequote, pegged.peg.discard!(pegged.peg.literal!("i")), Spacing)), "Pegged.CILiteral")(p);
763         }
764         else
765         {
766             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(quote, pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(quote), Char))), quote, pegged.peg.discard!(pegged.peg.literal!("i")), Spacing), pegged.peg.and!(doublequote, pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(doublequote), Char))), doublequote, pegged.peg.discard!(pegged.peg.literal!("i")), Spacing)), "Pegged.CILiteral"), "CILiteral")(p);
767         }
768     }
769     static TParseTree CILiteral(string s)
770     {
771         if(__ctfe)
772             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(quote, pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(quote), Char))), quote, pegged.peg.discard!(pegged.peg.literal!("i")), Spacing), pegged.peg.and!(doublequote, pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(doublequote), Char))), doublequote, pegged.peg.discard!(pegged.peg.literal!("i")), Spacing)), "Pegged.CILiteral")(TParseTree("", false,[], s));
773         else
774         {
775             forgetMemo();
776             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(quote, pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(quote), Char))), quote, pegged.peg.discard!(pegged.peg.literal!("i")), Spacing), pegged.peg.and!(doublequote, pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(doublequote), Char))), doublequote, pegged.peg.discard!(pegged.peg.literal!("i")), Spacing)), "Pegged.CILiteral"), "CILiteral")(TParseTree("", false,[], s));
777         }
778     }
779     static string CILiteral(GetName g)
780     {
781         return "Pegged.CILiteral";
782     }
783 
784     static TParseTree CharClass(TParseTree p)
785     {
786         if(__ctfe)
787         {
788             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("[")), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.literal!("]")), CharRange)), pegged.peg.discard!(pegged.peg.literal!("]")), Spacing), "Pegged.CharClass")(p);
789         }
790         else
791         {
792             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("[")), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.literal!("]")), CharRange)), pegged.peg.discard!(pegged.peg.literal!("]")), Spacing), "Pegged.CharClass"), "CharClass")(p);
793         }
794     }
795     static TParseTree CharClass(string s)
796     {
797         if(__ctfe)
798             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("[")), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.literal!("]")), CharRange)), pegged.peg.discard!(pegged.peg.literal!("]")), Spacing), "Pegged.CharClass")(TParseTree("", false,[], s));
799         else
800         {
801             forgetMemo();
802             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(pegged.peg.literal!("[")), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.literal!("]")), CharRange)), pegged.peg.discard!(pegged.peg.literal!("]")), Spacing), "Pegged.CharClass"), "CharClass")(TParseTree("", false,[], s));
803         }
804     }
805     static string CharClass(GetName g)
806     {
807         return "Pegged.CharClass";
808     }
809 
810     static TParseTree CharRange(TParseTree p)
811     {
812         if(__ctfe)
813         {
814             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(Char, pegged.peg.literal!("-"), Char), Char), "Pegged.CharRange")(p);
815         }
816         else
817         {
818             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(Char, pegged.peg.literal!("-"), Char), Char), "Pegged.CharRange"), "CharRange")(p);
819         }
820     }
821     static TParseTree CharRange(string s)
822     {
823         if(__ctfe)
824             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(Char, pegged.peg.literal!("-"), Char), Char), "Pegged.CharRange")(TParseTree("", false,[], s));
825         else
826         {
827             forgetMemo();
828             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(Char, pegged.peg.literal!("-"), Char), Char), "Pegged.CharRange"), "CharRange")(TParseTree("", false,[], s));
829         }
830     }
831     static string CharRange(GetName g)
832     {
833         return "Pegged.CharRange";
834     }
835 
836     static TParseTree Char(TParseTree p)
837     {
838         if(__ctfe)
839         {
840             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(pegged.peg.and!(backslash, pegged.peg.or!(quote, doublequote, backquote, backslash, pegged.peg.literal!("-"), pegged.peg.literal!("["), pegged.peg.literal!("]"), pegged.peg.or!(pegged.peg.literal!("n"), pegged.peg.literal!("r"), pegged.peg.literal!("t")), pegged.peg.and!(pegged.peg.charRange!('0', '2'), pegged.peg.charRange!('0', '7'), pegged.peg.charRange!('0', '7')), pegged.peg.and!(pegged.peg.charRange!('0', '7'), pegged.peg.option!(pegged.peg.charRange!('0', '7'))), pegged.peg.and!(pegged.peg.literal!("x"), hexDigit, hexDigit), pegged.peg.and!(pegged.peg.literal!("u"), hexDigit, hexDigit, hexDigit, hexDigit), pegged.peg.and!(pegged.peg.literal!("U"), hexDigit, hexDigit, hexDigit, hexDigit, hexDigit, hexDigit, hexDigit, hexDigit))), pegged.peg.any)), "Pegged.Char")(p);
841         }
842         else
843         {
844             return hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(pegged.peg.and!(backslash, pegged.peg.or!(quote, doublequote, backquote, backslash, pegged.peg.literal!("-"), pegged.peg.literal!("["), pegged.peg.literal!("]"), pegged.peg.or!(pegged.peg.literal!("n"), pegged.peg.literal!("r"), pegged.peg.literal!("t")), pegged.peg.and!(pegged.peg.charRange!('0', '2'), pegged.peg.charRange!('0', '7'), pegged.peg.charRange!('0', '7')), pegged.peg.and!(pegged.peg.charRange!('0', '7'), pegged.peg.option!(pegged.peg.charRange!('0', '7'))), pegged.peg.and!(pegged.peg.literal!("x"), hexDigit, hexDigit), pegged.peg.and!(pegged.peg.literal!("u"), hexDigit, hexDigit, hexDigit, hexDigit), pegged.peg.and!(pegged.peg.literal!("U"), hexDigit, hexDigit, hexDigit, hexDigit, hexDigit, hexDigit, hexDigit, hexDigit))), pegged.peg.any)), "Pegged.Char"), "Char")(p);
845         }
846     }
847     static TParseTree Char(string s)
848     {
849         if(__ctfe)
850             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(pegged.peg.and!(backslash, pegged.peg.or!(quote, doublequote, backquote, backslash, pegged.peg.literal!("-"), pegged.peg.literal!("["), pegged.peg.literal!("]"), pegged.peg.or!(pegged.peg.literal!("n"), pegged.peg.literal!("r"), pegged.peg.literal!("t")), pegged.peg.and!(pegged.peg.charRange!('0', '2'), pegged.peg.charRange!('0', '7'), pegged.peg.charRange!('0', '7')), pegged.peg.and!(pegged.peg.charRange!('0', '7'), pegged.peg.option!(pegged.peg.charRange!('0', '7'))), pegged.peg.and!(pegged.peg.literal!("x"), hexDigit, hexDigit), pegged.peg.and!(pegged.peg.literal!("u"), hexDigit, hexDigit, hexDigit, hexDigit), pegged.peg.and!(pegged.peg.literal!("U"), hexDigit, hexDigit, hexDigit, hexDigit, hexDigit, hexDigit, hexDigit, hexDigit))), pegged.peg.any)), "Pegged.Char")(TParseTree("", false,[], s));
851         else
852         {
853             forgetMemo();
854             return hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.or!(pegged.peg.and!(backslash, pegged.peg.or!(quote, doublequote, backquote, backslash, pegged.peg.literal!("-"), pegged.peg.literal!("["), pegged.peg.literal!("]"), pegged.peg.or!(pegged.peg.literal!("n"), pegged.peg.literal!("r"), pegged.peg.literal!("t")), pegged.peg.and!(pegged.peg.charRange!('0', '2'), pegged.peg.charRange!('0', '7'), pegged.peg.charRange!('0', '7')), pegged.peg.and!(pegged.peg.charRange!('0', '7'), pegged.peg.option!(pegged.peg.charRange!('0', '7'))), pegged.peg.and!(pegged.peg.literal!("x"), hexDigit, hexDigit), pegged.peg.and!(pegged.peg.literal!("u"), hexDigit, hexDigit, hexDigit, hexDigit), pegged.peg.and!(pegged.peg.literal!("U"), hexDigit, hexDigit, hexDigit, hexDigit, hexDigit, hexDigit, hexDigit, hexDigit))), pegged.peg.any)), "Pegged.Char"), "Char")(TParseTree("", false,[], s));
855         }
856     }
857     static string Char(GetName g)
858     {
859         return "Pegged.Char";
860     }
861 
862     static TParseTree Arrow(TParseTree p)
863     {
864         if(__ctfe)
865         {
866             return         pegged.peg.defined!(pegged.peg.or!(LEFTARROW, FUSEARROW, DISCARDARROW, KEEPARROW, DROPARROW, PROPAGATEARROW, ACTIONARROW, SPACEARROW), "Pegged.Arrow")(p);
867         }
868         else
869         {
870             return hooked!(pegged.peg.defined!(pegged.peg.or!(LEFTARROW, FUSEARROW, DISCARDARROW, KEEPARROW, DROPARROW, PROPAGATEARROW, ACTIONARROW, SPACEARROW), "Pegged.Arrow"), "Arrow")(p);
871         }
872     }
873     static TParseTree Arrow(string s)
874     {
875         if(__ctfe)
876             return         pegged.peg.defined!(pegged.peg.or!(LEFTARROW, FUSEARROW, DISCARDARROW, KEEPARROW, DROPARROW, PROPAGATEARROW, ACTIONARROW, SPACEARROW), "Pegged.Arrow")(TParseTree("", false,[], s));
877         else
878         {
879             forgetMemo();
880             return hooked!(pegged.peg.defined!(pegged.peg.or!(LEFTARROW, FUSEARROW, DISCARDARROW, KEEPARROW, DROPARROW, PROPAGATEARROW, ACTIONARROW, SPACEARROW), "Pegged.Arrow"), "Arrow")(TParseTree("", false,[], s));
881         }
882     }
883     static string Arrow(GetName g)
884     {
885         return "Pegged.Arrow";
886     }
887 
888     static TParseTree LEFTARROW(TParseTree p)
889     {
890         if(__ctfe)
891         {
892             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<-"), Spacing), "Pegged.LEFTARROW")(p);
893         }
894         else
895         {
896             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<-"), Spacing), "Pegged.LEFTARROW"), "LEFTARROW")(p);
897         }
898     }
899     static TParseTree LEFTARROW(string s)
900     {
901         if(__ctfe)
902             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<-"), Spacing), "Pegged.LEFTARROW")(TParseTree("", false,[], s));
903         else
904         {
905             forgetMemo();
906             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<-"), Spacing), "Pegged.LEFTARROW"), "LEFTARROW")(TParseTree("", false,[], s));
907         }
908     }
909     static string LEFTARROW(GetName g)
910     {
911         return "Pegged.LEFTARROW";
912     }
913 
914     static TParseTree FUSEARROW(TParseTree p)
915     {
916         if(__ctfe)
917         {
918             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<~"), Spacing), "Pegged.FUSEARROW")(p);
919         }
920         else
921         {
922             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<~"), Spacing), "Pegged.FUSEARROW"), "FUSEARROW")(p);
923         }
924     }
925     static TParseTree FUSEARROW(string s)
926     {
927         if(__ctfe)
928             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<~"), Spacing), "Pegged.FUSEARROW")(TParseTree("", false,[], s));
929         else
930         {
931             forgetMemo();
932             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<~"), Spacing), "Pegged.FUSEARROW"), "FUSEARROW")(TParseTree("", false,[], s));
933         }
934     }
935     static string FUSEARROW(GetName g)
936     {
937         return "Pegged.FUSEARROW";
938     }
939 
940     static TParseTree DISCARDARROW(TParseTree p)
941     {
942         if(__ctfe)
943         {
944             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<:"), Spacing), "Pegged.DISCARDARROW")(p);
945         }
946         else
947         {
948             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<:"), Spacing), "Pegged.DISCARDARROW"), "DISCARDARROW")(p);
949         }
950     }
951     static TParseTree DISCARDARROW(string s)
952     {
953         if(__ctfe)
954             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<:"), Spacing), "Pegged.DISCARDARROW")(TParseTree("", false,[], s));
955         else
956         {
957             forgetMemo();
958             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<:"), Spacing), "Pegged.DISCARDARROW"), "DISCARDARROW")(TParseTree("", false,[], s));
959         }
960     }
961     static string DISCARDARROW(GetName g)
962     {
963         return "Pegged.DISCARDARROW";
964     }
965 
966     static TParseTree KEEPARROW(TParseTree p)
967     {
968         if(__ctfe)
969         {
970             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<^"), Spacing), "Pegged.KEEPARROW")(p);
971         }
972         else
973         {
974             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<^"), Spacing), "Pegged.KEEPARROW"), "KEEPARROW")(p);
975         }
976     }
977     static TParseTree KEEPARROW(string s)
978     {
979         if(__ctfe)
980             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<^"), Spacing), "Pegged.KEEPARROW")(TParseTree("", false,[], s));
981         else
982         {
983             forgetMemo();
984             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<^"), Spacing), "Pegged.KEEPARROW"), "KEEPARROW")(TParseTree("", false,[], s));
985         }
986     }
987     static string KEEPARROW(GetName g)
988     {
989         return "Pegged.KEEPARROW";
990     }
991 
992     static TParseTree DROPARROW(TParseTree p)
993     {
994         if(__ctfe)
995         {
996             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<;"), Spacing), "Pegged.DROPARROW")(p);
997         }
998         else
999         {
1000             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<;"), Spacing), "Pegged.DROPARROW"), "DROPARROW")(p);
1001         }
1002     }
1003     static TParseTree DROPARROW(string s)
1004     {
1005         if(__ctfe)
1006             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<;"), Spacing), "Pegged.DROPARROW")(TParseTree("", false,[], s));
1007         else
1008         {
1009             forgetMemo();
1010             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<;"), Spacing), "Pegged.DROPARROW"), "DROPARROW")(TParseTree("", false,[], s));
1011         }
1012     }
1013     static string DROPARROW(GetName g)
1014     {
1015         return "Pegged.DROPARROW";
1016     }
1017 
1018     static TParseTree PROPAGATEARROW(TParseTree p)
1019     {
1020         if(__ctfe)
1021         {
1022             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<%"), Spacing), "Pegged.PROPAGATEARROW")(p);
1023         }
1024         else
1025         {
1026             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<%"), Spacing), "Pegged.PROPAGATEARROW"), "PROPAGATEARROW")(p);
1027         }
1028     }
1029     static TParseTree PROPAGATEARROW(string s)
1030     {
1031         if(__ctfe)
1032             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<%"), Spacing), "Pegged.PROPAGATEARROW")(TParseTree("", false,[], s));
1033         else
1034         {
1035             forgetMemo();
1036             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<%"), Spacing), "Pegged.PROPAGATEARROW"), "PROPAGATEARROW")(TParseTree("", false,[], s));
1037         }
1038     }
1039     static string PROPAGATEARROW(GetName g)
1040     {
1041         return "Pegged.PROPAGATEARROW";
1042     }
1043 
1044     static TParseTree SPACEARROW(TParseTree p)
1045     {
1046         if(__ctfe)
1047         {
1048             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<"), Spacing), "Pegged.SPACEARROW")(p);
1049         }
1050         else
1051         {
1052             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<"), Spacing), "Pegged.SPACEARROW"), "SPACEARROW")(p);
1053         }
1054     }
1055     static TParseTree SPACEARROW(string s)
1056     {
1057         if(__ctfe)
1058             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<"), Spacing), "Pegged.SPACEARROW")(TParseTree("", false,[], s));
1059         else
1060         {
1061             forgetMemo();
1062             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<"), Spacing), "Pegged.SPACEARROW"), "SPACEARROW")(TParseTree("", false,[], s));
1063         }
1064     }
1065     static string SPACEARROW(GetName g)
1066     {
1067         return "Pegged.SPACEARROW";
1068     }
1069 
1070     static TParseTree ACTIONARROW(TParseTree p)
1071     {
1072         if(__ctfe)
1073         {
1074             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<"), Action, Spacing), "Pegged.ACTIONARROW")(p);
1075         }
1076         else
1077         {
1078             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<"), Action, Spacing), "Pegged.ACTIONARROW"), "ACTIONARROW")(p);
1079         }
1080     }
1081     static TParseTree ACTIONARROW(string s)
1082     {
1083         if(__ctfe)
1084             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<"), Action, Spacing), "Pegged.ACTIONARROW")(TParseTree("", false,[], s));
1085         else
1086         {
1087             forgetMemo();
1088             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("<"), Action, Spacing), "Pegged.ACTIONARROW"), "ACTIONARROW")(TParseTree("", false,[], s));
1089         }
1090     }
1091     static string ACTIONARROW(GetName g)
1092     {
1093         return "Pegged.ACTIONARROW";
1094     }
1095 
1096     static TParseTree OR(TParseTree p)
1097     {
1098         if(__ctfe)
1099         {
1100             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("/"), Spacing), "Pegged.OR")(p);
1101         }
1102         else
1103         {
1104             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("/"), Spacing), "Pegged.OR"), "OR")(p);
1105         }
1106     }
1107     static TParseTree OR(string s)
1108     {
1109         if(__ctfe)
1110             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("/"), Spacing), "Pegged.OR")(TParseTree("", false,[], s));
1111         else
1112         {
1113             forgetMemo();
1114             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("/"), Spacing), "Pegged.OR"), "OR")(TParseTree("", false,[], s));
1115         }
1116     }
1117     static string OR(GetName g)
1118     {
1119         return "Pegged.OR";
1120     }
1121 
1122     static TParseTree LONGEST_OR(TParseTree p)
1123     {
1124         if(__ctfe)
1125         {
1126             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("|"), Spacing), "Pegged.LONGEST_OR")(p);
1127         }
1128         else
1129         {
1130             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("|"), Spacing), "Pegged.LONGEST_OR"), "LONGEST_OR")(p);
1131         }
1132     }
1133     static TParseTree LONGEST_OR(string s)
1134     {
1135         if(__ctfe)
1136             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("|"), Spacing), "Pegged.LONGEST_OR")(TParseTree("", false,[], s));
1137         else
1138         {
1139             forgetMemo();
1140             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("|"), Spacing), "Pegged.LONGEST_OR"), "LONGEST_OR")(TParseTree("", false,[], s));
1141         }
1142     }
1143     static string LONGEST_OR(GetName g)
1144     {
1145         return "Pegged.LONGEST_OR";
1146     }
1147 
1148     static TParseTree POS(TParseTree p)
1149     {
1150         if(__ctfe)
1151         {
1152             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("&"), Spacing), "Pegged.POS")(p);
1153         }
1154         else
1155         {
1156             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("&"), Spacing), "Pegged.POS"), "POS")(p);
1157         }
1158     }
1159     static TParseTree POS(string s)
1160     {
1161         if(__ctfe)
1162             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("&"), Spacing), "Pegged.POS")(TParseTree("", false,[], s));
1163         else
1164         {
1165             forgetMemo();
1166             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("&"), Spacing), "Pegged.POS"), "POS")(TParseTree("", false,[], s));
1167         }
1168     }
1169     static string POS(GetName g)
1170     {
1171         return "Pegged.POS";
1172     }
1173 
1174     static TParseTree NEG(TParseTree p)
1175     {
1176         if(__ctfe)
1177         {
1178             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("!"), Spacing), "Pegged.NEG")(p);
1179         }
1180         else
1181         {
1182             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("!"), Spacing), "Pegged.NEG"), "NEG")(p);
1183         }
1184     }
1185     static TParseTree NEG(string s)
1186     {
1187         if(__ctfe)
1188             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("!"), Spacing), "Pegged.NEG")(TParseTree("", false,[], s));
1189         else
1190         {
1191             forgetMemo();
1192             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("!"), Spacing), "Pegged.NEG"), "NEG")(TParseTree("", false,[], s));
1193         }
1194     }
1195     static string NEG(GetName g)
1196     {
1197         return "Pegged.NEG";
1198     }
1199 
1200     static TParseTree FUSE(TParseTree p)
1201     {
1202         if(__ctfe)
1203         {
1204             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("~"), Spacing), "Pegged.FUSE")(p);
1205         }
1206         else
1207         {
1208             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("~"), Spacing), "Pegged.FUSE"), "FUSE")(p);
1209         }
1210     }
1211     static TParseTree FUSE(string s)
1212     {
1213         if(__ctfe)
1214             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("~"), Spacing), "Pegged.FUSE")(TParseTree("", false,[], s));
1215         else
1216         {
1217             forgetMemo();
1218             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("~"), Spacing), "Pegged.FUSE"), "FUSE")(TParseTree("", false,[], s));
1219         }
1220     }
1221     static string FUSE(GetName g)
1222     {
1223         return "Pegged.FUSE";
1224     }
1225 
1226     static TParseTree DISCARD(TParseTree p)
1227     {
1228         if(__ctfe)
1229         {
1230             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!(":"), Spacing), "Pegged.DISCARD")(p);
1231         }
1232         else
1233         {
1234             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!(":"), Spacing), "Pegged.DISCARD"), "DISCARD")(p);
1235         }
1236     }
1237     static TParseTree DISCARD(string s)
1238     {
1239         if(__ctfe)
1240             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!(":"), Spacing), "Pegged.DISCARD")(TParseTree("", false,[], s));
1241         else
1242         {
1243             forgetMemo();
1244             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!(":"), Spacing), "Pegged.DISCARD"), "DISCARD")(TParseTree("", false,[], s));
1245         }
1246     }
1247     static string DISCARD(GetName g)
1248     {
1249         return "Pegged.DISCARD";
1250     }
1251 
1252     static TParseTree KEEP(TParseTree p)
1253     {
1254         if(__ctfe)
1255         {
1256             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("^"), Spacing), "Pegged.KEEP")(p);
1257         }
1258         else
1259         {
1260             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("^"), Spacing), "Pegged.KEEP"), "KEEP")(p);
1261         }
1262     }
1263     static TParseTree KEEP(string s)
1264     {
1265         if(__ctfe)
1266             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("^"), Spacing), "Pegged.KEEP")(TParseTree("", false,[], s));
1267         else
1268         {
1269             forgetMemo();
1270             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("^"), Spacing), "Pegged.KEEP"), "KEEP")(TParseTree("", false,[], s));
1271         }
1272     }
1273     static string KEEP(GetName g)
1274     {
1275         return "Pegged.KEEP";
1276     }
1277 
1278     static TParseTree DROP(TParseTree p)
1279     {
1280         if(__ctfe)
1281         {
1282             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!(";"), Spacing), "Pegged.DROP")(p);
1283         }
1284         else
1285         {
1286             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!(";"), Spacing), "Pegged.DROP"), "DROP")(p);
1287         }
1288     }
1289     static TParseTree DROP(string s)
1290     {
1291         if(__ctfe)
1292             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!(";"), Spacing), "Pegged.DROP")(TParseTree("", false,[], s));
1293         else
1294         {
1295             forgetMemo();
1296             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!(";"), Spacing), "Pegged.DROP"), "DROP")(TParseTree("", false,[], s));
1297         }
1298     }
1299     static string DROP(GetName g)
1300     {
1301         return "Pegged.DROP";
1302     }
1303 
1304     static TParseTree PROPAGATE(TParseTree p)
1305     {
1306         if(__ctfe)
1307         {
1308             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("%"), Spacing), "Pegged.PROPAGATE")(p);
1309         }
1310         else
1311         {
1312             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("%"), Spacing), "Pegged.PROPAGATE"), "PROPAGATE")(p);
1313         }
1314     }
1315     static TParseTree PROPAGATE(string s)
1316     {
1317         if(__ctfe)
1318             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("%"), Spacing), "Pegged.PROPAGATE")(TParseTree("", false,[], s));
1319         else
1320         {
1321             forgetMemo();
1322             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("%"), Spacing), "Pegged.PROPAGATE"), "PROPAGATE")(TParseTree("", false,[], s));
1323         }
1324     }
1325     static string PROPAGATE(GetName g)
1326     {
1327         return "Pegged.PROPAGATE";
1328     }
1329 
1330     static TParseTree OPTION(TParseTree p)
1331     {
1332         if(__ctfe)
1333         {
1334             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("?"), Spacing), "Pegged.OPTION")(p);
1335         }
1336         else
1337         {
1338             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("?"), Spacing), "Pegged.OPTION"), "OPTION")(p);
1339         }
1340     }
1341     static TParseTree OPTION(string s)
1342     {
1343         if(__ctfe)
1344             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("?"), Spacing), "Pegged.OPTION")(TParseTree("", false,[], s));
1345         else
1346         {
1347             forgetMemo();
1348             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("?"), Spacing), "Pegged.OPTION"), "OPTION")(TParseTree("", false,[], s));
1349         }
1350     }
1351     static string OPTION(GetName g)
1352     {
1353         return "Pegged.OPTION";
1354     }
1355 
1356     static TParseTree ZEROORMORE(TParseTree p)
1357     {
1358         if(__ctfe)
1359         {
1360             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("*"), Spacing), "Pegged.ZEROORMORE")(p);
1361         }
1362         else
1363         {
1364             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("*"), Spacing), "Pegged.ZEROORMORE"), "ZEROORMORE")(p);
1365         }
1366     }
1367     static TParseTree ZEROORMORE(string s)
1368     {
1369         if(__ctfe)
1370             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("*"), Spacing), "Pegged.ZEROORMORE")(TParseTree("", false,[], s));
1371         else
1372         {
1373             forgetMemo();
1374             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("*"), Spacing), "Pegged.ZEROORMORE"), "ZEROORMORE")(TParseTree("", false,[], s));
1375         }
1376     }
1377     static string ZEROORMORE(GetName g)
1378     {
1379         return "Pegged.ZEROORMORE";
1380     }
1381 
1382     static TParseTree ONEORMORE(TParseTree p)
1383     {
1384         if(__ctfe)
1385         {
1386             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("+"), Spacing), "Pegged.ONEORMORE")(p);
1387         }
1388         else
1389         {
1390             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("+"), Spacing), "Pegged.ONEORMORE"), "ONEORMORE")(p);
1391         }
1392     }
1393     static TParseTree ONEORMORE(string s)
1394     {
1395         if(__ctfe)
1396             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("+"), Spacing), "Pegged.ONEORMORE")(TParseTree("", false,[], s));
1397         else
1398         {
1399             forgetMemo();
1400             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("+"), Spacing), "Pegged.ONEORMORE"), "ONEORMORE")(TParseTree("", false,[], s));
1401         }
1402     }
1403     static string ONEORMORE(GetName g)
1404     {
1405         return "Pegged.ONEORMORE";
1406     }
1407 
1408     static TParseTree ACTIONOPEN(TParseTree p)
1409     {
1410         if(__ctfe)
1411         {
1412             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("{"), Spacing), "Pegged.ACTIONOPEN")(p);
1413         }
1414         else
1415         {
1416             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("{"), Spacing), "Pegged.ACTIONOPEN"), "ACTIONOPEN")(p);
1417         }
1418     }
1419     static TParseTree ACTIONOPEN(string s)
1420     {
1421         if(__ctfe)
1422             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("{"), Spacing), "Pegged.ACTIONOPEN")(TParseTree("", false,[], s));
1423         else
1424         {
1425             forgetMemo();
1426             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("{"), Spacing), "Pegged.ACTIONOPEN"), "ACTIONOPEN")(TParseTree("", false,[], s));
1427         }
1428     }
1429     static string ACTIONOPEN(GetName g)
1430     {
1431         return "Pegged.ACTIONOPEN";
1432     }
1433 
1434     static TParseTree ACTIONCLOSE(TParseTree p)
1435     {
1436         if(__ctfe)
1437         {
1438             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("}"), Spacing), "Pegged.ACTIONCLOSE")(p);
1439         }
1440         else
1441         {
1442             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("}"), Spacing), "Pegged.ACTIONCLOSE"), "ACTIONCLOSE")(p);
1443         }
1444     }
1445     static TParseTree ACTIONCLOSE(string s)
1446     {
1447         if(__ctfe)
1448             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("}"), Spacing), "Pegged.ACTIONCLOSE")(TParseTree("", false,[], s));
1449         else
1450         {
1451             forgetMemo();
1452             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("}"), Spacing), "Pegged.ACTIONCLOSE"), "ACTIONCLOSE")(TParseTree("", false,[], s));
1453         }
1454     }
1455     static string ACTIONCLOSE(GetName g)
1456     {
1457         return "Pegged.ACTIONCLOSE";
1458     }
1459 
1460     static TParseTree SEPARATOR(TParseTree p)
1461     {
1462         if(__ctfe)
1463         {
1464             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!(","), Spacing), "Pegged.SEPARATOR")(p);
1465         }
1466         else
1467         {
1468             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!(","), Spacing), "Pegged.SEPARATOR"), "SEPARATOR")(p);
1469         }
1470     }
1471     static TParseTree SEPARATOR(string s)
1472     {
1473         if(__ctfe)
1474             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!(","), Spacing), "Pegged.SEPARATOR")(TParseTree("", false,[], s));
1475         else
1476         {
1477             forgetMemo();
1478             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!(","), Spacing), "Pegged.SEPARATOR"), "SEPARATOR")(TParseTree("", false,[], s));
1479         }
1480     }
1481     static string SEPARATOR(GetName g)
1482     {
1483         return "Pegged.SEPARATOR";
1484     }
1485 
1486     static TParseTree ASSIGN(TParseTree p)
1487     {
1488         if(__ctfe)
1489         {
1490             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("="), Spacing), "Pegged.ASSIGN")(p);
1491         }
1492         else
1493         {
1494             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("="), Spacing), "Pegged.ASSIGN"), "ASSIGN")(p);
1495         }
1496     }
1497     static TParseTree ASSIGN(string s)
1498     {
1499         if(__ctfe)
1500             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("="), Spacing), "Pegged.ASSIGN")(TParseTree("", false,[], s));
1501         else
1502         {
1503             forgetMemo();
1504             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("="), Spacing), "Pegged.ASSIGN"), "ASSIGN")(TParseTree("", false,[], s));
1505         }
1506     }
1507     static string ASSIGN(GetName g)
1508     {
1509         return "Pegged.ASSIGN";
1510     }
1511 
1512     static TParseTree NAMESEP(TParseTree p)
1513     {
1514         if(__ctfe)
1515         {
1516             return         pegged.peg.defined!(pegged.peg.literal!("."), "Pegged.NAMESEP")(p);
1517         }
1518         else
1519         {
1520             return hooked!(pegged.peg.defined!(pegged.peg.literal!("."), "Pegged.NAMESEP"), "NAMESEP")(p);
1521         }
1522     }
1523     static TParseTree NAMESEP(string s)
1524     {
1525         if(__ctfe)
1526             return         pegged.peg.defined!(pegged.peg.literal!("."), "Pegged.NAMESEP")(TParseTree("", false,[], s));
1527         else
1528         {
1529             forgetMemo();
1530             return hooked!(pegged.peg.defined!(pegged.peg.literal!("."), "Pegged.NAMESEP"), "NAMESEP")(TParseTree("", false,[], s));
1531         }
1532     }
1533     static string NAMESEP(GetName g)
1534     {
1535         return "Pegged.NAMESEP";
1536     }
1537 
1538     static TParseTree OPEN(TParseTree p)
1539     {
1540         if(__ctfe)
1541         {
1542             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("("), Spacing), "Pegged.OPEN")(p);
1543         }
1544         else
1545         {
1546             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("("), Spacing), "Pegged.OPEN"), "OPEN")(p);
1547         }
1548     }
1549     static TParseTree OPEN(string s)
1550     {
1551         if(__ctfe)
1552             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("("), Spacing), "Pegged.OPEN")(TParseTree("", false,[], s));
1553         else
1554         {
1555             forgetMemo();
1556             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("("), Spacing), "Pegged.OPEN"), "OPEN")(TParseTree("", false,[], s));
1557         }
1558     }
1559     static string OPEN(GetName g)
1560     {
1561         return "Pegged.OPEN";
1562     }
1563 
1564     static TParseTree CLOSE(TParseTree p)
1565     {
1566         if(__ctfe)
1567         {
1568             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!(")"), Spacing), "Pegged.CLOSE")(p);
1569         }
1570         else
1571         {
1572             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!(")"), Spacing), "Pegged.CLOSE"), "CLOSE")(p);
1573         }
1574     }
1575     static TParseTree CLOSE(string s)
1576     {
1577         if(__ctfe)
1578             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!(")"), Spacing), "Pegged.CLOSE")(TParseTree("", false,[], s));
1579         else
1580         {
1581             forgetMemo();
1582             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!(")"), Spacing), "Pegged.CLOSE"), "CLOSE")(TParseTree("", false,[], s));
1583         }
1584     }
1585     static string CLOSE(GetName g)
1586     {
1587         return "Pegged.CLOSE";
1588     }
1589 
1590     static TParseTree ANY(TParseTree p)
1591     {
1592         if(__ctfe)
1593         {
1594             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("."), Spacing), "Pegged.ANY")(p);
1595         }
1596         else
1597         {
1598             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("."), Spacing), "Pegged.ANY"), "ANY")(p);
1599         }
1600     }
1601     static TParseTree ANY(string s)
1602     {
1603         if(__ctfe)
1604             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("."), Spacing), "Pegged.ANY")(TParseTree("", false,[], s));
1605         else
1606         {
1607             forgetMemo();
1608             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("."), Spacing), "Pegged.ANY"), "ANY")(TParseTree("", false,[], s));
1609         }
1610     }
1611     static string ANY(GetName g)
1612     {
1613         return "Pegged.ANY";
1614     }
1615 
1616     static TParseTree Spacing(TParseTree p)
1617     {
1618         if(__ctfe)
1619         {
1620             return         pegged.peg.defined!(pegged.peg.discard!(pegged.peg.zeroOrMore!(pegged.peg.or!(blank, Comment))), "Pegged.Spacing")(p);
1621         }
1622         else
1623         {
1624             return hooked!(pegged.peg.defined!(pegged.peg.discard!(pegged.peg.zeroOrMore!(pegged.peg.or!(blank, Comment))), "Pegged.Spacing"), "Spacing")(p);
1625         }
1626     }
1627     static TParseTree Spacing(string s)
1628     {
1629         if(__ctfe)
1630             return         pegged.peg.defined!(pegged.peg.discard!(pegged.peg.zeroOrMore!(pegged.peg.or!(blank, Comment))), "Pegged.Spacing")(TParseTree("", false,[], s));
1631         else
1632         {
1633             forgetMemo();
1634             return hooked!(pegged.peg.defined!(pegged.peg.discard!(pegged.peg.zeroOrMore!(pegged.peg.or!(blank, Comment))), "Pegged.Spacing"), "Spacing")(TParseTree("", false,[], s));
1635         }
1636     }
1637     static string Spacing(GetName g)
1638     {
1639         return "Pegged.Spacing";
1640     }
1641 
1642     static TParseTree Comment(TParseTree p)
1643     {
1644         if(__ctfe)
1645         {
1646             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("#"), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(eol), pegged.peg.any)), pegged.peg.discard!(eol)), "Pegged.Comment")(p);
1647         }
1648         else
1649         {
1650             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("#"), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(eol), pegged.peg.any)), pegged.peg.discard!(eol)), "Pegged.Comment"), "Comment")(p);
1651         }
1652     }
1653     static TParseTree Comment(string s)
1654     {
1655         if(__ctfe)
1656             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("#"), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(eol), pegged.peg.any)), pegged.peg.discard!(eol)), "Pegged.Comment")(TParseTree("", false,[], s));
1657         else
1658         {
1659             forgetMemo();
1660             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("#"), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(eol), pegged.peg.any)), pegged.peg.discard!(eol)), "Pegged.Comment"), "Comment")(TParseTree("", false,[], s));
1661         }
1662     }
1663     static string Comment(GetName g)
1664     {
1665         return "Pegged.Comment";
1666     }
1667 
1668     static TParseTree Space(TParseTree p)
1669     {
1670         if(__ctfe)
1671         {
1672             return         pegged.peg.defined!(pegged.peg.or!(spacing, pegged.peg.literal!("\\t"), pegged.peg.literal!("\\n"), pegged.peg.literal!("\\r")), "Pegged.Space")(p);
1673         }
1674         else
1675         {
1676             return hooked!(pegged.peg.defined!(pegged.peg.or!(spacing, pegged.peg.literal!("\\t"), pegged.peg.literal!("\\n"), pegged.peg.literal!("\\r")), "Pegged.Space"), "Space")(p);
1677         }
1678     }
1679     static TParseTree Space(string s)
1680     {
1681         if(__ctfe)
1682             return         pegged.peg.defined!(pegged.peg.or!(spacing, pegged.peg.literal!("\\t"), pegged.peg.literal!("\\n"), pegged.peg.literal!("\\r")), "Pegged.Space")(TParseTree("", false,[], s));
1683         else
1684         {
1685             forgetMemo();
1686             return hooked!(pegged.peg.defined!(pegged.peg.or!(spacing, pegged.peg.literal!("\\t"), pegged.peg.literal!("\\n"), pegged.peg.literal!("\\r")), "Pegged.Space"), "Space")(TParseTree("", false,[], s));
1687         }
1688     }
1689     static string Space(GetName g)
1690     {
1691         return "Pegged.Space";
1692     }
1693 
1694     static TParseTree Action(TParseTree p)
1695     {
1696         if(__ctfe)
1697         {
1698             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(ACTIONOPEN), Spacing, pegged.peg.and!(pegged.peg.or!(Lambda, qualifiedIdentifier), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.discard!(SEPARATOR), pegged.peg.or!(Lambda, qualifiedIdentifier)))), Spacing, pegged.peg.discard!(ACTIONCLOSE)), "Pegged.Action")(p);
1699         }
1700         else
1701         {
1702             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(ACTIONOPEN), Spacing, pegged.peg.and!(pegged.peg.or!(Lambda, qualifiedIdentifier), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.discard!(SEPARATOR), pegged.peg.or!(Lambda, qualifiedIdentifier)))), Spacing, pegged.peg.discard!(ACTIONCLOSE)), "Pegged.Action"), "Action")(p);
1703         }
1704     }
1705     static TParseTree Action(string s)
1706     {
1707         if(__ctfe)
1708             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(ACTIONOPEN), Spacing, pegged.peg.and!(pegged.peg.or!(Lambda, qualifiedIdentifier), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.discard!(SEPARATOR), pegged.peg.or!(Lambda, qualifiedIdentifier)))), Spacing, pegged.peg.discard!(ACTIONCLOSE)), "Pegged.Action")(TParseTree("", false,[], s));
1709         else
1710         {
1711             forgetMemo();
1712             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.discard!(ACTIONOPEN), Spacing, pegged.peg.and!(pegged.peg.or!(Lambda, qualifiedIdentifier), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.discard!(SEPARATOR), pegged.peg.or!(Lambda, qualifiedIdentifier)))), Spacing, pegged.peg.discard!(ACTIONCLOSE)), "Pegged.Action"), "Action")(TParseTree("", false,[], s));
1713         }
1714     }
1715     static string Action(GetName g)
1716     {
1717         return "Pegged.Action";
1718     }
1719 
1720     static TParseTree Lambda(TParseTree p)
1721     {
1722         if(__ctfe)
1723         {
1724             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(ACTIONCLOSE, SEPARATOR)), pegged.peg.or!(LambdaItems, NestedList!(pegged.peg.literal!("{"), LambdaItems, pegged.peg.literal!("}")), pegged.peg.any)))), "Pegged.Lambda")(p);
1725         }
1726         else
1727         {
1728             return hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(ACTIONCLOSE, SEPARATOR)), pegged.peg.or!(LambdaItems, NestedList!(pegged.peg.literal!("{"), LambdaItems, pegged.peg.literal!("}")), pegged.peg.any)))), "Pegged.Lambda"), "Lambda")(p);
1729         }
1730     }
1731     static TParseTree Lambda(string s)
1732     {
1733         if(__ctfe)
1734             return         pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(ACTIONCLOSE, SEPARATOR)), pegged.peg.or!(LambdaItems, NestedList!(pegged.peg.literal!("{"), LambdaItems, pegged.peg.literal!("}")), pegged.peg.any)))), "Pegged.Lambda")(TParseTree("", false,[], s));
1735         else
1736         {
1737             forgetMemo();
1738             return hooked!(pegged.peg.defined!(pegged.peg.fuse!(pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(ACTIONCLOSE, SEPARATOR)), pegged.peg.or!(LambdaItems, NestedList!(pegged.peg.literal!("{"), LambdaItems, pegged.peg.literal!("}")), pegged.peg.any)))), "Pegged.Lambda"), "Lambda")(TParseTree("", false,[], s));
1739         }
1740     }
1741     static string Lambda(GetName g)
1742     {
1743         return "Pegged.Lambda";
1744     }
1745 
1746     static TParseTree LambdaItems(TParseTree p)
1747     {
1748         if(__ctfe)
1749         {
1750             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.fuse!(DComment), pegged.peg.fuse!(DString), pegged.peg.fuse!(DParamList)), "Pegged.LambdaItems")(p);
1751         }
1752         else
1753         {
1754             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.fuse!(DComment), pegged.peg.fuse!(DString), pegged.peg.fuse!(DParamList)), "Pegged.LambdaItems"), "LambdaItems")(p);
1755         }
1756     }
1757     static TParseTree LambdaItems(string s)
1758     {
1759         if(__ctfe)
1760             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.fuse!(DComment), pegged.peg.fuse!(DString), pegged.peg.fuse!(DParamList)), "Pegged.LambdaItems")(TParseTree("", false,[], s));
1761         else
1762         {
1763             forgetMemo();
1764             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.fuse!(DComment), pegged.peg.fuse!(DString), pegged.peg.fuse!(DParamList)), "Pegged.LambdaItems"), "LambdaItems")(TParseTree("", false,[], s));
1765         }
1766     }
1767     static string LambdaItems(GetName g)
1768     {
1769         return "Pegged.LambdaItems";
1770     }
1771 
1772     static TParseTree DString(TParseTree p)
1773     {
1774         if(__ctfe)
1775         {
1776             return         pegged.peg.defined!(pegged.peg.or!(WYSString, DBQString, TKNString, DLMString), "Pegged.DString")(p);
1777         }
1778         else
1779         {
1780             return hooked!(pegged.peg.defined!(pegged.peg.or!(WYSString, DBQString, TKNString, DLMString), "Pegged.DString"), "DString")(p);
1781         }
1782     }
1783     static TParseTree DString(string s)
1784     {
1785         if(__ctfe)
1786             return         pegged.peg.defined!(pegged.peg.or!(WYSString, DBQString, TKNString, DLMString), "Pegged.DString")(TParseTree("", false,[], s));
1787         else
1788         {
1789             forgetMemo();
1790             return hooked!(pegged.peg.defined!(pegged.peg.or!(WYSString, DBQString, TKNString, DLMString), "Pegged.DString"), "DString")(TParseTree("", false,[], s));
1791         }
1792     }
1793     static string DString(GetName g)
1794     {
1795         return "Pegged.DString";
1796     }
1797 
1798     static TParseTree WYSString(TParseTree p)
1799     {
1800         if(__ctfe)
1801         {
1802             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("r"), doublequote, pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(doublequote), pegged.peg.any)), doublequote), pegged.peg.and!(backquote, pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(backquote), pegged.peg.any)), backquote)), "Pegged.WYSString")(p);
1803         }
1804         else
1805         {
1806             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("r"), doublequote, pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(doublequote), pegged.peg.any)), doublequote), pegged.peg.and!(backquote, pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(backquote), pegged.peg.any)), backquote)), "Pegged.WYSString"), "WYSString")(p);
1807         }
1808     }
1809     static TParseTree WYSString(string s)
1810     {
1811         if(__ctfe)
1812             return         pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("r"), doublequote, pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(doublequote), pegged.peg.any)), doublequote), pegged.peg.and!(backquote, pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(backquote), pegged.peg.any)), backquote)), "Pegged.WYSString")(TParseTree("", false,[], s));
1813         else
1814         {
1815             forgetMemo();
1816             return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(pegged.peg.literal!("r"), doublequote, pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(doublequote), pegged.peg.any)), doublequote), pegged.peg.and!(backquote, pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(backquote), pegged.peg.any)), backquote)), "Pegged.WYSString"), "WYSString")(TParseTree("", false,[], s));
1817         }
1818     }
1819     static string WYSString(GetName g)
1820     {
1821         return "Pegged.WYSString";
1822     }
1823 
1824     static TParseTree DBQString(TParseTree p)
1825     {
1826         if(__ctfe)
1827         {
1828             return         pegged.peg.defined!(pegged.peg.and!(doublequote, pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(doublequote), Char)), doublequote), "Pegged.DBQString")(p);
1829         }
1830         else
1831         {
1832             return hooked!(pegged.peg.defined!(pegged.peg.and!(doublequote, pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(doublequote), Char)), doublequote), "Pegged.DBQString"), "DBQString")(p);
1833         }
1834     }
1835     static TParseTree DBQString(string s)
1836     {
1837         if(__ctfe)
1838             return         pegged.peg.defined!(pegged.peg.and!(doublequote, pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(doublequote), Char)), doublequote), "Pegged.DBQString")(TParseTree("", false,[], s));
1839         else
1840         {
1841             forgetMemo();
1842             return hooked!(pegged.peg.defined!(pegged.peg.and!(doublequote, pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(doublequote), Char)), doublequote), "Pegged.DBQString"), "DBQString")(TParseTree("", false,[], s));
1843         }
1844     }
1845     static string DBQString(GetName g)
1846     {
1847         return "Pegged.DBQString";
1848     }
1849 
1850     static TParseTree TKNString(TParseTree p)
1851     {
1852         if(__ctfe)
1853         {
1854             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.posLookahead!(pegged.peg.literal!("q{")), pegged.peg.and!(pegged.peg.literal!("q"), NestedList!(pegged.peg.literal!("{"), DString, pegged.peg.literal!("}")))), "Pegged.TKNString")(p);
1855         }
1856         else
1857         {
1858             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.posLookahead!(pegged.peg.literal!("q{")), pegged.peg.and!(pegged.peg.literal!("q"), NestedList!(pegged.peg.literal!("{"), DString, pegged.peg.literal!("}")))), "Pegged.TKNString"), "TKNString")(p);
1859         }
1860     }
1861     static TParseTree TKNString(string s)
1862     {
1863         if(__ctfe)
1864             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.posLookahead!(pegged.peg.literal!("q{")), pegged.peg.and!(pegged.peg.literal!("q"), NestedList!(pegged.peg.literal!("{"), DString, pegged.peg.literal!("}")))), "Pegged.TKNString")(TParseTree("", false,[], s));
1865         else
1866         {
1867             forgetMemo();
1868             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.posLookahead!(pegged.peg.literal!("q{")), pegged.peg.and!(pegged.peg.literal!("q"), NestedList!(pegged.peg.literal!("{"), DString, pegged.peg.literal!("}")))), "Pegged.TKNString"), "TKNString")(TParseTree("", false,[], s));
1869         }
1870     }
1871     static string TKNString(GetName g)
1872     {
1873         return "Pegged.TKNString";
1874     }
1875 
1876     static TParseTree DLMString(TParseTree p)
1877     {
1878         if(__ctfe)
1879         {
1880             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.and!(pegged.peg.literal!("q"), doublequote), pegged.peg.or!(pegged.peg.and!(pegged.peg.posLookahead!(pegged.peg.literal!("{")), NestedList!(pegged.peg.literal!("{"), DString, pegged.peg.literal!("}"))), pegged.peg.and!(pegged.peg.posLookahead!(pegged.peg.literal!("[")), NestedList!(pegged.peg.literal!("["), DString, pegged.peg.literal!("]"))), pegged.peg.and!(pegged.peg.posLookahead!(pegged.peg.literal!("(")), NestedList!(pegged.peg.literal!("("), DString, pegged.peg.literal!(")"))), pegged.peg.and!(pegged.peg.posLookahead!(pegged.peg.literal!("<")), NestedList!(pegged.peg.literal!("<"), DString, pegged.peg.literal!(">")))), doublequote), "Pegged.DLMString")(p);
1881         }
1882         else
1883         {
1884             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.and!(pegged.peg.literal!("q"), doublequote), pegged.peg.or!(pegged.peg.and!(pegged.peg.posLookahead!(pegged.peg.literal!("{")), NestedList!(pegged.peg.literal!("{"), DString, pegged.peg.literal!("}"))), pegged.peg.and!(pegged.peg.posLookahead!(pegged.peg.literal!("[")), NestedList!(pegged.peg.literal!("["), DString, pegged.peg.literal!("]"))), pegged.peg.and!(pegged.peg.posLookahead!(pegged.peg.literal!("(")), NestedList!(pegged.peg.literal!("("), DString, pegged.peg.literal!(")"))), pegged.peg.and!(pegged.peg.posLookahead!(pegged.peg.literal!("<")), NestedList!(pegged.peg.literal!("<"), DString, pegged.peg.literal!(">")))), doublequote), "Pegged.DLMString"), "DLMString")(p);
1885         }
1886     }
1887     static TParseTree DLMString(string s)
1888     {
1889         if(__ctfe)
1890             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.and!(pegged.peg.literal!("q"), doublequote), pegged.peg.or!(pegged.peg.and!(pegged.peg.posLookahead!(pegged.peg.literal!("{")), NestedList!(pegged.peg.literal!("{"), DString, pegged.peg.literal!("}"))), pegged.peg.and!(pegged.peg.posLookahead!(pegged.peg.literal!("[")), NestedList!(pegged.peg.literal!("["), DString, pegged.peg.literal!("]"))), pegged.peg.and!(pegged.peg.posLookahead!(pegged.peg.literal!("(")), NestedList!(pegged.peg.literal!("("), DString, pegged.peg.literal!(")"))), pegged.peg.and!(pegged.peg.posLookahead!(pegged.peg.literal!("<")), NestedList!(pegged.peg.literal!("<"), DString, pegged.peg.literal!(">")))), doublequote), "Pegged.DLMString")(TParseTree("", false,[], s));
1891         else
1892         {
1893             forgetMemo();
1894             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.and!(pegged.peg.literal!("q"), doublequote), pegged.peg.or!(pegged.peg.and!(pegged.peg.posLookahead!(pegged.peg.literal!("{")), NestedList!(pegged.peg.literal!("{"), DString, pegged.peg.literal!("}"))), pegged.peg.and!(pegged.peg.posLookahead!(pegged.peg.literal!("[")), NestedList!(pegged.peg.literal!("["), DString, pegged.peg.literal!("]"))), pegged.peg.and!(pegged.peg.posLookahead!(pegged.peg.literal!("(")), NestedList!(pegged.peg.literal!("("), DString, pegged.peg.literal!(")"))), pegged.peg.and!(pegged.peg.posLookahead!(pegged.peg.literal!("<")), NestedList!(pegged.peg.literal!("<"), DString, pegged.peg.literal!(">")))), doublequote), "Pegged.DLMString"), "DLMString")(TParseTree("", false,[], s));
1895         }
1896     }
1897     static string DLMString(GetName g)
1898     {
1899         return "Pegged.DLMString";
1900     }
1901 
1902     static TParseTree DComment(TParseTree p)
1903     {
1904         if(__ctfe)
1905         {
1906             return         pegged.peg.defined!(pegged.peg.or!(DLineComment, DBlockComment, DNestingBlockComment), "Pegged.DComment")(p);
1907         }
1908         else
1909         {
1910             return hooked!(pegged.peg.defined!(pegged.peg.or!(DLineComment, DBlockComment, DNestingBlockComment), "Pegged.DComment"), "DComment")(p);
1911         }
1912     }
1913     static TParseTree DComment(string s)
1914     {
1915         if(__ctfe)
1916             return         pegged.peg.defined!(pegged.peg.or!(DLineComment, DBlockComment, DNestingBlockComment), "Pegged.DComment")(TParseTree("", false,[], s));
1917         else
1918         {
1919             forgetMemo();
1920             return hooked!(pegged.peg.defined!(pegged.peg.or!(DLineComment, DBlockComment, DNestingBlockComment), "Pegged.DComment"), "DComment")(TParseTree("", false,[], s));
1921         }
1922     }
1923     static string DComment(GetName g)
1924     {
1925         return "Pegged.DComment";
1926     }
1927 
1928     static TParseTree DLineComment(TParseTree p)
1929     {
1930         if(__ctfe)
1931         {
1932             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("//"), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(endOfLine), pegged.peg.any)), endOfLine), "Pegged.DLineComment")(p);
1933         }
1934         else
1935         {
1936             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("//"), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(endOfLine), pegged.peg.any)), endOfLine), "Pegged.DLineComment"), "DLineComment")(p);
1937         }
1938     }
1939     static TParseTree DLineComment(string s)
1940     {
1941         if(__ctfe)
1942             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("//"), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(endOfLine), pegged.peg.any)), endOfLine), "Pegged.DLineComment")(TParseTree("", false,[], s));
1943         else
1944         {
1945             forgetMemo();
1946             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("//"), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(endOfLine), pegged.peg.any)), endOfLine), "Pegged.DLineComment"), "DLineComment")(TParseTree("", false,[], s));
1947         }
1948     }
1949     static string DLineComment(GetName g)
1950     {
1951         return "Pegged.DLineComment";
1952     }
1953 
1954     static TParseTree DBlockComment(TParseTree p)
1955     {
1956         if(__ctfe)
1957         {
1958             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("/*"), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.literal!("*/")), pegged.peg.any)), pegged.peg.literal!("*/")), "Pegged.DBlockComment")(p);
1959         }
1960         else
1961         {
1962             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("/*"), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.literal!("*/")), pegged.peg.any)), pegged.peg.literal!("*/")), "Pegged.DBlockComment"), "DBlockComment")(p);
1963         }
1964     }
1965     static TParseTree DBlockComment(string s)
1966     {
1967         if(__ctfe)
1968             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("/*"), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.literal!("*/")), pegged.peg.any)), pegged.peg.literal!("*/")), "Pegged.DBlockComment")(TParseTree("", false,[], s));
1969         else
1970         {
1971             forgetMemo();
1972             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("/*"), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.literal!("*/")), pegged.peg.any)), pegged.peg.literal!("*/")), "Pegged.DBlockComment"), "DBlockComment")(TParseTree("", false,[], s));
1973         }
1974     }
1975     static string DBlockComment(GetName g)
1976     {
1977         return "Pegged.DBlockComment";
1978     }
1979 
1980     static TParseTree DNestingBlockComment(TParseTree p)
1981     {
1982         if(__ctfe)
1983         {
1984             return         pegged.peg.defined!(NestedList!(pegged.peg.literal!("/+"), pegged.peg.literal!("+/")), "Pegged.DNestingBlockComment")(p);
1985         }
1986         else
1987         {
1988             return hooked!(pegged.peg.defined!(NestedList!(pegged.peg.literal!("/+"), pegged.peg.literal!("+/")), "Pegged.DNestingBlockComment"), "DNestingBlockComment")(p);
1989         }
1990     }
1991     static TParseTree DNestingBlockComment(string s)
1992     {
1993         if(__ctfe)
1994             return         pegged.peg.defined!(NestedList!(pegged.peg.literal!("/+"), pegged.peg.literal!("+/")), "Pegged.DNestingBlockComment")(TParseTree("", false,[], s));
1995         else
1996         {
1997             forgetMemo();
1998             return hooked!(pegged.peg.defined!(NestedList!(pegged.peg.literal!("/+"), pegged.peg.literal!("+/")), "Pegged.DNestingBlockComment"), "DNestingBlockComment")(TParseTree("", false,[], s));
1999         }
2000     }
2001     static string DNestingBlockComment(GetName g)
2002     {
2003         return "Pegged.DNestingBlockComment";
2004     }
2005 
2006     static TParseTree DParamList(TParseTree p)
2007     {
2008         if(__ctfe)
2009         {
2010             return         pegged.peg.defined!(NestedList!(pegged.peg.literal!("("), pegged.peg.literal!(")")), "Pegged.DParamList")(p);
2011         }
2012         else
2013         {
2014             return hooked!(pegged.peg.defined!(NestedList!(pegged.peg.literal!("("), pegged.peg.literal!(")")), "Pegged.DParamList"), "DParamList")(p);
2015         }
2016     }
2017     static TParseTree DParamList(string s)
2018     {
2019         if(__ctfe)
2020             return         pegged.peg.defined!(NestedList!(pegged.peg.literal!("("), pegged.peg.literal!(")")), "Pegged.DParamList")(TParseTree("", false,[], s));
2021         else
2022         {
2023             forgetMemo();
2024             return hooked!(pegged.peg.defined!(NestedList!(pegged.peg.literal!("("), pegged.peg.literal!(")")), "Pegged.DParamList"), "DParamList")(TParseTree("", false,[], s));
2025         }
2026     }
2027     static string DParamList(GetName g)
2028     {
2029         return "Pegged.DParamList";
2030     }
2031 
2032     template NestedList(alias L, alias Items, alias R)
2033     {
2034     static TParseTree NestedList(TParseTree p)
2035     {
2036         if(__ctfe)
2037         {
2038             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.keep!(L), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(L, R, Items)), pegged.peg.any)), pegged.peg.zeroOrMore!(pegged.peg.or!(Items, NestedList!(L, Items, R), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(L, R, Items)), pegged.peg.any)))), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(L, R, Items)), pegged.peg.any)), pegged.peg.keep!(R)), "Pegged.NestedList!(" ~ pegged.peg.getName!(L)() ~ ", " ~ pegged.peg.getName!(Items)() ~ ", " ~ pegged.peg.getName!(R) ~ ")")(p);
2039         }
2040         else
2041         {
2042             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.keep!(L), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(L, R, Items)), pegged.peg.any)), pegged.peg.zeroOrMore!(pegged.peg.or!(Items, NestedList!(L, Items, R), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(L, R, Items)), pegged.peg.any)))), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(L, R, Items)), pegged.peg.any)), pegged.peg.keep!(R)), "Pegged.NestedList!(" ~ pegged.peg.getName!(L)() ~ ", " ~ pegged.peg.getName!(Items)() ~ ", " ~ pegged.peg.getName!(R) ~ ")"), "NestedList_3")(p);
2043         }
2044     }
2045     static TParseTree NestedList(string s)
2046     {
2047         if(__ctfe)
2048             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.keep!(L), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(L, R, Items)), pegged.peg.any)), pegged.peg.zeroOrMore!(pegged.peg.or!(Items, NestedList!(L, Items, R), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(L, R, Items)), pegged.peg.any)))), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(L, R, Items)), pegged.peg.any)), pegged.peg.keep!(R)), "Pegged.NestedList!(" ~ pegged.peg.getName!(L)() ~ ", " ~ pegged.peg.getName!(Items)() ~ ", " ~ pegged.peg.getName!(R) ~ ")")(TParseTree("", false,[], s));
2049         else
2050         {
2051             forgetMemo();
2052             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.keep!(L), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(L, R, Items)), pegged.peg.any)), pegged.peg.zeroOrMore!(pegged.peg.or!(Items, NestedList!(L, Items, R), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(L, R, Items)), pegged.peg.any)))), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(L, R, Items)), pegged.peg.any)), pegged.peg.keep!(R)), "Pegged.NestedList!(" ~ pegged.peg.getName!(L)() ~ ", " ~ pegged.peg.getName!(Items)() ~ ", " ~ pegged.peg.getName!(R) ~ ")"), "NestedList_3")(TParseTree("", false,[], s));
2053         }
2054     }
2055     static string NestedList(GetName g)
2056     {
2057         return "Pegged.NestedList!(" ~ pegged.peg.getName!(L)() ~ ", " ~ pegged.peg.getName!(Items)() ~ ", " ~ pegged.peg.getName!(R) ~ ")";
2058     }
2059 
2060     }
2061     template NestedList(alias L, alias R)
2062     {
2063     static TParseTree NestedList(TParseTree p)
2064     {
2065         if(__ctfe)
2066         {
2067             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.keep!(L), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(L, R)), pegged.peg.any)), pegged.peg.zeroOrMore!(pegged.peg.or!(NestedList!(L, R), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(L, R)), pegged.peg.any)))), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(L, R)), pegged.peg.any)), pegged.peg.keep!(R)), "Pegged.NestedList!(" ~ pegged.peg.getName!(L)() ~ ", " ~ pegged.peg.getName!(R) ~ ")")(p);
2068         }
2069         else
2070         {
2071             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.keep!(L), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(L, R)), pegged.peg.any)), pegged.peg.zeroOrMore!(pegged.peg.or!(NestedList!(L, R), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(L, R)), pegged.peg.any)))), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(L, R)), pegged.peg.any)), pegged.peg.keep!(R)), "Pegged.NestedList!(" ~ pegged.peg.getName!(L)() ~ ", " ~ pegged.peg.getName!(R) ~ ")"), "NestedList_2")(p);
2072         }
2073     }
2074     static TParseTree NestedList(string s)
2075     {
2076         if(__ctfe)
2077             return         pegged.peg.defined!(pegged.peg.and!(pegged.peg.keep!(L), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(L, R)), pegged.peg.any)), pegged.peg.zeroOrMore!(pegged.peg.or!(NestedList!(L, R), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(L, R)), pegged.peg.any)))), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(L, R)), pegged.peg.any)), pegged.peg.keep!(R)), "Pegged.NestedList!(" ~ pegged.peg.getName!(L)() ~ ", " ~ pegged.peg.getName!(R) ~ ")")(TParseTree("", false,[], s));
2078         else
2079         {
2080             forgetMemo();
2081             return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.keep!(L), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(L, R)), pegged.peg.any)), pegged.peg.zeroOrMore!(pegged.peg.or!(NestedList!(L, R), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(L, R)), pegged.peg.any)))), pegged.peg.zeroOrMore!(pegged.peg.and!(pegged.peg.negLookahead!(pegged.peg.or!(L, R)), pegged.peg.any)), pegged.peg.keep!(R)), "Pegged.NestedList!(" ~ pegged.peg.getName!(L)() ~ ", " ~ pegged.peg.getName!(R) ~ ")"), "NestedList_2")(TParseTree("", false,[], s));
2082         }
2083     }
2084     static string NestedList(GetName g)
2085     {
2086         return "Pegged.NestedList!(" ~ pegged.peg.getName!(L)() ~ ", " ~ pegged.peg.getName!(R) ~ ")";
2087     }
2088 
2089     }
2090     static TParseTree opCall(TParseTree p)
2091     {
2092         TParseTree result = decimateTree(Grammar(p));
2093         result.children = [result];
2094         result.name = "Pegged";
2095         return result;
2096     }
2097 
2098     static TParseTree opCall(string input)
2099     {
2100         forgetMemo();
2101         return Pegged(TParseTree(``, false, [], input, 0, 0));
2102     }
2103     static string opCall(GetName g)
2104     {
2105         return "Pegged";
2106     }
2107 
2108 
2109     static void forgetMemo()
2110     {
2111     }
2112     }
2113 }
2114 
2115 alias GenericPegged!(ParseTree).Pegged Pegged;
2116