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