1 /++ 2 This module was automatically generated from the following grammar: 3 4 #; This is a slightly modified copy of https://github.com/toml-lang/toml/blob/master/toml.abnf 5 #; 6 #; - '=/' has been removed, so all alternatives are defined using regular '/'. 7 #; 8 #; - Rules that share their names with keywords in D have their names appended 9 #; with a hyphen (e.g., "float" becomes "float-"), which gets translated to an 10 #; underscore in PEG. 11 #; 12 #; - https://github.com/sanjayss/abnf2peg has been used to translate the ABNF to 13 #; PEG. 14 #; 15 #; - The PEG version also has `TomlGrammar:` added before the first rule. 16 17 #; WARNING: This document is a work-in-progress and should not be considered 18 #; authoritative until further notice. 19 20 #; This is an attempt to define TOML in ABNF according to the grammar defined 21 #; in RFC 5234 (http://www.ietf.org/rfc/rfc5234.txt). 22 23 #; You can try out this grammar using http://instaparse.mojombo.com/ 24 #; To do so, in the lower right, click on Options and change `:input-format` to 25 #; ':abnf'. Then paste this entire ABNF document into the grammar entry box 26 #; (above the options). Then you can type or paste a sample TOML document into 27 #; the beige box on the left. Tada! 28 29 #; Overall Structure 30 31 32 TomlGrammar: 33 34 35 toml < expression+ :eoi 36 expression <- ws (table / keyval)? ws comment? 37 38 # expression <- ws ( comment )? / ws keyval ws ( comment )? / ws table ws ( comment )? 39 40 #; Whitespace 41 42 ws <- wschar* 43 wschar <- [ \t] # Space / Horizontal tab 44 45 #; Newline 46 47 newline <- "\r"? "\n" # LF / CRLF 48 49 #; Comment 50 51 comment_start_symbol <- [#] # # 52 non_ascii <- [\x80-\uD7FF\uE000-\U0010FFFF] 53 non_eol <- [\t -\x7F] / non_ascii 54 55 comment <- comment_start_symbol non_eol* 56 57 #; Key-Value pairs 58 59 keyval <- key keyval_sep val 60 61 key <- dotted_key / simple_key 62 simple_key <- quoted_key / unquoted_key 63 64 unquoted_key <- ( ALPHA / DIGIT / [-_] )+ # A-Z / a-z / 0-9 / - / _ 65 quoted_key <- basic_string / literal_string 66 dotted_key <- simple_key ( dot_sep simple_key )+ 67 68 dot_sep <- ws [.] ws # . Period 69 keyval_sep <- ws [=] ws # = 70 71 val <- string_ / boolean / array / inline_table / date_time / float_ / integer 72 73 #; String 74 75 string_ <- ml_basic_string / basic_string / ml_literal_string / literal_string 76 77 #; Basic String 78 79 basic_string <- quotation_mark basic_char* quotation_mark 80 81 quotation_mark <- ["] # " 82 83 basic_char <- basic_unescaped / escaped 84 basic_unescaped <- wschar / [!#-\[\]-~] / non_ascii 85 escaped <- escape escape_seq_char 86 87 escape <- [\\] # \ backslash 88 # " / \ / b / f / n / r / t / uXXXX / UXXXXXXXX 89 90 escape_seq_char <- ["\\bfnrt] / [u] HEXDIG HEXDIG HEXDIG HEXDIG / [U] HEXDIG HEXDIG HEXDIG HEXDIG HEXDIG HEXDIG HEXDIG HEXDIG 91 92 #; Multiline Basic String 93 94 ml_basic_string <- ml_basic_string_delim ml_basic_body ml_basic_string_delim 95 ml_basic_string_delim <- quotation_mark quotation_mark quotation_mark 96 ml_basic_body <- mlb_content* ( mlb_quotes mlb_content+ )* ( mlb_quotes )? 97 98 mlb_content <- mlb_char / newline / mlb_escaped_nl 99 mlb_char <- mlb_unescaped / escaped 100 mlb_quotes <- quotation_mark quotation_mark? !quotation_mark 101 mlb_unescaped <- wschar / [!#-\[\]-~] / non_ascii 102 mlb_escaped_nl <- escape ws newline ( wschar / newline )* 103 104 #; Literal String 105 106 literal_string <- apostrophe literal_char* apostrophe 107 108 apostrophe <- ['] # ' apostrophe 109 110 literal_char <- [\t -&(-~] / non_ascii 111 112 #; Multiline Literal String 113 114 ml_literal_string <- ml_literal_string_delim ml_literal_body ml_literal_string_delim 115 ml_literal_string_delim <- apostrophe apostrophe apostrophe 116 ml_literal_body <- mll_content* ( mll_quotes mll_content+ )* ( mll_quotes )? 117 118 mll_content <- mll_char / newline 119 mll_char <- [\t -&(-~] / non_ascii 120 mll_quotes <- apostrophe apostrophe? !apostrophe 121 122 #; Integer 123 124 integer <- hex_int / oct_int / bin_int / dec_int 125 126 minus <- [-] # - 127 plus <- [+] # + 128 underscore <- [_] # _ 129 digit1_9 <- [1-9] # 1-9 130 digit0_7 <- [0-7] # 0-7 131 digit0_1 <- [0-1] # 0-1 132 133 hex_prefix <- "0x" # 0x 134 oct_prefix <- "0o" # 0o 135 bin_prefix <- "0b" # 0b 136 137 dec_int <- ( minus / plus )? unsigned_dec_int 138 unsigned_dec_int <- digit1_9 ( DIGIT / underscore DIGIT )+ / DIGIT 139 140 hex_int <- hex_prefix HEXDIG ( HEXDIG / underscore HEXDIG )* 141 oct_int <- oct_prefix digit0_7 ( digit0_7 / underscore digit0_7 )* 142 bin_int <- bin_prefix digit0_1 ( digit0_1 / underscore digit0_1 )* 143 144 #; Float 145 146 float_ <- float_int_part ( exp / frac ( exp )? ) / special_float 147 148 float_int_part <- dec_int 149 frac <- decimal_point zero_prefixable_int 150 decimal_point <- [.] # . 151 zero_prefixable_int <- DIGIT ( DIGIT / underscore DIGIT )* 152 153 exp <- "e" float_exp_part 154 float_exp_part <- ( minus / plus )? zero_prefixable_int 155 156 special_float <- ( minus / plus )? ( inf / nan ) 157 inf <- "inf" # inf 158 nan <- "nan" # nan 159 160 #; Boolean 161 162 boolean <- true_ / false_ 163 164 true_ <- "true" # true 165 false_ <- "false" # false 166 167 #; Date and Time (as defined in RFC 3339) 168 169 date_time <- offset_date_time / local_date_time / local_date / local_time 170 171 date_fullyear <- DIGIT DIGIT DIGIT DIGIT 172 date_month <- DIGIT DIGIT # 01-12 173 date_mday <- DIGIT DIGIT # 01-28, 01-29, 01-30, 01-31 based on month/year 174 time_delim <- "T" / [ ] # T, t, or space 175 time_hour <- DIGIT DIGIT # 00-23 176 time_minute <- DIGIT DIGIT # 00-59 177 time_second <- DIGIT DIGIT # 00-58, 00-59, 00-60 based on leap second rules 178 time_secfrac <- "." DIGIT+ 179 time_numoffset <- ( "+" / "-" ) time_hour ":" time_minute 180 time_offset <- "Z" / time_numoffset 181 182 partial_time <- time_hour ":" time_minute ":" time_second ( time_secfrac )? 183 full_date <- date_fullyear "-" date_month "-" date_mday 184 full_time <- partial_time time_offset 185 186 #; Offset Date-Time 187 188 offset_date_time <- full_date time_delim full_time 189 190 #; Local Date-Time 191 192 local_date_time <- full_date time_delim partial_time 193 194 #; Local Date 195 196 local_date <- full_date 197 198 #; Local Time 199 200 local_time <- partial_time 201 202 #; Array 203 204 array <- array_open ( array_values )? ws_comment_newline array_close 205 206 array_open <- [\[] # [ 207 array_close <- [\]] # ] 208 209 array_values <- ws_comment_newline val ws array_sep array_values / ws_comment_newline val ws ( array_sep )? 210 211 array_sep <- [,] # , Comma 212 213 ws_comment_newline <- ( wschar / ( comment )? newline )* 214 215 #; Table 216 217 table <- std_table / array_table 218 219 #; Standard Table 220 221 std_table <- std_table_open key std_table_close 222 223 std_table_open <- [\[] ws # [ Left square bracket 224 std_table_close <- ws [\]] # ] Right square bracket 225 226 #; Inline Table 227 228 inline_table <- inline_table_open ( inline_table_keyvals )? inline_table_close 229 230 inline_table_open <- [{] ws # { 231 inline_table_close <- ws [}] # } 232 inline_table_sep <- ws [,] ws # , Comma 233 234 inline_table_keyvals <- keyval ( inline_table_sep inline_table_keyvals )? 235 236 #; Array Table 237 238 array_table <- array_table_open key array_table_close 239 240 array_table_open <- "[[" ws # [[ Double left square bracket 241 array_table_close <- ws "]]" # ]] Double right square bracket 242 243 #; Built-in ABNF terms, reproduced here for clarity 244 245 ALPHA <- [A-Za-z] # A-Z / a-z 246 DIGIT <- [0-9] # 0-9 247 HEXDIG <- DIGIT / [A-Fa-f] 248 249 250 +/ 251 module toml_foolery.decode.peg_grammar; 252 253 package import pegged.peg; 254 import std.algorithm: startsWith; 255 import std.functional: toDelegate; 256 257 package struct GenericTomlGrammar(TParseTree) 258 { 259 import std.functional : toDelegate; 260 import pegged.dynamic.grammar; 261 static import pegged.peg; 262 struct TomlGrammar 263 { 264 enum name = "TomlGrammar"; 265 static ParseTree delegate(ParseTree)[string] before; 266 static ParseTree delegate(ParseTree)[string] after; 267 static ParseTree delegate(ParseTree)[string] rules; 268 import std.typecons:Tuple, tuple; 269 static TParseTree[Tuple!(string, size_t)] memo; 270 static this() 271 { 272 rules["toml"] = toDelegate(&toml); 273 rules["expression"] = toDelegate(&expression); 274 rules["ws"] = toDelegate(&ws); 275 rules["wschar"] = toDelegate(&wschar); 276 rules["newline"] = toDelegate(&newline); 277 rules["comment_start_symbol"] = toDelegate(&comment_start_symbol); 278 rules["non_ascii"] = toDelegate(&non_ascii); 279 rules["non_eol"] = toDelegate(&non_eol); 280 rules["comment"] = toDelegate(&comment); 281 rules["keyval"] = toDelegate(&keyval); 282 rules["key"] = toDelegate(&key); 283 rules["simple_key"] = toDelegate(&simple_key); 284 rules["unquoted_key"] = toDelegate(&unquoted_key); 285 rules["quoted_key"] = toDelegate("ed_key); 286 rules["dotted_key"] = toDelegate(&dotted_key); 287 rules["dot_sep"] = toDelegate(&dot_sep); 288 rules["keyval_sep"] = toDelegate(&keyval_sep); 289 rules["val"] = toDelegate(&val); 290 rules["string_"] = toDelegate(&string_); 291 rules["basic_string"] = toDelegate(&basic_string); 292 rules["quotation_mark"] = toDelegate("ation_mark); 293 rules["basic_char"] = toDelegate(&basic_char); 294 rules["basic_unescaped"] = toDelegate(&basic_unescaped); 295 rules["escaped"] = toDelegate(&escaped); 296 rules["escape"] = toDelegate(&escape); 297 rules["escape_seq_char"] = toDelegate(&escape_seq_char); 298 rules["ml_basic_string"] = toDelegate(&ml_basic_string); 299 rules["ml_basic_string_delim"] = toDelegate(&ml_basic_string_delim); 300 rules["ml_basic_body"] = toDelegate(&ml_basic_body); 301 rules["mlb_content"] = toDelegate(&mlb_content); 302 rules["mlb_char"] = toDelegate(&mlb_char); 303 rules["mlb_quotes"] = toDelegate(&mlb_quotes); 304 rules["mlb_unescaped"] = toDelegate(&mlb_unescaped); 305 rules["mlb_escaped_nl"] = toDelegate(&mlb_escaped_nl); 306 rules["literal_string"] = toDelegate(&literal_string); 307 rules["apostrophe"] = toDelegate(&apostrophe); 308 rules["literal_char"] = toDelegate(&literal_char); 309 rules["ml_literal_string"] = toDelegate(&ml_literal_string); 310 rules["ml_literal_string_delim"] = toDelegate(&ml_literal_string_delim); 311 rules["ml_literal_body"] = toDelegate(&ml_literal_body); 312 rules["mll_content"] = toDelegate(&mll_content); 313 rules["mll_char"] = toDelegate(&mll_char); 314 rules["mll_quotes"] = toDelegate(&mll_quotes); 315 rules["integer"] = toDelegate(&integer); 316 rules["minus"] = toDelegate(&minus); 317 rules["plus"] = toDelegate(&plus); 318 rules["underscore"] = toDelegate(&underscore); 319 rules["digit1_9"] = toDelegate(&digit1_9); 320 rules["digit0_7"] = toDelegate(&digit0_7); 321 rules["digit0_1"] = toDelegate(&digit0_1); 322 rules["hex_prefix"] = toDelegate(&hex_prefix); 323 rules["oct_prefix"] = toDelegate(&oct_prefix); 324 rules["bin_prefix"] = toDelegate(&bin_prefix); 325 rules["dec_int"] = toDelegate(&dec_int); 326 rules["unsigned_dec_int"] = toDelegate(&unsigned_dec_int); 327 rules["hex_int"] = toDelegate(&hex_int); 328 rules["oct_int"] = toDelegate(&oct_int); 329 rules["bin_int"] = toDelegate(&bin_int); 330 rules["float_"] = toDelegate(&float_); 331 rules["float_int_part"] = toDelegate(&float_int_part); 332 rules["frac"] = toDelegate(&frac); 333 rules["decimal_point"] = toDelegate(&decimal_point); 334 rules["zero_prefixable_int"] = toDelegate(&zero_prefixable_int); 335 rules["exp"] = toDelegate(&exp); 336 rules["float_exp_part"] = toDelegate(&float_exp_part); 337 rules["special_float"] = toDelegate(&special_float); 338 rules["inf"] = toDelegate(&inf); 339 rules["nan"] = toDelegate(&nan); 340 rules["boolean"] = toDelegate(&boolean); 341 rules["true_"] = toDelegate(&true_); 342 rules["false_"] = toDelegate(&false_); 343 rules["date_time"] = toDelegate(&date_time); 344 rules["date_fullyear"] = toDelegate(&date_fullyear); 345 rules["date_month"] = toDelegate(&date_month); 346 rules["date_mday"] = toDelegate(&date_mday); 347 rules["time_delim"] = toDelegate(&time_delim); 348 rules["time_hour"] = toDelegate(&time_hour); 349 rules["time_minute"] = toDelegate(&time_minute); 350 rules["time_second"] = toDelegate(&time_second); 351 rules["time_secfrac"] = toDelegate(&time_secfrac); 352 rules["time_numoffset"] = toDelegate(&time_numoffset); 353 rules["time_offset"] = toDelegate(&time_offset); 354 rules["partial_time"] = toDelegate(&partial_time); 355 rules["full_date"] = toDelegate(&full_date); 356 rules["full_time"] = toDelegate(&full_time); 357 rules["offset_date_time"] = toDelegate(&offset_date_time); 358 rules["local_date_time"] = toDelegate(&local_date_time); 359 rules["local_date"] = toDelegate(&local_date); 360 rules["local_time"] = toDelegate(&local_time); 361 rules["array"] = toDelegate(&array); 362 rules["array_open"] = toDelegate(&array_open); 363 rules["array_close"] = toDelegate(&array_close); 364 rules["array_values"] = toDelegate(&array_values); 365 rules["array_sep"] = toDelegate(&array_sep); 366 rules["ws_comment_newline"] = toDelegate(&ws_comment_newline); 367 rules["table"] = toDelegate(&table); 368 rules["std_table"] = toDelegate(&std_table); 369 rules["std_table_open"] = toDelegate(&std_table_open); 370 rules["std_table_close"] = toDelegate(&std_table_close); 371 rules["inline_table"] = toDelegate(&inline_table); 372 rules["inline_table_open"] = toDelegate(&inline_table_open); 373 rules["inline_table_close"] = toDelegate(&inline_table_close); 374 rules["inline_table_sep"] = toDelegate(&inline_table_sep); 375 rules["inline_table_keyvals"] = toDelegate(&inline_table_keyvals); 376 rules["array_table"] = toDelegate(&array_table); 377 rules["array_table_open"] = toDelegate(&array_table_open); 378 rules["array_table_close"] = toDelegate(&array_table_close); 379 rules["ALPHA"] = toDelegate(&ALPHA); 380 rules["DIGIT"] = toDelegate(&DIGIT); 381 rules["HEXDIG"] = toDelegate(&HEXDIG); 382 rules["Spacing"] = toDelegate(&Spacing); 383 } 384 385 template hooked(alias r, string name) 386 { 387 static ParseTree hooked(ParseTree p) 388 { 389 ParseTree result; 390 391 if (name in before) 392 { 393 result = before[name](p); 394 if (result.successful) 395 return result; 396 } 397 398 result = r(p); 399 if (result.successful || name !in after) 400 return result; 401 402 result = after[name](p); 403 return result; 404 } 405 406 static ParseTree hooked(string input) 407 { 408 return hooked!(r, name)(ParseTree("",false,[],input)); 409 } 410 } 411 412 static void addRuleBefore(string parentRule, string ruleSyntax) 413 { 414 // enum name is the current grammar name 415 DynamicGrammar dg = pegged.dynamic.grammar.grammar(name ~ ": " ~ ruleSyntax, rules); 416 foreach(ruleName,rule; dg.rules) 417 if (ruleName != "Spacing") // Keep the local Spacing rule, do not overwrite it 418 rules[ruleName] = rule; 419 before[parentRule] = rules[dg.startingRule]; 420 } 421 422 static void addRuleAfter(string parentRule, string ruleSyntax) 423 { 424 // enum name is the current grammar named 425 DynamicGrammar dg = pegged.dynamic.grammar.grammar(name ~ ": " ~ ruleSyntax, rules); 426 foreach(name,rule; dg.rules) 427 { 428 if (name != "Spacing") 429 rules[name] = rule; 430 } 431 after[parentRule] = rules[dg.startingRule]; 432 } 433 434 static bool isRule(string s) 435 { 436 import std.algorithm : startsWith; 437 return s.startsWith("TomlGrammar."); 438 } 439 mixin decimateTree; 440 441 alias spacing Spacing; 442 443 static TParseTree toml(TParseTree p) 444 { 445 if(__ctfe) 446 { 447 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, expression, Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, eoi, Spacing))), "TomlGrammar.toml")(p); 448 } 449 else 450 { 451 if (auto m = tuple(`toml`, p.end) in memo) 452 return *m; 453 else 454 { 455 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, expression, Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, eoi, Spacing))), "TomlGrammar.toml"), "toml")(p); 456 memo[tuple(`toml`, p.end)] = result; 457 return result; 458 } 459 } 460 } 461 462 static TParseTree toml(string s) 463 { 464 if(__ctfe) 465 { 466 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, expression, Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, eoi, Spacing))), "TomlGrammar.toml")(TParseTree("", false,[], s)); 467 } 468 else 469 { 470 forgetMemo(); 471 return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.oneOrMore!(pegged.peg.wrapAround!(Spacing, expression, Spacing)), pegged.peg.discard!(pegged.peg.wrapAround!(Spacing, eoi, Spacing))), "TomlGrammar.toml"), "toml")(TParseTree("", false,[], s)); 472 } 473 } 474 static string toml(GetName g) 475 { 476 return "TomlGrammar.toml"; 477 } 478 479 static TParseTree expression(TParseTree p) 480 { 481 if(__ctfe) 482 { 483 return pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.option!(pegged.peg.or!(table, keyval)), ws, pegged.peg.option!(comment)), "TomlGrammar.expression")(p); 484 } 485 else 486 { 487 if (auto m = tuple(`expression`, p.end) in memo) 488 return *m; 489 else 490 { 491 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.option!(pegged.peg.or!(table, keyval)), ws, pegged.peg.option!(comment)), "TomlGrammar.expression"), "expression")(p); 492 memo[tuple(`expression`, p.end)] = result; 493 return result; 494 } 495 } 496 } 497 498 static TParseTree expression(string s) 499 { 500 if(__ctfe) 501 { 502 return pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.option!(pegged.peg.or!(table, keyval)), ws, pegged.peg.option!(comment)), "TomlGrammar.expression")(TParseTree("", false,[], s)); 503 } 504 else 505 { 506 forgetMemo(); 507 return hooked!(pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.option!(pegged.peg.or!(table, keyval)), ws, pegged.peg.option!(comment)), "TomlGrammar.expression"), "expression")(TParseTree("", false,[], s)); 508 } 509 } 510 static string expression(GetName g) 511 { 512 return "TomlGrammar.expression"; 513 } 514 515 static TParseTree ws(TParseTree p) 516 { 517 if(__ctfe) 518 { 519 return pegged.peg.defined!(pegged.peg.zeroOrMore!(wschar), "TomlGrammar.ws")(p); 520 } 521 else 522 { 523 if (auto m = tuple(`ws`, p.end) in memo) 524 return *m; 525 else 526 { 527 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.zeroOrMore!(wschar), "TomlGrammar.ws"), "ws")(p); 528 memo[tuple(`ws`, p.end)] = result; 529 return result; 530 } 531 } 532 } 533 534 static TParseTree ws(string s) 535 { 536 if(__ctfe) 537 { 538 return pegged.peg.defined!(pegged.peg.zeroOrMore!(wschar), "TomlGrammar.ws")(TParseTree("", false,[], s)); 539 } 540 else 541 { 542 forgetMemo(); 543 return hooked!(pegged.peg.defined!(pegged.peg.zeroOrMore!(wschar), "TomlGrammar.ws"), "ws")(TParseTree("", false,[], s)); 544 } 545 } 546 static string ws(GetName g) 547 { 548 return "TomlGrammar.ws"; 549 } 550 551 static TParseTree wschar(TParseTree p) 552 { 553 if(__ctfe) 554 { 555 return pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!(" "), pegged.peg.literal!("\t")), "TomlGrammar.wschar")(p); 556 } 557 else 558 { 559 if (auto m = tuple(`wschar`, p.end) in memo) 560 return *m; 561 else 562 { 563 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!(" "), pegged.peg.literal!("\t")), "TomlGrammar.wschar"), "wschar")(p); 564 memo[tuple(`wschar`, p.end)] = result; 565 return result; 566 } 567 } 568 } 569 570 static TParseTree wschar(string s) 571 { 572 if(__ctfe) 573 { 574 return pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!(" "), pegged.peg.literal!("\t")), "TomlGrammar.wschar")(TParseTree("", false,[], s)); 575 } 576 else 577 { 578 forgetMemo(); 579 return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!(" "), pegged.peg.literal!("\t")), "TomlGrammar.wschar"), "wschar")(TParseTree("", false,[], s)); 580 } 581 } 582 static string wschar(GetName g) 583 { 584 return "TomlGrammar.wschar"; 585 } 586 587 static TParseTree newline(TParseTree p) 588 { 589 if(__ctfe) 590 { 591 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.literal!("\r")), pegged.peg.literal!("\n")), "TomlGrammar.newline")(p); 592 } 593 else 594 { 595 if (auto m = tuple(`newline`, p.end) in memo) 596 return *m; 597 else 598 { 599 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.literal!("\r")), pegged.peg.literal!("\n")), "TomlGrammar.newline"), "newline")(p); 600 memo[tuple(`newline`, p.end)] = result; 601 return result; 602 } 603 } 604 } 605 606 static TParseTree newline(string s) 607 { 608 if(__ctfe) 609 { 610 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.literal!("\r")), pegged.peg.literal!("\n")), "TomlGrammar.newline")(TParseTree("", false,[], s)); 611 } 612 else 613 { 614 forgetMemo(); 615 return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.literal!("\r")), pegged.peg.literal!("\n")), "TomlGrammar.newline"), "newline")(TParseTree("", false,[], s)); 616 } 617 } 618 static string newline(GetName g) 619 { 620 return "TomlGrammar.newline"; 621 } 622 623 static TParseTree comment_start_symbol(TParseTree p) 624 { 625 if(__ctfe) 626 { 627 return pegged.peg.defined!(pegged.peg.literal!("#"), "TomlGrammar.comment_start_symbol")(p); 628 } 629 else 630 { 631 if (auto m = tuple(`comment_start_symbol`, p.end) in memo) 632 return *m; 633 else 634 { 635 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.literal!("#"), "TomlGrammar.comment_start_symbol"), "comment_start_symbol")(p); 636 memo[tuple(`comment_start_symbol`, p.end)] = result; 637 return result; 638 } 639 } 640 } 641 642 static TParseTree comment_start_symbol(string s) 643 { 644 if(__ctfe) 645 { 646 return pegged.peg.defined!(pegged.peg.literal!("#"), "TomlGrammar.comment_start_symbol")(TParseTree("", false,[], s)); 647 } 648 else 649 { 650 forgetMemo(); 651 return hooked!(pegged.peg.defined!(pegged.peg.literal!("#"), "TomlGrammar.comment_start_symbol"), "comment_start_symbol")(TParseTree("", false,[], s)); 652 } 653 } 654 static string comment_start_symbol(GetName g) 655 { 656 return "TomlGrammar.comment_start_symbol"; 657 } 658 659 static TParseTree non_ascii(TParseTree p) 660 { 661 if(__ctfe) 662 { 663 return pegged.peg.defined!(pegged.peg.or!(pegged.peg.charRange!('\x80', '\uD7FF'), pegged.peg.charRange!('\uE000', '\U0010FFFF')), "TomlGrammar.non_ascii")(p); 664 } 665 else 666 { 667 if (auto m = tuple(`non_ascii`, p.end) in memo) 668 return *m; 669 else 670 { 671 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.charRange!('\x80', '\uD7FF'), pegged.peg.charRange!('\uE000', '\U0010FFFF')), "TomlGrammar.non_ascii"), "non_ascii")(p); 672 memo[tuple(`non_ascii`, p.end)] = result; 673 return result; 674 } 675 } 676 } 677 678 static TParseTree non_ascii(string s) 679 { 680 if(__ctfe) 681 { 682 return pegged.peg.defined!(pegged.peg.or!(pegged.peg.charRange!('\x80', '\uD7FF'), pegged.peg.charRange!('\uE000', '\U0010FFFF')), "TomlGrammar.non_ascii")(TParseTree("", false,[], s)); 683 } 684 else 685 { 686 forgetMemo(); 687 return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.charRange!('\x80', '\uD7FF'), pegged.peg.charRange!('\uE000', '\U0010FFFF')), "TomlGrammar.non_ascii"), "non_ascii")(TParseTree("", false,[], s)); 688 } 689 } 690 static string non_ascii(GetName g) 691 { 692 return "TomlGrammar.non_ascii"; 693 } 694 695 static TParseTree non_eol(TParseTree p) 696 { 697 if(__ctfe) 698 { 699 return pegged.peg.defined!(pegged.peg.or!(pegged.peg.or!(pegged.peg.literal!("\t"), pegged.peg.charRange!(' ', '\x7F')), non_ascii), "TomlGrammar.non_eol")(p); 700 } 701 else 702 { 703 if (auto m = tuple(`non_eol`, p.end) in memo) 704 return *m; 705 else 706 { 707 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.or!(pegged.peg.literal!("\t"), pegged.peg.charRange!(' ', '\x7F')), non_ascii), "TomlGrammar.non_eol"), "non_eol")(p); 708 memo[tuple(`non_eol`, p.end)] = result; 709 return result; 710 } 711 } 712 } 713 714 static TParseTree non_eol(string s) 715 { 716 if(__ctfe) 717 { 718 return pegged.peg.defined!(pegged.peg.or!(pegged.peg.or!(pegged.peg.literal!("\t"), pegged.peg.charRange!(' ', '\x7F')), non_ascii), "TomlGrammar.non_eol")(TParseTree("", false,[], s)); 719 } 720 else 721 { 722 forgetMemo(); 723 return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.or!(pegged.peg.literal!("\t"), pegged.peg.charRange!(' ', '\x7F')), non_ascii), "TomlGrammar.non_eol"), "non_eol")(TParseTree("", false,[], s)); 724 } 725 } 726 static string non_eol(GetName g) 727 { 728 return "TomlGrammar.non_eol"; 729 } 730 731 static TParseTree comment(TParseTree p) 732 { 733 if(__ctfe) 734 { 735 return pegged.peg.defined!(pegged.peg.and!(comment_start_symbol, pegged.peg.zeroOrMore!(non_eol)), "TomlGrammar.comment")(p); 736 } 737 else 738 { 739 if (auto m = tuple(`comment`, p.end) in memo) 740 return *m; 741 else 742 { 743 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(comment_start_symbol, pegged.peg.zeroOrMore!(non_eol)), "TomlGrammar.comment"), "comment")(p); 744 memo[tuple(`comment`, p.end)] = result; 745 return result; 746 } 747 } 748 } 749 750 static TParseTree comment(string s) 751 { 752 if(__ctfe) 753 { 754 return pegged.peg.defined!(pegged.peg.and!(comment_start_symbol, pegged.peg.zeroOrMore!(non_eol)), "TomlGrammar.comment")(TParseTree("", false,[], s)); 755 } 756 else 757 { 758 forgetMemo(); 759 return hooked!(pegged.peg.defined!(pegged.peg.and!(comment_start_symbol, pegged.peg.zeroOrMore!(non_eol)), "TomlGrammar.comment"), "comment")(TParseTree("", false,[], s)); 760 } 761 } 762 static string comment(GetName g) 763 { 764 return "TomlGrammar.comment"; 765 } 766 767 static TParseTree keyval(TParseTree p) 768 { 769 if(__ctfe) 770 { 771 return pegged.peg.defined!(pegged.peg.and!(key, keyval_sep, val), "TomlGrammar.keyval")(p); 772 } 773 else 774 { 775 if (auto m = tuple(`keyval`, p.end) in memo) 776 return *m; 777 else 778 { 779 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(key, keyval_sep, val), "TomlGrammar.keyval"), "keyval")(p); 780 memo[tuple(`keyval`, p.end)] = result; 781 return result; 782 } 783 } 784 } 785 786 static TParseTree keyval(string s) 787 { 788 if(__ctfe) 789 { 790 return pegged.peg.defined!(pegged.peg.and!(key, keyval_sep, val), "TomlGrammar.keyval")(TParseTree("", false,[], s)); 791 } 792 else 793 { 794 forgetMemo(); 795 return hooked!(pegged.peg.defined!(pegged.peg.and!(key, keyval_sep, val), "TomlGrammar.keyval"), "keyval")(TParseTree("", false,[], s)); 796 } 797 } 798 static string keyval(GetName g) 799 { 800 return "TomlGrammar.keyval"; 801 } 802 803 static TParseTree key(TParseTree p) 804 { 805 if(__ctfe) 806 { 807 return pegged.peg.defined!(pegged.peg.or!(dotted_key, simple_key), "TomlGrammar.key")(p); 808 } 809 else 810 { 811 if (auto m = tuple(`key`, p.end) in memo) 812 return *m; 813 else 814 { 815 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(dotted_key, simple_key), "TomlGrammar.key"), "key")(p); 816 memo[tuple(`key`, p.end)] = result; 817 return result; 818 } 819 } 820 } 821 822 static TParseTree key(string s) 823 { 824 if(__ctfe) 825 { 826 return pegged.peg.defined!(pegged.peg.or!(dotted_key, simple_key), "TomlGrammar.key")(TParseTree("", false,[], s)); 827 } 828 else 829 { 830 forgetMemo(); 831 return hooked!(pegged.peg.defined!(pegged.peg.or!(dotted_key, simple_key), "TomlGrammar.key"), "key")(TParseTree("", false,[], s)); 832 } 833 } 834 static string key(GetName g) 835 { 836 return "TomlGrammar.key"; 837 } 838 839 static TParseTree simple_key(TParseTree p) 840 { 841 if(__ctfe) 842 { 843 return pegged.peg.defined!(pegged.peg.or!(quoted_key, unquoted_key), "TomlGrammar.simple_key")(p); 844 } 845 else 846 { 847 if (auto m = tuple(`simple_key`, p.end) in memo) 848 return *m; 849 else 850 { 851 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(quoted_key, unquoted_key), "TomlGrammar.simple_key"), "simple_key")(p); 852 memo[tuple(`simple_key`, p.end)] = result; 853 return result; 854 } 855 } 856 } 857 858 static TParseTree simple_key(string s) 859 { 860 if(__ctfe) 861 { 862 return pegged.peg.defined!(pegged.peg.or!(quoted_key, unquoted_key), "TomlGrammar.simple_key")(TParseTree("", false,[], s)); 863 } 864 else 865 { 866 forgetMemo(); 867 return hooked!(pegged.peg.defined!(pegged.peg.or!(quoted_key, unquoted_key), "TomlGrammar.simple_key"), "simple_key")(TParseTree("", false,[], s)); 868 } 869 } 870 static string simple_key(GetName g) 871 { 872 return "TomlGrammar.simple_key"; 873 } 874 875 static TParseTree unquoted_key(TParseTree p) 876 { 877 if(__ctfe) 878 { 879 return pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.or!(ALPHA, DIGIT, pegged.peg.or!(pegged.peg.literal!("-"), pegged.peg.literal!("_")))), "TomlGrammar.unquoted_key")(p); 880 } 881 else 882 { 883 if (auto m = tuple(`unquoted_key`, p.end) in memo) 884 return *m; 885 else 886 { 887 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.or!(ALPHA, DIGIT, pegged.peg.or!(pegged.peg.literal!("-"), pegged.peg.literal!("_")))), "TomlGrammar.unquoted_key"), "unquoted_key")(p); 888 memo[tuple(`unquoted_key`, p.end)] = result; 889 return result; 890 } 891 } 892 } 893 894 static TParseTree unquoted_key(string s) 895 { 896 if(__ctfe) 897 { 898 return pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.or!(ALPHA, DIGIT, pegged.peg.or!(pegged.peg.literal!("-"), pegged.peg.literal!("_")))), "TomlGrammar.unquoted_key")(TParseTree("", false,[], s)); 899 } 900 else 901 { 902 forgetMemo(); 903 return hooked!(pegged.peg.defined!(pegged.peg.oneOrMore!(pegged.peg.or!(ALPHA, DIGIT, pegged.peg.or!(pegged.peg.literal!("-"), pegged.peg.literal!("_")))), "TomlGrammar.unquoted_key"), "unquoted_key")(TParseTree("", false,[], s)); 904 } 905 } 906 static string unquoted_key(GetName g) 907 { 908 return "TomlGrammar.unquoted_key"; 909 } 910 911 static TParseTree quoted_key(TParseTree p) 912 { 913 if(__ctfe) 914 { 915 return pegged.peg.defined!(pegged.peg.or!(basic_string, literal_string), "TomlGrammar.quoted_key")(p); 916 } 917 else 918 { 919 if (auto m = tuple(`quoted_key`, p.end) in memo) 920 return *m; 921 else 922 { 923 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(basic_string, literal_string), "TomlGrammar.quoted_key"), "quoted_key")(p); 924 memo[tuple(`quoted_key`, p.end)] = result; 925 return result; 926 } 927 } 928 } 929 930 static TParseTree quoted_key(string s) 931 { 932 if(__ctfe) 933 { 934 return pegged.peg.defined!(pegged.peg.or!(basic_string, literal_string), "TomlGrammar.quoted_key")(TParseTree("", false,[], s)); 935 } 936 else 937 { 938 forgetMemo(); 939 return hooked!(pegged.peg.defined!(pegged.peg.or!(basic_string, literal_string), "TomlGrammar.quoted_key"), "quoted_key")(TParseTree("", false,[], s)); 940 } 941 } 942 static string quoted_key(GetName g) 943 { 944 return "TomlGrammar.quoted_key"; 945 } 946 947 static TParseTree dotted_key(TParseTree p) 948 { 949 if(__ctfe) 950 { 951 return pegged.peg.defined!(pegged.peg.and!(simple_key, pegged.peg.oneOrMore!(pegged.peg.and!(dot_sep, simple_key))), "TomlGrammar.dotted_key")(p); 952 } 953 else 954 { 955 if (auto m = tuple(`dotted_key`, p.end) in memo) 956 return *m; 957 else 958 { 959 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(simple_key, pegged.peg.oneOrMore!(pegged.peg.and!(dot_sep, simple_key))), "TomlGrammar.dotted_key"), "dotted_key")(p); 960 memo[tuple(`dotted_key`, p.end)] = result; 961 return result; 962 } 963 } 964 } 965 966 static TParseTree dotted_key(string s) 967 { 968 if(__ctfe) 969 { 970 return pegged.peg.defined!(pegged.peg.and!(simple_key, pegged.peg.oneOrMore!(pegged.peg.and!(dot_sep, simple_key))), "TomlGrammar.dotted_key")(TParseTree("", false,[], s)); 971 } 972 else 973 { 974 forgetMemo(); 975 return hooked!(pegged.peg.defined!(pegged.peg.and!(simple_key, pegged.peg.oneOrMore!(pegged.peg.and!(dot_sep, simple_key))), "TomlGrammar.dotted_key"), "dotted_key")(TParseTree("", false,[], s)); 976 } 977 } 978 static string dotted_key(GetName g) 979 { 980 return "TomlGrammar.dotted_key"; 981 } 982 983 static TParseTree dot_sep(TParseTree p) 984 { 985 if(__ctfe) 986 { 987 return pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.literal!("."), ws), "TomlGrammar.dot_sep")(p); 988 } 989 else 990 { 991 if (auto m = tuple(`dot_sep`, p.end) in memo) 992 return *m; 993 else 994 { 995 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.literal!("."), ws), "TomlGrammar.dot_sep"), "dot_sep")(p); 996 memo[tuple(`dot_sep`, p.end)] = result; 997 return result; 998 } 999 } 1000 } 1001 1002 static TParseTree dot_sep(string s) 1003 { 1004 if(__ctfe) 1005 { 1006 return pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.literal!("."), ws), "TomlGrammar.dot_sep")(TParseTree("", false,[], s)); 1007 } 1008 else 1009 { 1010 forgetMemo(); 1011 return hooked!(pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.literal!("."), ws), "TomlGrammar.dot_sep"), "dot_sep")(TParseTree("", false,[], s)); 1012 } 1013 } 1014 static string dot_sep(GetName g) 1015 { 1016 return "TomlGrammar.dot_sep"; 1017 } 1018 1019 static TParseTree keyval_sep(TParseTree p) 1020 { 1021 if(__ctfe) 1022 { 1023 return pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.literal!("="), ws), "TomlGrammar.keyval_sep")(p); 1024 } 1025 else 1026 { 1027 if (auto m = tuple(`keyval_sep`, p.end) in memo) 1028 return *m; 1029 else 1030 { 1031 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.literal!("="), ws), "TomlGrammar.keyval_sep"), "keyval_sep")(p); 1032 memo[tuple(`keyval_sep`, p.end)] = result; 1033 return result; 1034 } 1035 } 1036 } 1037 1038 static TParseTree keyval_sep(string s) 1039 { 1040 if(__ctfe) 1041 { 1042 return pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.literal!("="), ws), "TomlGrammar.keyval_sep")(TParseTree("", false,[], s)); 1043 } 1044 else 1045 { 1046 forgetMemo(); 1047 return hooked!(pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.literal!("="), ws), "TomlGrammar.keyval_sep"), "keyval_sep")(TParseTree("", false,[], s)); 1048 } 1049 } 1050 static string keyval_sep(GetName g) 1051 { 1052 return "TomlGrammar.keyval_sep"; 1053 } 1054 1055 static TParseTree val(TParseTree p) 1056 { 1057 if(__ctfe) 1058 { 1059 return pegged.peg.defined!(pegged.peg.or!(string_, boolean, array, inline_table, date_time, float_, integer), "TomlGrammar.val")(p); 1060 } 1061 else 1062 { 1063 if (auto m = tuple(`val`, p.end) in memo) 1064 return *m; 1065 else 1066 { 1067 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(string_, boolean, array, inline_table, date_time, float_, integer), "TomlGrammar.val"), "val")(p); 1068 memo[tuple(`val`, p.end)] = result; 1069 return result; 1070 } 1071 } 1072 } 1073 1074 static TParseTree val(string s) 1075 { 1076 if(__ctfe) 1077 { 1078 return pegged.peg.defined!(pegged.peg.or!(string_, boolean, array, inline_table, date_time, float_, integer), "TomlGrammar.val")(TParseTree("", false,[], s)); 1079 } 1080 else 1081 { 1082 forgetMemo(); 1083 return hooked!(pegged.peg.defined!(pegged.peg.or!(string_, boolean, array, inline_table, date_time, float_, integer), "TomlGrammar.val"), "val")(TParseTree("", false,[], s)); 1084 } 1085 } 1086 static string val(GetName g) 1087 { 1088 return "TomlGrammar.val"; 1089 } 1090 1091 static TParseTree string_(TParseTree p) 1092 { 1093 if(__ctfe) 1094 { 1095 return pegged.peg.defined!(pegged.peg.or!(ml_basic_string, basic_string, ml_literal_string, literal_string), "TomlGrammar.string_")(p); 1096 } 1097 else 1098 { 1099 if (auto m = tuple(`string_`, p.end) in memo) 1100 return *m; 1101 else 1102 { 1103 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(ml_basic_string, basic_string, ml_literal_string, literal_string), "TomlGrammar.string_"), "string_")(p); 1104 memo[tuple(`string_`, p.end)] = result; 1105 return result; 1106 } 1107 } 1108 } 1109 1110 static TParseTree string_(string s) 1111 { 1112 if(__ctfe) 1113 { 1114 return pegged.peg.defined!(pegged.peg.or!(ml_basic_string, basic_string, ml_literal_string, literal_string), "TomlGrammar.string_")(TParseTree("", false,[], s)); 1115 } 1116 else 1117 { 1118 forgetMemo(); 1119 return hooked!(pegged.peg.defined!(pegged.peg.or!(ml_basic_string, basic_string, ml_literal_string, literal_string), "TomlGrammar.string_"), "string_")(TParseTree("", false,[], s)); 1120 } 1121 } 1122 static string string_(GetName g) 1123 { 1124 return "TomlGrammar.string_"; 1125 } 1126 1127 static TParseTree basic_string(TParseTree p) 1128 { 1129 if(__ctfe) 1130 { 1131 return pegged.peg.defined!(pegged.peg.and!(quotation_mark, pegged.peg.zeroOrMore!(basic_char), quotation_mark), "TomlGrammar.basic_string")(p); 1132 } 1133 else 1134 { 1135 if (auto m = tuple(`basic_string`, p.end) in memo) 1136 return *m; 1137 else 1138 { 1139 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(quotation_mark, pegged.peg.zeroOrMore!(basic_char), quotation_mark), "TomlGrammar.basic_string"), "basic_string")(p); 1140 memo[tuple(`basic_string`, p.end)] = result; 1141 return result; 1142 } 1143 } 1144 } 1145 1146 static TParseTree basic_string(string s) 1147 { 1148 if(__ctfe) 1149 { 1150 return pegged.peg.defined!(pegged.peg.and!(quotation_mark, pegged.peg.zeroOrMore!(basic_char), quotation_mark), "TomlGrammar.basic_string")(TParseTree("", false,[], s)); 1151 } 1152 else 1153 { 1154 forgetMemo(); 1155 return hooked!(pegged.peg.defined!(pegged.peg.and!(quotation_mark, pegged.peg.zeroOrMore!(basic_char), quotation_mark), "TomlGrammar.basic_string"), "basic_string")(TParseTree("", false,[], s)); 1156 } 1157 } 1158 static string basic_string(GetName g) 1159 { 1160 return "TomlGrammar.basic_string"; 1161 } 1162 1163 static TParseTree quotation_mark(TParseTree p) 1164 { 1165 if(__ctfe) 1166 { 1167 return pegged.peg.defined!(pegged.peg.literal!(`"`), "TomlGrammar.quotation_mark")(p); 1168 } 1169 else 1170 { 1171 if (auto m = tuple(`quotation_mark`, p.end) in memo) 1172 return *m; 1173 else 1174 { 1175 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.literal!(`"`), "TomlGrammar.quotation_mark"), "quotation_mark")(p); 1176 memo[tuple(`quotation_mark`, p.end)] = result; 1177 return result; 1178 } 1179 } 1180 } 1181 1182 static TParseTree quotation_mark(string s) 1183 { 1184 if(__ctfe) 1185 { 1186 return pegged.peg.defined!(pegged.peg.literal!(`"`), "TomlGrammar.quotation_mark")(TParseTree("", false,[], s)); 1187 } 1188 else 1189 { 1190 forgetMemo(); 1191 return hooked!(pegged.peg.defined!(pegged.peg.literal!(`"`), "TomlGrammar.quotation_mark"), "quotation_mark")(TParseTree("", false,[], s)); 1192 } 1193 } 1194 static string quotation_mark(GetName g) 1195 { 1196 return "TomlGrammar.quotation_mark"; 1197 } 1198 1199 static TParseTree basic_char(TParseTree p) 1200 { 1201 if(__ctfe) 1202 { 1203 return pegged.peg.defined!(pegged.peg.or!(basic_unescaped, escaped), "TomlGrammar.basic_char")(p); 1204 } 1205 else 1206 { 1207 if (auto m = tuple(`basic_char`, p.end) in memo) 1208 return *m; 1209 else 1210 { 1211 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(basic_unescaped, escaped), "TomlGrammar.basic_char"), "basic_char")(p); 1212 memo[tuple(`basic_char`, p.end)] = result; 1213 return result; 1214 } 1215 } 1216 } 1217 1218 static TParseTree basic_char(string s) 1219 { 1220 if(__ctfe) 1221 { 1222 return pegged.peg.defined!(pegged.peg.or!(basic_unescaped, escaped), "TomlGrammar.basic_char")(TParseTree("", false,[], s)); 1223 } 1224 else 1225 { 1226 forgetMemo(); 1227 return hooked!(pegged.peg.defined!(pegged.peg.or!(basic_unescaped, escaped), "TomlGrammar.basic_char"), "basic_char")(TParseTree("", false,[], s)); 1228 } 1229 } 1230 static string basic_char(GetName g) 1231 { 1232 return "TomlGrammar.basic_char"; 1233 } 1234 1235 static TParseTree basic_unescaped(TParseTree p) 1236 { 1237 if(__ctfe) 1238 { 1239 return pegged.peg.defined!(pegged.peg.or!(wschar, pegged.peg.or!(pegged.peg.literal!("!"), pegged.peg.charRange!('#', '['), pegged.peg.charRange!(']', '~')), non_ascii), "TomlGrammar.basic_unescaped")(p); 1240 } 1241 else 1242 { 1243 if (auto m = tuple(`basic_unescaped`, p.end) in memo) 1244 return *m; 1245 else 1246 { 1247 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(wschar, pegged.peg.or!(pegged.peg.literal!("!"), pegged.peg.charRange!('#', '['), pegged.peg.charRange!(']', '~')), non_ascii), "TomlGrammar.basic_unescaped"), "basic_unescaped")(p); 1248 memo[tuple(`basic_unescaped`, p.end)] = result; 1249 return result; 1250 } 1251 } 1252 } 1253 1254 static TParseTree basic_unescaped(string s) 1255 { 1256 if(__ctfe) 1257 { 1258 return pegged.peg.defined!(pegged.peg.or!(wschar, pegged.peg.or!(pegged.peg.literal!("!"), pegged.peg.charRange!('#', '['), pegged.peg.charRange!(']', '~')), non_ascii), "TomlGrammar.basic_unescaped")(TParseTree("", false,[], s)); 1259 } 1260 else 1261 { 1262 forgetMemo(); 1263 return hooked!(pegged.peg.defined!(pegged.peg.or!(wschar, pegged.peg.or!(pegged.peg.literal!("!"), pegged.peg.charRange!('#', '['), pegged.peg.charRange!(']', '~')), non_ascii), "TomlGrammar.basic_unescaped"), "basic_unescaped")(TParseTree("", false,[], s)); 1264 } 1265 } 1266 static string basic_unescaped(GetName g) 1267 { 1268 return "TomlGrammar.basic_unescaped"; 1269 } 1270 1271 static TParseTree escaped(TParseTree p) 1272 { 1273 if(__ctfe) 1274 { 1275 return pegged.peg.defined!(pegged.peg.and!(escape, escape_seq_char), "TomlGrammar.escaped")(p); 1276 } 1277 else 1278 { 1279 if (auto m = tuple(`escaped`, p.end) in memo) 1280 return *m; 1281 else 1282 { 1283 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(escape, escape_seq_char), "TomlGrammar.escaped"), "escaped")(p); 1284 memo[tuple(`escaped`, p.end)] = result; 1285 return result; 1286 } 1287 } 1288 } 1289 1290 static TParseTree escaped(string s) 1291 { 1292 if(__ctfe) 1293 { 1294 return pegged.peg.defined!(pegged.peg.and!(escape, escape_seq_char), "TomlGrammar.escaped")(TParseTree("", false,[], s)); 1295 } 1296 else 1297 { 1298 forgetMemo(); 1299 return hooked!(pegged.peg.defined!(pegged.peg.and!(escape, escape_seq_char), "TomlGrammar.escaped"), "escaped")(TParseTree("", false,[], s)); 1300 } 1301 } 1302 static string escaped(GetName g) 1303 { 1304 return "TomlGrammar.escaped"; 1305 } 1306 1307 static TParseTree escape(TParseTree p) 1308 { 1309 if(__ctfe) 1310 { 1311 return pegged.peg.defined!(pegged.peg.literal!(`\`), "TomlGrammar.escape")(p); 1312 } 1313 else 1314 { 1315 if (auto m = tuple(`escape`, p.end) in memo) 1316 return *m; 1317 else 1318 { 1319 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.literal!(`\`), "TomlGrammar.escape"), "escape")(p); 1320 memo[tuple(`escape`, p.end)] = result; 1321 return result; 1322 } 1323 } 1324 } 1325 1326 static TParseTree escape(string s) 1327 { 1328 if(__ctfe) 1329 { 1330 return pegged.peg.defined!(pegged.peg.literal!(`\`), "TomlGrammar.escape")(TParseTree("", false,[], s)); 1331 } 1332 else 1333 { 1334 forgetMemo(); 1335 return hooked!(pegged.peg.defined!(pegged.peg.literal!(`\`), "TomlGrammar.escape"), "escape")(TParseTree("", false,[], s)); 1336 } 1337 } 1338 static string escape(GetName g) 1339 { 1340 return "TomlGrammar.escape"; 1341 } 1342 1343 static TParseTree escape_seq_char(TParseTree p) 1344 { 1345 if(__ctfe) 1346 { 1347 return pegged.peg.defined!(pegged.peg.or!(pegged.peg.or!(pegged.peg.literal!(`"`), pegged.peg.literal!(`\`), pegged.peg.literal!("b"), pegged.peg.literal!("f"), pegged.peg.literal!("n"), pegged.peg.literal!("r"), pegged.peg.literal!("t")), pegged.peg.and!(pegged.peg.literal!("u"), HEXDIG, HEXDIG, HEXDIG, HEXDIG), pegged.peg.and!(pegged.peg.literal!("U"), HEXDIG, HEXDIG, HEXDIG, HEXDIG, HEXDIG, HEXDIG, HEXDIG, HEXDIG)), "TomlGrammar.escape_seq_char")(p); 1348 } 1349 else 1350 { 1351 if (auto m = tuple(`escape_seq_char`, p.end) in memo) 1352 return *m; 1353 else 1354 { 1355 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.or!(pegged.peg.literal!(`"`), pegged.peg.literal!(`\`), pegged.peg.literal!("b"), pegged.peg.literal!("f"), pegged.peg.literal!("n"), pegged.peg.literal!("r"), pegged.peg.literal!("t")), pegged.peg.and!(pegged.peg.literal!("u"), HEXDIG, HEXDIG, HEXDIG, HEXDIG), pegged.peg.and!(pegged.peg.literal!("U"), HEXDIG, HEXDIG, HEXDIG, HEXDIG, HEXDIG, HEXDIG, HEXDIG, HEXDIG)), "TomlGrammar.escape_seq_char"), "escape_seq_char")(p); 1356 memo[tuple(`escape_seq_char`, p.end)] = result; 1357 return result; 1358 } 1359 } 1360 } 1361 1362 static TParseTree escape_seq_char(string s) 1363 { 1364 if(__ctfe) 1365 { 1366 return pegged.peg.defined!(pegged.peg.or!(pegged.peg.or!(pegged.peg.literal!(`"`), pegged.peg.literal!(`\`), pegged.peg.literal!("b"), pegged.peg.literal!("f"), pegged.peg.literal!("n"), pegged.peg.literal!("r"), pegged.peg.literal!("t")), pegged.peg.and!(pegged.peg.literal!("u"), HEXDIG, HEXDIG, HEXDIG, HEXDIG), pegged.peg.and!(pegged.peg.literal!("U"), HEXDIG, HEXDIG, HEXDIG, HEXDIG, HEXDIG, HEXDIG, HEXDIG, HEXDIG)), "TomlGrammar.escape_seq_char")(TParseTree("", false,[], s)); 1367 } 1368 else 1369 { 1370 forgetMemo(); 1371 return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.or!(pegged.peg.literal!(`"`), pegged.peg.literal!(`\`), pegged.peg.literal!("b"), pegged.peg.literal!("f"), pegged.peg.literal!("n"), pegged.peg.literal!("r"), pegged.peg.literal!("t")), pegged.peg.and!(pegged.peg.literal!("u"), HEXDIG, HEXDIG, HEXDIG, HEXDIG), pegged.peg.and!(pegged.peg.literal!("U"), HEXDIG, HEXDIG, HEXDIG, HEXDIG, HEXDIG, HEXDIG, HEXDIG, HEXDIG)), "TomlGrammar.escape_seq_char"), "escape_seq_char")(TParseTree("", false,[], s)); 1372 } 1373 } 1374 static string escape_seq_char(GetName g) 1375 { 1376 return "TomlGrammar.escape_seq_char"; 1377 } 1378 1379 static TParseTree ml_basic_string(TParseTree p) 1380 { 1381 if(__ctfe) 1382 { 1383 return pegged.peg.defined!(pegged.peg.and!(ml_basic_string_delim, ml_basic_body, ml_basic_string_delim), "TomlGrammar.ml_basic_string")(p); 1384 } 1385 else 1386 { 1387 if (auto m = tuple(`ml_basic_string`, p.end) in memo) 1388 return *m; 1389 else 1390 { 1391 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(ml_basic_string_delim, ml_basic_body, ml_basic_string_delim), "TomlGrammar.ml_basic_string"), "ml_basic_string")(p); 1392 memo[tuple(`ml_basic_string`, p.end)] = result; 1393 return result; 1394 } 1395 } 1396 } 1397 1398 static TParseTree ml_basic_string(string s) 1399 { 1400 if(__ctfe) 1401 { 1402 return pegged.peg.defined!(pegged.peg.and!(ml_basic_string_delim, ml_basic_body, ml_basic_string_delim), "TomlGrammar.ml_basic_string")(TParseTree("", false,[], s)); 1403 } 1404 else 1405 { 1406 forgetMemo(); 1407 return hooked!(pegged.peg.defined!(pegged.peg.and!(ml_basic_string_delim, ml_basic_body, ml_basic_string_delim), "TomlGrammar.ml_basic_string"), "ml_basic_string")(TParseTree("", false,[], s)); 1408 } 1409 } 1410 static string ml_basic_string(GetName g) 1411 { 1412 return "TomlGrammar.ml_basic_string"; 1413 } 1414 1415 static TParseTree ml_basic_string_delim(TParseTree p) 1416 { 1417 if(__ctfe) 1418 { 1419 return pegged.peg.defined!(pegged.peg.and!(quotation_mark, quotation_mark, quotation_mark), "TomlGrammar.ml_basic_string_delim")(p); 1420 } 1421 else 1422 { 1423 if (auto m = tuple(`ml_basic_string_delim`, p.end) in memo) 1424 return *m; 1425 else 1426 { 1427 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(quotation_mark, quotation_mark, quotation_mark), "TomlGrammar.ml_basic_string_delim"), "ml_basic_string_delim")(p); 1428 memo[tuple(`ml_basic_string_delim`, p.end)] = result; 1429 return result; 1430 } 1431 } 1432 } 1433 1434 static TParseTree ml_basic_string_delim(string s) 1435 { 1436 if(__ctfe) 1437 { 1438 return pegged.peg.defined!(pegged.peg.and!(quotation_mark, quotation_mark, quotation_mark), "TomlGrammar.ml_basic_string_delim")(TParseTree("", false,[], s)); 1439 } 1440 else 1441 { 1442 forgetMemo(); 1443 return hooked!(pegged.peg.defined!(pegged.peg.and!(quotation_mark, quotation_mark, quotation_mark), "TomlGrammar.ml_basic_string_delim"), "ml_basic_string_delim")(TParseTree("", false,[], s)); 1444 } 1445 } 1446 static string ml_basic_string_delim(GetName g) 1447 { 1448 return "TomlGrammar.ml_basic_string_delim"; 1449 } 1450 1451 static TParseTree ml_basic_body(TParseTree p) 1452 { 1453 if(__ctfe) 1454 { 1455 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.zeroOrMore!(mlb_content), pegged.peg.zeroOrMore!(pegged.peg.and!(mlb_quotes, pegged.peg.oneOrMore!(mlb_content))), pegged.peg.option!(mlb_quotes)), "TomlGrammar.ml_basic_body")(p); 1456 } 1457 else 1458 { 1459 if (auto m = tuple(`ml_basic_body`, p.end) in memo) 1460 return *m; 1461 else 1462 { 1463 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.zeroOrMore!(mlb_content), pegged.peg.zeroOrMore!(pegged.peg.and!(mlb_quotes, pegged.peg.oneOrMore!(mlb_content))), pegged.peg.option!(mlb_quotes)), "TomlGrammar.ml_basic_body"), "ml_basic_body")(p); 1464 memo[tuple(`ml_basic_body`, p.end)] = result; 1465 return result; 1466 } 1467 } 1468 } 1469 1470 static TParseTree ml_basic_body(string s) 1471 { 1472 if(__ctfe) 1473 { 1474 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.zeroOrMore!(mlb_content), pegged.peg.zeroOrMore!(pegged.peg.and!(mlb_quotes, pegged.peg.oneOrMore!(mlb_content))), pegged.peg.option!(mlb_quotes)), "TomlGrammar.ml_basic_body")(TParseTree("", false,[], s)); 1475 } 1476 else 1477 { 1478 forgetMemo(); 1479 return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.zeroOrMore!(mlb_content), pegged.peg.zeroOrMore!(pegged.peg.and!(mlb_quotes, pegged.peg.oneOrMore!(mlb_content))), pegged.peg.option!(mlb_quotes)), "TomlGrammar.ml_basic_body"), "ml_basic_body")(TParseTree("", false,[], s)); 1480 } 1481 } 1482 static string ml_basic_body(GetName g) 1483 { 1484 return "TomlGrammar.ml_basic_body"; 1485 } 1486 1487 static TParseTree mlb_content(TParseTree p) 1488 { 1489 if(__ctfe) 1490 { 1491 return pegged.peg.defined!(pegged.peg.or!(mlb_char, newline, mlb_escaped_nl), "TomlGrammar.mlb_content")(p); 1492 } 1493 else 1494 { 1495 if (auto m = tuple(`mlb_content`, p.end) in memo) 1496 return *m; 1497 else 1498 { 1499 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(mlb_char, newline, mlb_escaped_nl), "TomlGrammar.mlb_content"), "mlb_content")(p); 1500 memo[tuple(`mlb_content`, p.end)] = result; 1501 return result; 1502 } 1503 } 1504 } 1505 1506 static TParseTree mlb_content(string s) 1507 { 1508 if(__ctfe) 1509 { 1510 return pegged.peg.defined!(pegged.peg.or!(mlb_char, newline, mlb_escaped_nl), "TomlGrammar.mlb_content")(TParseTree("", false,[], s)); 1511 } 1512 else 1513 { 1514 forgetMemo(); 1515 return hooked!(pegged.peg.defined!(pegged.peg.or!(mlb_char, newline, mlb_escaped_nl), "TomlGrammar.mlb_content"), "mlb_content")(TParseTree("", false,[], s)); 1516 } 1517 } 1518 static string mlb_content(GetName g) 1519 { 1520 return "TomlGrammar.mlb_content"; 1521 } 1522 1523 static TParseTree mlb_char(TParseTree p) 1524 { 1525 if(__ctfe) 1526 { 1527 return pegged.peg.defined!(pegged.peg.or!(mlb_unescaped, escaped), "TomlGrammar.mlb_char")(p); 1528 } 1529 else 1530 { 1531 if (auto m = tuple(`mlb_char`, p.end) in memo) 1532 return *m; 1533 else 1534 { 1535 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(mlb_unescaped, escaped), "TomlGrammar.mlb_char"), "mlb_char")(p); 1536 memo[tuple(`mlb_char`, p.end)] = result; 1537 return result; 1538 } 1539 } 1540 } 1541 1542 static TParseTree mlb_char(string s) 1543 { 1544 if(__ctfe) 1545 { 1546 return pegged.peg.defined!(pegged.peg.or!(mlb_unescaped, escaped), "TomlGrammar.mlb_char")(TParseTree("", false,[], s)); 1547 } 1548 else 1549 { 1550 forgetMemo(); 1551 return hooked!(pegged.peg.defined!(pegged.peg.or!(mlb_unescaped, escaped), "TomlGrammar.mlb_char"), "mlb_char")(TParseTree("", false,[], s)); 1552 } 1553 } 1554 static string mlb_char(GetName g) 1555 { 1556 return "TomlGrammar.mlb_char"; 1557 } 1558 1559 static TParseTree mlb_quotes(TParseTree p) 1560 { 1561 if(__ctfe) 1562 { 1563 return pegged.peg.defined!(pegged.peg.and!(quotation_mark, pegged.peg.option!(quotation_mark), pegged.peg.negLookahead!(quotation_mark)), "TomlGrammar.mlb_quotes")(p); 1564 } 1565 else 1566 { 1567 if (auto m = tuple(`mlb_quotes`, p.end) in memo) 1568 return *m; 1569 else 1570 { 1571 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(quotation_mark, pegged.peg.option!(quotation_mark), pegged.peg.negLookahead!(quotation_mark)), "TomlGrammar.mlb_quotes"), "mlb_quotes")(p); 1572 memo[tuple(`mlb_quotes`, p.end)] = result; 1573 return result; 1574 } 1575 } 1576 } 1577 1578 static TParseTree mlb_quotes(string s) 1579 { 1580 if(__ctfe) 1581 { 1582 return pegged.peg.defined!(pegged.peg.and!(quotation_mark, pegged.peg.option!(quotation_mark), pegged.peg.negLookahead!(quotation_mark)), "TomlGrammar.mlb_quotes")(TParseTree("", false,[], s)); 1583 } 1584 else 1585 { 1586 forgetMemo(); 1587 return hooked!(pegged.peg.defined!(pegged.peg.and!(quotation_mark, pegged.peg.option!(quotation_mark), pegged.peg.negLookahead!(quotation_mark)), "TomlGrammar.mlb_quotes"), "mlb_quotes")(TParseTree("", false,[], s)); 1588 } 1589 } 1590 static string mlb_quotes(GetName g) 1591 { 1592 return "TomlGrammar.mlb_quotes"; 1593 } 1594 1595 static TParseTree mlb_unescaped(TParseTree p) 1596 { 1597 if(__ctfe) 1598 { 1599 return pegged.peg.defined!(pegged.peg.or!(wschar, pegged.peg.or!(pegged.peg.literal!("!"), pegged.peg.charRange!('#', '['), pegged.peg.charRange!(']', '~')), non_ascii), "TomlGrammar.mlb_unescaped")(p); 1600 } 1601 else 1602 { 1603 if (auto m = tuple(`mlb_unescaped`, p.end) in memo) 1604 return *m; 1605 else 1606 { 1607 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(wschar, pegged.peg.or!(pegged.peg.literal!("!"), pegged.peg.charRange!('#', '['), pegged.peg.charRange!(']', '~')), non_ascii), "TomlGrammar.mlb_unescaped"), "mlb_unescaped")(p); 1608 memo[tuple(`mlb_unescaped`, p.end)] = result; 1609 return result; 1610 } 1611 } 1612 } 1613 1614 static TParseTree mlb_unescaped(string s) 1615 { 1616 if(__ctfe) 1617 { 1618 return pegged.peg.defined!(pegged.peg.or!(wschar, pegged.peg.or!(pegged.peg.literal!("!"), pegged.peg.charRange!('#', '['), pegged.peg.charRange!(']', '~')), non_ascii), "TomlGrammar.mlb_unescaped")(TParseTree("", false,[], s)); 1619 } 1620 else 1621 { 1622 forgetMemo(); 1623 return hooked!(pegged.peg.defined!(pegged.peg.or!(wschar, pegged.peg.or!(pegged.peg.literal!("!"), pegged.peg.charRange!('#', '['), pegged.peg.charRange!(']', '~')), non_ascii), "TomlGrammar.mlb_unescaped"), "mlb_unescaped")(TParseTree("", false,[], s)); 1624 } 1625 } 1626 static string mlb_unescaped(GetName g) 1627 { 1628 return "TomlGrammar.mlb_unescaped"; 1629 } 1630 1631 static TParseTree mlb_escaped_nl(TParseTree p) 1632 { 1633 if(__ctfe) 1634 { 1635 return pegged.peg.defined!(pegged.peg.and!(escape, ws, newline, pegged.peg.zeroOrMore!(pegged.peg.or!(wschar, newline))), "TomlGrammar.mlb_escaped_nl")(p); 1636 } 1637 else 1638 { 1639 if (auto m = tuple(`mlb_escaped_nl`, p.end) in memo) 1640 return *m; 1641 else 1642 { 1643 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(escape, ws, newline, pegged.peg.zeroOrMore!(pegged.peg.or!(wschar, newline))), "TomlGrammar.mlb_escaped_nl"), "mlb_escaped_nl")(p); 1644 memo[tuple(`mlb_escaped_nl`, p.end)] = result; 1645 return result; 1646 } 1647 } 1648 } 1649 1650 static TParseTree mlb_escaped_nl(string s) 1651 { 1652 if(__ctfe) 1653 { 1654 return pegged.peg.defined!(pegged.peg.and!(escape, ws, newline, pegged.peg.zeroOrMore!(pegged.peg.or!(wschar, newline))), "TomlGrammar.mlb_escaped_nl")(TParseTree("", false,[], s)); 1655 } 1656 else 1657 { 1658 forgetMemo(); 1659 return hooked!(pegged.peg.defined!(pegged.peg.and!(escape, ws, newline, pegged.peg.zeroOrMore!(pegged.peg.or!(wschar, newline))), "TomlGrammar.mlb_escaped_nl"), "mlb_escaped_nl")(TParseTree("", false,[], s)); 1660 } 1661 } 1662 static string mlb_escaped_nl(GetName g) 1663 { 1664 return "TomlGrammar.mlb_escaped_nl"; 1665 } 1666 1667 static TParseTree literal_string(TParseTree p) 1668 { 1669 if(__ctfe) 1670 { 1671 return pegged.peg.defined!(pegged.peg.and!(apostrophe, pegged.peg.zeroOrMore!(literal_char), apostrophe), "TomlGrammar.literal_string")(p); 1672 } 1673 else 1674 { 1675 if (auto m = tuple(`literal_string`, p.end) in memo) 1676 return *m; 1677 else 1678 { 1679 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(apostrophe, pegged.peg.zeroOrMore!(literal_char), apostrophe), "TomlGrammar.literal_string"), "literal_string")(p); 1680 memo[tuple(`literal_string`, p.end)] = result; 1681 return result; 1682 } 1683 } 1684 } 1685 1686 static TParseTree literal_string(string s) 1687 { 1688 if(__ctfe) 1689 { 1690 return pegged.peg.defined!(pegged.peg.and!(apostrophe, pegged.peg.zeroOrMore!(literal_char), apostrophe), "TomlGrammar.literal_string")(TParseTree("", false,[], s)); 1691 } 1692 else 1693 { 1694 forgetMemo(); 1695 return hooked!(pegged.peg.defined!(pegged.peg.and!(apostrophe, pegged.peg.zeroOrMore!(literal_char), apostrophe), "TomlGrammar.literal_string"), "literal_string")(TParseTree("", false,[], s)); 1696 } 1697 } 1698 static string literal_string(GetName g) 1699 { 1700 return "TomlGrammar.literal_string"; 1701 } 1702 1703 static TParseTree apostrophe(TParseTree p) 1704 { 1705 if(__ctfe) 1706 { 1707 return pegged.peg.defined!(pegged.peg.literal!("'"), "TomlGrammar.apostrophe")(p); 1708 } 1709 else 1710 { 1711 if (auto m = tuple(`apostrophe`, p.end) in memo) 1712 return *m; 1713 else 1714 { 1715 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.literal!("'"), "TomlGrammar.apostrophe"), "apostrophe")(p); 1716 memo[tuple(`apostrophe`, p.end)] = result; 1717 return result; 1718 } 1719 } 1720 } 1721 1722 static TParseTree apostrophe(string s) 1723 { 1724 if(__ctfe) 1725 { 1726 return pegged.peg.defined!(pegged.peg.literal!("'"), "TomlGrammar.apostrophe")(TParseTree("", false,[], s)); 1727 } 1728 else 1729 { 1730 forgetMemo(); 1731 return hooked!(pegged.peg.defined!(pegged.peg.literal!("'"), "TomlGrammar.apostrophe"), "apostrophe")(TParseTree("", false,[], s)); 1732 } 1733 } 1734 static string apostrophe(GetName g) 1735 { 1736 return "TomlGrammar.apostrophe"; 1737 } 1738 1739 static TParseTree literal_char(TParseTree p) 1740 { 1741 if(__ctfe) 1742 { 1743 return pegged.peg.defined!(pegged.peg.or!(pegged.peg.or!(pegged.peg.literal!("\t"), pegged.peg.charRange!(' ', '&'), pegged.peg.charRange!('(', '~')), non_ascii), "TomlGrammar.literal_char")(p); 1744 } 1745 else 1746 { 1747 if (auto m = tuple(`literal_char`, p.end) in memo) 1748 return *m; 1749 else 1750 { 1751 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.or!(pegged.peg.literal!("\t"), pegged.peg.charRange!(' ', '&'), pegged.peg.charRange!('(', '~')), non_ascii), "TomlGrammar.literal_char"), "literal_char")(p); 1752 memo[tuple(`literal_char`, p.end)] = result; 1753 return result; 1754 } 1755 } 1756 } 1757 1758 static TParseTree literal_char(string s) 1759 { 1760 if(__ctfe) 1761 { 1762 return pegged.peg.defined!(pegged.peg.or!(pegged.peg.or!(pegged.peg.literal!("\t"), pegged.peg.charRange!(' ', '&'), pegged.peg.charRange!('(', '~')), non_ascii), "TomlGrammar.literal_char")(TParseTree("", false,[], s)); 1763 } 1764 else 1765 { 1766 forgetMemo(); 1767 return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.or!(pegged.peg.literal!("\t"), pegged.peg.charRange!(' ', '&'), pegged.peg.charRange!('(', '~')), non_ascii), "TomlGrammar.literal_char"), "literal_char")(TParseTree("", false,[], s)); 1768 } 1769 } 1770 static string literal_char(GetName g) 1771 { 1772 return "TomlGrammar.literal_char"; 1773 } 1774 1775 static TParseTree ml_literal_string(TParseTree p) 1776 { 1777 if(__ctfe) 1778 { 1779 return pegged.peg.defined!(pegged.peg.and!(ml_literal_string_delim, ml_literal_body, ml_literal_string_delim), "TomlGrammar.ml_literal_string")(p); 1780 } 1781 else 1782 { 1783 if (auto m = tuple(`ml_literal_string`, p.end) in memo) 1784 return *m; 1785 else 1786 { 1787 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(ml_literal_string_delim, ml_literal_body, ml_literal_string_delim), "TomlGrammar.ml_literal_string"), "ml_literal_string")(p); 1788 memo[tuple(`ml_literal_string`, p.end)] = result; 1789 return result; 1790 } 1791 } 1792 } 1793 1794 static TParseTree ml_literal_string(string s) 1795 { 1796 if(__ctfe) 1797 { 1798 return pegged.peg.defined!(pegged.peg.and!(ml_literal_string_delim, ml_literal_body, ml_literal_string_delim), "TomlGrammar.ml_literal_string")(TParseTree("", false,[], s)); 1799 } 1800 else 1801 { 1802 forgetMemo(); 1803 return hooked!(pegged.peg.defined!(pegged.peg.and!(ml_literal_string_delim, ml_literal_body, ml_literal_string_delim), "TomlGrammar.ml_literal_string"), "ml_literal_string")(TParseTree("", false,[], s)); 1804 } 1805 } 1806 static string ml_literal_string(GetName g) 1807 { 1808 return "TomlGrammar.ml_literal_string"; 1809 } 1810 1811 static TParseTree ml_literal_string_delim(TParseTree p) 1812 { 1813 if(__ctfe) 1814 { 1815 return pegged.peg.defined!(pegged.peg.and!(apostrophe, apostrophe, apostrophe), "TomlGrammar.ml_literal_string_delim")(p); 1816 } 1817 else 1818 { 1819 if (auto m = tuple(`ml_literal_string_delim`, p.end) in memo) 1820 return *m; 1821 else 1822 { 1823 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(apostrophe, apostrophe, apostrophe), "TomlGrammar.ml_literal_string_delim"), "ml_literal_string_delim")(p); 1824 memo[tuple(`ml_literal_string_delim`, p.end)] = result; 1825 return result; 1826 } 1827 } 1828 } 1829 1830 static TParseTree ml_literal_string_delim(string s) 1831 { 1832 if(__ctfe) 1833 { 1834 return pegged.peg.defined!(pegged.peg.and!(apostrophe, apostrophe, apostrophe), "TomlGrammar.ml_literal_string_delim")(TParseTree("", false,[], s)); 1835 } 1836 else 1837 { 1838 forgetMemo(); 1839 return hooked!(pegged.peg.defined!(pegged.peg.and!(apostrophe, apostrophe, apostrophe), "TomlGrammar.ml_literal_string_delim"), "ml_literal_string_delim")(TParseTree("", false,[], s)); 1840 } 1841 } 1842 static string ml_literal_string_delim(GetName g) 1843 { 1844 return "TomlGrammar.ml_literal_string_delim"; 1845 } 1846 1847 static TParseTree ml_literal_body(TParseTree p) 1848 { 1849 if(__ctfe) 1850 { 1851 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.zeroOrMore!(mll_content), pegged.peg.zeroOrMore!(pegged.peg.and!(mll_quotes, pegged.peg.oneOrMore!(mll_content))), pegged.peg.option!(mll_quotes)), "TomlGrammar.ml_literal_body")(p); 1852 } 1853 else 1854 { 1855 if (auto m = tuple(`ml_literal_body`, p.end) in memo) 1856 return *m; 1857 else 1858 { 1859 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.zeroOrMore!(mll_content), pegged.peg.zeroOrMore!(pegged.peg.and!(mll_quotes, pegged.peg.oneOrMore!(mll_content))), pegged.peg.option!(mll_quotes)), "TomlGrammar.ml_literal_body"), "ml_literal_body")(p); 1860 memo[tuple(`ml_literal_body`, p.end)] = result; 1861 return result; 1862 } 1863 } 1864 } 1865 1866 static TParseTree ml_literal_body(string s) 1867 { 1868 if(__ctfe) 1869 { 1870 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.zeroOrMore!(mll_content), pegged.peg.zeroOrMore!(pegged.peg.and!(mll_quotes, pegged.peg.oneOrMore!(mll_content))), pegged.peg.option!(mll_quotes)), "TomlGrammar.ml_literal_body")(TParseTree("", false,[], s)); 1871 } 1872 else 1873 { 1874 forgetMemo(); 1875 return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.zeroOrMore!(mll_content), pegged.peg.zeroOrMore!(pegged.peg.and!(mll_quotes, pegged.peg.oneOrMore!(mll_content))), pegged.peg.option!(mll_quotes)), "TomlGrammar.ml_literal_body"), "ml_literal_body")(TParseTree("", false,[], s)); 1876 } 1877 } 1878 static string ml_literal_body(GetName g) 1879 { 1880 return "TomlGrammar.ml_literal_body"; 1881 } 1882 1883 static TParseTree mll_content(TParseTree p) 1884 { 1885 if(__ctfe) 1886 { 1887 return pegged.peg.defined!(pegged.peg.or!(mll_char, newline), "TomlGrammar.mll_content")(p); 1888 } 1889 else 1890 { 1891 if (auto m = tuple(`mll_content`, p.end) in memo) 1892 return *m; 1893 else 1894 { 1895 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(mll_char, newline), "TomlGrammar.mll_content"), "mll_content")(p); 1896 memo[tuple(`mll_content`, p.end)] = result; 1897 return result; 1898 } 1899 } 1900 } 1901 1902 static TParseTree mll_content(string s) 1903 { 1904 if(__ctfe) 1905 { 1906 return pegged.peg.defined!(pegged.peg.or!(mll_char, newline), "TomlGrammar.mll_content")(TParseTree("", false,[], s)); 1907 } 1908 else 1909 { 1910 forgetMemo(); 1911 return hooked!(pegged.peg.defined!(pegged.peg.or!(mll_char, newline), "TomlGrammar.mll_content"), "mll_content")(TParseTree("", false,[], s)); 1912 } 1913 } 1914 static string mll_content(GetName g) 1915 { 1916 return "TomlGrammar.mll_content"; 1917 } 1918 1919 static TParseTree mll_char(TParseTree p) 1920 { 1921 if(__ctfe) 1922 { 1923 return pegged.peg.defined!(pegged.peg.or!(pegged.peg.or!(pegged.peg.literal!("\t"), pegged.peg.charRange!(' ', '&'), pegged.peg.charRange!('(', '~')), non_ascii), "TomlGrammar.mll_char")(p); 1924 } 1925 else 1926 { 1927 if (auto m = tuple(`mll_char`, p.end) in memo) 1928 return *m; 1929 else 1930 { 1931 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.or!(pegged.peg.literal!("\t"), pegged.peg.charRange!(' ', '&'), pegged.peg.charRange!('(', '~')), non_ascii), "TomlGrammar.mll_char"), "mll_char")(p); 1932 memo[tuple(`mll_char`, p.end)] = result; 1933 return result; 1934 } 1935 } 1936 } 1937 1938 static TParseTree mll_char(string s) 1939 { 1940 if(__ctfe) 1941 { 1942 return pegged.peg.defined!(pegged.peg.or!(pegged.peg.or!(pegged.peg.literal!("\t"), pegged.peg.charRange!(' ', '&'), pegged.peg.charRange!('(', '~')), non_ascii), "TomlGrammar.mll_char")(TParseTree("", false,[], s)); 1943 } 1944 else 1945 { 1946 forgetMemo(); 1947 return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.or!(pegged.peg.literal!("\t"), pegged.peg.charRange!(' ', '&'), pegged.peg.charRange!('(', '~')), non_ascii), "TomlGrammar.mll_char"), "mll_char")(TParseTree("", false,[], s)); 1948 } 1949 } 1950 static string mll_char(GetName g) 1951 { 1952 return "TomlGrammar.mll_char"; 1953 } 1954 1955 static TParseTree mll_quotes(TParseTree p) 1956 { 1957 if(__ctfe) 1958 { 1959 return pegged.peg.defined!(pegged.peg.and!(apostrophe, pegged.peg.option!(apostrophe), pegged.peg.negLookahead!(apostrophe)), "TomlGrammar.mll_quotes")(p); 1960 } 1961 else 1962 { 1963 if (auto m = tuple(`mll_quotes`, p.end) in memo) 1964 return *m; 1965 else 1966 { 1967 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(apostrophe, pegged.peg.option!(apostrophe), pegged.peg.negLookahead!(apostrophe)), "TomlGrammar.mll_quotes"), "mll_quotes")(p); 1968 memo[tuple(`mll_quotes`, p.end)] = result; 1969 return result; 1970 } 1971 } 1972 } 1973 1974 static TParseTree mll_quotes(string s) 1975 { 1976 if(__ctfe) 1977 { 1978 return pegged.peg.defined!(pegged.peg.and!(apostrophe, pegged.peg.option!(apostrophe), pegged.peg.negLookahead!(apostrophe)), "TomlGrammar.mll_quotes")(TParseTree("", false,[], s)); 1979 } 1980 else 1981 { 1982 forgetMemo(); 1983 return hooked!(pegged.peg.defined!(pegged.peg.and!(apostrophe, pegged.peg.option!(apostrophe), pegged.peg.negLookahead!(apostrophe)), "TomlGrammar.mll_quotes"), "mll_quotes")(TParseTree("", false,[], s)); 1984 } 1985 } 1986 static string mll_quotes(GetName g) 1987 { 1988 return "TomlGrammar.mll_quotes"; 1989 } 1990 1991 static TParseTree integer(TParseTree p) 1992 { 1993 if(__ctfe) 1994 { 1995 return pegged.peg.defined!(pegged.peg.or!(hex_int, oct_int, bin_int, dec_int), "TomlGrammar.integer")(p); 1996 } 1997 else 1998 { 1999 if (auto m = tuple(`integer`, p.end) in memo) 2000 return *m; 2001 else 2002 { 2003 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(hex_int, oct_int, bin_int, dec_int), "TomlGrammar.integer"), "integer")(p); 2004 memo[tuple(`integer`, p.end)] = result; 2005 return result; 2006 } 2007 } 2008 } 2009 2010 static TParseTree integer(string s) 2011 { 2012 if(__ctfe) 2013 { 2014 return pegged.peg.defined!(pegged.peg.or!(hex_int, oct_int, bin_int, dec_int), "TomlGrammar.integer")(TParseTree("", false,[], s)); 2015 } 2016 else 2017 { 2018 forgetMemo(); 2019 return hooked!(pegged.peg.defined!(pegged.peg.or!(hex_int, oct_int, bin_int, dec_int), "TomlGrammar.integer"), "integer")(TParseTree("", false,[], s)); 2020 } 2021 } 2022 static string integer(GetName g) 2023 { 2024 return "TomlGrammar.integer"; 2025 } 2026 2027 static TParseTree minus(TParseTree p) 2028 { 2029 if(__ctfe) 2030 { 2031 return pegged.peg.defined!(pegged.peg.literal!("-"), "TomlGrammar.minus")(p); 2032 } 2033 else 2034 { 2035 if (auto m = tuple(`minus`, p.end) in memo) 2036 return *m; 2037 else 2038 { 2039 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.literal!("-"), "TomlGrammar.minus"), "minus")(p); 2040 memo[tuple(`minus`, p.end)] = result; 2041 return result; 2042 } 2043 } 2044 } 2045 2046 static TParseTree minus(string s) 2047 { 2048 if(__ctfe) 2049 { 2050 return pegged.peg.defined!(pegged.peg.literal!("-"), "TomlGrammar.minus")(TParseTree("", false,[], s)); 2051 } 2052 else 2053 { 2054 forgetMemo(); 2055 return hooked!(pegged.peg.defined!(pegged.peg.literal!("-"), "TomlGrammar.minus"), "minus")(TParseTree("", false,[], s)); 2056 } 2057 } 2058 static string minus(GetName g) 2059 { 2060 return "TomlGrammar.minus"; 2061 } 2062 2063 static TParseTree plus(TParseTree p) 2064 { 2065 if(__ctfe) 2066 { 2067 return pegged.peg.defined!(pegged.peg.literal!("+"), "TomlGrammar.plus")(p); 2068 } 2069 else 2070 { 2071 if (auto m = tuple(`plus`, p.end) in memo) 2072 return *m; 2073 else 2074 { 2075 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.literal!("+"), "TomlGrammar.plus"), "plus")(p); 2076 memo[tuple(`plus`, p.end)] = result; 2077 return result; 2078 } 2079 } 2080 } 2081 2082 static TParseTree plus(string s) 2083 { 2084 if(__ctfe) 2085 { 2086 return pegged.peg.defined!(pegged.peg.literal!("+"), "TomlGrammar.plus")(TParseTree("", false,[], s)); 2087 } 2088 else 2089 { 2090 forgetMemo(); 2091 return hooked!(pegged.peg.defined!(pegged.peg.literal!("+"), "TomlGrammar.plus"), "plus")(TParseTree("", false,[], s)); 2092 } 2093 } 2094 static string plus(GetName g) 2095 { 2096 return "TomlGrammar.plus"; 2097 } 2098 2099 static TParseTree underscore(TParseTree p) 2100 { 2101 if(__ctfe) 2102 { 2103 return pegged.peg.defined!(pegged.peg.literal!("_"), "TomlGrammar.underscore")(p); 2104 } 2105 else 2106 { 2107 if (auto m = tuple(`underscore`, p.end) in memo) 2108 return *m; 2109 else 2110 { 2111 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.literal!("_"), "TomlGrammar.underscore"), "underscore")(p); 2112 memo[tuple(`underscore`, p.end)] = result; 2113 return result; 2114 } 2115 } 2116 } 2117 2118 static TParseTree underscore(string s) 2119 { 2120 if(__ctfe) 2121 { 2122 return pegged.peg.defined!(pegged.peg.literal!("_"), "TomlGrammar.underscore")(TParseTree("", false,[], s)); 2123 } 2124 else 2125 { 2126 forgetMemo(); 2127 return hooked!(pegged.peg.defined!(pegged.peg.literal!("_"), "TomlGrammar.underscore"), "underscore")(TParseTree("", false,[], s)); 2128 } 2129 } 2130 static string underscore(GetName g) 2131 { 2132 return "TomlGrammar.underscore"; 2133 } 2134 2135 static TParseTree digit1_9(TParseTree p) 2136 { 2137 if(__ctfe) 2138 { 2139 return pegged.peg.defined!(pegged.peg.charRange!('1', '9'), "TomlGrammar.digit1_9")(p); 2140 } 2141 else 2142 { 2143 if (auto m = tuple(`digit1_9`, p.end) in memo) 2144 return *m; 2145 else 2146 { 2147 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.charRange!('1', '9'), "TomlGrammar.digit1_9"), "digit1_9")(p); 2148 memo[tuple(`digit1_9`, p.end)] = result; 2149 return result; 2150 } 2151 } 2152 } 2153 2154 static TParseTree digit1_9(string s) 2155 { 2156 if(__ctfe) 2157 { 2158 return pegged.peg.defined!(pegged.peg.charRange!('1', '9'), "TomlGrammar.digit1_9")(TParseTree("", false,[], s)); 2159 } 2160 else 2161 { 2162 forgetMemo(); 2163 return hooked!(pegged.peg.defined!(pegged.peg.charRange!('1', '9'), "TomlGrammar.digit1_9"), "digit1_9")(TParseTree("", false,[], s)); 2164 } 2165 } 2166 static string digit1_9(GetName g) 2167 { 2168 return "TomlGrammar.digit1_9"; 2169 } 2170 2171 static TParseTree digit0_7(TParseTree p) 2172 { 2173 if(__ctfe) 2174 { 2175 return pegged.peg.defined!(pegged.peg.charRange!('0', '7'), "TomlGrammar.digit0_7")(p); 2176 } 2177 else 2178 { 2179 if (auto m = tuple(`digit0_7`, p.end) in memo) 2180 return *m; 2181 else 2182 { 2183 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.charRange!('0', '7'), "TomlGrammar.digit0_7"), "digit0_7")(p); 2184 memo[tuple(`digit0_7`, p.end)] = result; 2185 return result; 2186 } 2187 } 2188 } 2189 2190 static TParseTree digit0_7(string s) 2191 { 2192 if(__ctfe) 2193 { 2194 return pegged.peg.defined!(pegged.peg.charRange!('0', '7'), "TomlGrammar.digit0_7")(TParseTree("", false,[], s)); 2195 } 2196 else 2197 { 2198 forgetMemo(); 2199 return hooked!(pegged.peg.defined!(pegged.peg.charRange!('0', '7'), "TomlGrammar.digit0_7"), "digit0_7")(TParseTree("", false,[], s)); 2200 } 2201 } 2202 static string digit0_7(GetName g) 2203 { 2204 return "TomlGrammar.digit0_7"; 2205 } 2206 2207 static TParseTree digit0_1(TParseTree p) 2208 { 2209 if(__ctfe) 2210 { 2211 return pegged.peg.defined!(pegged.peg.charRange!('0', '1'), "TomlGrammar.digit0_1")(p); 2212 } 2213 else 2214 { 2215 if (auto m = tuple(`digit0_1`, p.end) in memo) 2216 return *m; 2217 else 2218 { 2219 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.charRange!('0', '1'), "TomlGrammar.digit0_1"), "digit0_1")(p); 2220 memo[tuple(`digit0_1`, p.end)] = result; 2221 return result; 2222 } 2223 } 2224 } 2225 2226 static TParseTree digit0_1(string s) 2227 { 2228 if(__ctfe) 2229 { 2230 return pegged.peg.defined!(pegged.peg.charRange!('0', '1'), "TomlGrammar.digit0_1")(TParseTree("", false,[], s)); 2231 } 2232 else 2233 { 2234 forgetMemo(); 2235 return hooked!(pegged.peg.defined!(pegged.peg.charRange!('0', '1'), "TomlGrammar.digit0_1"), "digit0_1")(TParseTree("", false,[], s)); 2236 } 2237 } 2238 static string digit0_1(GetName g) 2239 { 2240 return "TomlGrammar.digit0_1"; 2241 } 2242 2243 static TParseTree hex_prefix(TParseTree p) 2244 { 2245 if(__ctfe) 2246 { 2247 return pegged.peg.defined!(pegged.peg.literal!("0x"), "TomlGrammar.hex_prefix")(p); 2248 } 2249 else 2250 { 2251 if (auto m = tuple(`hex_prefix`, p.end) in memo) 2252 return *m; 2253 else 2254 { 2255 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.literal!("0x"), "TomlGrammar.hex_prefix"), "hex_prefix")(p); 2256 memo[tuple(`hex_prefix`, p.end)] = result; 2257 return result; 2258 } 2259 } 2260 } 2261 2262 static TParseTree hex_prefix(string s) 2263 { 2264 if(__ctfe) 2265 { 2266 return pegged.peg.defined!(pegged.peg.literal!("0x"), "TomlGrammar.hex_prefix")(TParseTree("", false,[], s)); 2267 } 2268 else 2269 { 2270 forgetMemo(); 2271 return hooked!(pegged.peg.defined!(pegged.peg.literal!("0x"), "TomlGrammar.hex_prefix"), "hex_prefix")(TParseTree("", false,[], s)); 2272 } 2273 } 2274 static string hex_prefix(GetName g) 2275 { 2276 return "TomlGrammar.hex_prefix"; 2277 } 2278 2279 static TParseTree oct_prefix(TParseTree p) 2280 { 2281 if(__ctfe) 2282 { 2283 return pegged.peg.defined!(pegged.peg.literal!("0o"), "TomlGrammar.oct_prefix")(p); 2284 } 2285 else 2286 { 2287 if (auto m = tuple(`oct_prefix`, p.end) in memo) 2288 return *m; 2289 else 2290 { 2291 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.literal!("0o"), "TomlGrammar.oct_prefix"), "oct_prefix")(p); 2292 memo[tuple(`oct_prefix`, p.end)] = result; 2293 return result; 2294 } 2295 } 2296 } 2297 2298 static TParseTree oct_prefix(string s) 2299 { 2300 if(__ctfe) 2301 { 2302 return pegged.peg.defined!(pegged.peg.literal!("0o"), "TomlGrammar.oct_prefix")(TParseTree("", false,[], s)); 2303 } 2304 else 2305 { 2306 forgetMemo(); 2307 return hooked!(pegged.peg.defined!(pegged.peg.literal!("0o"), "TomlGrammar.oct_prefix"), "oct_prefix")(TParseTree("", false,[], s)); 2308 } 2309 } 2310 static string oct_prefix(GetName g) 2311 { 2312 return "TomlGrammar.oct_prefix"; 2313 } 2314 2315 static TParseTree bin_prefix(TParseTree p) 2316 { 2317 if(__ctfe) 2318 { 2319 return pegged.peg.defined!(pegged.peg.literal!("0b"), "TomlGrammar.bin_prefix")(p); 2320 } 2321 else 2322 { 2323 if (auto m = tuple(`bin_prefix`, p.end) in memo) 2324 return *m; 2325 else 2326 { 2327 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.literal!("0b"), "TomlGrammar.bin_prefix"), "bin_prefix")(p); 2328 memo[tuple(`bin_prefix`, p.end)] = result; 2329 return result; 2330 } 2331 } 2332 } 2333 2334 static TParseTree bin_prefix(string s) 2335 { 2336 if(__ctfe) 2337 { 2338 return pegged.peg.defined!(pegged.peg.literal!("0b"), "TomlGrammar.bin_prefix")(TParseTree("", false,[], s)); 2339 } 2340 else 2341 { 2342 forgetMemo(); 2343 return hooked!(pegged.peg.defined!(pegged.peg.literal!("0b"), "TomlGrammar.bin_prefix"), "bin_prefix")(TParseTree("", false,[], s)); 2344 } 2345 } 2346 static string bin_prefix(GetName g) 2347 { 2348 return "TomlGrammar.bin_prefix"; 2349 } 2350 2351 static TParseTree dec_int(TParseTree p) 2352 { 2353 if(__ctfe) 2354 { 2355 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.or!(minus, plus)), unsigned_dec_int), "TomlGrammar.dec_int")(p); 2356 } 2357 else 2358 { 2359 if (auto m = tuple(`dec_int`, p.end) in memo) 2360 return *m; 2361 else 2362 { 2363 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.or!(minus, plus)), unsigned_dec_int), "TomlGrammar.dec_int"), "dec_int")(p); 2364 memo[tuple(`dec_int`, p.end)] = result; 2365 return result; 2366 } 2367 } 2368 } 2369 2370 static TParseTree dec_int(string s) 2371 { 2372 if(__ctfe) 2373 { 2374 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.or!(minus, plus)), unsigned_dec_int), "TomlGrammar.dec_int")(TParseTree("", false,[], s)); 2375 } 2376 else 2377 { 2378 forgetMemo(); 2379 return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.or!(minus, plus)), unsigned_dec_int), "TomlGrammar.dec_int"), "dec_int")(TParseTree("", false,[], s)); 2380 } 2381 } 2382 static string dec_int(GetName g) 2383 { 2384 return "TomlGrammar.dec_int"; 2385 } 2386 2387 static TParseTree unsigned_dec_int(TParseTree p) 2388 { 2389 if(__ctfe) 2390 { 2391 return pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(digit1_9, pegged.peg.oneOrMore!(pegged.peg.or!(DIGIT, pegged.peg.and!(underscore, DIGIT)))), DIGIT), "TomlGrammar.unsigned_dec_int")(p); 2392 } 2393 else 2394 { 2395 if (auto m = tuple(`unsigned_dec_int`, p.end) in memo) 2396 return *m; 2397 else 2398 { 2399 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(digit1_9, pegged.peg.oneOrMore!(pegged.peg.or!(DIGIT, pegged.peg.and!(underscore, DIGIT)))), DIGIT), "TomlGrammar.unsigned_dec_int"), "unsigned_dec_int")(p); 2400 memo[tuple(`unsigned_dec_int`, p.end)] = result; 2401 return result; 2402 } 2403 } 2404 } 2405 2406 static TParseTree unsigned_dec_int(string s) 2407 { 2408 if(__ctfe) 2409 { 2410 return pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(digit1_9, pegged.peg.oneOrMore!(pegged.peg.or!(DIGIT, pegged.peg.and!(underscore, DIGIT)))), DIGIT), "TomlGrammar.unsigned_dec_int")(TParseTree("", false,[], s)); 2411 } 2412 else 2413 { 2414 forgetMemo(); 2415 return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(digit1_9, pegged.peg.oneOrMore!(pegged.peg.or!(DIGIT, pegged.peg.and!(underscore, DIGIT)))), DIGIT), "TomlGrammar.unsigned_dec_int"), "unsigned_dec_int")(TParseTree("", false,[], s)); 2416 } 2417 } 2418 static string unsigned_dec_int(GetName g) 2419 { 2420 return "TomlGrammar.unsigned_dec_int"; 2421 } 2422 2423 static TParseTree hex_int(TParseTree p) 2424 { 2425 if(__ctfe) 2426 { 2427 return pegged.peg.defined!(pegged.peg.and!(hex_prefix, HEXDIG, pegged.peg.zeroOrMore!(pegged.peg.or!(HEXDIG, pegged.peg.and!(underscore, HEXDIG)))), "TomlGrammar.hex_int")(p); 2428 } 2429 else 2430 { 2431 if (auto m = tuple(`hex_int`, p.end) in memo) 2432 return *m; 2433 else 2434 { 2435 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(hex_prefix, HEXDIG, pegged.peg.zeroOrMore!(pegged.peg.or!(HEXDIG, pegged.peg.and!(underscore, HEXDIG)))), "TomlGrammar.hex_int"), "hex_int")(p); 2436 memo[tuple(`hex_int`, p.end)] = result; 2437 return result; 2438 } 2439 } 2440 } 2441 2442 static TParseTree hex_int(string s) 2443 { 2444 if(__ctfe) 2445 { 2446 return pegged.peg.defined!(pegged.peg.and!(hex_prefix, HEXDIG, pegged.peg.zeroOrMore!(pegged.peg.or!(HEXDIG, pegged.peg.and!(underscore, HEXDIG)))), "TomlGrammar.hex_int")(TParseTree("", false,[], s)); 2447 } 2448 else 2449 { 2450 forgetMemo(); 2451 return hooked!(pegged.peg.defined!(pegged.peg.and!(hex_prefix, HEXDIG, pegged.peg.zeroOrMore!(pegged.peg.or!(HEXDIG, pegged.peg.and!(underscore, HEXDIG)))), "TomlGrammar.hex_int"), "hex_int")(TParseTree("", false,[], s)); 2452 } 2453 } 2454 static string hex_int(GetName g) 2455 { 2456 return "TomlGrammar.hex_int"; 2457 } 2458 2459 static TParseTree oct_int(TParseTree p) 2460 { 2461 if(__ctfe) 2462 { 2463 return pegged.peg.defined!(pegged.peg.and!(oct_prefix, digit0_7, pegged.peg.zeroOrMore!(pegged.peg.or!(digit0_7, pegged.peg.and!(underscore, digit0_7)))), "TomlGrammar.oct_int")(p); 2464 } 2465 else 2466 { 2467 if (auto m = tuple(`oct_int`, p.end) in memo) 2468 return *m; 2469 else 2470 { 2471 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(oct_prefix, digit0_7, pegged.peg.zeroOrMore!(pegged.peg.or!(digit0_7, pegged.peg.and!(underscore, digit0_7)))), "TomlGrammar.oct_int"), "oct_int")(p); 2472 memo[tuple(`oct_int`, p.end)] = result; 2473 return result; 2474 } 2475 } 2476 } 2477 2478 static TParseTree oct_int(string s) 2479 { 2480 if(__ctfe) 2481 { 2482 return pegged.peg.defined!(pegged.peg.and!(oct_prefix, digit0_7, pegged.peg.zeroOrMore!(pegged.peg.or!(digit0_7, pegged.peg.and!(underscore, digit0_7)))), "TomlGrammar.oct_int")(TParseTree("", false,[], s)); 2483 } 2484 else 2485 { 2486 forgetMemo(); 2487 return hooked!(pegged.peg.defined!(pegged.peg.and!(oct_prefix, digit0_7, pegged.peg.zeroOrMore!(pegged.peg.or!(digit0_7, pegged.peg.and!(underscore, digit0_7)))), "TomlGrammar.oct_int"), "oct_int")(TParseTree("", false,[], s)); 2488 } 2489 } 2490 static string oct_int(GetName g) 2491 { 2492 return "TomlGrammar.oct_int"; 2493 } 2494 2495 static TParseTree bin_int(TParseTree p) 2496 { 2497 if(__ctfe) 2498 { 2499 return pegged.peg.defined!(pegged.peg.and!(bin_prefix, digit0_1, pegged.peg.zeroOrMore!(pegged.peg.or!(digit0_1, pegged.peg.and!(underscore, digit0_1)))), "TomlGrammar.bin_int")(p); 2500 } 2501 else 2502 { 2503 if (auto m = tuple(`bin_int`, p.end) in memo) 2504 return *m; 2505 else 2506 { 2507 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(bin_prefix, digit0_1, pegged.peg.zeroOrMore!(pegged.peg.or!(digit0_1, pegged.peg.and!(underscore, digit0_1)))), "TomlGrammar.bin_int"), "bin_int")(p); 2508 memo[tuple(`bin_int`, p.end)] = result; 2509 return result; 2510 } 2511 } 2512 } 2513 2514 static TParseTree bin_int(string s) 2515 { 2516 if(__ctfe) 2517 { 2518 return pegged.peg.defined!(pegged.peg.and!(bin_prefix, digit0_1, pegged.peg.zeroOrMore!(pegged.peg.or!(digit0_1, pegged.peg.and!(underscore, digit0_1)))), "TomlGrammar.bin_int")(TParseTree("", false,[], s)); 2519 } 2520 else 2521 { 2522 forgetMemo(); 2523 return hooked!(pegged.peg.defined!(pegged.peg.and!(bin_prefix, digit0_1, pegged.peg.zeroOrMore!(pegged.peg.or!(digit0_1, pegged.peg.and!(underscore, digit0_1)))), "TomlGrammar.bin_int"), "bin_int")(TParseTree("", false,[], s)); 2524 } 2525 } 2526 static string bin_int(GetName g) 2527 { 2528 return "TomlGrammar.bin_int"; 2529 } 2530 2531 static TParseTree float_(TParseTree p) 2532 { 2533 if(__ctfe) 2534 { 2535 return pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(float_int_part, pegged.peg.or!(exp, pegged.peg.and!(frac, pegged.peg.option!(exp)))), special_float), "TomlGrammar.float_")(p); 2536 } 2537 else 2538 { 2539 if (auto m = tuple(`float_`, p.end) in memo) 2540 return *m; 2541 else 2542 { 2543 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(float_int_part, pegged.peg.or!(exp, pegged.peg.and!(frac, pegged.peg.option!(exp)))), special_float), "TomlGrammar.float_"), "float_")(p); 2544 memo[tuple(`float_`, p.end)] = result; 2545 return result; 2546 } 2547 } 2548 } 2549 2550 static TParseTree float_(string s) 2551 { 2552 if(__ctfe) 2553 { 2554 return pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(float_int_part, pegged.peg.or!(exp, pegged.peg.and!(frac, pegged.peg.option!(exp)))), special_float), "TomlGrammar.float_")(TParseTree("", false,[], s)); 2555 } 2556 else 2557 { 2558 forgetMemo(); 2559 return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(float_int_part, pegged.peg.or!(exp, pegged.peg.and!(frac, pegged.peg.option!(exp)))), special_float), "TomlGrammar.float_"), "float_")(TParseTree("", false,[], s)); 2560 } 2561 } 2562 static string float_(GetName g) 2563 { 2564 return "TomlGrammar.float_"; 2565 } 2566 2567 static TParseTree float_int_part(TParseTree p) 2568 { 2569 if(__ctfe) 2570 { 2571 return pegged.peg.defined!(dec_int, "TomlGrammar.float_int_part")(p); 2572 } 2573 else 2574 { 2575 if (auto m = tuple(`float_int_part`, p.end) in memo) 2576 return *m; 2577 else 2578 { 2579 TParseTree result = hooked!(pegged.peg.defined!(dec_int, "TomlGrammar.float_int_part"), "float_int_part")(p); 2580 memo[tuple(`float_int_part`, p.end)] = result; 2581 return result; 2582 } 2583 } 2584 } 2585 2586 static TParseTree float_int_part(string s) 2587 { 2588 if(__ctfe) 2589 { 2590 return pegged.peg.defined!(dec_int, "TomlGrammar.float_int_part")(TParseTree("", false,[], s)); 2591 } 2592 else 2593 { 2594 forgetMemo(); 2595 return hooked!(pegged.peg.defined!(dec_int, "TomlGrammar.float_int_part"), "float_int_part")(TParseTree("", false,[], s)); 2596 } 2597 } 2598 static string float_int_part(GetName g) 2599 { 2600 return "TomlGrammar.float_int_part"; 2601 } 2602 2603 static TParseTree frac(TParseTree p) 2604 { 2605 if(__ctfe) 2606 { 2607 return pegged.peg.defined!(pegged.peg.and!(decimal_point, zero_prefixable_int), "TomlGrammar.frac")(p); 2608 } 2609 else 2610 { 2611 if (auto m = tuple(`frac`, p.end) in memo) 2612 return *m; 2613 else 2614 { 2615 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(decimal_point, zero_prefixable_int), "TomlGrammar.frac"), "frac")(p); 2616 memo[tuple(`frac`, p.end)] = result; 2617 return result; 2618 } 2619 } 2620 } 2621 2622 static TParseTree frac(string s) 2623 { 2624 if(__ctfe) 2625 { 2626 return pegged.peg.defined!(pegged.peg.and!(decimal_point, zero_prefixable_int), "TomlGrammar.frac")(TParseTree("", false,[], s)); 2627 } 2628 else 2629 { 2630 forgetMemo(); 2631 return hooked!(pegged.peg.defined!(pegged.peg.and!(decimal_point, zero_prefixable_int), "TomlGrammar.frac"), "frac")(TParseTree("", false,[], s)); 2632 } 2633 } 2634 static string frac(GetName g) 2635 { 2636 return "TomlGrammar.frac"; 2637 } 2638 2639 static TParseTree decimal_point(TParseTree p) 2640 { 2641 if(__ctfe) 2642 { 2643 return pegged.peg.defined!(pegged.peg.literal!("."), "TomlGrammar.decimal_point")(p); 2644 } 2645 else 2646 { 2647 if (auto m = tuple(`decimal_point`, p.end) in memo) 2648 return *m; 2649 else 2650 { 2651 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.literal!("."), "TomlGrammar.decimal_point"), "decimal_point")(p); 2652 memo[tuple(`decimal_point`, p.end)] = result; 2653 return result; 2654 } 2655 } 2656 } 2657 2658 static TParseTree decimal_point(string s) 2659 { 2660 if(__ctfe) 2661 { 2662 return pegged.peg.defined!(pegged.peg.literal!("."), "TomlGrammar.decimal_point")(TParseTree("", false,[], s)); 2663 } 2664 else 2665 { 2666 forgetMemo(); 2667 return hooked!(pegged.peg.defined!(pegged.peg.literal!("."), "TomlGrammar.decimal_point"), "decimal_point")(TParseTree("", false,[], s)); 2668 } 2669 } 2670 static string decimal_point(GetName g) 2671 { 2672 return "TomlGrammar.decimal_point"; 2673 } 2674 2675 static TParseTree zero_prefixable_int(TParseTree p) 2676 { 2677 if(__ctfe) 2678 { 2679 return pegged.peg.defined!(pegged.peg.and!(DIGIT, pegged.peg.zeroOrMore!(pegged.peg.or!(DIGIT, pegged.peg.and!(underscore, DIGIT)))), "TomlGrammar.zero_prefixable_int")(p); 2680 } 2681 else 2682 { 2683 if (auto m = tuple(`zero_prefixable_int`, p.end) in memo) 2684 return *m; 2685 else 2686 { 2687 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(DIGIT, pegged.peg.zeroOrMore!(pegged.peg.or!(DIGIT, pegged.peg.and!(underscore, DIGIT)))), "TomlGrammar.zero_prefixable_int"), "zero_prefixable_int")(p); 2688 memo[tuple(`zero_prefixable_int`, p.end)] = result; 2689 return result; 2690 } 2691 } 2692 } 2693 2694 static TParseTree zero_prefixable_int(string s) 2695 { 2696 if(__ctfe) 2697 { 2698 return pegged.peg.defined!(pegged.peg.and!(DIGIT, pegged.peg.zeroOrMore!(pegged.peg.or!(DIGIT, pegged.peg.and!(underscore, DIGIT)))), "TomlGrammar.zero_prefixable_int")(TParseTree("", false,[], s)); 2699 } 2700 else 2701 { 2702 forgetMemo(); 2703 return hooked!(pegged.peg.defined!(pegged.peg.and!(DIGIT, pegged.peg.zeroOrMore!(pegged.peg.or!(DIGIT, pegged.peg.and!(underscore, DIGIT)))), "TomlGrammar.zero_prefixable_int"), "zero_prefixable_int")(TParseTree("", false,[], s)); 2704 } 2705 } 2706 static string zero_prefixable_int(GetName g) 2707 { 2708 return "TomlGrammar.zero_prefixable_int"; 2709 } 2710 2711 static TParseTree exp(TParseTree p) 2712 { 2713 if(__ctfe) 2714 { 2715 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("e"), float_exp_part), "TomlGrammar.exp")(p); 2716 } 2717 else 2718 { 2719 if (auto m = tuple(`exp`, p.end) in memo) 2720 return *m; 2721 else 2722 { 2723 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("e"), float_exp_part), "TomlGrammar.exp"), "exp")(p); 2724 memo[tuple(`exp`, p.end)] = result; 2725 return result; 2726 } 2727 } 2728 } 2729 2730 static TParseTree exp(string s) 2731 { 2732 if(__ctfe) 2733 { 2734 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("e"), float_exp_part), "TomlGrammar.exp")(TParseTree("", false,[], s)); 2735 } 2736 else 2737 { 2738 forgetMemo(); 2739 return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("e"), float_exp_part), "TomlGrammar.exp"), "exp")(TParseTree("", false,[], s)); 2740 } 2741 } 2742 static string exp(GetName g) 2743 { 2744 return "TomlGrammar.exp"; 2745 } 2746 2747 static TParseTree float_exp_part(TParseTree p) 2748 { 2749 if(__ctfe) 2750 { 2751 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.or!(minus, plus)), zero_prefixable_int), "TomlGrammar.float_exp_part")(p); 2752 } 2753 else 2754 { 2755 if (auto m = tuple(`float_exp_part`, p.end) in memo) 2756 return *m; 2757 else 2758 { 2759 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.or!(minus, plus)), zero_prefixable_int), "TomlGrammar.float_exp_part"), "float_exp_part")(p); 2760 memo[tuple(`float_exp_part`, p.end)] = result; 2761 return result; 2762 } 2763 } 2764 } 2765 2766 static TParseTree float_exp_part(string s) 2767 { 2768 if(__ctfe) 2769 { 2770 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.or!(minus, plus)), zero_prefixable_int), "TomlGrammar.float_exp_part")(TParseTree("", false,[], s)); 2771 } 2772 else 2773 { 2774 forgetMemo(); 2775 return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.or!(minus, plus)), zero_prefixable_int), "TomlGrammar.float_exp_part"), "float_exp_part")(TParseTree("", false,[], s)); 2776 } 2777 } 2778 static string float_exp_part(GetName g) 2779 { 2780 return "TomlGrammar.float_exp_part"; 2781 } 2782 2783 static TParseTree special_float(TParseTree p) 2784 { 2785 if(__ctfe) 2786 { 2787 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.or!(minus, plus)), pegged.peg.or!(inf, nan)), "TomlGrammar.special_float")(p); 2788 } 2789 else 2790 { 2791 if (auto m = tuple(`special_float`, p.end) in memo) 2792 return *m; 2793 else 2794 { 2795 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.or!(minus, plus)), pegged.peg.or!(inf, nan)), "TomlGrammar.special_float"), "special_float")(p); 2796 memo[tuple(`special_float`, p.end)] = result; 2797 return result; 2798 } 2799 } 2800 } 2801 2802 static TParseTree special_float(string s) 2803 { 2804 if(__ctfe) 2805 { 2806 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.or!(minus, plus)), pegged.peg.or!(inf, nan)), "TomlGrammar.special_float")(TParseTree("", false,[], s)); 2807 } 2808 else 2809 { 2810 forgetMemo(); 2811 return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.option!(pegged.peg.or!(minus, plus)), pegged.peg.or!(inf, nan)), "TomlGrammar.special_float"), "special_float")(TParseTree("", false,[], s)); 2812 } 2813 } 2814 static string special_float(GetName g) 2815 { 2816 return "TomlGrammar.special_float"; 2817 } 2818 2819 static TParseTree inf(TParseTree p) 2820 { 2821 if(__ctfe) 2822 { 2823 return pegged.peg.defined!(pegged.peg.literal!("inf"), "TomlGrammar.inf")(p); 2824 } 2825 else 2826 { 2827 if (auto m = tuple(`inf`, p.end) in memo) 2828 return *m; 2829 else 2830 { 2831 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.literal!("inf"), "TomlGrammar.inf"), "inf")(p); 2832 memo[tuple(`inf`, p.end)] = result; 2833 return result; 2834 } 2835 } 2836 } 2837 2838 static TParseTree inf(string s) 2839 { 2840 if(__ctfe) 2841 { 2842 return pegged.peg.defined!(pegged.peg.literal!("inf"), "TomlGrammar.inf")(TParseTree("", false,[], s)); 2843 } 2844 else 2845 { 2846 forgetMemo(); 2847 return hooked!(pegged.peg.defined!(pegged.peg.literal!("inf"), "TomlGrammar.inf"), "inf")(TParseTree("", false,[], s)); 2848 } 2849 } 2850 static string inf(GetName g) 2851 { 2852 return "TomlGrammar.inf"; 2853 } 2854 2855 static TParseTree nan(TParseTree p) 2856 { 2857 if(__ctfe) 2858 { 2859 return pegged.peg.defined!(pegged.peg.literal!("nan"), "TomlGrammar.nan")(p); 2860 } 2861 else 2862 { 2863 if (auto m = tuple(`nan`, p.end) in memo) 2864 return *m; 2865 else 2866 { 2867 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.literal!("nan"), "TomlGrammar.nan"), "nan")(p); 2868 memo[tuple(`nan`, p.end)] = result; 2869 return result; 2870 } 2871 } 2872 } 2873 2874 static TParseTree nan(string s) 2875 { 2876 if(__ctfe) 2877 { 2878 return pegged.peg.defined!(pegged.peg.literal!("nan"), "TomlGrammar.nan")(TParseTree("", false,[], s)); 2879 } 2880 else 2881 { 2882 forgetMemo(); 2883 return hooked!(pegged.peg.defined!(pegged.peg.literal!("nan"), "TomlGrammar.nan"), "nan")(TParseTree("", false,[], s)); 2884 } 2885 } 2886 static string nan(GetName g) 2887 { 2888 return "TomlGrammar.nan"; 2889 } 2890 2891 static TParseTree boolean(TParseTree p) 2892 { 2893 if(__ctfe) 2894 { 2895 return pegged.peg.defined!(pegged.peg.or!(true_, false_), "TomlGrammar.boolean")(p); 2896 } 2897 else 2898 { 2899 if (auto m = tuple(`boolean`, p.end) in memo) 2900 return *m; 2901 else 2902 { 2903 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(true_, false_), "TomlGrammar.boolean"), "boolean")(p); 2904 memo[tuple(`boolean`, p.end)] = result; 2905 return result; 2906 } 2907 } 2908 } 2909 2910 static TParseTree boolean(string s) 2911 { 2912 if(__ctfe) 2913 { 2914 return pegged.peg.defined!(pegged.peg.or!(true_, false_), "TomlGrammar.boolean")(TParseTree("", false,[], s)); 2915 } 2916 else 2917 { 2918 forgetMemo(); 2919 return hooked!(pegged.peg.defined!(pegged.peg.or!(true_, false_), "TomlGrammar.boolean"), "boolean")(TParseTree("", false,[], s)); 2920 } 2921 } 2922 static string boolean(GetName g) 2923 { 2924 return "TomlGrammar.boolean"; 2925 } 2926 2927 static TParseTree true_(TParseTree p) 2928 { 2929 if(__ctfe) 2930 { 2931 return pegged.peg.defined!(pegged.peg.literal!("true"), "TomlGrammar.true_")(p); 2932 } 2933 else 2934 { 2935 if (auto m = tuple(`true_`, p.end) in memo) 2936 return *m; 2937 else 2938 { 2939 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.literal!("true"), "TomlGrammar.true_"), "true_")(p); 2940 memo[tuple(`true_`, p.end)] = result; 2941 return result; 2942 } 2943 } 2944 } 2945 2946 static TParseTree true_(string s) 2947 { 2948 if(__ctfe) 2949 { 2950 return pegged.peg.defined!(pegged.peg.literal!("true"), "TomlGrammar.true_")(TParseTree("", false,[], s)); 2951 } 2952 else 2953 { 2954 forgetMemo(); 2955 return hooked!(pegged.peg.defined!(pegged.peg.literal!("true"), "TomlGrammar.true_"), "true_")(TParseTree("", false,[], s)); 2956 } 2957 } 2958 static string true_(GetName g) 2959 { 2960 return "TomlGrammar.true_"; 2961 } 2962 2963 static TParseTree false_(TParseTree p) 2964 { 2965 if(__ctfe) 2966 { 2967 return pegged.peg.defined!(pegged.peg.literal!("false"), "TomlGrammar.false_")(p); 2968 } 2969 else 2970 { 2971 if (auto m = tuple(`false_`, p.end) in memo) 2972 return *m; 2973 else 2974 { 2975 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.literal!("false"), "TomlGrammar.false_"), "false_")(p); 2976 memo[tuple(`false_`, p.end)] = result; 2977 return result; 2978 } 2979 } 2980 } 2981 2982 static TParseTree false_(string s) 2983 { 2984 if(__ctfe) 2985 { 2986 return pegged.peg.defined!(pegged.peg.literal!("false"), "TomlGrammar.false_")(TParseTree("", false,[], s)); 2987 } 2988 else 2989 { 2990 forgetMemo(); 2991 return hooked!(pegged.peg.defined!(pegged.peg.literal!("false"), "TomlGrammar.false_"), "false_")(TParseTree("", false,[], s)); 2992 } 2993 } 2994 static string false_(GetName g) 2995 { 2996 return "TomlGrammar.false_"; 2997 } 2998 2999 static TParseTree date_time(TParseTree p) 3000 { 3001 if(__ctfe) 3002 { 3003 return pegged.peg.defined!(pegged.peg.or!(offset_date_time, local_date_time, local_date, local_time), "TomlGrammar.date_time")(p); 3004 } 3005 else 3006 { 3007 if (auto m = tuple(`date_time`, p.end) in memo) 3008 return *m; 3009 else 3010 { 3011 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(offset_date_time, local_date_time, local_date, local_time), "TomlGrammar.date_time"), "date_time")(p); 3012 memo[tuple(`date_time`, p.end)] = result; 3013 return result; 3014 } 3015 } 3016 } 3017 3018 static TParseTree date_time(string s) 3019 { 3020 if(__ctfe) 3021 { 3022 return pegged.peg.defined!(pegged.peg.or!(offset_date_time, local_date_time, local_date, local_time), "TomlGrammar.date_time")(TParseTree("", false,[], s)); 3023 } 3024 else 3025 { 3026 forgetMemo(); 3027 return hooked!(pegged.peg.defined!(pegged.peg.or!(offset_date_time, local_date_time, local_date, local_time), "TomlGrammar.date_time"), "date_time")(TParseTree("", false,[], s)); 3028 } 3029 } 3030 static string date_time(GetName g) 3031 { 3032 return "TomlGrammar.date_time"; 3033 } 3034 3035 static TParseTree date_fullyear(TParseTree p) 3036 { 3037 if(__ctfe) 3038 { 3039 return pegged.peg.defined!(pegged.peg.and!(DIGIT, DIGIT, DIGIT, DIGIT), "TomlGrammar.date_fullyear")(p); 3040 } 3041 else 3042 { 3043 if (auto m = tuple(`date_fullyear`, p.end) in memo) 3044 return *m; 3045 else 3046 { 3047 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(DIGIT, DIGIT, DIGIT, DIGIT), "TomlGrammar.date_fullyear"), "date_fullyear")(p); 3048 memo[tuple(`date_fullyear`, p.end)] = result; 3049 return result; 3050 } 3051 } 3052 } 3053 3054 static TParseTree date_fullyear(string s) 3055 { 3056 if(__ctfe) 3057 { 3058 return pegged.peg.defined!(pegged.peg.and!(DIGIT, DIGIT, DIGIT, DIGIT), "TomlGrammar.date_fullyear")(TParseTree("", false,[], s)); 3059 } 3060 else 3061 { 3062 forgetMemo(); 3063 return hooked!(pegged.peg.defined!(pegged.peg.and!(DIGIT, DIGIT, DIGIT, DIGIT), "TomlGrammar.date_fullyear"), "date_fullyear")(TParseTree("", false,[], s)); 3064 } 3065 } 3066 static string date_fullyear(GetName g) 3067 { 3068 return "TomlGrammar.date_fullyear"; 3069 } 3070 3071 static TParseTree date_month(TParseTree p) 3072 { 3073 if(__ctfe) 3074 { 3075 return pegged.peg.defined!(pegged.peg.and!(DIGIT, DIGIT), "TomlGrammar.date_month")(p); 3076 } 3077 else 3078 { 3079 if (auto m = tuple(`date_month`, p.end) in memo) 3080 return *m; 3081 else 3082 { 3083 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(DIGIT, DIGIT), "TomlGrammar.date_month"), "date_month")(p); 3084 memo[tuple(`date_month`, p.end)] = result; 3085 return result; 3086 } 3087 } 3088 } 3089 3090 static TParseTree date_month(string s) 3091 { 3092 if(__ctfe) 3093 { 3094 return pegged.peg.defined!(pegged.peg.and!(DIGIT, DIGIT), "TomlGrammar.date_month")(TParseTree("", false,[], s)); 3095 } 3096 else 3097 { 3098 forgetMemo(); 3099 return hooked!(pegged.peg.defined!(pegged.peg.and!(DIGIT, DIGIT), "TomlGrammar.date_month"), "date_month")(TParseTree("", false,[], s)); 3100 } 3101 } 3102 static string date_month(GetName g) 3103 { 3104 return "TomlGrammar.date_month"; 3105 } 3106 3107 static TParseTree date_mday(TParseTree p) 3108 { 3109 if(__ctfe) 3110 { 3111 return pegged.peg.defined!(pegged.peg.and!(DIGIT, DIGIT), "TomlGrammar.date_mday")(p); 3112 } 3113 else 3114 { 3115 if (auto m = tuple(`date_mday`, p.end) in memo) 3116 return *m; 3117 else 3118 { 3119 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(DIGIT, DIGIT), "TomlGrammar.date_mday"), "date_mday")(p); 3120 memo[tuple(`date_mday`, p.end)] = result; 3121 return result; 3122 } 3123 } 3124 } 3125 3126 static TParseTree date_mday(string s) 3127 { 3128 if(__ctfe) 3129 { 3130 return pegged.peg.defined!(pegged.peg.and!(DIGIT, DIGIT), "TomlGrammar.date_mday")(TParseTree("", false,[], s)); 3131 } 3132 else 3133 { 3134 forgetMemo(); 3135 return hooked!(pegged.peg.defined!(pegged.peg.and!(DIGIT, DIGIT), "TomlGrammar.date_mday"), "date_mday")(TParseTree("", false,[], s)); 3136 } 3137 } 3138 static string date_mday(GetName g) 3139 { 3140 return "TomlGrammar.date_mday"; 3141 } 3142 3143 static TParseTree time_delim(TParseTree p) 3144 { 3145 if(__ctfe) 3146 { 3147 return pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("T"), pegged.peg.literal!(" ")), "TomlGrammar.time_delim")(p); 3148 } 3149 else 3150 { 3151 if (auto m = tuple(`time_delim`, p.end) in memo) 3152 return *m; 3153 else 3154 { 3155 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("T"), pegged.peg.literal!(" ")), "TomlGrammar.time_delim"), "time_delim")(p); 3156 memo[tuple(`time_delim`, p.end)] = result; 3157 return result; 3158 } 3159 } 3160 } 3161 3162 static TParseTree time_delim(string s) 3163 { 3164 if(__ctfe) 3165 { 3166 return pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("T"), pegged.peg.literal!(" ")), "TomlGrammar.time_delim")(TParseTree("", false,[], s)); 3167 } 3168 else 3169 { 3170 forgetMemo(); 3171 return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("T"), pegged.peg.literal!(" ")), "TomlGrammar.time_delim"), "time_delim")(TParseTree("", false,[], s)); 3172 } 3173 } 3174 static string time_delim(GetName g) 3175 { 3176 return "TomlGrammar.time_delim"; 3177 } 3178 3179 static TParseTree time_hour(TParseTree p) 3180 { 3181 if(__ctfe) 3182 { 3183 return pegged.peg.defined!(pegged.peg.and!(DIGIT, DIGIT), "TomlGrammar.time_hour")(p); 3184 } 3185 else 3186 { 3187 if (auto m = tuple(`time_hour`, p.end) in memo) 3188 return *m; 3189 else 3190 { 3191 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(DIGIT, DIGIT), "TomlGrammar.time_hour"), "time_hour")(p); 3192 memo[tuple(`time_hour`, p.end)] = result; 3193 return result; 3194 } 3195 } 3196 } 3197 3198 static TParseTree time_hour(string s) 3199 { 3200 if(__ctfe) 3201 { 3202 return pegged.peg.defined!(pegged.peg.and!(DIGIT, DIGIT), "TomlGrammar.time_hour")(TParseTree("", false,[], s)); 3203 } 3204 else 3205 { 3206 forgetMemo(); 3207 return hooked!(pegged.peg.defined!(pegged.peg.and!(DIGIT, DIGIT), "TomlGrammar.time_hour"), "time_hour")(TParseTree("", false,[], s)); 3208 } 3209 } 3210 static string time_hour(GetName g) 3211 { 3212 return "TomlGrammar.time_hour"; 3213 } 3214 3215 static TParseTree time_minute(TParseTree p) 3216 { 3217 if(__ctfe) 3218 { 3219 return pegged.peg.defined!(pegged.peg.and!(DIGIT, DIGIT), "TomlGrammar.time_minute")(p); 3220 } 3221 else 3222 { 3223 if (auto m = tuple(`time_minute`, p.end) in memo) 3224 return *m; 3225 else 3226 { 3227 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(DIGIT, DIGIT), "TomlGrammar.time_minute"), "time_minute")(p); 3228 memo[tuple(`time_minute`, p.end)] = result; 3229 return result; 3230 } 3231 } 3232 } 3233 3234 static TParseTree time_minute(string s) 3235 { 3236 if(__ctfe) 3237 { 3238 return pegged.peg.defined!(pegged.peg.and!(DIGIT, DIGIT), "TomlGrammar.time_minute")(TParseTree("", false,[], s)); 3239 } 3240 else 3241 { 3242 forgetMemo(); 3243 return hooked!(pegged.peg.defined!(pegged.peg.and!(DIGIT, DIGIT), "TomlGrammar.time_minute"), "time_minute")(TParseTree("", false,[], s)); 3244 } 3245 } 3246 static string time_minute(GetName g) 3247 { 3248 return "TomlGrammar.time_minute"; 3249 } 3250 3251 static TParseTree time_second(TParseTree p) 3252 { 3253 if(__ctfe) 3254 { 3255 return pegged.peg.defined!(pegged.peg.and!(DIGIT, DIGIT), "TomlGrammar.time_second")(p); 3256 } 3257 else 3258 { 3259 if (auto m = tuple(`time_second`, p.end) in memo) 3260 return *m; 3261 else 3262 { 3263 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(DIGIT, DIGIT), "TomlGrammar.time_second"), "time_second")(p); 3264 memo[tuple(`time_second`, p.end)] = result; 3265 return result; 3266 } 3267 } 3268 } 3269 3270 static TParseTree time_second(string s) 3271 { 3272 if(__ctfe) 3273 { 3274 return pegged.peg.defined!(pegged.peg.and!(DIGIT, DIGIT), "TomlGrammar.time_second")(TParseTree("", false,[], s)); 3275 } 3276 else 3277 { 3278 forgetMemo(); 3279 return hooked!(pegged.peg.defined!(pegged.peg.and!(DIGIT, DIGIT), "TomlGrammar.time_second"), "time_second")(TParseTree("", false,[], s)); 3280 } 3281 } 3282 static string time_second(GetName g) 3283 { 3284 return "TomlGrammar.time_second"; 3285 } 3286 3287 static TParseTree time_secfrac(TParseTree p) 3288 { 3289 if(__ctfe) 3290 { 3291 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("."), pegged.peg.oneOrMore!(DIGIT)), "TomlGrammar.time_secfrac")(p); 3292 } 3293 else 3294 { 3295 if (auto m = tuple(`time_secfrac`, p.end) in memo) 3296 return *m; 3297 else 3298 { 3299 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("."), pegged.peg.oneOrMore!(DIGIT)), "TomlGrammar.time_secfrac"), "time_secfrac")(p); 3300 memo[tuple(`time_secfrac`, p.end)] = result; 3301 return result; 3302 } 3303 } 3304 } 3305 3306 static TParseTree time_secfrac(string s) 3307 { 3308 if(__ctfe) 3309 { 3310 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("."), pegged.peg.oneOrMore!(DIGIT)), "TomlGrammar.time_secfrac")(TParseTree("", false,[], s)); 3311 } 3312 else 3313 { 3314 forgetMemo(); 3315 return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("."), pegged.peg.oneOrMore!(DIGIT)), "TomlGrammar.time_secfrac"), "time_secfrac")(TParseTree("", false,[], s)); 3316 } 3317 } 3318 static string time_secfrac(GetName g) 3319 { 3320 return "TomlGrammar.time_secfrac"; 3321 } 3322 3323 static TParseTree time_numoffset(TParseTree p) 3324 { 3325 if(__ctfe) 3326 { 3327 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.keywords!("+", "-"), time_hour, pegged.peg.literal!(":"), time_minute), "TomlGrammar.time_numoffset")(p); 3328 } 3329 else 3330 { 3331 if (auto m = tuple(`time_numoffset`, p.end) in memo) 3332 return *m; 3333 else 3334 { 3335 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.keywords!("+", "-"), time_hour, pegged.peg.literal!(":"), time_minute), "TomlGrammar.time_numoffset"), "time_numoffset")(p); 3336 memo[tuple(`time_numoffset`, p.end)] = result; 3337 return result; 3338 } 3339 } 3340 } 3341 3342 static TParseTree time_numoffset(string s) 3343 { 3344 if(__ctfe) 3345 { 3346 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.keywords!("+", "-"), time_hour, pegged.peg.literal!(":"), time_minute), "TomlGrammar.time_numoffset")(TParseTree("", false,[], s)); 3347 } 3348 else 3349 { 3350 forgetMemo(); 3351 return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.keywords!("+", "-"), time_hour, pegged.peg.literal!(":"), time_minute), "TomlGrammar.time_numoffset"), "time_numoffset")(TParseTree("", false,[], s)); 3352 } 3353 } 3354 static string time_numoffset(GetName g) 3355 { 3356 return "TomlGrammar.time_numoffset"; 3357 } 3358 3359 static TParseTree time_offset(TParseTree p) 3360 { 3361 if(__ctfe) 3362 { 3363 return pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("Z"), time_numoffset), "TomlGrammar.time_offset")(p); 3364 } 3365 else 3366 { 3367 if (auto m = tuple(`time_offset`, p.end) in memo) 3368 return *m; 3369 else 3370 { 3371 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("Z"), time_numoffset), "TomlGrammar.time_offset"), "time_offset")(p); 3372 memo[tuple(`time_offset`, p.end)] = result; 3373 return result; 3374 } 3375 } 3376 } 3377 3378 static TParseTree time_offset(string s) 3379 { 3380 if(__ctfe) 3381 { 3382 return pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("Z"), time_numoffset), "TomlGrammar.time_offset")(TParseTree("", false,[], s)); 3383 } 3384 else 3385 { 3386 forgetMemo(); 3387 return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.literal!("Z"), time_numoffset), "TomlGrammar.time_offset"), "time_offset")(TParseTree("", false,[], s)); 3388 } 3389 } 3390 static string time_offset(GetName g) 3391 { 3392 return "TomlGrammar.time_offset"; 3393 } 3394 3395 static TParseTree partial_time(TParseTree p) 3396 { 3397 if(__ctfe) 3398 { 3399 return pegged.peg.defined!(pegged.peg.and!(time_hour, pegged.peg.literal!(":"), time_minute, pegged.peg.literal!(":"), time_second, pegged.peg.option!(time_secfrac)), "TomlGrammar.partial_time")(p); 3400 } 3401 else 3402 { 3403 if (auto m = tuple(`partial_time`, p.end) in memo) 3404 return *m; 3405 else 3406 { 3407 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(time_hour, pegged.peg.literal!(":"), time_minute, pegged.peg.literal!(":"), time_second, pegged.peg.option!(time_secfrac)), "TomlGrammar.partial_time"), "partial_time")(p); 3408 memo[tuple(`partial_time`, p.end)] = result; 3409 return result; 3410 } 3411 } 3412 } 3413 3414 static TParseTree partial_time(string s) 3415 { 3416 if(__ctfe) 3417 { 3418 return pegged.peg.defined!(pegged.peg.and!(time_hour, pegged.peg.literal!(":"), time_minute, pegged.peg.literal!(":"), time_second, pegged.peg.option!(time_secfrac)), "TomlGrammar.partial_time")(TParseTree("", false,[], s)); 3419 } 3420 else 3421 { 3422 forgetMemo(); 3423 return hooked!(pegged.peg.defined!(pegged.peg.and!(time_hour, pegged.peg.literal!(":"), time_minute, pegged.peg.literal!(":"), time_second, pegged.peg.option!(time_secfrac)), "TomlGrammar.partial_time"), "partial_time")(TParseTree("", false,[], s)); 3424 } 3425 } 3426 static string partial_time(GetName g) 3427 { 3428 return "TomlGrammar.partial_time"; 3429 } 3430 3431 static TParseTree full_date(TParseTree p) 3432 { 3433 if(__ctfe) 3434 { 3435 return pegged.peg.defined!(pegged.peg.and!(date_fullyear, pegged.peg.literal!("-"), date_month, pegged.peg.literal!("-"), date_mday), "TomlGrammar.full_date")(p); 3436 } 3437 else 3438 { 3439 if (auto m = tuple(`full_date`, p.end) in memo) 3440 return *m; 3441 else 3442 { 3443 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(date_fullyear, pegged.peg.literal!("-"), date_month, pegged.peg.literal!("-"), date_mday), "TomlGrammar.full_date"), "full_date")(p); 3444 memo[tuple(`full_date`, p.end)] = result; 3445 return result; 3446 } 3447 } 3448 } 3449 3450 static TParseTree full_date(string s) 3451 { 3452 if(__ctfe) 3453 { 3454 return pegged.peg.defined!(pegged.peg.and!(date_fullyear, pegged.peg.literal!("-"), date_month, pegged.peg.literal!("-"), date_mday), "TomlGrammar.full_date")(TParseTree("", false,[], s)); 3455 } 3456 else 3457 { 3458 forgetMemo(); 3459 return hooked!(pegged.peg.defined!(pegged.peg.and!(date_fullyear, pegged.peg.literal!("-"), date_month, pegged.peg.literal!("-"), date_mday), "TomlGrammar.full_date"), "full_date")(TParseTree("", false,[], s)); 3460 } 3461 } 3462 static string full_date(GetName g) 3463 { 3464 return "TomlGrammar.full_date"; 3465 } 3466 3467 static TParseTree full_time(TParseTree p) 3468 { 3469 if(__ctfe) 3470 { 3471 return pegged.peg.defined!(pegged.peg.and!(partial_time, time_offset), "TomlGrammar.full_time")(p); 3472 } 3473 else 3474 { 3475 if (auto m = tuple(`full_time`, p.end) in memo) 3476 return *m; 3477 else 3478 { 3479 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(partial_time, time_offset), "TomlGrammar.full_time"), "full_time")(p); 3480 memo[tuple(`full_time`, p.end)] = result; 3481 return result; 3482 } 3483 } 3484 } 3485 3486 static TParseTree full_time(string s) 3487 { 3488 if(__ctfe) 3489 { 3490 return pegged.peg.defined!(pegged.peg.and!(partial_time, time_offset), "TomlGrammar.full_time")(TParseTree("", false,[], s)); 3491 } 3492 else 3493 { 3494 forgetMemo(); 3495 return hooked!(pegged.peg.defined!(pegged.peg.and!(partial_time, time_offset), "TomlGrammar.full_time"), "full_time")(TParseTree("", false,[], s)); 3496 } 3497 } 3498 static string full_time(GetName g) 3499 { 3500 return "TomlGrammar.full_time"; 3501 } 3502 3503 static TParseTree offset_date_time(TParseTree p) 3504 { 3505 if(__ctfe) 3506 { 3507 return pegged.peg.defined!(pegged.peg.and!(full_date, time_delim, full_time), "TomlGrammar.offset_date_time")(p); 3508 } 3509 else 3510 { 3511 if (auto m = tuple(`offset_date_time`, p.end) in memo) 3512 return *m; 3513 else 3514 { 3515 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(full_date, time_delim, full_time), "TomlGrammar.offset_date_time"), "offset_date_time")(p); 3516 memo[tuple(`offset_date_time`, p.end)] = result; 3517 return result; 3518 } 3519 } 3520 } 3521 3522 static TParseTree offset_date_time(string s) 3523 { 3524 if(__ctfe) 3525 { 3526 return pegged.peg.defined!(pegged.peg.and!(full_date, time_delim, full_time), "TomlGrammar.offset_date_time")(TParseTree("", false,[], s)); 3527 } 3528 else 3529 { 3530 forgetMemo(); 3531 return hooked!(pegged.peg.defined!(pegged.peg.and!(full_date, time_delim, full_time), "TomlGrammar.offset_date_time"), "offset_date_time")(TParseTree("", false,[], s)); 3532 } 3533 } 3534 static string offset_date_time(GetName g) 3535 { 3536 return "TomlGrammar.offset_date_time"; 3537 } 3538 3539 static TParseTree local_date_time(TParseTree p) 3540 { 3541 if(__ctfe) 3542 { 3543 return pegged.peg.defined!(pegged.peg.and!(full_date, time_delim, partial_time), "TomlGrammar.local_date_time")(p); 3544 } 3545 else 3546 { 3547 if (auto m = tuple(`local_date_time`, p.end) in memo) 3548 return *m; 3549 else 3550 { 3551 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(full_date, time_delim, partial_time), "TomlGrammar.local_date_time"), "local_date_time")(p); 3552 memo[tuple(`local_date_time`, p.end)] = result; 3553 return result; 3554 } 3555 } 3556 } 3557 3558 static TParseTree local_date_time(string s) 3559 { 3560 if(__ctfe) 3561 { 3562 return pegged.peg.defined!(pegged.peg.and!(full_date, time_delim, partial_time), "TomlGrammar.local_date_time")(TParseTree("", false,[], s)); 3563 } 3564 else 3565 { 3566 forgetMemo(); 3567 return hooked!(pegged.peg.defined!(pegged.peg.and!(full_date, time_delim, partial_time), "TomlGrammar.local_date_time"), "local_date_time")(TParseTree("", false,[], s)); 3568 } 3569 } 3570 static string local_date_time(GetName g) 3571 { 3572 return "TomlGrammar.local_date_time"; 3573 } 3574 3575 static TParseTree local_date(TParseTree p) 3576 { 3577 if(__ctfe) 3578 { 3579 return pegged.peg.defined!(full_date, "TomlGrammar.local_date")(p); 3580 } 3581 else 3582 { 3583 if (auto m = tuple(`local_date`, p.end) in memo) 3584 return *m; 3585 else 3586 { 3587 TParseTree result = hooked!(pegged.peg.defined!(full_date, "TomlGrammar.local_date"), "local_date")(p); 3588 memo[tuple(`local_date`, p.end)] = result; 3589 return result; 3590 } 3591 } 3592 } 3593 3594 static TParseTree local_date(string s) 3595 { 3596 if(__ctfe) 3597 { 3598 return pegged.peg.defined!(full_date, "TomlGrammar.local_date")(TParseTree("", false,[], s)); 3599 } 3600 else 3601 { 3602 forgetMemo(); 3603 return hooked!(pegged.peg.defined!(full_date, "TomlGrammar.local_date"), "local_date")(TParseTree("", false,[], s)); 3604 } 3605 } 3606 static string local_date(GetName g) 3607 { 3608 return "TomlGrammar.local_date"; 3609 } 3610 3611 static TParseTree local_time(TParseTree p) 3612 { 3613 if(__ctfe) 3614 { 3615 return pegged.peg.defined!(partial_time, "TomlGrammar.local_time")(p); 3616 } 3617 else 3618 { 3619 if (auto m = tuple(`local_time`, p.end) in memo) 3620 return *m; 3621 else 3622 { 3623 TParseTree result = hooked!(pegged.peg.defined!(partial_time, "TomlGrammar.local_time"), "local_time")(p); 3624 memo[tuple(`local_time`, p.end)] = result; 3625 return result; 3626 } 3627 } 3628 } 3629 3630 static TParseTree local_time(string s) 3631 { 3632 if(__ctfe) 3633 { 3634 return pegged.peg.defined!(partial_time, "TomlGrammar.local_time")(TParseTree("", false,[], s)); 3635 } 3636 else 3637 { 3638 forgetMemo(); 3639 return hooked!(pegged.peg.defined!(partial_time, "TomlGrammar.local_time"), "local_time")(TParseTree("", false,[], s)); 3640 } 3641 } 3642 static string local_time(GetName g) 3643 { 3644 return "TomlGrammar.local_time"; 3645 } 3646 3647 static TParseTree array(TParseTree p) 3648 { 3649 if(__ctfe) 3650 { 3651 return pegged.peg.defined!(pegged.peg.and!(array_open, pegged.peg.option!(array_values), ws_comment_newline, array_close), "TomlGrammar.array")(p); 3652 } 3653 else 3654 { 3655 if (auto m = tuple(`array`, p.end) in memo) 3656 return *m; 3657 else 3658 { 3659 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(array_open, pegged.peg.option!(array_values), ws_comment_newline, array_close), "TomlGrammar.array"), "array")(p); 3660 memo[tuple(`array`, p.end)] = result; 3661 return result; 3662 } 3663 } 3664 } 3665 3666 static TParseTree array(string s) 3667 { 3668 if(__ctfe) 3669 { 3670 return pegged.peg.defined!(pegged.peg.and!(array_open, pegged.peg.option!(array_values), ws_comment_newline, array_close), "TomlGrammar.array")(TParseTree("", false,[], s)); 3671 } 3672 else 3673 { 3674 forgetMemo(); 3675 return hooked!(pegged.peg.defined!(pegged.peg.and!(array_open, pegged.peg.option!(array_values), ws_comment_newline, array_close), "TomlGrammar.array"), "array")(TParseTree("", false,[], s)); 3676 } 3677 } 3678 static string array(GetName g) 3679 { 3680 return "TomlGrammar.array"; 3681 } 3682 3683 static TParseTree array_open(TParseTree p) 3684 { 3685 if(__ctfe) 3686 { 3687 return pegged.peg.defined!(pegged.peg.literal!("["), "TomlGrammar.array_open")(p); 3688 } 3689 else 3690 { 3691 if (auto m = tuple(`array_open`, p.end) in memo) 3692 return *m; 3693 else 3694 { 3695 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.literal!("["), "TomlGrammar.array_open"), "array_open")(p); 3696 memo[tuple(`array_open`, p.end)] = result; 3697 return result; 3698 } 3699 } 3700 } 3701 3702 static TParseTree array_open(string s) 3703 { 3704 if(__ctfe) 3705 { 3706 return pegged.peg.defined!(pegged.peg.literal!("["), "TomlGrammar.array_open")(TParseTree("", false,[], s)); 3707 } 3708 else 3709 { 3710 forgetMemo(); 3711 return hooked!(pegged.peg.defined!(pegged.peg.literal!("["), "TomlGrammar.array_open"), "array_open")(TParseTree("", false,[], s)); 3712 } 3713 } 3714 static string array_open(GetName g) 3715 { 3716 return "TomlGrammar.array_open"; 3717 } 3718 3719 static TParseTree array_close(TParseTree p) 3720 { 3721 if(__ctfe) 3722 { 3723 return pegged.peg.defined!(pegged.peg.literal!("]"), "TomlGrammar.array_close")(p); 3724 } 3725 else 3726 { 3727 if (auto m = tuple(`array_close`, p.end) in memo) 3728 return *m; 3729 else 3730 { 3731 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.literal!("]"), "TomlGrammar.array_close"), "array_close")(p); 3732 memo[tuple(`array_close`, p.end)] = result; 3733 return result; 3734 } 3735 } 3736 } 3737 3738 static TParseTree array_close(string s) 3739 { 3740 if(__ctfe) 3741 { 3742 return pegged.peg.defined!(pegged.peg.literal!("]"), "TomlGrammar.array_close")(TParseTree("", false,[], s)); 3743 } 3744 else 3745 { 3746 forgetMemo(); 3747 return hooked!(pegged.peg.defined!(pegged.peg.literal!("]"), "TomlGrammar.array_close"), "array_close")(TParseTree("", false,[], s)); 3748 } 3749 } 3750 static string array_close(GetName g) 3751 { 3752 return "TomlGrammar.array_close"; 3753 } 3754 3755 static TParseTree array_values(TParseTree p) 3756 { 3757 if(__ctfe) 3758 { 3759 return pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(ws_comment_newline, val, ws, array_sep, array_values), pegged.peg.and!(ws_comment_newline, val, ws, pegged.peg.option!(array_sep))), "TomlGrammar.array_values")(p); 3760 } 3761 else 3762 { 3763 if (auto m = tuple(`array_values`, p.end) in memo) 3764 return *m; 3765 else 3766 { 3767 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(ws_comment_newline, val, ws, array_sep, array_values), pegged.peg.and!(ws_comment_newline, val, ws, pegged.peg.option!(array_sep))), "TomlGrammar.array_values"), "array_values")(p); 3768 memo[tuple(`array_values`, p.end)] = result; 3769 return result; 3770 } 3771 } 3772 } 3773 3774 static TParseTree array_values(string s) 3775 { 3776 if(__ctfe) 3777 { 3778 return pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(ws_comment_newline, val, ws, array_sep, array_values), pegged.peg.and!(ws_comment_newline, val, ws, pegged.peg.option!(array_sep))), "TomlGrammar.array_values")(TParseTree("", false,[], s)); 3779 } 3780 else 3781 { 3782 forgetMemo(); 3783 return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.and!(ws_comment_newline, val, ws, array_sep, array_values), pegged.peg.and!(ws_comment_newline, val, ws, pegged.peg.option!(array_sep))), "TomlGrammar.array_values"), "array_values")(TParseTree("", false,[], s)); 3784 } 3785 } 3786 static string array_values(GetName g) 3787 { 3788 return "TomlGrammar.array_values"; 3789 } 3790 3791 static TParseTree array_sep(TParseTree p) 3792 { 3793 if(__ctfe) 3794 { 3795 return pegged.peg.defined!(pegged.peg.literal!(","), "TomlGrammar.array_sep")(p); 3796 } 3797 else 3798 { 3799 if (auto m = tuple(`array_sep`, p.end) in memo) 3800 return *m; 3801 else 3802 { 3803 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.literal!(","), "TomlGrammar.array_sep"), "array_sep")(p); 3804 memo[tuple(`array_sep`, p.end)] = result; 3805 return result; 3806 } 3807 } 3808 } 3809 3810 static TParseTree array_sep(string s) 3811 { 3812 if(__ctfe) 3813 { 3814 return pegged.peg.defined!(pegged.peg.literal!(","), "TomlGrammar.array_sep")(TParseTree("", false,[], s)); 3815 } 3816 else 3817 { 3818 forgetMemo(); 3819 return hooked!(pegged.peg.defined!(pegged.peg.literal!(","), "TomlGrammar.array_sep"), "array_sep")(TParseTree("", false,[], s)); 3820 } 3821 } 3822 static string array_sep(GetName g) 3823 { 3824 return "TomlGrammar.array_sep"; 3825 } 3826 3827 static TParseTree ws_comment_newline(TParseTree p) 3828 { 3829 if(__ctfe) 3830 { 3831 return pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.or!(wschar, pegged.peg.and!(pegged.peg.option!(comment), newline))), "TomlGrammar.ws_comment_newline")(p); 3832 } 3833 else 3834 { 3835 if (auto m = tuple(`ws_comment_newline`, p.end) in memo) 3836 return *m; 3837 else 3838 { 3839 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.or!(wschar, pegged.peg.and!(pegged.peg.option!(comment), newline))), "TomlGrammar.ws_comment_newline"), "ws_comment_newline")(p); 3840 memo[tuple(`ws_comment_newline`, p.end)] = result; 3841 return result; 3842 } 3843 } 3844 } 3845 3846 static TParseTree ws_comment_newline(string s) 3847 { 3848 if(__ctfe) 3849 { 3850 return pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.or!(wschar, pegged.peg.and!(pegged.peg.option!(comment), newline))), "TomlGrammar.ws_comment_newline")(TParseTree("", false,[], s)); 3851 } 3852 else 3853 { 3854 forgetMemo(); 3855 return hooked!(pegged.peg.defined!(pegged.peg.zeroOrMore!(pegged.peg.or!(wschar, pegged.peg.and!(pegged.peg.option!(comment), newline))), "TomlGrammar.ws_comment_newline"), "ws_comment_newline")(TParseTree("", false,[], s)); 3856 } 3857 } 3858 static string ws_comment_newline(GetName g) 3859 { 3860 return "TomlGrammar.ws_comment_newline"; 3861 } 3862 3863 static TParseTree table(TParseTree p) 3864 { 3865 if(__ctfe) 3866 { 3867 return pegged.peg.defined!(pegged.peg.or!(std_table, array_table), "TomlGrammar.table")(p); 3868 } 3869 else 3870 { 3871 if (auto m = tuple(`table`, p.end) in memo) 3872 return *m; 3873 else 3874 { 3875 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(std_table, array_table), "TomlGrammar.table"), "table")(p); 3876 memo[tuple(`table`, p.end)] = result; 3877 return result; 3878 } 3879 } 3880 } 3881 3882 static TParseTree table(string s) 3883 { 3884 if(__ctfe) 3885 { 3886 return pegged.peg.defined!(pegged.peg.or!(std_table, array_table), "TomlGrammar.table")(TParseTree("", false,[], s)); 3887 } 3888 else 3889 { 3890 forgetMemo(); 3891 return hooked!(pegged.peg.defined!(pegged.peg.or!(std_table, array_table), "TomlGrammar.table"), "table")(TParseTree("", false,[], s)); 3892 } 3893 } 3894 static string table(GetName g) 3895 { 3896 return "TomlGrammar.table"; 3897 } 3898 3899 static TParseTree std_table(TParseTree p) 3900 { 3901 if(__ctfe) 3902 { 3903 return pegged.peg.defined!(pegged.peg.and!(std_table_open, key, std_table_close), "TomlGrammar.std_table")(p); 3904 } 3905 else 3906 { 3907 if (auto m = tuple(`std_table`, p.end) in memo) 3908 return *m; 3909 else 3910 { 3911 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(std_table_open, key, std_table_close), "TomlGrammar.std_table"), "std_table")(p); 3912 memo[tuple(`std_table`, p.end)] = result; 3913 return result; 3914 } 3915 } 3916 } 3917 3918 static TParseTree std_table(string s) 3919 { 3920 if(__ctfe) 3921 { 3922 return pegged.peg.defined!(pegged.peg.and!(std_table_open, key, std_table_close), "TomlGrammar.std_table")(TParseTree("", false,[], s)); 3923 } 3924 else 3925 { 3926 forgetMemo(); 3927 return hooked!(pegged.peg.defined!(pegged.peg.and!(std_table_open, key, std_table_close), "TomlGrammar.std_table"), "std_table")(TParseTree("", false,[], s)); 3928 } 3929 } 3930 static string std_table(GetName g) 3931 { 3932 return "TomlGrammar.std_table"; 3933 } 3934 3935 static TParseTree std_table_open(TParseTree p) 3936 { 3937 if(__ctfe) 3938 { 3939 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("["), ws), "TomlGrammar.std_table_open")(p); 3940 } 3941 else 3942 { 3943 if (auto m = tuple(`std_table_open`, p.end) in memo) 3944 return *m; 3945 else 3946 { 3947 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("["), ws), "TomlGrammar.std_table_open"), "std_table_open")(p); 3948 memo[tuple(`std_table_open`, p.end)] = result; 3949 return result; 3950 } 3951 } 3952 } 3953 3954 static TParseTree std_table_open(string s) 3955 { 3956 if(__ctfe) 3957 { 3958 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("["), ws), "TomlGrammar.std_table_open")(TParseTree("", false,[], s)); 3959 } 3960 else 3961 { 3962 forgetMemo(); 3963 return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("["), ws), "TomlGrammar.std_table_open"), "std_table_open")(TParseTree("", false,[], s)); 3964 } 3965 } 3966 static string std_table_open(GetName g) 3967 { 3968 return "TomlGrammar.std_table_open"; 3969 } 3970 3971 static TParseTree std_table_close(TParseTree p) 3972 { 3973 if(__ctfe) 3974 { 3975 return pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.literal!("]")), "TomlGrammar.std_table_close")(p); 3976 } 3977 else 3978 { 3979 if (auto m = tuple(`std_table_close`, p.end) in memo) 3980 return *m; 3981 else 3982 { 3983 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.literal!("]")), "TomlGrammar.std_table_close"), "std_table_close")(p); 3984 memo[tuple(`std_table_close`, p.end)] = result; 3985 return result; 3986 } 3987 } 3988 } 3989 3990 static TParseTree std_table_close(string s) 3991 { 3992 if(__ctfe) 3993 { 3994 return pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.literal!("]")), "TomlGrammar.std_table_close")(TParseTree("", false,[], s)); 3995 } 3996 else 3997 { 3998 forgetMemo(); 3999 return hooked!(pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.literal!("]")), "TomlGrammar.std_table_close"), "std_table_close")(TParseTree("", false,[], s)); 4000 } 4001 } 4002 static string std_table_close(GetName g) 4003 { 4004 return "TomlGrammar.std_table_close"; 4005 } 4006 4007 static TParseTree inline_table(TParseTree p) 4008 { 4009 if(__ctfe) 4010 { 4011 return pegged.peg.defined!(pegged.peg.and!(inline_table_open, pegged.peg.option!(inline_table_keyvals), inline_table_close), "TomlGrammar.inline_table")(p); 4012 } 4013 else 4014 { 4015 if (auto m = tuple(`inline_table`, p.end) in memo) 4016 return *m; 4017 else 4018 { 4019 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(inline_table_open, pegged.peg.option!(inline_table_keyvals), inline_table_close), "TomlGrammar.inline_table"), "inline_table")(p); 4020 memo[tuple(`inline_table`, p.end)] = result; 4021 return result; 4022 } 4023 } 4024 } 4025 4026 static TParseTree inline_table(string s) 4027 { 4028 if(__ctfe) 4029 { 4030 return pegged.peg.defined!(pegged.peg.and!(inline_table_open, pegged.peg.option!(inline_table_keyvals), inline_table_close), "TomlGrammar.inline_table")(TParseTree("", false,[], s)); 4031 } 4032 else 4033 { 4034 forgetMemo(); 4035 return hooked!(pegged.peg.defined!(pegged.peg.and!(inline_table_open, pegged.peg.option!(inline_table_keyvals), inline_table_close), "TomlGrammar.inline_table"), "inline_table")(TParseTree("", false,[], s)); 4036 } 4037 } 4038 static string inline_table(GetName g) 4039 { 4040 return "TomlGrammar.inline_table"; 4041 } 4042 4043 static TParseTree inline_table_open(TParseTree p) 4044 { 4045 if(__ctfe) 4046 { 4047 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("{"), ws), "TomlGrammar.inline_table_open")(p); 4048 } 4049 else 4050 { 4051 if (auto m = tuple(`inline_table_open`, p.end) in memo) 4052 return *m; 4053 else 4054 { 4055 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("{"), ws), "TomlGrammar.inline_table_open"), "inline_table_open")(p); 4056 memo[tuple(`inline_table_open`, p.end)] = result; 4057 return result; 4058 } 4059 } 4060 } 4061 4062 static TParseTree inline_table_open(string s) 4063 { 4064 if(__ctfe) 4065 { 4066 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("{"), ws), "TomlGrammar.inline_table_open")(TParseTree("", false,[], s)); 4067 } 4068 else 4069 { 4070 forgetMemo(); 4071 return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("{"), ws), "TomlGrammar.inline_table_open"), "inline_table_open")(TParseTree("", false,[], s)); 4072 } 4073 } 4074 static string inline_table_open(GetName g) 4075 { 4076 return "TomlGrammar.inline_table_open"; 4077 } 4078 4079 static TParseTree inline_table_close(TParseTree p) 4080 { 4081 if(__ctfe) 4082 { 4083 return pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.literal!("}")), "TomlGrammar.inline_table_close")(p); 4084 } 4085 else 4086 { 4087 if (auto m = tuple(`inline_table_close`, p.end) in memo) 4088 return *m; 4089 else 4090 { 4091 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.literal!("}")), "TomlGrammar.inline_table_close"), "inline_table_close")(p); 4092 memo[tuple(`inline_table_close`, p.end)] = result; 4093 return result; 4094 } 4095 } 4096 } 4097 4098 static TParseTree inline_table_close(string s) 4099 { 4100 if(__ctfe) 4101 { 4102 return pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.literal!("}")), "TomlGrammar.inline_table_close")(TParseTree("", false,[], s)); 4103 } 4104 else 4105 { 4106 forgetMemo(); 4107 return hooked!(pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.literal!("}")), "TomlGrammar.inline_table_close"), "inline_table_close")(TParseTree("", false,[], s)); 4108 } 4109 } 4110 static string inline_table_close(GetName g) 4111 { 4112 return "TomlGrammar.inline_table_close"; 4113 } 4114 4115 static TParseTree inline_table_sep(TParseTree p) 4116 { 4117 if(__ctfe) 4118 { 4119 return pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.literal!(","), ws), "TomlGrammar.inline_table_sep")(p); 4120 } 4121 else 4122 { 4123 if (auto m = tuple(`inline_table_sep`, p.end) in memo) 4124 return *m; 4125 else 4126 { 4127 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.literal!(","), ws), "TomlGrammar.inline_table_sep"), "inline_table_sep")(p); 4128 memo[tuple(`inline_table_sep`, p.end)] = result; 4129 return result; 4130 } 4131 } 4132 } 4133 4134 static TParseTree inline_table_sep(string s) 4135 { 4136 if(__ctfe) 4137 { 4138 return pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.literal!(","), ws), "TomlGrammar.inline_table_sep")(TParseTree("", false,[], s)); 4139 } 4140 else 4141 { 4142 forgetMemo(); 4143 return hooked!(pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.literal!(","), ws), "TomlGrammar.inline_table_sep"), "inline_table_sep")(TParseTree("", false,[], s)); 4144 } 4145 } 4146 static string inline_table_sep(GetName g) 4147 { 4148 return "TomlGrammar.inline_table_sep"; 4149 } 4150 4151 static TParseTree inline_table_keyvals(TParseTree p) 4152 { 4153 if(__ctfe) 4154 { 4155 return pegged.peg.defined!(pegged.peg.and!(keyval, pegged.peg.option!(pegged.peg.and!(inline_table_sep, inline_table_keyvals))), "TomlGrammar.inline_table_keyvals")(p); 4156 } 4157 else 4158 { 4159 if (auto m = tuple(`inline_table_keyvals`, p.end) in memo) 4160 return *m; 4161 else 4162 { 4163 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(keyval, pegged.peg.option!(pegged.peg.and!(inline_table_sep, inline_table_keyvals))), "TomlGrammar.inline_table_keyvals"), "inline_table_keyvals")(p); 4164 memo[tuple(`inline_table_keyvals`, p.end)] = result; 4165 return result; 4166 } 4167 } 4168 } 4169 4170 static TParseTree inline_table_keyvals(string s) 4171 { 4172 if(__ctfe) 4173 { 4174 return pegged.peg.defined!(pegged.peg.and!(keyval, pegged.peg.option!(pegged.peg.and!(inline_table_sep, inline_table_keyvals))), "TomlGrammar.inline_table_keyvals")(TParseTree("", false,[], s)); 4175 } 4176 else 4177 { 4178 forgetMemo(); 4179 return hooked!(pegged.peg.defined!(pegged.peg.and!(keyval, pegged.peg.option!(pegged.peg.and!(inline_table_sep, inline_table_keyvals))), "TomlGrammar.inline_table_keyvals"), "inline_table_keyvals")(TParseTree("", false,[], s)); 4180 } 4181 } 4182 static string inline_table_keyvals(GetName g) 4183 { 4184 return "TomlGrammar.inline_table_keyvals"; 4185 } 4186 4187 static TParseTree array_table(TParseTree p) 4188 { 4189 if(__ctfe) 4190 { 4191 return pegged.peg.defined!(pegged.peg.and!(array_table_open, key, array_table_close), "TomlGrammar.array_table")(p); 4192 } 4193 else 4194 { 4195 if (auto m = tuple(`array_table`, p.end) in memo) 4196 return *m; 4197 else 4198 { 4199 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(array_table_open, key, array_table_close), "TomlGrammar.array_table"), "array_table")(p); 4200 memo[tuple(`array_table`, p.end)] = result; 4201 return result; 4202 } 4203 } 4204 } 4205 4206 static TParseTree array_table(string s) 4207 { 4208 if(__ctfe) 4209 { 4210 return pegged.peg.defined!(pegged.peg.and!(array_table_open, key, array_table_close), "TomlGrammar.array_table")(TParseTree("", false,[], s)); 4211 } 4212 else 4213 { 4214 forgetMemo(); 4215 return hooked!(pegged.peg.defined!(pegged.peg.and!(array_table_open, key, array_table_close), "TomlGrammar.array_table"), "array_table")(TParseTree("", false,[], s)); 4216 } 4217 } 4218 static string array_table(GetName g) 4219 { 4220 return "TomlGrammar.array_table"; 4221 } 4222 4223 static TParseTree array_table_open(TParseTree p) 4224 { 4225 if(__ctfe) 4226 { 4227 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("[["), ws), "TomlGrammar.array_table_open")(p); 4228 } 4229 else 4230 { 4231 if (auto m = tuple(`array_table_open`, p.end) in memo) 4232 return *m; 4233 else 4234 { 4235 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("[["), ws), "TomlGrammar.array_table_open"), "array_table_open")(p); 4236 memo[tuple(`array_table_open`, p.end)] = result; 4237 return result; 4238 } 4239 } 4240 } 4241 4242 static TParseTree array_table_open(string s) 4243 { 4244 if(__ctfe) 4245 { 4246 return pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("[["), ws), "TomlGrammar.array_table_open")(TParseTree("", false,[], s)); 4247 } 4248 else 4249 { 4250 forgetMemo(); 4251 return hooked!(pegged.peg.defined!(pegged.peg.and!(pegged.peg.literal!("[["), ws), "TomlGrammar.array_table_open"), "array_table_open")(TParseTree("", false,[], s)); 4252 } 4253 } 4254 static string array_table_open(GetName g) 4255 { 4256 return "TomlGrammar.array_table_open"; 4257 } 4258 4259 static TParseTree array_table_close(TParseTree p) 4260 { 4261 if(__ctfe) 4262 { 4263 return pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.literal!("]]")), "TomlGrammar.array_table_close")(p); 4264 } 4265 else 4266 { 4267 if (auto m = tuple(`array_table_close`, p.end) in memo) 4268 return *m; 4269 else 4270 { 4271 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.literal!("]]")), "TomlGrammar.array_table_close"), "array_table_close")(p); 4272 memo[tuple(`array_table_close`, p.end)] = result; 4273 return result; 4274 } 4275 } 4276 } 4277 4278 static TParseTree array_table_close(string s) 4279 { 4280 if(__ctfe) 4281 { 4282 return pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.literal!("]]")), "TomlGrammar.array_table_close")(TParseTree("", false,[], s)); 4283 } 4284 else 4285 { 4286 forgetMemo(); 4287 return hooked!(pegged.peg.defined!(pegged.peg.and!(ws, pegged.peg.literal!("]]")), "TomlGrammar.array_table_close"), "array_table_close")(TParseTree("", false,[], s)); 4288 } 4289 } 4290 static string array_table_close(GetName g) 4291 { 4292 return "TomlGrammar.array_table_close"; 4293 } 4294 4295 static TParseTree ALPHA(TParseTree p) 4296 { 4297 if(__ctfe) 4298 { 4299 return pegged.peg.defined!(pegged.peg.or!(pegged.peg.charRange!('A', 'Z'), pegged.peg.charRange!('a', 'z')), "TomlGrammar.ALPHA")(p); 4300 } 4301 else 4302 { 4303 if (auto m = tuple(`ALPHA`, p.end) in memo) 4304 return *m; 4305 else 4306 { 4307 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.charRange!('A', 'Z'), pegged.peg.charRange!('a', 'z')), "TomlGrammar.ALPHA"), "ALPHA")(p); 4308 memo[tuple(`ALPHA`, p.end)] = result; 4309 return result; 4310 } 4311 } 4312 } 4313 4314 static TParseTree ALPHA(string s) 4315 { 4316 if(__ctfe) 4317 { 4318 return pegged.peg.defined!(pegged.peg.or!(pegged.peg.charRange!('A', 'Z'), pegged.peg.charRange!('a', 'z')), "TomlGrammar.ALPHA")(TParseTree("", false,[], s)); 4319 } 4320 else 4321 { 4322 forgetMemo(); 4323 return hooked!(pegged.peg.defined!(pegged.peg.or!(pegged.peg.charRange!('A', 'Z'), pegged.peg.charRange!('a', 'z')), "TomlGrammar.ALPHA"), "ALPHA")(TParseTree("", false,[], s)); 4324 } 4325 } 4326 static string ALPHA(GetName g) 4327 { 4328 return "TomlGrammar.ALPHA"; 4329 } 4330 4331 static TParseTree DIGIT(TParseTree p) 4332 { 4333 if(__ctfe) 4334 { 4335 return pegged.peg.defined!(pegged.peg.charRange!('0', '9'), "TomlGrammar.DIGIT")(p); 4336 } 4337 else 4338 { 4339 if (auto m = tuple(`DIGIT`, p.end) in memo) 4340 return *m; 4341 else 4342 { 4343 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.charRange!('0', '9'), "TomlGrammar.DIGIT"), "DIGIT")(p); 4344 memo[tuple(`DIGIT`, p.end)] = result; 4345 return result; 4346 } 4347 } 4348 } 4349 4350 static TParseTree DIGIT(string s) 4351 { 4352 if(__ctfe) 4353 { 4354 return pegged.peg.defined!(pegged.peg.charRange!('0', '9'), "TomlGrammar.DIGIT")(TParseTree("", false,[], s)); 4355 } 4356 else 4357 { 4358 forgetMemo(); 4359 return hooked!(pegged.peg.defined!(pegged.peg.charRange!('0', '9'), "TomlGrammar.DIGIT"), "DIGIT")(TParseTree("", false,[], s)); 4360 } 4361 } 4362 static string DIGIT(GetName g) 4363 { 4364 return "TomlGrammar.DIGIT"; 4365 } 4366 4367 static TParseTree HEXDIG(TParseTree p) 4368 { 4369 if(__ctfe) 4370 { 4371 return pegged.peg.defined!(pegged.peg.or!(DIGIT, pegged.peg.or!(pegged.peg.charRange!('A', 'F'), pegged.peg.charRange!('a', 'f'))), "TomlGrammar.HEXDIG")(p); 4372 } 4373 else 4374 { 4375 if (auto m = tuple(`HEXDIG`, p.end) in memo) 4376 return *m; 4377 else 4378 { 4379 TParseTree result = hooked!(pegged.peg.defined!(pegged.peg.or!(DIGIT, pegged.peg.or!(pegged.peg.charRange!('A', 'F'), pegged.peg.charRange!('a', 'f'))), "TomlGrammar.HEXDIG"), "HEXDIG")(p); 4380 memo[tuple(`HEXDIG`, p.end)] = result; 4381 return result; 4382 } 4383 } 4384 } 4385 4386 static TParseTree HEXDIG(string s) 4387 { 4388 if(__ctfe) 4389 { 4390 return pegged.peg.defined!(pegged.peg.or!(DIGIT, pegged.peg.or!(pegged.peg.charRange!('A', 'F'), pegged.peg.charRange!('a', 'f'))), "TomlGrammar.HEXDIG")(TParseTree("", false,[], s)); 4391 } 4392 else 4393 { 4394 forgetMemo(); 4395 return hooked!(pegged.peg.defined!(pegged.peg.or!(DIGIT, pegged.peg.or!(pegged.peg.charRange!('A', 'F'), pegged.peg.charRange!('a', 'f'))), "TomlGrammar.HEXDIG"), "HEXDIG")(TParseTree("", false,[], s)); 4396 } 4397 } 4398 static string HEXDIG(GetName g) 4399 { 4400 return "TomlGrammar.HEXDIG"; 4401 } 4402 4403 static TParseTree opCall(TParseTree p) 4404 { 4405 TParseTree result = decimateTree(toml(p)); 4406 result.children = [result]; 4407 result.name = "TomlGrammar"; 4408 return result; 4409 } 4410 4411 static TParseTree opCall(string input) 4412 { 4413 if(__ctfe) 4414 { 4415 return TomlGrammar(TParseTree(``, false, [], input, 0, 0)); 4416 } 4417 else 4418 { 4419 forgetMemo(); 4420 return TomlGrammar(TParseTree(``, false, [], input, 0, 0)); 4421 } 4422 } 4423 static string opCall(GetName g) 4424 { 4425 return "TomlGrammar"; 4426 } 4427 4428 4429 static void forgetMemo() 4430 { 4431 memo = null; 4432 } 4433 } 4434 } 4435 4436 package alias GenericTomlGrammar!(ParseTree).TomlGrammar TomlGrammar;