1 // Generated with DParserGen. 2 module dparsergen.generator.grammarebnf; 3 import dparsergen.core.grammarinfo; 4 import dparsergen.core.parseexception; 5 import dparsergen.core.parsestackelem; 6 import dparsergen.core.utils; 7 import std.algorithm; 8 import std.conv; 9 import std.meta; 10 import std.stdio; 11 import std.traits; 12 13 enum SymbolID startTokenID = 0; 14 static assert(allTokens.length < SymbolID.max - startTokenID); 15 enum SymbolID endTokenID = startTokenID + allTokens.length; 16 17 enum SymbolID startNonterminalID = 0; 18 static assert(allNonterminals.length < SymbolID.max - startNonterminalID); 19 enum SymbolID endNonterminalID = startNonterminalID + allNonterminals.length; 20 21 enum ProductionID startProductionID = 0; 22 static assert(allProductions.length < ProductionID.max - startProductionID); 23 enum ProductionID endProductionID = startProductionID + allProductions.length; 24 25 enum nonterminalIDFor(string name) = startNonterminalID + staticIndexOf!(name, 26 "EBNF", 27 "Declaration", 28 "SymbolDeclaration", 29 "DeclarationType", 30 "MacroParametersPart", 31 "MacroParameters", 32 "MacroParameter", 33 "OptionDeclaration", 34 "Import", 35 "MatchDeclaration", 36 "Annotation", 37 "AnnotationParams", 38 "AnnotationParamsPart", 39 "NegativeLookahead", 40 "Expression", 41 "Alternation", 42 "Concatenation", 43 "ProductionAnnotation", 44 "TokenMinus", 45 "AnnotatedExpression", 46 "ExpressionAnnotation", 47 "ExpressionName", 48 "ExpressionPrefix", 49 "PostfixExpression", 50 "Optional", 51 "Repetition", 52 "RepetitionPlus", 53 "AtomExpression", 54 "Symbol", 55 "Name", 56 "Token", 57 "UnpackVariadicList", 58 "SubToken", 59 "MacroInstance", 60 "ParenExpression", 61 "ExpressionList", 62 "Tuple", 63 "Declaration+", 64 "DeclarationType?", 65 "MacroParametersPart?", 66 "Annotation+", 67 "Annotation*", 68 "MacroParameters?", 69 "AnnotationParams?", 70 "AnnotationParamsPart+", 71 "AnnotationParamsPart*", 72 "TokenMinus+", 73 "ProductionAnnotation+", 74 "@regArray_ProductionAnnotation*", 75 "@regArray_ProductionAnnotation+", 76 "ExpressionAnnotation+", 77 "@regArray_ExpressionAnnotation*", 78 "ExpressionName?", 79 "ExpressionPrefix+", 80 "ExpressionPrefix*", 81 "ExpressionList?", 82 "$regarray_0", 83 "$regarray_1", 84 "$regarrayedge_0_1", 85 "$regarrayedge_1_1", 86 ); 87 88 struct Parser(CreatorInstance, alias L) 89 { 90 alias Lexer = L; 91 alias Location = typeof(Lexer.init.front.currentLocation); 92 alias LocationDiff = typeof(Location.init - Location.init); 93 94 CreatorInstance creator; 95 Lexer* lexer; 96 ParseException lastError; 97 98 template NonterminalType(size_t nonterminalID) 99 if (nonterminalID >= startNonterminalID && nonterminalID < endNonterminalID) 100 { 101 alias NonterminalType = CreatorInstance.NonterminalType!nonterminalID; 102 } 103 104 alias Token = typeof(lexer.front.content); 105 106 Location lastTokenEnd; 107 108 ParseStackElem!(Location, Token) popToken() 109 { 110 if (lexer.front.currentLocation - lastTokenEnd != LocationDiff.invalid) 111 assert(lexer.front.currentLocation >= lastTokenEnd, 112 text(lastTokenEnd, " ", lexer.front.currentLocation)); 113 114 lastTokenEnd = lexer.front.currentTokenEnd; 115 auto tok = lexer.front.content; 116 auto pos = lexer.front.currentLocation; 117 lexer.popFront; 118 119 assert(lastTokenEnd >= pos); 120 121 if (!lexer.empty) 122 { 123 assert(lexer.front.currentLocation >= lastTokenEnd, 124 text(lastTokenEnd, " ", lexer.front.currentLocation)); 125 } 126 127 return ParseStackElem!(Location, Token)(pos, tok); 128 } 129 auto reduce0/*Declaration+ @array = Declaration [virtual]*/(Location parseStart, ParseStackElem!(Location, NonterminalType!1) stack1) 130 { 131 NonterminalType!(37/*Declaration+*/) pt; 132 { 133 Location end = lastTokenEnd; 134 if (end < parseStart) 135 end = parseStart; 136 137 pt = creator.createParseTree!(0)(parseStart, end, stack1); 138 } 139 return ParseStackElem!(Location, NonterminalType!(37/*Declaration+*/))(parseStart, pt); 140 } 141 142 auto reduce1/*Declaration+ @array = Declaration+ Declaration [virtual]*/(Location parseStart, ParseStackElem!(Location, NonterminalType!37) stack2, ParseStackElem!(Location, NonterminalType!1) stack1) 143 { 144 NonterminalType!(37/*Declaration+*/) pt; 145 { 146 Location end = lastTokenEnd; 147 if (end < parseStart) 148 end = parseStart; 149 150 pt = creator.createParseTree!(1)(parseStart, end, stack2, stack1); 151 } 152 return ParseStackElem!(Location, NonterminalType!(37/*Declaration+*/))(parseStart, pt); 153 } 154 155 auto reduce2_EBNF/*EBNF = Declaration+*/(Location parseStart, ParseStackElem!(Location, NonterminalType!37) stack1) 156 { 157 NonterminalType!(0/*EBNF*/) pt; 158 { 159 Location end = lastTokenEnd; 160 if (end < parseStart) 161 end = parseStart; 162 163 pt = creator.createParseTree!(2)(parseStart, end, stack1); 164 } 165 return ParseStackElem!(Location, NonterminalType!(0/*EBNF*/))(parseStart, pt); 166 } 167 168 auto reduce3_Declaration/*Declaration = <SymbolDeclaration*/(Location parseStart, ParseStackElem!(Location, NonterminalType!2) stack1) 169 { 170 NonterminalType!(1/*Declaration*/) pt; 171 pt = stack1.val; 172 parseStart = stack1.start; 173 return ParseStackElem!(Location, NonterminalType!(1/*Declaration*/))(parseStart, pt); 174 } 175 176 auto reduce4_Declaration/*Declaration = <MatchDeclaration*/(Location parseStart, ParseStackElem!(Location, NonterminalType!9) stack1) 177 { 178 NonterminalType!(1/*Declaration*/) pt; 179 pt = stack1.val; 180 parseStart = stack1.start; 181 return ParseStackElem!(Location, NonterminalType!(1/*Declaration*/))(parseStart, pt); 182 } 183 184 auto reduce5_Declaration/*Declaration = <Import*/(Location parseStart, ParseStackElem!(Location, NonterminalType!8) stack1) 185 { 186 NonterminalType!(1/*Declaration*/) pt; 187 pt = stack1.val; 188 parseStart = stack1.start; 189 return ParseStackElem!(Location, NonterminalType!(1/*Declaration*/))(parseStart, pt); 190 } 191 192 auto reduce6_Declaration/*Declaration = <OptionDeclaration*/(Location parseStart, ParseStackElem!(Location, NonterminalType!7) stack1) 193 { 194 NonterminalType!(1/*Declaration*/) pt; 195 pt = stack1.val; 196 parseStart = stack1.start; 197 return ParseStackElem!(Location, NonterminalType!(1/*Declaration*/))(parseStart, pt); 198 } 199 200 auto reduce7/*DeclarationType? = <DeclarationType [virtual]*/(Location parseStart, ParseStackElem!(Location, NonterminalType!3) stack1) 201 { 202 NonterminalType!(38/*DeclarationType?*/) pt; 203 pt = stack1.val; 204 parseStart = stack1.start; 205 return ParseStackElem!(Location, NonterminalType!(38/*DeclarationType?*/))(parseStart, pt); 206 } 207 208 auto reduce8/*DeclarationType? = [virtual]*/() 209 { 210 Location parseStart = lastTokenEnd; 211 NonterminalType!(38/*DeclarationType?*/) pt; 212 pt = typeof(pt).init; 213 return ParseStackElem!(Location, NonterminalType!(38/*DeclarationType?*/))(parseStart, pt); 214 } 215 216 auto reduce9/*MacroParametersPart? = <MacroParametersPart [virtual]*/(Location parseStart, ParseStackElem!(Location, NonterminalType!4) stack1) 217 { 218 NonterminalType!(39/*MacroParametersPart?*/) pt; 219 pt = stack1.val; 220 parseStart = stack1.start; 221 return ParseStackElem!(Location, NonterminalType!(39/*MacroParametersPart?*/))(parseStart, pt); 222 } 223 224 auto reduce10/*MacroParametersPart? = [virtual]*/() 225 { 226 Location parseStart = lastTokenEnd; 227 NonterminalType!(39/*MacroParametersPart?*/) pt; 228 pt = typeof(pt).init; 229 return ParseStackElem!(Location, NonterminalType!(39/*MacroParametersPart?*/))(parseStart, pt); 230 } 231 232 auto reduce11/*Annotation+ @array = Annotation [virtual]*/(Location parseStart, ParseStackElem!(Location, NonterminalType!10) stack1) 233 { 234 NonterminalType!(40/*Annotation+*/) pt; 235 { 236 Location end = lastTokenEnd; 237 if (end < parseStart) 238 end = parseStart; 239 240 pt = creator.createParseTree!(11)(parseStart, end, stack1); 241 } 242 return ParseStackElem!(Location, NonterminalType!(40/*Annotation+*/))(parseStart, pt); 243 } 244 245 auto reduce12/*Annotation+ @array = Annotation+ Annotation [virtual]*/(Location parseStart, ParseStackElem!(Location, NonterminalType!40) stack2, ParseStackElem!(Location, NonterminalType!10) stack1) 246 { 247 NonterminalType!(40/*Annotation+*/) pt; 248 { 249 Location end = lastTokenEnd; 250 if (end < parseStart) 251 end = parseStart; 252 253 pt = creator.createParseTree!(12)(parseStart, end, stack2, stack1); 254 } 255 return ParseStackElem!(Location, NonterminalType!(40/*Annotation+*/))(parseStart, pt); 256 } 257 258 auto reduce13/*Annotation* @array = [virtual]*/() 259 { 260 Location parseStart = lastTokenEnd; 261 NonterminalType!(41/*Annotation**/) pt; 262 pt = typeof(pt).init; 263 return ParseStackElem!(Location, NonterminalType!(41/*Annotation**/))(parseStart, pt); 264 } 265 266 auto reduce14/*Annotation* @array = Annotation+ [virtual]*/(Location parseStart, ParseStackElem!(Location, NonterminalType!40) stack1) 267 { 268 NonterminalType!(41/*Annotation**/) pt; 269 { 270 Location end = lastTokenEnd; 271 if (end < parseStart) 272 end = parseStart; 273 274 pt = creator.createParseTree!(14)(parseStart, end, stack1); 275 } 276 return ParseStackElem!(Location, NonterminalType!(41/*Annotation**/))(parseStart, pt); 277 } 278 279 auto reduce15_SymbolDeclaration/*SymbolDeclaration = DeclarationType? Identifier MacroParametersPart? Annotation* ";"*/(Location parseStart, ParseStackElem!(Location, NonterminalType!38) stack5, ParseStackElem!(Location, Token) stack4, ParseStackElem!(Location, NonterminalType!39) stack3, ParseStackElem!(Location, NonterminalType!41) stack2, ParseStackElem!(Location, Token) stack1) 280 { 281 NonterminalType!(2/*SymbolDeclaration*/) pt; 282 { 283 Location end = lastTokenEnd; 284 if (end < parseStart) 285 end = parseStart; 286 287 pt = creator.createParseTree!(15)(parseStart, end, stack5, stack4, stack3, stack2, stack1); 288 } 289 return ParseStackElem!(Location, NonterminalType!(2/*SymbolDeclaration*/))(parseStart, pt); 290 } 291 292 auto reduce16_SymbolDeclaration/*SymbolDeclaration = DeclarationType? Identifier MacroParametersPart? Annotation* "=" Expression ";"*/(Location parseStart, ParseStackElem!(Location, NonterminalType!38) stack7, ParseStackElem!(Location, Token) stack6, ParseStackElem!(Location, NonterminalType!39) stack5, ParseStackElem!(Location, NonterminalType!41) stack4, ParseStackElem!(Location, Token) stack3, ParseStackElem!(Location, NonterminalType!14) stack2, ParseStackElem!(Location, Token) stack1) 293 { 294 NonterminalType!(2/*SymbolDeclaration*/) pt; 295 { 296 Location end = lastTokenEnd; 297 if (end < parseStart) 298 end = parseStart; 299 300 pt = creator.createParseTree!(16)(parseStart, end, stack7, stack6, stack5, stack4, stack3, stack2, stack1); 301 } 302 return ParseStackElem!(Location, NonterminalType!(2/*SymbolDeclaration*/))(parseStart, pt); 303 } 304 305 auto reduce17_DeclarationType/*DeclarationType = "fragment"*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 306 { 307 NonterminalType!(3/*DeclarationType*/) pt; 308 { 309 Location end = lastTokenEnd; 310 if (end < parseStart) 311 end = parseStart; 312 313 pt = creator.createParseTree!(17)(parseStart, end, stack1); 314 } 315 return ParseStackElem!(Location, NonterminalType!(3/*DeclarationType*/))(parseStart, pt); 316 } 317 318 auto reduce18_DeclarationType/*DeclarationType = "token"*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 319 { 320 NonterminalType!(3/*DeclarationType*/) pt; 321 { 322 Location end = lastTokenEnd; 323 if (end < parseStart) 324 end = parseStart; 325 326 pt = creator.createParseTree!(18)(parseStart, end, stack1); 327 } 328 return ParseStackElem!(Location, NonterminalType!(3/*DeclarationType*/))(parseStart, pt); 329 } 330 331 auto reduce19/*MacroParameters? = <MacroParameters [virtual]*/(Location parseStart, ParseStackElem!(Location, NonterminalType!5) stack1) 332 { 333 NonterminalType!(42/*MacroParameters?*/) pt; 334 pt = stack1.val; 335 parseStart = stack1.start; 336 return ParseStackElem!(Location, NonterminalType!(42/*MacroParameters?*/))(parseStart, pt); 337 } 338 339 auto reduce20/*MacroParameters? = [virtual]*/() 340 { 341 Location parseStart = lastTokenEnd; 342 NonterminalType!(42/*MacroParameters?*/) pt; 343 pt = typeof(pt).init; 344 return ParseStackElem!(Location, NonterminalType!(42/*MacroParameters?*/))(parseStart, pt); 345 } 346 347 auto reduce21_MacroParametersPart/*MacroParametersPart = "(" MacroParameters? ")"*/(Location parseStart, ParseStackElem!(Location, Token) stack3, ParseStackElem!(Location, NonterminalType!42) stack2, ParseStackElem!(Location, Token) stack1) 348 { 349 NonterminalType!(4/*MacroParametersPart*/) pt; 350 { 351 Location end = lastTokenEnd; 352 if (end < parseStart) 353 end = parseStart; 354 355 pt = creator.createParseTree!(21)(parseStart, end, stack3, stack2, stack1); 356 } 357 return ParseStackElem!(Location, NonterminalType!(4/*MacroParametersPart*/))(parseStart, pt); 358 } 359 360 auto reduce22_MacroParameters/*MacroParameters @array = MacroParameter*/(Location parseStart, ParseStackElem!(Location, NonterminalType!6) stack1) 361 { 362 NonterminalType!(5/*MacroParameters*/) pt; 363 { 364 Location end = lastTokenEnd; 365 if (end < parseStart) 366 end = parseStart; 367 368 pt = creator.createParseTree!(22)(parseStart, end, stack1); 369 } 370 return ParseStackElem!(Location, NonterminalType!(5/*MacroParameters*/))(parseStart, pt); 371 } 372 373 auto reduce23_MacroParameters/*MacroParameters @array = MacroParameters "," MacroParameter*/(Location parseStart, ParseStackElem!(Location, NonterminalType!5) stack3, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!6) stack1) 374 { 375 NonterminalType!(5/*MacroParameters*/) pt; 376 { 377 Location end = lastTokenEnd; 378 if (end < parseStart) 379 end = parseStart; 380 381 pt = creator.createParseTree!(23)(parseStart, end, stack3, stack2, stack1); 382 } 383 return ParseStackElem!(Location, NonterminalType!(5/*MacroParameters*/))(parseStart, pt); 384 } 385 386 auto reduce24_MacroParameter/*MacroParameter = Identifier*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 387 { 388 NonterminalType!(6/*MacroParameter*/) pt; 389 { 390 Location end = lastTokenEnd; 391 if (end < parseStart) 392 end = parseStart; 393 394 pt = creator.createParseTree!(24)(parseStart, end, stack1); 395 } 396 return ParseStackElem!(Location, NonterminalType!(6/*MacroParameter*/))(parseStart, pt); 397 } 398 399 auto reduce25_MacroParameter/*MacroParameter = Identifier "..."*/(Location parseStart, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, Token) stack1) 400 { 401 NonterminalType!(6/*MacroParameter*/) pt; 402 { 403 Location end = lastTokenEnd; 404 if (end < parseStart) 405 end = parseStart; 406 407 pt = creator.createParseTree!(25)(parseStart, end, stack2, stack1); 408 } 409 return ParseStackElem!(Location, NonterminalType!(6/*MacroParameter*/))(parseStart, pt); 410 } 411 412 auto reduce26_OptionDeclaration/*OptionDeclaration = ^"option" Identifier ^"=" IntegerLiteral ^";"*/(Location parseStart/*, ParseStackElem!(Location, Token) stack5*/, ParseStackElem!(Location, Token) stack4/*, ParseStackElem!(Location, Token) stack3*/, ParseStackElem!(Location, Token) stack2/*, ParseStackElem!(Location, Token) stack1*/) 413 { 414 NonterminalType!(7/*OptionDeclaration*/) pt; 415 { 416 Location end = lastTokenEnd; 417 if (end < parseStart) 418 end = parseStart; 419 420 pt = creator.createParseTree!(26)(parseStart, end, stack4, stack2); 421 } 422 return ParseStackElem!(Location, NonterminalType!(7/*OptionDeclaration*/))(parseStart, pt); 423 } 424 425 auto reduce27_Import/*Import = "import" StringLiteral ";"*/(Location parseStart, ParseStackElem!(Location, Token) stack3, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, Token) stack1) 426 { 427 NonterminalType!(8/*Import*/) pt; 428 { 429 Location end = lastTokenEnd; 430 if (end < parseStart) 431 end = parseStart; 432 433 pt = creator.createParseTree!(27)(parseStart, end, stack3, stack2, stack1); 434 } 435 return ParseStackElem!(Location, NonterminalType!(8/*Import*/))(parseStart, pt); 436 } 437 438 auto reduce28_MatchDeclaration/*MatchDeclaration = "match" Symbol Symbol ";"*/(Location parseStart, ParseStackElem!(Location, Token) stack4, ParseStackElem!(Location, NonterminalType!28) stack3, ParseStackElem!(Location, NonterminalType!28) stack2, ParseStackElem!(Location, Token) stack1) 439 { 440 NonterminalType!(9/*MatchDeclaration*/) pt; 441 { 442 Location end = lastTokenEnd; 443 if (end < parseStart) 444 end = parseStart; 445 446 pt = creator.createParseTree!(28)(parseStart, end, stack4, stack3, stack2, stack1); 447 } 448 return ParseStackElem!(Location, NonterminalType!(9/*MatchDeclaration*/))(parseStart, pt); 449 } 450 451 auto reduce29/*AnnotationParams? = <AnnotationParams [virtual]*/(Location parseStart, ParseStackElem!(Location, NonterminalType!11) stack1) 452 { 453 NonterminalType!(43/*AnnotationParams?*/) pt; 454 pt = stack1.val; 455 parseStart = stack1.start; 456 return ParseStackElem!(Location, NonterminalType!(43/*AnnotationParams?*/))(parseStart, pt); 457 } 458 459 auto reduce30/*AnnotationParams? = [virtual]*/() 460 { 461 Location parseStart = lastTokenEnd; 462 NonterminalType!(43/*AnnotationParams?*/) pt; 463 pt = typeof(pt).init; 464 return ParseStackElem!(Location, NonterminalType!(43/*AnnotationParams?*/))(parseStart, pt); 465 } 466 467 auto reduce31_Annotation/*Annotation = "@" Identifier AnnotationParams?*/(Location parseStart, ParseStackElem!(Location, Token) stack3, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!43) stack1) 468 { 469 NonterminalType!(10/*Annotation*/) pt; 470 { 471 Location end = lastTokenEnd; 472 if (end < parseStart) 473 end = parseStart; 474 475 pt = creator.createParseTree!(31)(parseStart, end, stack3, stack2, stack1); 476 } 477 return ParseStackElem!(Location, NonterminalType!(10/*Annotation*/))(parseStart, pt); 478 } 479 480 auto reduce32/*AnnotationParamsPart+ @array = AnnotationParamsPart [virtual]*/(Location parseStart, ParseStackElem!(Location, NonterminalType!12) stack1) 481 { 482 NonterminalType!(44/*AnnotationParamsPart+*/) pt; 483 { 484 Location end = lastTokenEnd; 485 if (end < parseStart) 486 end = parseStart; 487 488 pt = creator.createParseTree!(32)(parseStart, end, stack1); 489 } 490 return ParseStackElem!(Location, NonterminalType!(44/*AnnotationParamsPart+*/))(parseStart, pt); 491 } 492 493 auto reduce33/*AnnotationParamsPart+ @array = AnnotationParamsPart+ AnnotationParamsPart [virtual]*/(Location parseStart, ParseStackElem!(Location, NonterminalType!44) stack2, ParseStackElem!(Location, NonterminalType!12) stack1) 494 { 495 NonterminalType!(44/*AnnotationParamsPart+*/) pt; 496 { 497 Location end = lastTokenEnd; 498 if (end < parseStart) 499 end = parseStart; 500 501 pt = creator.createParseTree!(33)(parseStart, end, stack2, stack1); 502 } 503 return ParseStackElem!(Location, NonterminalType!(44/*AnnotationParamsPart+*/))(parseStart, pt); 504 } 505 506 auto reduce34/*AnnotationParamsPart* @array = [virtual]*/() 507 { 508 Location parseStart = lastTokenEnd; 509 NonterminalType!(45/*AnnotationParamsPart**/) pt; 510 pt = typeof(pt).init; 511 return ParseStackElem!(Location, NonterminalType!(45/*AnnotationParamsPart**/))(parseStart, pt); 512 } 513 514 auto reduce35/*AnnotationParamsPart* @array = AnnotationParamsPart+ [virtual]*/(Location parseStart, ParseStackElem!(Location, NonterminalType!44) stack1) 515 { 516 NonterminalType!(45/*AnnotationParamsPart**/) pt; 517 { 518 Location end = lastTokenEnd; 519 if (end < parseStart) 520 end = parseStart; 521 522 pt = creator.createParseTree!(35)(parseStart, end, stack1); 523 } 524 return ParseStackElem!(Location, NonterminalType!(45/*AnnotationParamsPart**/))(parseStart, pt); 525 } 526 527 auto reduce36_AnnotationParams/*AnnotationParams = "(" AnnotationParamsPart* ")"*/(Location parseStart, ParseStackElem!(Location, Token) stack3, ParseStackElem!(Location, NonterminalType!45) stack2, ParseStackElem!(Location, Token) stack1) 528 { 529 NonterminalType!(11/*AnnotationParams*/) pt; 530 { 531 Location end = lastTokenEnd; 532 if (end < parseStart) 533 end = parseStart; 534 535 pt = creator.createParseTree!(36)(parseStart, end, stack3, stack2, stack1); 536 } 537 return ParseStackElem!(Location, NonterminalType!(11/*AnnotationParams*/))(parseStart, pt); 538 } 539 540 auto reduce37_AnnotationParamsPart/*AnnotationParamsPart = StringLiteral*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 541 { 542 NonterminalType!(12/*AnnotationParamsPart*/) pt; 543 { 544 Location end = lastTokenEnd; 545 if (end < parseStart) 546 end = parseStart; 547 548 pt = creator.createParseTree!(37)(parseStart, end, stack1); 549 } 550 return ParseStackElem!(Location, NonterminalType!(12/*AnnotationParamsPart*/))(parseStart, pt); 551 } 552 553 auto reduce38_AnnotationParamsPart/*AnnotationParamsPart = Identifier*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 554 { 555 NonterminalType!(12/*AnnotationParamsPart*/) pt; 556 { 557 Location end = lastTokenEnd; 558 if (end < parseStart) 559 end = parseStart; 560 561 pt = creator.createParseTree!(38)(parseStart, end, stack1); 562 } 563 return ParseStackElem!(Location, NonterminalType!(12/*AnnotationParamsPart*/))(parseStart, pt); 564 } 565 566 auto reduce39_AnnotationParamsPart/*AnnotationParamsPart = CharacterSetLiteral*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 567 { 568 NonterminalType!(12/*AnnotationParamsPart*/) pt; 569 { 570 Location end = lastTokenEnd; 571 if (end < parseStart) 572 end = parseStart; 573 574 pt = creator.createParseTree!(39)(parseStart, end, stack1); 575 } 576 return ParseStackElem!(Location, NonterminalType!(12/*AnnotationParamsPart*/))(parseStart, pt); 577 } 578 579 auto reduce40_AnnotationParamsPart/*AnnotationParamsPart = IntegerLiteral*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 580 { 581 NonterminalType!(12/*AnnotationParamsPart*/) pt; 582 { 583 Location end = lastTokenEnd; 584 if (end < parseStart) 585 end = parseStart; 586 587 pt = creator.createParseTree!(40)(parseStart, end, stack1); 588 } 589 return ParseStackElem!(Location, NonterminalType!(12/*AnnotationParamsPart*/))(parseStart, pt); 590 } 591 592 auto reduce41_AnnotationParamsPart/*AnnotationParamsPart = "(" AnnotationParamsPart* ")"*/(Location parseStart, ParseStackElem!(Location, Token) stack3, ParseStackElem!(Location, NonterminalType!45) stack2, ParseStackElem!(Location, Token) stack1) 593 { 594 NonterminalType!(12/*AnnotationParamsPart*/) pt; 595 { 596 Location end = lastTokenEnd; 597 if (end < parseStart) 598 end = parseStart; 599 600 pt = creator.createParseTree!(41)(parseStart, end, stack3, stack2, stack1); 601 } 602 return ParseStackElem!(Location, NonterminalType!(12/*AnnotationParamsPart*/))(parseStart, pt); 603 } 604 605 auto reduce42_AnnotationParamsPart/*AnnotationParamsPart = "="*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 606 { 607 NonterminalType!(12/*AnnotationParamsPart*/) pt; 608 { 609 Location end = lastTokenEnd; 610 if (end < parseStart) 611 end = parseStart; 612 613 pt = creator.createParseTree!(42)(parseStart, end, stack1); 614 } 615 return ParseStackElem!(Location, NonterminalType!(12/*AnnotationParamsPart*/))(parseStart, pt); 616 } 617 618 auto reduce43_AnnotationParamsPart/*AnnotationParamsPart = ":"*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 619 { 620 NonterminalType!(12/*AnnotationParamsPart*/) pt; 621 { 622 Location end = lastTokenEnd; 623 if (end < parseStart) 624 end = parseStart; 625 626 pt = creator.createParseTree!(43)(parseStart, end, stack1); 627 } 628 return ParseStackElem!(Location, NonterminalType!(12/*AnnotationParamsPart*/))(parseStart, pt); 629 } 630 631 auto reduce44_AnnotationParamsPart/*AnnotationParamsPart = ";"*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 632 { 633 NonterminalType!(12/*AnnotationParamsPart*/) pt; 634 { 635 Location end = lastTokenEnd; 636 if (end < parseStart) 637 end = parseStart; 638 639 pt = creator.createParseTree!(44)(parseStart, end, stack1); 640 } 641 return ParseStackElem!(Location, NonterminalType!(12/*AnnotationParamsPart*/))(parseStart, pt); 642 } 643 644 auto reduce45_AnnotationParamsPart/*AnnotationParamsPart = ","*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 645 { 646 NonterminalType!(12/*AnnotationParamsPart*/) pt; 647 { 648 Location end = lastTokenEnd; 649 if (end < parseStart) 650 end = parseStart; 651 652 pt = creator.createParseTree!(45)(parseStart, end, stack1); 653 } 654 return ParseStackElem!(Location, NonterminalType!(12/*AnnotationParamsPart*/))(parseStart, pt); 655 } 656 657 auto reduce46_AnnotationParamsPart/*AnnotationParamsPart = "{"*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 658 { 659 NonterminalType!(12/*AnnotationParamsPart*/) pt; 660 { 661 Location end = lastTokenEnd; 662 if (end < parseStart) 663 end = parseStart; 664 665 pt = creator.createParseTree!(46)(parseStart, end, stack1); 666 } 667 return ParseStackElem!(Location, NonterminalType!(12/*AnnotationParamsPart*/))(parseStart, pt); 668 } 669 670 auto reduce47_AnnotationParamsPart/*AnnotationParamsPart = "}"*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 671 { 672 NonterminalType!(12/*AnnotationParamsPart*/) pt; 673 { 674 Location end = lastTokenEnd; 675 if (end < parseStart) 676 end = parseStart; 677 678 pt = creator.createParseTree!(47)(parseStart, end, stack1); 679 } 680 return ParseStackElem!(Location, NonterminalType!(12/*AnnotationParamsPart*/))(parseStart, pt); 681 } 682 683 auto reduce48_AnnotationParamsPart/*AnnotationParamsPart = "?"*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 684 { 685 NonterminalType!(12/*AnnotationParamsPart*/) pt; 686 { 687 Location end = lastTokenEnd; 688 if (end < parseStart) 689 end = parseStart; 690 691 pt = creator.createParseTree!(48)(parseStart, end, stack1); 692 } 693 return ParseStackElem!(Location, NonterminalType!(12/*AnnotationParamsPart*/))(parseStart, pt); 694 } 695 696 auto reduce49_AnnotationParamsPart/*AnnotationParamsPart = "!"*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 697 { 698 NonterminalType!(12/*AnnotationParamsPart*/) pt; 699 { 700 Location end = lastTokenEnd; 701 if (end < parseStart) 702 end = parseStart; 703 704 pt = creator.createParseTree!(49)(parseStart, end, stack1); 705 } 706 return ParseStackElem!(Location, NonterminalType!(12/*AnnotationParamsPart*/))(parseStart, pt); 707 } 708 709 auto reduce50_AnnotationParamsPart/*AnnotationParamsPart = "<"*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 710 { 711 NonterminalType!(12/*AnnotationParamsPart*/) pt; 712 { 713 Location end = lastTokenEnd; 714 if (end < parseStart) 715 end = parseStart; 716 717 pt = creator.createParseTree!(50)(parseStart, end, stack1); 718 } 719 return ParseStackElem!(Location, NonterminalType!(12/*AnnotationParamsPart*/))(parseStart, pt); 720 } 721 722 auto reduce51_AnnotationParamsPart/*AnnotationParamsPart = ">"*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 723 { 724 NonterminalType!(12/*AnnotationParamsPart*/) pt; 725 { 726 Location end = lastTokenEnd; 727 if (end < parseStart) 728 end = parseStart; 729 730 pt = creator.createParseTree!(51)(parseStart, end, stack1); 731 } 732 return ParseStackElem!(Location, NonterminalType!(12/*AnnotationParamsPart*/))(parseStart, pt); 733 } 734 735 auto reduce52_AnnotationParamsPart/*AnnotationParamsPart = "*"*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 736 { 737 NonterminalType!(12/*AnnotationParamsPart*/) pt; 738 { 739 Location end = lastTokenEnd; 740 if (end < parseStart) 741 end = parseStart; 742 743 pt = creator.createParseTree!(52)(parseStart, end, stack1); 744 } 745 return ParseStackElem!(Location, NonterminalType!(12/*AnnotationParamsPart*/))(parseStart, pt); 746 } 747 748 auto reduce53_AnnotationParamsPart/*AnnotationParamsPart = ">>"*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 749 { 750 NonterminalType!(12/*AnnotationParamsPart*/) pt; 751 { 752 Location end = lastTokenEnd; 753 if (end < parseStart) 754 end = parseStart; 755 756 pt = creator.createParseTree!(53)(parseStart, end, stack1); 757 } 758 return ParseStackElem!(Location, NonterminalType!(12/*AnnotationParamsPart*/))(parseStart, pt); 759 } 760 761 auto reduce54_AnnotationParamsPart/*AnnotationParamsPart = "<<"*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 762 { 763 NonterminalType!(12/*AnnotationParamsPart*/) pt; 764 { 765 Location end = lastTokenEnd; 766 if (end < parseStart) 767 end = parseStart; 768 769 pt = creator.createParseTree!(54)(parseStart, end, stack1); 770 } 771 return ParseStackElem!(Location, NonterminalType!(12/*AnnotationParamsPart*/))(parseStart, pt); 772 } 773 774 auto reduce55_AnnotationParamsPart/*AnnotationParamsPart = "-"*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 775 { 776 NonterminalType!(12/*AnnotationParamsPart*/) pt; 777 { 778 Location end = lastTokenEnd; 779 if (end < parseStart) 780 end = parseStart; 781 782 pt = creator.createParseTree!(55)(parseStart, end, stack1); 783 } 784 return ParseStackElem!(Location, NonterminalType!(12/*AnnotationParamsPart*/))(parseStart, pt); 785 } 786 787 auto reduce56_NegativeLookahead/*NegativeLookahead = "!" Symbol*/(Location parseStart, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!28) stack1) 788 { 789 NonterminalType!(13/*NegativeLookahead*/) pt; 790 { 791 Location end = lastTokenEnd; 792 if (end < parseStart) 793 end = parseStart; 794 795 pt = creator.createParseTree!(56)(parseStart, end, stack2, stack1); 796 } 797 return ParseStackElem!(Location, NonterminalType!(13/*NegativeLookahead*/))(parseStart, pt); 798 } 799 800 auto reduce57_NegativeLookahead/*NegativeLookahead = "!" "anytoken"*/(Location parseStart, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, Token) stack1) 801 { 802 NonterminalType!(13/*NegativeLookahead*/) pt; 803 { 804 Location end = lastTokenEnd; 805 if (end < parseStart) 806 end = parseStart; 807 808 pt = creator.createParseTree!(57)(parseStart, end, stack2, stack1); 809 } 810 return ParseStackElem!(Location, NonterminalType!(13/*NegativeLookahead*/))(parseStart, pt); 811 } 812 813 auto reduce58_Expression/*Expression = <Alternation*/(Location parseStart, ParseStackElem!(Location, NonterminalType!15) stack1) 814 { 815 NonterminalType!(14/*Expression*/) pt; 816 pt = stack1.val; 817 parseStart = stack1.start; 818 return ParseStackElem!(Location, NonterminalType!(14/*Expression*/))(parseStart, pt); 819 } 820 821 auto reduce59_Alternation/*Alternation = <Concatenation*/(Location parseStart, ParseStackElem!(Location, NonterminalType!16) stack1) 822 { 823 NonterminalType!(15/*Alternation*/) pt; 824 pt = stack1.val; 825 parseStart = stack1.start; 826 return ParseStackElem!(Location, NonterminalType!(15/*Alternation*/))(parseStart, pt); 827 } 828 829 auto reduce60_Alternation/*Alternation = Alternation "|" Concatenation*/(Location parseStart, ParseStackElem!(Location, NonterminalType!15) stack3, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!16) stack1) 830 { 831 NonterminalType!(15/*Alternation*/) pt; 832 { 833 Location end = lastTokenEnd; 834 if (end < parseStart) 835 end = parseStart; 836 837 pt = creator.createParseTree!(60)(parseStart, end, stack3, stack2, stack1); 838 } 839 return ParseStackElem!(Location, NonterminalType!(15/*Alternation*/))(parseStart, pt); 840 } 841 842 auto reduce61_Concatenation/*Concatenation = <TokenMinus*/(Location parseStart, ParseStackElem!(Location, NonterminalType!18) stack1) 843 { 844 NonterminalType!(16/*Concatenation*/) pt; 845 pt = stack1.val; 846 parseStart = stack1.start; 847 return ParseStackElem!(Location, NonterminalType!(16/*Concatenation*/))(parseStart, pt); 848 } 849 850 auto reduce62/*TokenMinus+ @array = TokenMinus [virtual]*/(Location parseStart, ParseStackElem!(Location, NonterminalType!18) stack1) 851 { 852 NonterminalType!(46/*TokenMinus+*/) pt; 853 { 854 Location end = lastTokenEnd; 855 if (end < parseStart) 856 end = parseStart; 857 858 pt = creator.createParseTree!(62)(parseStart, end, stack1); 859 } 860 return ParseStackElem!(Location, NonterminalType!(46/*TokenMinus+*/))(parseStart, pt); 861 } 862 863 auto reduce63/*TokenMinus+ @array = TokenMinus+ TokenMinus [virtual]*/(Location parseStart, ParseStackElem!(Location, NonterminalType!46) stack2, ParseStackElem!(Location, NonterminalType!18) stack1) 864 { 865 NonterminalType!(46/*TokenMinus+*/) pt; 866 { 867 Location end = lastTokenEnd; 868 if (end < parseStart) 869 end = parseStart; 870 871 pt = creator.createParseTree!(63)(parseStart, end, stack2, stack1); 872 } 873 return ParseStackElem!(Location, NonterminalType!(46/*TokenMinus+*/))(parseStart, pt); 874 } 875 876 auto reduce64/*ProductionAnnotation+ @array = ProductionAnnotation [virtual]*/(Location parseStart, ParseStackElem!(Location, NonterminalType!17) stack1) 877 { 878 NonterminalType!(47/*ProductionAnnotation+*/) pt; 879 { 880 Location end = lastTokenEnd; 881 if (end < parseStart) 882 end = parseStart; 883 884 pt = creator.createParseTree!(64)(parseStart, end, stack1); 885 } 886 return ParseStackElem!(Location, NonterminalType!(47/*ProductionAnnotation+*/))(parseStart, pt); 887 } 888 889 auto reduce65/*ProductionAnnotation+ @array = ProductionAnnotation+ ProductionAnnotation [virtual]*/(Location parseStart, ParseStackElem!(Location, NonterminalType!47) stack2, ParseStackElem!(Location, NonterminalType!17) stack1) 890 { 891 NonterminalType!(47/*ProductionAnnotation+*/) pt; 892 { 893 Location end = lastTokenEnd; 894 if (end < parseStart) 895 end = parseStart; 896 897 pt = creator.createParseTree!(65)(parseStart, end, stack2, stack1); 898 } 899 return ParseStackElem!(Location, NonterminalType!(47/*ProductionAnnotation+*/))(parseStart, pt); 900 } 901 902 auto reduce68_Concatenation/*Concatenation = TokenMinus TokenMinus+ @regArray @regArray_ProductionAnnotation**/(Location parseStart, ParseStackElem!(Location, NonterminalType!18) stack3, ParseStackElem!(Location, NonterminalType!46) stack2, ParseStackElem!(Location, NonterminalType!48) stack1) 903 { 904 NonterminalType!(16/*Concatenation*/) pt; 905 { 906 Location end = lastTokenEnd; 907 if (end < parseStart) 908 end = parseStart; 909 910 pt = creator.createParseTree!(68)(parseStart, end, stack3, stack2, stack1); 911 } 912 return ParseStackElem!(Location, NonterminalType!(16/*Concatenation*/))(parseStart, pt); 913 } 914 915 auto reduce71_Concatenation/*Concatenation = TokenMinus @regArray @regArray_ProductionAnnotation+*/(Location parseStart, ParseStackElem!(Location, NonterminalType!18) stack2, ParseStackElem!(Location, NonterminalType!49) stack1) 916 { 917 NonterminalType!(16/*Concatenation*/) pt; 918 { 919 Location end = lastTokenEnd; 920 if (end < parseStart) 921 end = parseStart; 922 923 pt = creator.createParseTree!(71)(parseStart, end, stack2, stack1); 924 } 925 return ParseStackElem!(Location, NonterminalType!(16/*Concatenation*/))(parseStart, pt); 926 } 927 928 auto reduce72_Concatenation/*Concatenation = @regArray @regArray_ProductionAnnotation+*/(Location parseStart, ParseStackElem!(Location, NonterminalType!49) stack1) 929 { 930 NonterminalType!(16/*Concatenation*/) pt; 931 { 932 Location end = lastTokenEnd; 933 if (end < parseStart) 934 end = parseStart; 935 936 pt = creator.createParseTree!(72)(parseStart, end, stack1); 937 } 938 return ParseStackElem!(Location, NonterminalType!(16/*Concatenation*/))(parseStart, pt); 939 } 940 941 auto reduce73_ProductionAnnotation/*ProductionAnnotation @directUnwrap = <Annotation*/(Location parseStart, ParseStackElem!(Location, NonterminalType!10) stack1) 942 { 943 NonterminalType!(17/*ProductionAnnotation*/) pt; 944 pt = stack1.val; 945 parseStart = stack1.start; 946 return ParseStackElem!(Location, NonterminalType!(17/*ProductionAnnotation*/))(parseStart, pt); 947 } 948 949 auto reduce74_ProductionAnnotation/*ProductionAnnotation @directUnwrap = <NegativeLookahead*/(Location parseStart, ParseStackElem!(Location, NonterminalType!13) stack1) 950 { 951 NonterminalType!(17/*ProductionAnnotation*/) pt; 952 pt = stack1.val; 953 parseStart = stack1.start; 954 return ParseStackElem!(Location, NonterminalType!(17/*ProductionAnnotation*/))(parseStart, pt); 955 } 956 957 auto reduce75_TokenMinus/*TokenMinus = <AnnotatedExpression*/(Location parseStart, ParseStackElem!(Location, NonterminalType!19) stack1) 958 { 959 NonterminalType!(18/*TokenMinus*/) pt; 960 pt = stack1.val; 961 parseStart = stack1.start; 962 return ParseStackElem!(Location, NonterminalType!(18/*TokenMinus*/))(parseStart, pt); 963 } 964 965 auto reduce76_TokenMinus/*TokenMinus = TokenMinus "-" AnnotatedExpression*/(Location parseStart, ParseStackElem!(Location, NonterminalType!18) stack3, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!19) stack1) 966 { 967 NonterminalType!(18/*TokenMinus*/) pt; 968 { 969 Location end = lastTokenEnd; 970 if (end < parseStart) 971 end = parseStart; 972 973 pt = creator.createParseTree!(76)(parseStart, end, stack3, stack2, stack1); 974 } 975 return ParseStackElem!(Location, NonterminalType!(18/*TokenMinus*/))(parseStart, pt); 976 } 977 978 auto reduce77/*ExpressionAnnotation+ @array = ExpressionAnnotation [virtual]*/(Location parseStart, ParseStackElem!(Location, NonterminalType!20) stack1) 979 { 980 NonterminalType!(50/*ExpressionAnnotation+*/) pt; 981 { 982 Location end = lastTokenEnd; 983 if (end < parseStart) 984 end = parseStart; 985 986 pt = creator.createParseTree!(77)(parseStart, end, stack1); 987 } 988 return ParseStackElem!(Location, NonterminalType!(50/*ExpressionAnnotation+*/))(parseStart, pt); 989 } 990 991 auto reduce78/*ExpressionAnnotation+ @array = ExpressionAnnotation+ ExpressionAnnotation [virtual]*/(Location parseStart, ParseStackElem!(Location, NonterminalType!50) stack2, ParseStackElem!(Location, NonterminalType!20) stack1) 992 { 993 NonterminalType!(50/*ExpressionAnnotation+*/) pt; 994 { 995 Location end = lastTokenEnd; 996 if (end < parseStart) 997 end = parseStart; 998 999 pt = creator.createParseTree!(78)(parseStart, end, stack2, stack1); 1000 } 1001 return ParseStackElem!(Location, NonterminalType!(50/*ExpressionAnnotation+*/))(parseStart, pt); 1002 } 1003 1004 auto reduce81/*ExpressionName? = <ExpressionName [virtual]*/(Location parseStart, ParseStackElem!(Location, NonterminalType!21) stack1) 1005 { 1006 NonterminalType!(52/*ExpressionName?*/) pt; 1007 pt = stack1.val; 1008 parseStart = stack1.start; 1009 return ParseStackElem!(Location, NonterminalType!(52/*ExpressionName?*/))(parseStart, pt); 1010 } 1011 1012 auto reduce82/*ExpressionName? = [virtual]*/() 1013 { 1014 Location parseStart = lastTokenEnd; 1015 NonterminalType!(52/*ExpressionName?*/) pt; 1016 pt = typeof(pt).init; 1017 return ParseStackElem!(Location, NonterminalType!(52/*ExpressionName?*/))(parseStart, pt); 1018 } 1019 1020 auto reduce83/*ExpressionPrefix+ @array = ExpressionPrefix [virtual]*/(Location parseStart, ParseStackElem!(Location, NonterminalType!22) stack1) 1021 { 1022 NonterminalType!(53/*ExpressionPrefix+*/) pt; 1023 { 1024 Location end = lastTokenEnd; 1025 if (end < parseStart) 1026 end = parseStart; 1027 1028 pt = creator.createParseTree!(83)(parseStart, end, stack1); 1029 } 1030 return ParseStackElem!(Location, NonterminalType!(53/*ExpressionPrefix+*/))(parseStart, pt); 1031 } 1032 1033 auto reduce84/*ExpressionPrefix+ @array = ExpressionPrefix+ ExpressionPrefix [virtual]*/(Location parseStart, ParseStackElem!(Location, NonterminalType!53) stack2, ParseStackElem!(Location, NonterminalType!22) stack1) 1034 { 1035 NonterminalType!(53/*ExpressionPrefix+*/) pt; 1036 { 1037 Location end = lastTokenEnd; 1038 if (end < parseStart) 1039 end = parseStart; 1040 1041 pt = creator.createParseTree!(84)(parseStart, end, stack2, stack1); 1042 } 1043 return ParseStackElem!(Location, NonterminalType!(53/*ExpressionPrefix+*/))(parseStart, pt); 1044 } 1045 1046 auto reduce85/*ExpressionPrefix* @array = [virtual]*/() 1047 { 1048 Location parseStart = lastTokenEnd; 1049 NonterminalType!(54/*ExpressionPrefix**/) pt; 1050 pt = typeof(pt).init; 1051 return ParseStackElem!(Location, NonterminalType!(54/*ExpressionPrefix**/))(parseStart, pt); 1052 } 1053 1054 auto reduce86/*ExpressionPrefix* @array = ExpressionPrefix+ [virtual]*/(Location parseStart, ParseStackElem!(Location, NonterminalType!53) stack1) 1055 { 1056 NonterminalType!(54/*ExpressionPrefix**/) pt; 1057 { 1058 Location end = lastTokenEnd; 1059 if (end < parseStart) 1060 end = parseStart; 1061 1062 pt = creator.createParseTree!(86)(parseStart, end, stack1); 1063 } 1064 return ParseStackElem!(Location, NonterminalType!(54/*ExpressionPrefix**/))(parseStart, pt); 1065 } 1066 1067 auto reduce87_AnnotatedExpression/*AnnotatedExpression = @regArray @regArray_ExpressionAnnotation* ExpressionName? ExpressionPrefix* PostfixExpression*/(Location parseStart, ParseStackElem!(Location, NonterminalType!51) stack4, ParseStackElem!(Location, NonterminalType!52) stack3, ParseStackElem!(Location, NonterminalType!54) stack2, ParseStackElem!(Location, NonterminalType!23) stack1) 1068 { 1069 NonterminalType!(19/*AnnotatedExpression*/) pt; 1070 { 1071 Location end = lastTokenEnd; 1072 if (end < parseStart) 1073 end = parseStart; 1074 1075 pt = creator.createParseTree!(87)(parseStart, end, stack4, stack3, stack2, stack1); 1076 } 1077 return ParseStackElem!(Location, NonterminalType!(19/*AnnotatedExpression*/))(parseStart, pt); 1078 } 1079 1080 auto reduce88_ExpressionAnnotation/*ExpressionAnnotation @directUnwrap = <Annotation*/(Location parseStart, ParseStackElem!(Location, NonterminalType!10) stack1) 1081 { 1082 NonterminalType!(20/*ExpressionAnnotation*/) pt; 1083 pt = stack1.val; 1084 parseStart = stack1.start; 1085 return ParseStackElem!(Location, NonterminalType!(20/*ExpressionAnnotation*/))(parseStart, pt); 1086 } 1087 1088 auto reduce89_ExpressionAnnotation/*ExpressionAnnotation @directUnwrap = <NegativeLookahead*/(Location parseStart, ParseStackElem!(Location, NonterminalType!13) stack1) 1089 { 1090 NonterminalType!(20/*ExpressionAnnotation*/) pt; 1091 pt = stack1.val; 1092 parseStart = stack1.start; 1093 return ParseStackElem!(Location, NonterminalType!(20/*ExpressionAnnotation*/))(parseStart, pt); 1094 } 1095 1096 auto reduce90_ExpressionName/*ExpressionName = Identifier ":"*/(Location parseStart, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, Token) stack1) 1097 { 1098 NonterminalType!(21/*ExpressionName*/) pt; 1099 { 1100 Location end = lastTokenEnd; 1101 if (end < parseStart) 1102 end = parseStart; 1103 1104 pt = creator.createParseTree!(90)(parseStart, end, stack2, stack1); 1105 } 1106 return ParseStackElem!(Location, NonterminalType!(21/*ExpressionName*/))(parseStart, pt); 1107 } 1108 1109 auto reduce91_ExpressionPrefix/*ExpressionPrefix = "<"*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 1110 { 1111 NonterminalType!(22/*ExpressionPrefix*/) pt; 1112 { 1113 Location end = lastTokenEnd; 1114 if (end < parseStart) 1115 end = parseStart; 1116 1117 pt = creator.createParseTree!(91)(parseStart, end, stack1); 1118 } 1119 return ParseStackElem!(Location, NonterminalType!(22/*ExpressionPrefix*/))(parseStart, pt); 1120 } 1121 1122 auto reduce92_ExpressionPrefix/*ExpressionPrefix = "^"*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 1123 { 1124 NonterminalType!(22/*ExpressionPrefix*/) pt; 1125 { 1126 Location end = lastTokenEnd; 1127 if (end < parseStart) 1128 end = parseStart; 1129 1130 pt = creator.createParseTree!(92)(parseStart, end, stack1); 1131 } 1132 return ParseStackElem!(Location, NonterminalType!(22/*ExpressionPrefix*/))(parseStart, pt); 1133 } 1134 1135 auto reduce93_PostfixExpression/*PostfixExpression = <Optional*/(Location parseStart, ParseStackElem!(Location, NonterminalType!24) stack1) 1136 { 1137 NonterminalType!(23/*PostfixExpression*/) pt; 1138 pt = stack1.val; 1139 parseStart = stack1.start; 1140 return ParseStackElem!(Location, NonterminalType!(23/*PostfixExpression*/))(parseStart, pt); 1141 } 1142 1143 auto reduce94_PostfixExpression/*PostfixExpression = <Repetition*/(Location parseStart, ParseStackElem!(Location, NonterminalType!25) stack1) 1144 { 1145 NonterminalType!(23/*PostfixExpression*/) pt; 1146 pt = stack1.val; 1147 parseStart = stack1.start; 1148 return ParseStackElem!(Location, NonterminalType!(23/*PostfixExpression*/))(parseStart, pt); 1149 } 1150 1151 auto reduce95_PostfixExpression/*PostfixExpression = <RepetitionPlus*/(Location parseStart, ParseStackElem!(Location, NonterminalType!26) stack1) 1152 { 1153 NonterminalType!(23/*PostfixExpression*/) pt; 1154 pt = stack1.val; 1155 parseStart = stack1.start; 1156 return ParseStackElem!(Location, NonterminalType!(23/*PostfixExpression*/))(parseStart, pt); 1157 } 1158 1159 auto reduce96_PostfixExpression/*PostfixExpression = <AtomExpression*/(Location parseStart, ParseStackElem!(Location, NonterminalType!27) stack1) 1160 { 1161 NonterminalType!(23/*PostfixExpression*/) pt; 1162 pt = stack1.val; 1163 parseStart = stack1.start; 1164 return ParseStackElem!(Location, NonterminalType!(23/*PostfixExpression*/))(parseStart, pt); 1165 } 1166 1167 auto reduce97_Optional/*Optional = PostfixExpression "?"*/(Location parseStart, ParseStackElem!(Location, NonterminalType!23) stack2, ParseStackElem!(Location, Token) stack1) 1168 { 1169 NonterminalType!(24/*Optional*/) pt; 1170 { 1171 Location end = lastTokenEnd; 1172 if (end < parseStart) 1173 end = parseStart; 1174 1175 pt = creator.createParseTree!(97)(parseStart, end, stack2, stack1); 1176 } 1177 return ParseStackElem!(Location, NonterminalType!(24/*Optional*/))(parseStart, pt); 1178 } 1179 1180 auto reduce98_Repetition/*Repetition = PostfixExpression "*"*/(Location parseStart, ParseStackElem!(Location, NonterminalType!23) stack2, ParseStackElem!(Location, Token) stack1) 1181 { 1182 NonterminalType!(25/*Repetition*/) pt; 1183 { 1184 Location end = lastTokenEnd; 1185 if (end < parseStart) 1186 end = parseStart; 1187 1188 pt = creator.createParseTree!(98)(parseStart, end, stack2, stack1); 1189 } 1190 return ParseStackElem!(Location, NonterminalType!(25/*Repetition*/))(parseStart, pt); 1191 } 1192 1193 auto reduce99_RepetitionPlus/*RepetitionPlus = PostfixExpression "+"*/(Location parseStart, ParseStackElem!(Location, NonterminalType!23) stack2, ParseStackElem!(Location, Token) stack1) 1194 { 1195 NonterminalType!(26/*RepetitionPlus*/) pt; 1196 { 1197 Location end = lastTokenEnd; 1198 if (end < parseStart) 1199 end = parseStart; 1200 1201 pt = creator.createParseTree!(99)(parseStart, end, stack2, stack1); 1202 } 1203 return ParseStackElem!(Location, NonterminalType!(26/*RepetitionPlus*/))(parseStart, pt); 1204 } 1205 1206 auto reduce100_AtomExpression/*AtomExpression = <Symbol*/(Location parseStart, ParseStackElem!(Location, NonterminalType!28) stack1) 1207 { 1208 NonterminalType!(27/*AtomExpression*/) pt; 1209 pt = stack1.val; 1210 parseStart = stack1.start; 1211 return ParseStackElem!(Location, NonterminalType!(27/*AtomExpression*/))(parseStart, pt); 1212 } 1213 1214 auto reduce101_AtomExpression/*AtomExpression = <ParenExpression*/(Location parseStart, ParseStackElem!(Location, NonterminalType!34) stack1) 1215 { 1216 NonterminalType!(27/*AtomExpression*/) pt; 1217 pt = stack1.val; 1218 parseStart = stack1.start; 1219 return ParseStackElem!(Location, NonterminalType!(27/*AtomExpression*/))(parseStart, pt); 1220 } 1221 1222 auto reduce102_AtomExpression/*AtomExpression = <SubToken*/(Location parseStart, ParseStackElem!(Location, NonterminalType!32) stack1) 1223 { 1224 NonterminalType!(27/*AtomExpression*/) pt; 1225 pt = stack1.val; 1226 parseStart = stack1.start; 1227 return ParseStackElem!(Location, NonterminalType!(27/*AtomExpression*/))(parseStart, pt); 1228 } 1229 1230 auto reduce103_AtomExpression/*AtomExpression = <UnpackVariadicList*/(Location parseStart, ParseStackElem!(Location, NonterminalType!31) stack1) 1231 { 1232 NonterminalType!(27/*AtomExpression*/) pt; 1233 pt = stack1.val; 1234 parseStart = stack1.start; 1235 return ParseStackElem!(Location, NonterminalType!(27/*AtomExpression*/))(parseStart, pt); 1236 } 1237 1238 auto reduce104_AtomExpression/*AtomExpression = <Tuple*/(Location parseStart, ParseStackElem!(Location, NonterminalType!36) stack1) 1239 { 1240 NonterminalType!(27/*AtomExpression*/) pt; 1241 pt = stack1.val; 1242 parseStart = stack1.start; 1243 return ParseStackElem!(Location, NonterminalType!(27/*AtomExpression*/))(parseStart, pt); 1244 } 1245 1246 auto reduce105_Symbol/*Symbol = <Name*/(Location parseStart, ParseStackElem!(Location, NonterminalType!29) stack1) 1247 { 1248 NonterminalType!(28/*Symbol*/) pt; 1249 pt = stack1.val; 1250 parseStart = stack1.start; 1251 return ParseStackElem!(Location, NonterminalType!(28/*Symbol*/))(parseStart, pt); 1252 } 1253 1254 auto reduce106_Symbol/*Symbol = <Token*/(Location parseStart, ParseStackElem!(Location, NonterminalType!30) stack1) 1255 { 1256 NonterminalType!(28/*Symbol*/) pt; 1257 pt = stack1.val; 1258 parseStart = stack1.start; 1259 return ParseStackElem!(Location, NonterminalType!(28/*Symbol*/))(parseStart, pt); 1260 } 1261 1262 auto reduce107_Symbol/*Symbol = <MacroInstance*/(Location parseStart, ParseStackElem!(Location, NonterminalType!33) stack1) 1263 { 1264 NonterminalType!(28/*Symbol*/) pt; 1265 pt = stack1.val; 1266 parseStart = stack1.start; 1267 return ParseStackElem!(Location, NonterminalType!(28/*Symbol*/))(parseStart, pt); 1268 } 1269 1270 auto reduce108_Name/*Name = Identifier*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 1271 { 1272 NonterminalType!(29/*Name*/) pt; 1273 { 1274 Location end = lastTokenEnd; 1275 if (end < parseStart) 1276 end = parseStart; 1277 1278 pt = creator.createParseTree!(108)(parseStart, end, stack1); 1279 } 1280 return ParseStackElem!(Location, NonterminalType!(29/*Name*/))(parseStart, pt); 1281 } 1282 1283 auto reduce109_Token/*Token = StringLiteral*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 1284 { 1285 NonterminalType!(30/*Token*/) pt; 1286 { 1287 Location end = lastTokenEnd; 1288 if (end < parseStart) 1289 end = parseStart; 1290 1291 pt = creator.createParseTree!(109)(parseStart, end, stack1); 1292 } 1293 return ParseStackElem!(Location, NonterminalType!(30/*Token*/))(parseStart, pt); 1294 } 1295 1296 auto reduce110_Token/*Token = CharacterSetLiteral*/(Location parseStart, ParseStackElem!(Location, Token) stack1) 1297 { 1298 NonterminalType!(30/*Token*/) pt; 1299 { 1300 Location end = lastTokenEnd; 1301 if (end < parseStart) 1302 end = parseStart; 1303 1304 pt = creator.createParseTree!(110)(parseStart, end, stack1); 1305 } 1306 return ParseStackElem!(Location, NonterminalType!(30/*Token*/))(parseStart, pt); 1307 } 1308 1309 auto reduce111_UnpackVariadicList/*UnpackVariadicList = Identifier "..."*/(Location parseStart, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, Token) stack1) 1310 { 1311 NonterminalType!(31/*UnpackVariadicList*/) pt; 1312 { 1313 Location end = lastTokenEnd; 1314 if (end < parseStart) 1315 end = parseStart; 1316 1317 pt = creator.createParseTree!(111)(parseStart, end, stack2, stack1); 1318 } 1319 return ParseStackElem!(Location, NonterminalType!(31/*UnpackVariadicList*/))(parseStart, pt); 1320 } 1321 1322 auto reduce112_SubToken/*SubToken = Symbol ">>" Symbol*/(Location parseStart, ParseStackElem!(Location, NonterminalType!28) stack3, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!28) stack1) 1323 { 1324 NonterminalType!(32/*SubToken*/) pt; 1325 { 1326 Location end = lastTokenEnd; 1327 if (end < parseStart) 1328 end = parseStart; 1329 1330 pt = creator.createParseTree!(112)(parseStart, end, stack3, stack2, stack1); 1331 } 1332 return ParseStackElem!(Location, NonterminalType!(32/*SubToken*/))(parseStart, pt); 1333 } 1334 1335 auto reduce113_SubToken/*SubToken = Symbol ">>" ParenExpression*/(Location parseStart, ParseStackElem!(Location, NonterminalType!28) stack3, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!34) stack1) 1336 { 1337 NonterminalType!(32/*SubToken*/) pt; 1338 { 1339 Location end = lastTokenEnd; 1340 if (end < parseStart) 1341 end = parseStart; 1342 1343 pt = creator.createParseTree!(113)(parseStart, end, stack3, stack2, stack1); 1344 } 1345 return ParseStackElem!(Location, NonterminalType!(32/*SubToken*/))(parseStart, pt); 1346 } 1347 1348 auto reduce114/*ExpressionList? = <ExpressionList [virtual]*/(Location parseStart, ParseStackElem!(Location, NonterminalType!35) stack1) 1349 { 1350 NonterminalType!(55/*ExpressionList?*/) pt; 1351 pt = stack1.val; 1352 parseStart = stack1.start; 1353 return ParseStackElem!(Location, NonterminalType!(55/*ExpressionList?*/))(parseStart, pt); 1354 } 1355 1356 auto reduce115/*ExpressionList? = [virtual]*/() 1357 { 1358 Location parseStart = lastTokenEnd; 1359 NonterminalType!(55/*ExpressionList?*/) pt; 1360 pt = typeof(pt).init; 1361 return ParseStackElem!(Location, NonterminalType!(55/*ExpressionList?*/))(parseStart, pt); 1362 } 1363 1364 auto reduce116_MacroInstance/*MacroInstance = Identifier "(" ExpressionList? ")"*/(Location parseStart, ParseStackElem!(Location, Token) stack4, ParseStackElem!(Location, Token) stack3, ParseStackElem!(Location, NonterminalType!55) stack2, ParseStackElem!(Location, Token) stack1) 1365 { 1366 NonterminalType!(33/*MacroInstance*/) pt; 1367 { 1368 Location end = lastTokenEnd; 1369 if (end < parseStart) 1370 end = parseStart; 1371 1372 pt = creator.createParseTree!(116)(parseStart, end, stack4, stack3, stack2, stack1); 1373 } 1374 return ParseStackElem!(Location, NonterminalType!(33/*MacroInstance*/))(parseStart, pt); 1375 } 1376 1377 auto reduce117_ParenExpression/*ParenExpression = "{" Expression "}"*/(Location parseStart, ParseStackElem!(Location, Token) stack3, ParseStackElem!(Location, NonterminalType!14) stack2, ParseStackElem!(Location, Token) stack1) 1378 { 1379 NonterminalType!(34/*ParenExpression*/) pt; 1380 { 1381 Location end = lastTokenEnd; 1382 if (end < parseStart) 1383 end = parseStart; 1384 1385 pt = creator.createParseTree!(117)(parseStart, end, stack3, stack2, stack1); 1386 } 1387 return ParseStackElem!(Location, NonterminalType!(34/*ParenExpression*/))(parseStart, pt); 1388 } 1389 1390 auto reduce118_ExpressionList/*ExpressionList @array = Expression*/(Location parseStart, ParseStackElem!(Location, NonterminalType!14) stack1) 1391 { 1392 NonterminalType!(35/*ExpressionList*/) pt; 1393 { 1394 Location end = lastTokenEnd; 1395 if (end < parseStart) 1396 end = parseStart; 1397 1398 pt = creator.createParseTree!(118)(parseStart, end, stack1); 1399 } 1400 return ParseStackElem!(Location, NonterminalType!(35/*ExpressionList*/))(parseStart, pt); 1401 } 1402 1403 auto reduce119_ExpressionList/*ExpressionList @array = ExpressionList "," Expression*/(Location parseStart, ParseStackElem!(Location, NonterminalType!35) stack3, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!14) stack1) 1404 { 1405 NonterminalType!(35/*ExpressionList*/) pt; 1406 { 1407 Location end = lastTokenEnd; 1408 if (end < parseStart) 1409 end = parseStart; 1410 1411 pt = creator.createParseTree!(119)(parseStart, end, stack3, stack2, stack1); 1412 } 1413 return ParseStackElem!(Location, NonterminalType!(35/*ExpressionList*/))(parseStart, pt); 1414 } 1415 1416 auto reduce120_Tuple/*Tuple = "t(" ExpressionList? ")"*/(Location parseStart, ParseStackElem!(Location, Token) stack3, ParseStackElem!(Location, NonterminalType!55) stack2, ParseStackElem!(Location, Token) stack1) 1417 { 1418 NonterminalType!(36/*Tuple*/) pt; 1419 { 1420 Location end = lastTokenEnd; 1421 if (end < parseStart) 1422 end = parseStart; 1423 1424 pt = creator.createParseTree!(120)(parseStart, end, stack3, stack2, stack1); 1425 } 1426 return ParseStackElem!(Location, NonterminalType!(36/*Tuple*/))(parseStart, pt); 1427 } 1428 1429 auto reduce121/*$regarray_1 @array @directUnwrap = @inheritAnyTag $regarray_1 $regarrayedge_1_1*/(Location parseStart, ParseStackElem!(Location, NonterminalType!57) stack2, ParseStackElem!(Location, NonterminalType!59) stack1) 1430 { 1431 NonterminalType!(57/*$regarray_1*/) pt; 1432 { 1433 Location end = lastTokenEnd; 1434 if (end < parseStart) 1435 end = parseStart; 1436 1437 pt = creator.createParseTree!(121)(parseStart, end, stack2, stack1); 1438 } 1439 return ParseStackElem!(Location, NonterminalType!(57/*$regarray_1*/))(parseStart, pt); 1440 } 1441 1442 auto reduce122/*$regarrayedge_0_1 @directUnwrap = @excludeDirectUnwrap <Annotation*/(Location parseStart, ParseStackElem!(Location, NonterminalType!10) stack1) 1443 { 1444 NonterminalType!(58/*$regarrayedge_0_1*/) pt; 1445 pt = stack1.val; 1446 parseStart = stack1.start; 1447 return ParseStackElem!(Location, NonterminalType!(58/*$regarrayedge_0_1*/))(parseStart, pt); 1448 } 1449 1450 auto reduce123/*$regarrayedge_0_1 @directUnwrap = @excludeDirectUnwrap <NegativeLookahead*/(Location parseStart, ParseStackElem!(Location, NonterminalType!13) stack1) 1451 { 1452 NonterminalType!(58/*$regarrayedge_0_1*/) pt; 1453 pt = stack1.val; 1454 parseStart = stack1.start; 1455 return ParseStackElem!(Location, NonterminalType!(58/*$regarrayedge_0_1*/))(parseStart, pt); 1456 } 1457 1458 auto reduce124/*$regarrayedge_1_1 @directUnwrap = @excludeDirectUnwrap <Annotation*/(Location parseStart, ParseStackElem!(Location, NonterminalType!10) stack1) 1459 { 1460 NonterminalType!(59/*$regarrayedge_1_1*/) pt; 1461 pt = stack1.val; 1462 parseStart = stack1.start; 1463 return ParseStackElem!(Location, NonterminalType!(59/*$regarrayedge_1_1*/))(parseStart, pt); 1464 } 1465 1466 auto reduce125/*$regarrayedge_1_1 @directUnwrap = @excludeDirectUnwrap <NegativeLookahead*/(Location parseStart, ParseStackElem!(Location, NonterminalType!13) stack1) 1467 { 1468 NonterminalType!(59/*$regarrayedge_1_1*/) pt; 1469 pt = stack1.val; 1470 parseStart = stack1.start; 1471 return ParseStackElem!(Location, NonterminalType!(59/*$regarrayedge_1_1*/))(parseStart, pt); 1472 } 1473 1474 auto reduce126/*$regarray_1 @array @directUnwrap = @inheritAnyTag $regarrayedge_0_1*/(Location parseStart, ParseStackElem!(Location, NonterminalType!58) stack1) 1475 { 1476 NonterminalType!(57/*$regarray_1*/) pt; 1477 { 1478 Location end = lastTokenEnd; 1479 if (end < parseStart) 1480 end = parseStart; 1481 1482 pt = creator.createParseTree!(126)(parseStart, end, stack1); 1483 } 1484 return ParseStackElem!(Location, NonterminalType!(57/*$regarray_1*/))(parseStart, pt); 1485 } 1486 1487 auto reduce127/*@regArray_ExpressionAnnotation* @array @directUnwrap @regArray =*/() 1488 { 1489 Location parseStart = lastTokenEnd; 1490 NonterminalType!(51/*@regArray_ExpressionAnnotation**/) pt; 1491 { 1492 Location end = lastTokenEnd; 1493 if (end < parseStart) 1494 end = parseStart; 1495 1496 pt = creator.createParseTree!(127)(parseStart, end); 1497 } 1498 return ParseStackElem!(Location, NonterminalType!(51/*@regArray_ExpressionAnnotation**/))(parseStart, pt); 1499 } 1500 1501 auto reduce128/*@regArray_ProductionAnnotation* @array @directUnwrap @regArray =*/() 1502 { 1503 Location parseStart = lastTokenEnd; 1504 NonterminalType!(48/*@regArray_ProductionAnnotation**/) pt; 1505 { 1506 Location end = lastTokenEnd; 1507 if (end < parseStart) 1508 end = parseStart; 1509 1510 pt = creator.createParseTree!(128)(parseStart, end); 1511 } 1512 return ParseStackElem!(Location, NonterminalType!(48/*@regArray_ProductionAnnotation**/))(parseStart, pt); 1513 } 1514 1515 auto reduce129/*@regArray_ExpressionAnnotation* @array @directUnwrap @regArray = @inheritAnyTag <$regarray_1*/(Location parseStart, ParseStackElem!(Location, NonterminalType!57) stack1) 1516 { 1517 NonterminalType!(51/*@regArray_ExpressionAnnotation**/) pt; 1518 pt = stack1.val; 1519 parseStart = stack1.start; 1520 return ParseStackElem!(Location, NonterminalType!(51/*@regArray_ExpressionAnnotation**/))(parseStart, pt); 1521 } 1522 1523 auto reduce130/*@regArray_ProductionAnnotation* @array @directUnwrap @regArray = @inheritAnyTag <$regarray_1*/(Location parseStart, ParseStackElem!(Location, NonterminalType!57) stack1) 1524 { 1525 NonterminalType!(48/*@regArray_ProductionAnnotation**/) pt; 1526 pt = stack1.val; 1527 parseStart = stack1.start; 1528 return ParseStackElem!(Location, NonterminalType!(48/*@regArray_ProductionAnnotation**/))(parseStart, pt); 1529 } 1530 1531 auto reduce131/*@regArray_ProductionAnnotation+ @array @directUnwrap @regArray = @inheritAnyTag <$regarray_1*/(Location parseStart, ParseStackElem!(Location, NonterminalType!57) stack1) 1532 { 1533 NonterminalType!(49/*@regArray_ProductionAnnotation+*/) pt; 1534 pt = stack1.val; 1535 parseStart = stack1.start; 1536 return ParseStackElem!(Location, NonterminalType!(49/*@regArray_ProductionAnnotation+*/))(parseStart, pt); 1537 } 1538 1539 // path: EBNF 1540 // type: unknown 1541 // EBNF -> .EBNF {$end} startElement 1542 // EBNF -> .Declaration+ {$end} 1543 // Declaration -> .SymbolDeclaration {$end, Identifier, "fragment", "token", "option", "import", "match"} 1544 // Declaration -> .OptionDeclaration {$end, Identifier, "fragment", "token", "option", "import", "match"} 1545 // Declaration -> .Import {$end, Identifier, "fragment", "token", "option", "import", "match"} 1546 // Declaration -> .MatchDeclaration {$end, Identifier, "fragment", "token", "option", "import", "match"} 1547 // SymbolDeclaration -> .DeclarationType? Identifier MacroParametersPart? Annotation* ";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 1548 // SymbolDeclaration -> .DeclarationType? Identifier MacroParametersPart? Annotation* "=" Expression ";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 1549 // DeclarationType -> ."fragment" {Identifier} 1550 // DeclarationType -> ."token" {Identifier} 1551 // OptionDeclaration -> ."option" Identifier "=" IntegerLiteral ";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 1552 // Import -> ."import" StringLiteral ";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 1553 // MatchDeclaration -> ."match" Symbol Symbol ";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 1554 // Declaration+ -> .Declaration {$end, Identifier, "fragment", "token", "option", "import", "match"} 1555 // Declaration+ -> .Declaration+ Declaration {$end, Identifier, "fragment", "token", "option", "import", "match"} 1556 // DeclarationType? -> . {Identifier} 1557 // DeclarationType? ---> DeclarationType 1558 int parseEBNF/*0*/(ref NonterminalType!(0) result, ref Location resultLocation) 1559 { 1560 alias ThisParseResult = typeof(result); 1561 alias ParseResultIn = CreatorInstance.NonterminalUnion!([0, 1, 2, 3, 7, 8, 9, 37, 38]); 1562 ParseResultIn currentResult; 1563 Location currentResultLocation; 1564 int gotoParent = -1; 1565 Location currentStart = lexer.front.currentLocation; 1566 if (lexer.empty) 1567 { 1568 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 1569 return -1; 1570 } 1571 else if (lexer.front.symbol == Lexer.tokenID!q{"fragment"}) 1572 { 1573 auto next = popToken(); 1574 NonterminalType!(3) r; 1575 Location rl; 1576 gotoParent = parse124(r, rl, currentStart, next); 1577 if (gotoParent < 0) 1578 return gotoParent; 1579 currentResult = ParseResultIn.create(3/*DeclarationType*/, r); 1580 currentResultLocation = rl; 1581 } 1582 else if (lexer.front.symbol == Lexer.tokenID!q{"token"}) 1583 { 1584 auto next = popToken(); 1585 NonterminalType!(3) r; 1586 Location rl; 1587 gotoParent = parse126(r, rl, currentStart, next); 1588 if (gotoParent < 0) 1589 return gotoParent; 1590 currentResult = ParseResultIn.create(3/*DeclarationType*/, r); 1591 currentResultLocation = rl; 1592 } 1593 else if (lexer.front.symbol == Lexer.tokenID!q{"option"}) 1594 { 1595 auto next = popToken(); 1596 NonterminalType!(7) r; 1597 Location rl; 1598 gotoParent = parse128(r, rl, currentStart/*, next*/); 1599 if (gotoParent < 0) 1600 return gotoParent; 1601 currentResult = ParseResultIn.create(7/*OptionDeclaration*/, r); 1602 currentResultLocation = rl; 1603 } 1604 else if (lexer.front.symbol == Lexer.tokenID!q{"import"}) 1605 { 1606 auto next = popToken(); 1607 NonterminalType!(8) r; 1608 Location rl; 1609 gotoParent = parse133(r, rl, currentStart, next); 1610 if (gotoParent < 0) 1611 return gotoParent; 1612 currentResult = ParseResultIn.create(8/*Import*/, r); 1613 currentResultLocation = rl; 1614 } 1615 else if (lexer.front.symbol == Lexer.tokenID!q{"match"}) 1616 { 1617 auto next = popToken(); 1618 NonterminalType!(9) r; 1619 Location rl; 1620 gotoParent = parse136(r, rl, currentStart, next); 1621 if (gotoParent < 0) 1622 return gotoParent; 1623 currentResult = ParseResultIn.create(9/*MatchDeclaration*/, r); 1624 currentResultLocation = rl; 1625 } 1626 else 1627 { 1628 auto tmp = reduce8/*DeclarationType? = [virtual]*/(); 1629 currentResult = ParseResultIn.create(38/*DeclarationType?*/, tmp.val); 1630 currentResultLocation = tmp.start; 1631 gotoParent = 0; 1632 } 1633 1634 while (gotoParent == 0) 1635 { 1636 if (currentResult.nonterminalID == 0/*EBNF*/) 1637 { 1638 auto next = ParseStackElem!(Location, NonterminalType!0/*EBNF*/)(currentResultLocation, currentResult.get!(0/*EBNF*/)()); 1639 NonterminalType!(0) r; 1640 Location rl; 1641 gotoParent = parse1(r, rl, currentStart, next); 1642 if (gotoParent < 0) 1643 return gotoParent; 1644 assert(gotoParent > 0); 1645 auto tree = r; 1646 result = tree; 1647 resultLocation = rl; 1648 return 0; 1649 } 1650 else if (currentResult.nonterminalID == 1/*Declaration*/) 1651 { 1652 auto next = ParseStackElem!(Location, NonterminalType!1/*Declaration*/)(currentResultLocation, currentResult.get!(1/*Declaration*/)()); 1653 NonterminalType!(37) r; 1654 Location rl; 1655 gotoParent = parse2(r, rl, currentStart, next); 1656 if (gotoParent < 0) 1657 return gotoParent; 1658 currentResult = ParseResultIn.create(37/*Declaration+*/, r); 1659 currentResultLocation = rl; 1660 } 1661 else if (currentResult.nonterminalID == 2/*SymbolDeclaration*/) 1662 { 1663 currentResult = ParseResultIn.create(1/*Declaration*/, currentResult.get!(2/*SymbolDeclaration*/)); 1664 currentResultLocation = currentResultLocation; 1665 } 1666 else if (currentResult.nonterminalID == 3/*DeclarationType*/) 1667 { 1668 auto next = ParseStackElem!(Location, NonterminalType!38/*DeclarationType?*/)(currentResultLocation, currentResult.get!(3/*DeclarationType*/)()); 1669 NonterminalType!(2) r; 1670 Location rl; 1671 gotoParent = parse4(r, rl, currentStart, next); 1672 if (gotoParent < 0) 1673 return gotoParent; 1674 currentResult = ParseResultIn.create(2/*SymbolDeclaration*/, r); 1675 currentResultLocation = rl; 1676 } 1677 else if (currentResult.nonterminalID == 7/*OptionDeclaration*/) 1678 { 1679 currentResult = ParseResultIn.create(1/*Declaration*/, currentResult.get!(7/*OptionDeclaration*/)); 1680 currentResultLocation = currentResultLocation; 1681 } 1682 else if (currentResult.nonterminalID == 8/*Import*/) 1683 { 1684 currentResult = ParseResultIn.create(1/*Declaration*/, currentResult.get!(8/*Import*/)); 1685 currentResultLocation = currentResultLocation; 1686 } 1687 else if (currentResult.nonterminalID == 9/*MatchDeclaration*/) 1688 { 1689 currentResult = ParseResultIn.create(1/*Declaration*/, currentResult.get!(9/*MatchDeclaration*/)); 1690 currentResultLocation = currentResultLocation; 1691 } 1692 else if (currentResult.nonterminalID == 37/*Declaration+*/) 1693 { 1694 auto next = ParseStackElem!(Location, NonterminalType!37/*Declaration+*/)(currentResultLocation, currentResult.get!(37/*Declaration+*/)()); 1695 CreatorInstance.NonterminalUnion!([0, 37]) r; 1696 Location rl; 1697 gotoParent = parse140(r, rl, currentStart, next); 1698 if (gotoParent < 0) 1699 return gotoParent; 1700 currentResult = r; 1701 currentResultLocation = rl; 1702 } 1703 else if (currentResult.nonterminalID == 38/*DeclarationType?*/) 1704 { 1705 auto next = ParseStackElem!(Location, NonterminalType!38/*DeclarationType?*/)(currentResultLocation, currentResult.get!(38/*DeclarationType?*/)()); 1706 NonterminalType!(2) r; 1707 Location rl; 1708 gotoParent = parse4(r, rl, currentStart, next); 1709 if (gotoParent < 0) 1710 return gotoParent; 1711 currentResult = ParseResultIn.create(2/*SymbolDeclaration*/, r); 1712 currentResultLocation = rl; 1713 } 1714 else 1715 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 1716 } 1717 1718 auto tree = currentResult.get!(0); 1719 result = tree; 1720 resultLocation = currentResultLocation; 1721 return 0; 1722 } 1723 // path: EBNF EBNF 1724 // type: unknown 1725 // EBNF -> EBNF. {$end} startElement 1726 private int parse1(ref NonterminalType!(0) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, NonterminalType!0/*EBNF*/) stack1) 1727 { 1728 alias ThisParseResult = typeof(result); 1729 Location currentStart = lexer.front.currentLocation; 1730 { 1731 result = stack1.val; 1732 resultLocation = stack1.start; 1733 return 1; 1734 } 1735 } 1736 // path: EBNF Declaration 1737 // type: unknown 1738 // Declaration+ -> Declaration. {$end, Identifier, "fragment", "token", "option", "import", "match"} 1739 private int parse2(ref NonterminalType!(37) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, NonterminalType!1/*Declaration*/) stack1) 1740 { 1741 alias ThisParseResult = typeof(result); 1742 Location currentStart = lexer.front.currentLocation; 1743 { 1744 auto tmp = reduce0/*Declaration+ @array = Declaration [virtual]*/(parseStart1, stack1); 1745 result = tmp.val; 1746 resultLocation = tmp.start; 1747 return 0; 1748 } 1749 } 1750 // path: EBNF DeclarationType 1751 // type: unknown 1752 // SymbolDeclaration -> DeclarationType?.Identifier MacroParametersPart? Annotation* ";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 1753 // SymbolDeclaration -> DeclarationType?.Identifier MacroParametersPart? Annotation* "=" Expression ";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 1754 private int parse4(ref NonterminalType!(2) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, NonterminalType!38/*DeclarationType?*/) stack1) 1755 { 1756 alias ThisParseResult = typeof(result); 1757 alias ParseResultIn = CreatorInstance.NonterminalUnion!([2]); 1758 ParseResultIn currentResult; 1759 Location currentResultLocation; 1760 int gotoParent = -1; 1761 Location currentStart = lexer.front.currentLocation; 1762 if (lexer.empty) 1763 { 1764 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 1765 return -1; 1766 } 1767 else if (lexer.front.symbol == Lexer.tokenID!"Identifier") 1768 { 1769 auto next = popToken(); 1770 NonterminalType!(2) r; 1771 Location rl; 1772 gotoParent = parse5(r, rl, parseStart1, stack1, next); 1773 if (gotoParent < 0) 1774 return gotoParent; 1775 assert(gotoParent > 0); 1776 result = r; 1777 resultLocation = rl; 1778 return gotoParent - 1; 1779 } 1780 else 1781 { 1782 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 1783 lexer.front.currentLocation, lexer.front.currentTokenEnd); 1784 return -1; 1785 } 1786 } 1787 // path: EBNF DeclarationType Identifier 1788 // type: unknown 1789 // SymbolDeclaration -> DeclarationType? Identifier.MacroParametersPart? Annotation* ";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 1790 // SymbolDeclaration -> DeclarationType? Identifier.MacroParametersPart? Annotation* "=" Expression ";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 1791 // MacroParametersPart -> ."(" MacroParameters? ")" {";", "=", "@"} 1792 // MacroParametersPart? -> . {";", "=", "@"} 1793 // MacroParametersPart? ---> MacroParametersPart 1794 private int parse5(ref NonterminalType!(2) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, NonterminalType!38/*DeclarationType?*/) stack2, ParseStackElem!(Location, Token) stack1) 1795 { 1796 alias ThisParseResult = typeof(result); 1797 alias ParseResultIn = CreatorInstance.NonterminalUnion!([2, 4, 39]); 1798 ParseResultIn currentResult; 1799 Location currentResultLocation; 1800 int gotoParent = -1; 1801 Location currentStart = lexer.front.currentLocation; 1802 if (lexer.empty) 1803 { 1804 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 1805 return -1; 1806 } 1807 else if (lexer.front.symbol == Lexer.tokenID!q{"("}) 1808 { 1809 auto next = popToken(); 1810 NonterminalType!(4) r; 1811 Location rl; 1812 gotoParent = parse114(r, rl, currentStart, next); 1813 if (gotoParent < 0) 1814 return gotoParent; 1815 currentResult = ParseResultIn.create(4/*MacroParametersPart*/, r); 1816 currentResultLocation = rl; 1817 } 1818 else 1819 { 1820 auto tmp = reduce10/*MacroParametersPart? = [virtual]*/(); 1821 currentResult = ParseResultIn.create(39/*MacroParametersPart?*/, tmp.val); 1822 currentResultLocation = tmp.start; 1823 gotoParent = 0; 1824 } 1825 1826 while (gotoParent == 0) 1827 { 1828 if (currentResult.nonterminalID == 4/*MacroParametersPart*/) 1829 { 1830 auto next = ParseStackElem!(Location, NonterminalType!39/*MacroParametersPart?*/)(currentResultLocation, currentResult.get!(4/*MacroParametersPart*/)()); 1831 NonterminalType!(2) r; 1832 Location rl; 1833 gotoParent = parse6(r, rl, parseStart2, stack2, stack1, next); 1834 if (gotoParent < 0) 1835 return gotoParent; 1836 assert(gotoParent > 0); 1837 result = r; 1838 resultLocation = rl; 1839 return gotoParent - 1; 1840 } 1841 else if (currentResult.nonterminalID == 39/*MacroParametersPart?*/) 1842 { 1843 auto next = ParseStackElem!(Location, NonterminalType!39/*MacroParametersPart?*/)(currentResultLocation, currentResult.get!(39/*MacroParametersPart?*/)()); 1844 NonterminalType!(2) r; 1845 Location rl; 1846 gotoParent = parse6(r, rl, parseStart2, stack2, stack1, next); 1847 if (gotoParent < 0) 1848 return gotoParent; 1849 assert(gotoParent > 0); 1850 result = r; 1851 resultLocation = rl; 1852 return gotoParent - 1; 1853 } 1854 else 1855 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 1856 } 1857 1858 result = currentResult.get!(2/*SymbolDeclaration*/); 1859 resultLocation = currentResultLocation; 1860 return gotoParent - 1; 1861 } 1862 // path: EBNF DeclarationType Identifier MacroParametersPart 1863 // type: unknown 1864 // SymbolDeclaration -> DeclarationType? Identifier MacroParametersPart?.Annotation* ";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 1865 // SymbolDeclaration -> DeclarationType? Identifier MacroParametersPart?.Annotation* "=" Expression ";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 1866 // Annotation -> ."@" Identifier AnnotationParams? {";", "=", "@"} 1867 // Annotation+ -> .Annotation {";", "=", "@"} 1868 // Annotation+ -> .Annotation+ Annotation {";", "=", "@"} 1869 // Annotation* -> . {";", "="} 1870 // Annotation* -> .Annotation+ {";", "="} 1871 private int parse6(ref NonterminalType!(2) result, ref Location resultLocation, Location parseStart3, ParseStackElem!(Location, NonterminalType!38/*DeclarationType?*/) stack3, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!39/*MacroParametersPart?*/) stack1) 1872 { 1873 alias ThisParseResult = typeof(result); 1874 alias ParseResultIn = CreatorInstance.NonterminalUnion!([2, 10, 40, 41]); 1875 ParseResultIn currentResult; 1876 Location currentResultLocation; 1877 int gotoParent = -1; 1878 Location currentStart = lexer.front.currentLocation; 1879 if (lexer.empty) 1880 { 1881 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 1882 return -1; 1883 } 1884 else if (lexer.front.symbol == Lexer.tokenID!q{"@"}) 1885 { 1886 auto next = popToken(); 1887 NonterminalType!(10) r; 1888 Location rl; 1889 gotoParent = parse8(r, rl, currentStart, next); 1890 if (gotoParent < 0) 1891 return gotoParent; 1892 currentResult = ParseResultIn.create(10/*Annotation*/, r); 1893 currentResultLocation = rl; 1894 } 1895 else 1896 { 1897 auto tmp = reduce13/*Annotation* @array = [virtual]*/(); 1898 currentResult = ParseResultIn.create(41/*Annotation**/, tmp.val); 1899 currentResultLocation = tmp.start; 1900 gotoParent = 0; 1901 } 1902 1903 while (gotoParent == 0) 1904 { 1905 if (currentResult.nonterminalID == 10/*Annotation*/) 1906 { 1907 auto next = ParseStackElem!(Location, NonterminalType!10/*Annotation*/)(currentResultLocation, currentResult.get!(10/*Annotation*/)()); 1908 NonterminalType!(40) r; 1909 Location rl; 1910 gotoParent = parse7(r, rl, currentStart, next); 1911 if (gotoParent < 0) 1912 return gotoParent; 1913 currentResult = ParseResultIn.create(40/*Annotation+*/, r); 1914 currentResultLocation = rl; 1915 } 1916 else if (currentResult.nonterminalID == 40/*Annotation+*/) 1917 { 1918 auto next = ParseStackElem!(Location, NonterminalType!40/*Annotation+*/)(currentResultLocation, currentResult.get!(40/*Annotation+*/)()); 1919 CreatorInstance.NonterminalUnion!([40, 41]) r; 1920 Location rl; 1921 gotoParent = parse38(r, rl, currentStart, next); 1922 if (gotoParent < 0) 1923 return gotoParent; 1924 currentResult = r; 1925 currentResultLocation = rl; 1926 } 1927 else if (currentResult.nonterminalID == 41/*Annotation**/) 1928 { 1929 auto next = ParseStackElem!(Location, NonterminalType!41/*Annotation**/)(currentResultLocation, currentResult.get!(41/*Annotation**/)()); 1930 NonterminalType!(2) r; 1931 Location rl; 1932 gotoParent = parse40(r, rl, parseStart3, stack3, stack2, stack1, next); 1933 if (gotoParent < 0) 1934 return gotoParent; 1935 assert(gotoParent > 0); 1936 result = r; 1937 resultLocation = rl; 1938 return gotoParent - 1; 1939 } 1940 else 1941 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 1942 } 1943 1944 result = currentResult.get!(2/*SymbolDeclaration*/); 1945 resultLocation = currentResultLocation; 1946 return gotoParent - 1; 1947 } 1948 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation 1949 // type: unknown 1950 // Annotation+ -> Annotation. {";", "=", "@"} 1951 private int parse7(ref NonterminalType!(40) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, NonterminalType!10/*Annotation*/) stack1) 1952 { 1953 alias ThisParseResult = typeof(result); 1954 Location currentStart = lexer.front.currentLocation; 1955 { 1956 auto tmp = reduce11/*Annotation+ @array = Annotation [virtual]*/(parseStart1, stack1); 1957 result = tmp.val; 1958 resultLocation = tmp.start; 1959 return 0; 1960 } 1961 } 1962 // path: EBNF DeclarationType Identifier MacroParametersPart "@" 1963 // type: unknown 1964 // Annotation -> "@".Identifier AnnotationParams? {Identifier, StringLiteral, CharacterSetLiteral, ";", "=", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 1965 private int parse8(ref NonterminalType!(10) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 1966 { 1967 alias ThisParseResult = typeof(result); 1968 alias ParseResultIn = CreatorInstance.NonterminalUnion!([10]); 1969 ParseResultIn currentResult; 1970 Location currentResultLocation; 1971 int gotoParent = -1; 1972 Location currentStart = lexer.front.currentLocation; 1973 if (lexer.empty) 1974 { 1975 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 1976 return -1; 1977 } 1978 else if (lexer.front.symbol == Lexer.tokenID!"Identifier") 1979 { 1980 auto next = popToken(); 1981 NonterminalType!(10) r; 1982 Location rl; 1983 gotoParent = parse9(r, rl, parseStart1, stack1, next); 1984 if (gotoParent < 0) 1985 return gotoParent; 1986 assert(gotoParent > 0); 1987 result = r; 1988 resultLocation = rl; 1989 return gotoParent - 1; 1990 } 1991 else 1992 { 1993 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 1994 lexer.front.currentLocation, lexer.front.currentTokenEnd); 1995 return -1; 1996 } 1997 } 1998 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier 1999 // type: unknown 2000 // Annotation -> "@" Identifier.AnnotationParams? {Identifier, StringLiteral, CharacterSetLiteral, ";", "=", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 2001 // AnnotationParams -> ."(" AnnotationParamsPart* ")" {Identifier, StringLiteral, CharacterSetLiteral, ";", "=", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 2002 // AnnotationParams? -> . {Identifier, StringLiteral, CharacterSetLiteral, ";", "=", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 2003 // AnnotationParams? ---> AnnotationParams 2004 private int parse9(ref NonterminalType!(10) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, Token) stack1) 2005 { 2006 alias ThisParseResult = typeof(result); 2007 alias ParseResultIn = CreatorInstance.NonterminalUnion!([10, 11, 43]); 2008 ParseResultIn currentResult; 2009 Location currentResultLocation; 2010 int gotoParent = -1; 2011 Location currentStart = lexer.front.currentLocation; 2012 if (lexer.empty) 2013 { 2014 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 2015 return -1; 2016 } 2017 else if (lexer.front.symbol == Lexer.tokenID!q{"("}) 2018 { 2019 auto next = popToken(); 2020 NonterminalType!(11) r; 2021 Location rl; 2022 gotoParent = parse10(r, rl, currentStart, next); 2023 if (gotoParent < 0) 2024 return gotoParent; 2025 currentResult = ParseResultIn.create(11/*AnnotationParams*/, r); 2026 currentResultLocation = rl; 2027 } 2028 else 2029 { 2030 auto tmp = reduce30/*AnnotationParams? = [virtual]*/(); 2031 currentResult = ParseResultIn.create(43/*AnnotationParams?*/, tmp.val); 2032 currentResultLocation = tmp.start; 2033 gotoParent = 0; 2034 } 2035 2036 while (gotoParent == 0) 2037 { 2038 if (currentResult.nonterminalID == 11/*AnnotationParams*/) 2039 { 2040 auto next = ParseStackElem!(Location, NonterminalType!43/*AnnotationParams?*/)(currentResultLocation, currentResult.get!(11/*AnnotationParams*/)()); 2041 NonterminalType!(10) r; 2042 Location rl; 2043 gotoParent = parse37(r, rl, parseStart2, stack2, stack1, next); 2044 if (gotoParent < 0) 2045 return gotoParent; 2046 assert(gotoParent > 0); 2047 result = r; 2048 resultLocation = rl; 2049 return gotoParent - 1; 2050 } 2051 else if (currentResult.nonterminalID == 43/*AnnotationParams?*/) 2052 { 2053 auto next = ParseStackElem!(Location, NonterminalType!43/*AnnotationParams?*/)(currentResultLocation, currentResult.get!(43/*AnnotationParams?*/)()); 2054 NonterminalType!(10) r; 2055 Location rl; 2056 gotoParent = parse37(r, rl, parseStart2, stack2, stack1, next); 2057 if (gotoParent < 0) 2058 return gotoParent; 2059 assert(gotoParent > 0); 2060 result = r; 2061 resultLocation = rl; 2062 return gotoParent - 1; 2063 } 2064 else 2065 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 2066 } 2067 2068 result = currentResult.get!(10/*Annotation*/); 2069 resultLocation = currentResultLocation; 2070 return gotoParent - 1; 2071 } 2072 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" 2073 // type: unknown 2074 // AnnotationParams -> "(".AnnotationParamsPart* ")" {Identifier, StringLiteral, CharacterSetLiteral, ";", "=", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 2075 // AnnotationParamsPart -> .Identifier {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2076 // AnnotationParamsPart -> .StringLiteral {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2077 // AnnotationParamsPart -> .CharacterSetLiteral {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2078 // AnnotationParamsPart -> .IntegerLiteral {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2079 // AnnotationParamsPart -> .";" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2080 // AnnotationParamsPart -> ."=" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2081 // AnnotationParamsPart -> ."(" AnnotationParamsPart* ")" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2082 // AnnotationParamsPart -> ."," {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2083 // AnnotationParamsPart -> .":" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2084 // AnnotationParamsPart -> ."{" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2085 // AnnotationParamsPart -> ."}" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2086 // AnnotationParamsPart -> ."?" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2087 // AnnotationParamsPart -> ."!" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2088 // AnnotationParamsPart -> ."<" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2089 // AnnotationParamsPart -> .">" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2090 // AnnotationParamsPart -> ."*" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2091 // AnnotationParamsPart -> .">>" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2092 // AnnotationParamsPart -> ."<<" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2093 // AnnotationParamsPart -> ."-" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2094 // AnnotationParamsPart+ -> .AnnotationParamsPart {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2095 // AnnotationParamsPart+ -> .AnnotationParamsPart+ AnnotationParamsPart {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2096 // AnnotationParamsPart* -> . {")"} 2097 // AnnotationParamsPart* -> .AnnotationParamsPart+ {")"} 2098 private int parse10(ref NonterminalType!(11) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 2099 { 2100 alias ThisParseResult = typeof(result); 2101 alias ParseResultIn = CreatorInstance.NonterminalUnion!([11, 12, 44, 45]); 2102 ParseResultIn currentResult; 2103 Location currentResultLocation; 2104 int gotoParent = -1; 2105 Location currentStart = lexer.front.currentLocation; 2106 if (lexer.empty) 2107 { 2108 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 2109 return -1; 2110 } 2111 else if (lexer.front.symbol == Lexer.tokenID!"Identifier") 2112 { 2113 auto next = popToken(); 2114 NonterminalType!(12) r; 2115 Location rl; 2116 gotoParent = parse11(r, rl, currentStart, next); 2117 if (gotoParent < 0) 2118 return gotoParent; 2119 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2120 currentResultLocation = rl; 2121 } 2122 else if (lexer.front.symbol == Lexer.tokenID!"StringLiteral") 2123 { 2124 auto next = popToken(); 2125 NonterminalType!(12) r; 2126 Location rl; 2127 gotoParent = parse12(r, rl, currentStart, next); 2128 if (gotoParent < 0) 2129 return gotoParent; 2130 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2131 currentResultLocation = rl; 2132 } 2133 else if (lexer.front.symbol == Lexer.tokenID!"CharacterSetLiteral") 2134 { 2135 auto next = popToken(); 2136 NonterminalType!(12) r; 2137 Location rl; 2138 gotoParent = parse13(r, rl, currentStart, next); 2139 if (gotoParent < 0) 2140 return gotoParent; 2141 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2142 currentResultLocation = rl; 2143 } 2144 else if (lexer.front.symbol == Lexer.tokenID!"IntegerLiteral") 2145 { 2146 auto next = popToken(); 2147 NonterminalType!(12) r; 2148 Location rl; 2149 gotoParent = parse14(r, rl, currentStart, next); 2150 if (gotoParent < 0) 2151 return gotoParent; 2152 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2153 currentResultLocation = rl; 2154 } 2155 else if (lexer.front.symbol == Lexer.tokenID!q{";"}) 2156 { 2157 auto next = popToken(); 2158 NonterminalType!(12) r; 2159 Location rl; 2160 gotoParent = parse15(r, rl, currentStart, next); 2161 if (gotoParent < 0) 2162 return gotoParent; 2163 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2164 currentResultLocation = rl; 2165 } 2166 else if (lexer.front.symbol == Lexer.tokenID!q{"="}) 2167 { 2168 auto next = popToken(); 2169 NonterminalType!(12) r; 2170 Location rl; 2171 gotoParent = parse16(r, rl, currentStart, next); 2172 if (gotoParent < 0) 2173 return gotoParent; 2174 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2175 currentResultLocation = rl; 2176 } 2177 else if (lexer.front.symbol == Lexer.tokenID!q{"("}) 2178 { 2179 auto next = popToken(); 2180 NonterminalType!(12) r; 2181 Location rl; 2182 gotoParent = parse17(r, rl, currentStart, next); 2183 if (gotoParent < 0) 2184 return gotoParent; 2185 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2186 currentResultLocation = rl; 2187 } 2188 else if (lexer.front.symbol == Lexer.tokenID!q{","}) 2189 { 2190 auto next = popToken(); 2191 NonterminalType!(12) r; 2192 Location rl; 2193 gotoParent = parse18(r, rl, currentStart, next); 2194 if (gotoParent < 0) 2195 return gotoParent; 2196 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2197 currentResultLocation = rl; 2198 } 2199 else if (lexer.front.symbol == Lexer.tokenID!q{":"}) 2200 { 2201 auto next = popToken(); 2202 NonterminalType!(12) r; 2203 Location rl; 2204 gotoParent = parse20(r, rl, currentStart, next); 2205 if (gotoParent < 0) 2206 return gotoParent; 2207 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2208 currentResultLocation = rl; 2209 } 2210 else if (lexer.front.symbol == Lexer.tokenID!q{"{"}) 2211 { 2212 auto next = popToken(); 2213 NonterminalType!(12) r; 2214 Location rl; 2215 gotoParent = parse21(r, rl, currentStart, next); 2216 if (gotoParent < 0) 2217 return gotoParent; 2218 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2219 currentResultLocation = rl; 2220 } 2221 else if (lexer.front.symbol == Lexer.tokenID!q{"}"}) 2222 { 2223 auto next = popToken(); 2224 NonterminalType!(12) r; 2225 Location rl; 2226 gotoParent = parse22(r, rl, currentStart, next); 2227 if (gotoParent < 0) 2228 return gotoParent; 2229 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2230 currentResultLocation = rl; 2231 } 2232 else if (lexer.front.symbol == Lexer.tokenID!q{"?"}) 2233 { 2234 auto next = popToken(); 2235 NonterminalType!(12) r; 2236 Location rl; 2237 gotoParent = parse23(r, rl, currentStart, next); 2238 if (gotoParent < 0) 2239 return gotoParent; 2240 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2241 currentResultLocation = rl; 2242 } 2243 else if (lexer.front.symbol == Lexer.tokenID!q{"!"}) 2244 { 2245 auto next = popToken(); 2246 NonterminalType!(12) r; 2247 Location rl; 2248 gotoParent = parse24(r, rl, currentStart, next); 2249 if (gotoParent < 0) 2250 return gotoParent; 2251 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2252 currentResultLocation = rl; 2253 } 2254 else if (lexer.front.symbol == Lexer.tokenID!q{"<"}) 2255 { 2256 auto next = popToken(); 2257 NonterminalType!(12) r; 2258 Location rl; 2259 gotoParent = parse25(r, rl, currentStart, next); 2260 if (gotoParent < 0) 2261 return gotoParent; 2262 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2263 currentResultLocation = rl; 2264 } 2265 else if (lexer.front.symbol == Lexer.tokenID!q{">"}) 2266 { 2267 auto next = popToken(); 2268 NonterminalType!(12) r; 2269 Location rl; 2270 gotoParent = parse26(r, rl, currentStart, next); 2271 if (gotoParent < 0) 2272 return gotoParent; 2273 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2274 currentResultLocation = rl; 2275 } 2276 else if (lexer.front.symbol == Lexer.tokenID!q{"*"}) 2277 { 2278 auto next = popToken(); 2279 NonterminalType!(12) r; 2280 Location rl; 2281 gotoParent = parse27(r, rl, currentStart, next); 2282 if (gotoParent < 0) 2283 return gotoParent; 2284 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2285 currentResultLocation = rl; 2286 } 2287 else if (lexer.front.symbol == Lexer.tokenID!q{">>"}) 2288 { 2289 auto next = popToken(); 2290 NonterminalType!(12) r; 2291 Location rl; 2292 gotoParent = parse28(r, rl, currentStart, next); 2293 if (gotoParent < 0) 2294 return gotoParent; 2295 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2296 currentResultLocation = rl; 2297 } 2298 else if (lexer.front.symbol == Lexer.tokenID!q{"<<"}) 2299 { 2300 auto next = popToken(); 2301 NonterminalType!(12) r; 2302 Location rl; 2303 gotoParent = parse29(r, rl, currentStart, next); 2304 if (gotoParent < 0) 2305 return gotoParent; 2306 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2307 currentResultLocation = rl; 2308 } 2309 else if (lexer.front.symbol == Lexer.tokenID!q{"-"}) 2310 { 2311 auto next = popToken(); 2312 NonterminalType!(12) r; 2313 Location rl; 2314 gotoParent = parse30(r, rl, currentStart, next); 2315 if (gotoParent < 0) 2316 return gotoParent; 2317 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2318 currentResultLocation = rl; 2319 } 2320 else 2321 { 2322 auto tmp = reduce34/*AnnotationParamsPart* @array = [virtual]*/(); 2323 currentResult = ParseResultIn.create(45/*AnnotationParamsPart**/, tmp.val); 2324 currentResultLocation = tmp.start; 2325 gotoParent = 0; 2326 } 2327 2328 while (gotoParent == 0) 2329 { 2330 if (currentResult.nonterminalID == 12/*AnnotationParamsPart*/) 2331 { 2332 auto next = ParseStackElem!(Location, NonterminalType!12/*AnnotationParamsPart*/)(currentResultLocation, currentResult.get!(12/*AnnotationParamsPart*/)()); 2333 NonterminalType!(44) r; 2334 Location rl; 2335 gotoParent = parse19(r, rl, currentStart, next); 2336 if (gotoParent < 0) 2337 return gotoParent; 2338 currentResult = ParseResultIn.create(44/*AnnotationParamsPart+*/, r); 2339 currentResultLocation = rl; 2340 } 2341 else if (currentResult.nonterminalID == 44/*AnnotationParamsPart+*/) 2342 { 2343 auto next = ParseStackElem!(Location, NonterminalType!44/*AnnotationParamsPart+*/)(currentResultLocation, currentResult.get!(44/*AnnotationParamsPart+*/)()); 2344 CreatorInstance.NonterminalUnion!([44, 45]) r; 2345 Location rl; 2346 gotoParent = parse31(r, rl, currentStart, next); 2347 if (gotoParent < 0) 2348 return gotoParent; 2349 currentResult = r; 2350 currentResultLocation = rl; 2351 } 2352 else if (currentResult.nonterminalID == 45/*AnnotationParamsPart**/) 2353 { 2354 auto next = ParseStackElem!(Location, NonterminalType!45/*AnnotationParamsPart**/)(currentResultLocation, currentResult.get!(45/*AnnotationParamsPart**/)()); 2355 NonterminalType!(11) r; 2356 Location rl; 2357 gotoParent = parse35(r, rl, parseStart1, stack1, next); 2358 if (gotoParent < 0) 2359 return gotoParent; 2360 assert(gotoParent > 0); 2361 result = r; 2362 resultLocation = rl; 2363 return gotoParent - 1; 2364 } 2365 else 2366 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 2367 } 2368 2369 result = currentResult.get!(11/*AnnotationParams*/); 2370 resultLocation = currentResultLocation; 2371 return gotoParent - 1; 2372 } 2373 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" Identifier 2374 // type: unknown 2375 // AnnotationParamsPart -> Identifier. {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2376 private int parse11(ref NonterminalType!(12) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 2377 { 2378 alias ThisParseResult = typeof(result); 2379 Location currentStart = lexer.front.currentLocation; 2380 { 2381 auto tmp = reduce38_AnnotationParamsPart/*AnnotationParamsPart = Identifier*/(parseStart1, stack1); 2382 result = tmp.val; 2383 resultLocation = tmp.start; 2384 return 0; 2385 } 2386 } 2387 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" StringLiteral 2388 // type: unknown 2389 // AnnotationParamsPart -> StringLiteral. {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2390 private int parse12(ref NonterminalType!(12) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 2391 { 2392 alias ThisParseResult = typeof(result); 2393 Location currentStart = lexer.front.currentLocation; 2394 { 2395 auto tmp = reduce37_AnnotationParamsPart/*AnnotationParamsPart = StringLiteral*/(parseStart1, stack1); 2396 result = tmp.val; 2397 resultLocation = tmp.start; 2398 return 0; 2399 } 2400 } 2401 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" CharacterSetLiteral 2402 // type: unknown 2403 // AnnotationParamsPart -> CharacterSetLiteral. {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2404 private int parse13(ref NonterminalType!(12) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 2405 { 2406 alias ThisParseResult = typeof(result); 2407 Location currentStart = lexer.front.currentLocation; 2408 { 2409 auto tmp = reduce39_AnnotationParamsPart/*AnnotationParamsPart = CharacterSetLiteral*/(parseStart1, stack1); 2410 result = tmp.val; 2411 resultLocation = tmp.start; 2412 return 0; 2413 } 2414 } 2415 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" IntegerLiteral 2416 // type: unknown 2417 // AnnotationParamsPart -> IntegerLiteral. {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2418 private int parse14(ref NonterminalType!(12) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 2419 { 2420 alias ThisParseResult = typeof(result); 2421 Location currentStart = lexer.front.currentLocation; 2422 { 2423 auto tmp = reduce40_AnnotationParamsPart/*AnnotationParamsPart = IntegerLiteral*/(parseStart1, stack1); 2424 result = tmp.val; 2425 resultLocation = tmp.start; 2426 return 0; 2427 } 2428 } 2429 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" ";" 2430 // type: unknown 2431 // AnnotationParamsPart -> ";". {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2432 private int parse15(ref NonterminalType!(12) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 2433 { 2434 alias ThisParseResult = typeof(result); 2435 Location currentStart = lexer.front.currentLocation; 2436 { 2437 auto tmp = reduce44_AnnotationParamsPart/*AnnotationParamsPart = ";"*/(parseStart1, stack1); 2438 result = tmp.val; 2439 resultLocation = tmp.start; 2440 return 0; 2441 } 2442 } 2443 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" "=" 2444 // type: unknown 2445 // AnnotationParamsPart -> "=". {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2446 private int parse16(ref NonterminalType!(12) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 2447 { 2448 alias ThisParseResult = typeof(result); 2449 Location currentStart = lexer.front.currentLocation; 2450 { 2451 auto tmp = reduce42_AnnotationParamsPart/*AnnotationParamsPart = "="*/(parseStart1, stack1); 2452 result = tmp.val; 2453 resultLocation = tmp.start; 2454 return 0; 2455 } 2456 } 2457 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" "(" 2458 // type: unknown 2459 // AnnotationParamsPart -> "(".AnnotationParamsPart* ")" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2460 // AnnotationParamsPart -> .Identifier {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2461 // AnnotationParamsPart -> .StringLiteral {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2462 // AnnotationParamsPart -> .CharacterSetLiteral {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2463 // AnnotationParamsPart -> .IntegerLiteral {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2464 // AnnotationParamsPart -> .";" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2465 // AnnotationParamsPart -> ."=" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2466 // AnnotationParamsPart -> ."(" AnnotationParamsPart* ")" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2467 // AnnotationParamsPart -> ."," {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2468 // AnnotationParamsPart -> .":" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2469 // AnnotationParamsPart -> ."{" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2470 // AnnotationParamsPart -> ."}" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2471 // AnnotationParamsPart -> ."?" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2472 // AnnotationParamsPart -> ."!" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2473 // AnnotationParamsPart -> ."<" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2474 // AnnotationParamsPart -> .">" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2475 // AnnotationParamsPart -> ."*" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2476 // AnnotationParamsPart -> .">>" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2477 // AnnotationParamsPart -> ."<<" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2478 // AnnotationParamsPart -> ."-" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2479 // AnnotationParamsPart+ -> .AnnotationParamsPart {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2480 // AnnotationParamsPart+ -> .AnnotationParamsPart+ AnnotationParamsPart {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2481 // AnnotationParamsPart* -> . {")"} 2482 // AnnotationParamsPart* -> .AnnotationParamsPart+ {")"} 2483 private int parse17(ref NonterminalType!(12) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 2484 { 2485 alias ThisParseResult = typeof(result); 2486 alias ParseResultIn = CreatorInstance.NonterminalUnion!([12, 44, 45]); 2487 ParseResultIn currentResult; 2488 Location currentResultLocation; 2489 int gotoParent = -1; 2490 Location currentStart = lexer.front.currentLocation; 2491 if (lexer.empty) 2492 { 2493 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 2494 return -1; 2495 } 2496 else if (lexer.front.symbol == Lexer.tokenID!"Identifier") 2497 { 2498 auto next = popToken(); 2499 NonterminalType!(12) r; 2500 Location rl; 2501 gotoParent = parse11(r, rl, currentStart, next); 2502 if (gotoParent < 0) 2503 return gotoParent; 2504 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2505 currentResultLocation = rl; 2506 } 2507 else if (lexer.front.symbol == Lexer.tokenID!"StringLiteral") 2508 { 2509 auto next = popToken(); 2510 NonterminalType!(12) r; 2511 Location rl; 2512 gotoParent = parse12(r, rl, currentStart, next); 2513 if (gotoParent < 0) 2514 return gotoParent; 2515 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2516 currentResultLocation = rl; 2517 } 2518 else if (lexer.front.symbol == Lexer.tokenID!"CharacterSetLiteral") 2519 { 2520 auto next = popToken(); 2521 NonterminalType!(12) r; 2522 Location rl; 2523 gotoParent = parse13(r, rl, currentStart, next); 2524 if (gotoParent < 0) 2525 return gotoParent; 2526 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2527 currentResultLocation = rl; 2528 } 2529 else if (lexer.front.symbol == Lexer.tokenID!"IntegerLiteral") 2530 { 2531 auto next = popToken(); 2532 NonterminalType!(12) r; 2533 Location rl; 2534 gotoParent = parse14(r, rl, currentStart, next); 2535 if (gotoParent < 0) 2536 return gotoParent; 2537 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2538 currentResultLocation = rl; 2539 } 2540 else if (lexer.front.symbol == Lexer.tokenID!q{";"}) 2541 { 2542 auto next = popToken(); 2543 NonterminalType!(12) r; 2544 Location rl; 2545 gotoParent = parse15(r, rl, currentStart, next); 2546 if (gotoParent < 0) 2547 return gotoParent; 2548 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2549 currentResultLocation = rl; 2550 } 2551 else if (lexer.front.symbol == Lexer.tokenID!q{"="}) 2552 { 2553 auto next = popToken(); 2554 NonterminalType!(12) r; 2555 Location rl; 2556 gotoParent = parse16(r, rl, currentStart, next); 2557 if (gotoParent < 0) 2558 return gotoParent; 2559 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2560 currentResultLocation = rl; 2561 } 2562 else if (lexer.front.symbol == Lexer.tokenID!q{"("}) 2563 { 2564 auto next = popToken(); 2565 NonterminalType!(12) r; 2566 Location rl; 2567 gotoParent = parse17(r, rl, currentStart, next); 2568 if (gotoParent < 0) 2569 return gotoParent; 2570 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2571 currentResultLocation = rl; 2572 } 2573 else if (lexer.front.symbol == Lexer.tokenID!q{","}) 2574 { 2575 auto next = popToken(); 2576 NonterminalType!(12) r; 2577 Location rl; 2578 gotoParent = parse18(r, rl, currentStart, next); 2579 if (gotoParent < 0) 2580 return gotoParent; 2581 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2582 currentResultLocation = rl; 2583 } 2584 else if (lexer.front.symbol == Lexer.tokenID!q{":"}) 2585 { 2586 auto next = popToken(); 2587 NonterminalType!(12) r; 2588 Location rl; 2589 gotoParent = parse20(r, rl, currentStart, next); 2590 if (gotoParent < 0) 2591 return gotoParent; 2592 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2593 currentResultLocation = rl; 2594 } 2595 else if (lexer.front.symbol == Lexer.tokenID!q{"{"}) 2596 { 2597 auto next = popToken(); 2598 NonterminalType!(12) r; 2599 Location rl; 2600 gotoParent = parse21(r, rl, currentStart, next); 2601 if (gotoParent < 0) 2602 return gotoParent; 2603 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2604 currentResultLocation = rl; 2605 } 2606 else if (lexer.front.symbol == Lexer.tokenID!q{"}"}) 2607 { 2608 auto next = popToken(); 2609 NonterminalType!(12) r; 2610 Location rl; 2611 gotoParent = parse22(r, rl, currentStart, next); 2612 if (gotoParent < 0) 2613 return gotoParent; 2614 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2615 currentResultLocation = rl; 2616 } 2617 else if (lexer.front.symbol == Lexer.tokenID!q{"?"}) 2618 { 2619 auto next = popToken(); 2620 NonterminalType!(12) r; 2621 Location rl; 2622 gotoParent = parse23(r, rl, currentStart, next); 2623 if (gotoParent < 0) 2624 return gotoParent; 2625 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2626 currentResultLocation = rl; 2627 } 2628 else if (lexer.front.symbol == Lexer.tokenID!q{"!"}) 2629 { 2630 auto next = popToken(); 2631 NonterminalType!(12) r; 2632 Location rl; 2633 gotoParent = parse24(r, rl, currentStart, next); 2634 if (gotoParent < 0) 2635 return gotoParent; 2636 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2637 currentResultLocation = rl; 2638 } 2639 else if (lexer.front.symbol == Lexer.tokenID!q{"<"}) 2640 { 2641 auto next = popToken(); 2642 NonterminalType!(12) r; 2643 Location rl; 2644 gotoParent = parse25(r, rl, currentStart, next); 2645 if (gotoParent < 0) 2646 return gotoParent; 2647 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2648 currentResultLocation = rl; 2649 } 2650 else if (lexer.front.symbol == Lexer.tokenID!q{">"}) 2651 { 2652 auto next = popToken(); 2653 NonterminalType!(12) r; 2654 Location rl; 2655 gotoParent = parse26(r, rl, currentStart, next); 2656 if (gotoParent < 0) 2657 return gotoParent; 2658 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2659 currentResultLocation = rl; 2660 } 2661 else if (lexer.front.symbol == Lexer.tokenID!q{"*"}) 2662 { 2663 auto next = popToken(); 2664 NonterminalType!(12) r; 2665 Location rl; 2666 gotoParent = parse27(r, rl, currentStart, next); 2667 if (gotoParent < 0) 2668 return gotoParent; 2669 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2670 currentResultLocation = rl; 2671 } 2672 else if (lexer.front.symbol == Lexer.tokenID!q{">>"}) 2673 { 2674 auto next = popToken(); 2675 NonterminalType!(12) r; 2676 Location rl; 2677 gotoParent = parse28(r, rl, currentStart, next); 2678 if (gotoParent < 0) 2679 return gotoParent; 2680 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2681 currentResultLocation = rl; 2682 } 2683 else if (lexer.front.symbol == Lexer.tokenID!q{"<<"}) 2684 { 2685 auto next = popToken(); 2686 NonterminalType!(12) r; 2687 Location rl; 2688 gotoParent = parse29(r, rl, currentStart, next); 2689 if (gotoParent < 0) 2690 return gotoParent; 2691 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2692 currentResultLocation = rl; 2693 } 2694 else if (lexer.front.symbol == Lexer.tokenID!q{"-"}) 2695 { 2696 auto next = popToken(); 2697 NonterminalType!(12) r; 2698 Location rl; 2699 gotoParent = parse30(r, rl, currentStart, next); 2700 if (gotoParent < 0) 2701 return gotoParent; 2702 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2703 currentResultLocation = rl; 2704 } 2705 else 2706 { 2707 auto tmp = reduce34/*AnnotationParamsPart* @array = [virtual]*/(); 2708 currentResult = ParseResultIn.create(45/*AnnotationParamsPart**/, tmp.val); 2709 currentResultLocation = tmp.start; 2710 gotoParent = 0; 2711 } 2712 2713 while (gotoParent == 0) 2714 { 2715 if (currentResult.nonterminalID == 12/*AnnotationParamsPart*/) 2716 { 2717 auto next = ParseStackElem!(Location, NonterminalType!12/*AnnotationParamsPart*/)(currentResultLocation, currentResult.get!(12/*AnnotationParamsPart*/)()); 2718 NonterminalType!(44) r; 2719 Location rl; 2720 gotoParent = parse19(r, rl, currentStart, next); 2721 if (gotoParent < 0) 2722 return gotoParent; 2723 currentResult = ParseResultIn.create(44/*AnnotationParamsPart+*/, r); 2724 currentResultLocation = rl; 2725 } 2726 else if (currentResult.nonterminalID == 44/*AnnotationParamsPart+*/) 2727 { 2728 auto next = ParseStackElem!(Location, NonterminalType!44/*AnnotationParamsPart+*/)(currentResultLocation, currentResult.get!(44/*AnnotationParamsPart+*/)()); 2729 CreatorInstance.NonterminalUnion!([44, 45]) r; 2730 Location rl; 2731 gotoParent = parse31(r, rl, currentStart, next); 2732 if (gotoParent < 0) 2733 return gotoParent; 2734 currentResult = r; 2735 currentResultLocation = rl; 2736 } 2737 else if (currentResult.nonterminalID == 45/*AnnotationParamsPart**/) 2738 { 2739 auto next = ParseStackElem!(Location, NonterminalType!45/*AnnotationParamsPart**/)(currentResultLocation, currentResult.get!(45/*AnnotationParamsPart**/)()); 2740 NonterminalType!(12) r; 2741 Location rl; 2742 gotoParent = parse33(r, rl, parseStart1, stack1, next); 2743 if (gotoParent < 0) 2744 return gotoParent; 2745 assert(gotoParent > 0); 2746 result = r; 2747 resultLocation = rl; 2748 return gotoParent - 1; 2749 } 2750 else 2751 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 2752 } 2753 2754 result = currentResult.get!(12/*AnnotationParamsPart*/); 2755 resultLocation = currentResultLocation; 2756 return gotoParent - 1; 2757 } 2758 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" "(" "," 2759 // type: unknown 2760 // AnnotationParamsPart -> ",". {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2761 private int parse18(ref NonterminalType!(12) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 2762 { 2763 alias ThisParseResult = typeof(result); 2764 Location currentStart = lexer.front.currentLocation; 2765 { 2766 auto tmp = reduce45_AnnotationParamsPart/*AnnotationParamsPart = ","*/(parseStart1, stack1); 2767 result = tmp.val; 2768 resultLocation = tmp.start; 2769 return 0; 2770 } 2771 } 2772 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" "(" AnnotationParamsPart 2773 // type: unknown 2774 // AnnotationParamsPart+ -> AnnotationParamsPart. {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2775 private int parse19(ref NonterminalType!(44) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, NonterminalType!12/*AnnotationParamsPart*/) stack1) 2776 { 2777 alias ThisParseResult = typeof(result); 2778 Location currentStart = lexer.front.currentLocation; 2779 { 2780 auto tmp = reduce32/*AnnotationParamsPart+ @array = AnnotationParamsPart [virtual]*/(parseStart1, stack1); 2781 result = tmp.val; 2782 resultLocation = tmp.start; 2783 return 0; 2784 } 2785 } 2786 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" "(" ":" 2787 // type: unknown 2788 // AnnotationParamsPart -> ":". {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2789 private int parse20(ref NonterminalType!(12) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 2790 { 2791 alias ThisParseResult = typeof(result); 2792 Location currentStart = lexer.front.currentLocation; 2793 { 2794 auto tmp = reduce43_AnnotationParamsPart/*AnnotationParamsPart = ":"*/(parseStart1, stack1); 2795 result = tmp.val; 2796 resultLocation = tmp.start; 2797 return 0; 2798 } 2799 } 2800 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" "(" "{" 2801 // type: unknown 2802 // AnnotationParamsPart -> "{". {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2803 private int parse21(ref NonterminalType!(12) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 2804 { 2805 alias ThisParseResult = typeof(result); 2806 Location currentStart = lexer.front.currentLocation; 2807 { 2808 auto tmp = reduce46_AnnotationParamsPart/*AnnotationParamsPart = "{"*/(parseStart1, stack1); 2809 result = tmp.val; 2810 resultLocation = tmp.start; 2811 return 0; 2812 } 2813 } 2814 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" "(" "}" 2815 // type: unknown 2816 // AnnotationParamsPart -> "}". {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2817 private int parse22(ref NonterminalType!(12) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 2818 { 2819 alias ThisParseResult = typeof(result); 2820 Location currentStart = lexer.front.currentLocation; 2821 { 2822 auto tmp = reduce47_AnnotationParamsPart/*AnnotationParamsPart = "}"*/(parseStart1, stack1); 2823 result = tmp.val; 2824 resultLocation = tmp.start; 2825 return 0; 2826 } 2827 } 2828 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" "(" "?" 2829 // type: unknown 2830 // AnnotationParamsPart -> "?". {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2831 private int parse23(ref NonterminalType!(12) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 2832 { 2833 alias ThisParseResult = typeof(result); 2834 Location currentStart = lexer.front.currentLocation; 2835 { 2836 auto tmp = reduce48_AnnotationParamsPart/*AnnotationParamsPart = "?"*/(parseStart1, stack1); 2837 result = tmp.val; 2838 resultLocation = tmp.start; 2839 return 0; 2840 } 2841 } 2842 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" "(" "!" 2843 // type: unknown 2844 // AnnotationParamsPart -> "!". {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2845 private int parse24(ref NonterminalType!(12) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 2846 { 2847 alias ThisParseResult = typeof(result); 2848 Location currentStart = lexer.front.currentLocation; 2849 { 2850 auto tmp = reduce49_AnnotationParamsPart/*AnnotationParamsPart = "!"*/(parseStart1, stack1); 2851 result = tmp.val; 2852 resultLocation = tmp.start; 2853 return 0; 2854 } 2855 } 2856 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" "(" "<" 2857 // type: unknown 2858 // AnnotationParamsPart -> "<". {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2859 private int parse25(ref NonterminalType!(12) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 2860 { 2861 alias ThisParseResult = typeof(result); 2862 Location currentStart = lexer.front.currentLocation; 2863 { 2864 auto tmp = reduce50_AnnotationParamsPart/*AnnotationParamsPart = "<"*/(parseStart1, stack1); 2865 result = tmp.val; 2866 resultLocation = tmp.start; 2867 return 0; 2868 } 2869 } 2870 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" "(" ">" 2871 // type: unknown 2872 // AnnotationParamsPart -> ">". {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2873 private int parse26(ref NonterminalType!(12) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 2874 { 2875 alias ThisParseResult = typeof(result); 2876 Location currentStart = lexer.front.currentLocation; 2877 { 2878 auto tmp = reduce51_AnnotationParamsPart/*AnnotationParamsPart = ">"*/(parseStart1, stack1); 2879 result = tmp.val; 2880 resultLocation = tmp.start; 2881 return 0; 2882 } 2883 } 2884 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" "(" "*" 2885 // type: unknown 2886 // AnnotationParamsPart -> "*". {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2887 private int parse27(ref NonterminalType!(12) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 2888 { 2889 alias ThisParseResult = typeof(result); 2890 Location currentStart = lexer.front.currentLocation; 2891 { 2892 auto tmp = reduce52_AnnotationParamsPart/*AnnotationParamsPart = "*"*/(parseStart1, stack1); 2893 result = tmp.val; 2894 resultLocation = tmp.start; 2895 return 0; 2896 } 2897 } 2898 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" "(" ">>" 2899 // type: unknown 2900 // AnnotationParamsPart -> ">>". {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2901 private int parse28(ref NonterminalType!(12) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 2902 { 2903 alias ThisParseResult = typeof(result); 2904 Location currentStart = lexer.front.currentLocation; 2905 { 2906 auto tmp = reduce53_AnnotationParamsPart/*AnnotationParamsPart = ">>"*/(parseStart1, stack1); 2907 result = tmp.val; 2908 resultLocation = tmp.start; 2909 return 0; 2910 } 2911 } 2912 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" "(" "<<" 2913 // type: unknown 2914 // AnnotationParamsPart -> "<<". {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2915 private int parse29(ref NonterminalType!(12) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 2916 { 2917 alias ThisParseResult = typeof(result); 2918 Location currentStart = lexer.front.currentLocation; 2919 { 2920 auto tmp = reduce54_AnnotationParamsPart/*AnnotationParamsPart = "<<"*/(parseStart1, stack1); 2921 result = tmp.val; 2922 resultLocation = tmp.start; 2923 return 0; 2924 } 2925 } 2926 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" "(" "-" 2927 // type: unknown 2928 // AnnotationParamsPart -> "-". {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2929 private int parse30(ref NonterminalType!(12) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 2930 { 2931 alias ThisParseResult = typeof(result); 2932 Location currentStart = lexer.front.currentLocation; 2933 { 2934 auto tmp = reduce55_AnnotationParamsPart/*AnnotationParamsPart = "-"*/(parseStart1, stack1); 2935 result = tmp.val; 2936 resultLocation = tmp.start; 2937 return 0; 2938 } 2939 } 2940 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" "(" AnnotationParamsPart+ 2941 // type: unknown 2942 // AnnotationParamsPart+ -> AnnotationParamsPart+.AnnotationParamsPart {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2943 // AnnotationParamsPart* -> AnnotationParamsPart+. {")"} 2944 // AnnotationParamsPart -> .Identifier {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2945 // AnnotationParamsPart -> .StringLiteral {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2946 // AnnotationParamsPart -> .CharacterSetLiteral {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2947 // AnnotationParamsPart -> .IntegerLiteral {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2948 // AnnotationParamsPart -> .";" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2949 // AnnotationParamsPart -> ."=" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2950 // AnnotationParamsPart -> ."(" AnnotationParamsPart* ")" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2951 // AnnotationParamsPart -> ."," {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2952 // AnnotationParamsPart -> .":" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2953 // AnnotationParamsPart -> ."{" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2954 // AnnotationParamsPart -> ."}" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2955 // AnnotationParamsPart -> ."?" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2956 // AnnotationParamsPart -> ."!" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2957 // AnnotationParamsPart -> ."<" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2958 // AnnotationParamsPart -> .">" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2959 // AnnotationParamsPart -> ."*" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2960 // AnnotationParamsPart -> .">>" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2961 // AnnotationParamsPart -> ."<<" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2962 // AnnotationParamsPart -> ."-" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 2963 private int parse31(ref CreatorInstance.NonterminalUnion!([44, 45]) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, NonterminalType!44/*AnnotationParamsPart+*/) stack1) 2964 { 2965 alias ThisParseResult = typeof(result); 2966 alias ParseResultIn = CreatorInstance.NonterminalUnion!([12, 44, 45]); 2967 ParseResultIn currentResult; 2968 Location currentResultLocation; 2969 int gotoParent = -1; 2970 Location currentStart = lexer.front.currentLocation; 2971 if (lexer.empty) 2972 { 2973 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 2974 return -1; 2975 } 2976 else if (lexer.front.symbol == Lexer.tokenID!"Identifier") 2977 { 2978 auto next = popToken(); 2979 NonterminalType!(12) r; 2980 Location rl; 2981 gotoParent = parse11(r, rl, currentStart, next); 2982 if (gotoParent < 0) 2983 return gotoParent; 2984 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2985 currentResultLocation = rl; 2986 } 2987 else if (lexer.front.symbol == Lexer.tokenID!"StringLiteral") 2988 { 2989 auto next = popToken(); 2990 NonterminalType!(12) r; 2991 Location rl; 2992 gotoParent = parse12(r, rl, currentStart, next); 2993 if (gotoParent < 0) 2994 return gotoParent; 2995 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 2996 currentResultLocation = rl; 2997 } 2998 else if (lexer.front.symbol == Lexer.tokenID!"CharacterSetLiteral") 2999 { 3000 auto next = popToken(); 3001 NonterminalType!(12) r; 3002 Location rl; 3003 gotoParent = parse13(r, rl, currentStart, next); 3004 if (gotoParent < 0) 3005 return gotoParent; 3006 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 3007 currentResultLocation = rl; 3008 } 3009 else if (lexer.front.symbol == Lexer.tokenID!"IntegerLiteral") 3010 { 3011 auto next = popToken(); 3012 NonterminalType!(12) r; 3013 Location rl; 3014 gotoParent = parse14(r, rl, currentStart, next); 3015 if (gotoParent < 0) 3016 return gotoParent; 3017 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 3018 currentResultLocation = rl; 3019 } 3020 else if (lexer.front.symbol == Lexer.tokenID!q{";"}) 3021 { 3022 auto next = popToken(); 3023 NonterminalType!(12) r; 3024 Location rl; 3025 gotoParent = parse15(r, rl, currentStart, next); 3026 if (gotoParent < 0) 3027 return gotoParent; 3028 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 3029 currentResultLocation = rl; 3030 } 3031 else if (lexer.front.symbol == Lexer.tokenID!q{"="}) 3032 { 3033 auto next = popToken(); 3034 NonterminalType!(12) r; 3035 Location rl; 3036 gotoParent = parse16(r, rl, currentStart, next); 3037 if (gotoParent < 0) 3038 return gotoParent; 3039 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 3040 currentResultLocation = rl; 3041 } 3042 else if (lexer.front.symbol == Lexer.tokenID!q{"("}) 3043 { 3044 auto next = popToken(); 3045 NonterminalType!(12) r; 3046 Location rl; 3047 gotoParent = parse17(r, rl, currentStart, next); 3048 if (gotoParent < 0) 3049 return gotoParent; 3050 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 3051 currentResultLocation = rl; 3052 } 3053 else if (lexer.front.symbol == Lexer.tokenID!q{","}) 3054 { 3055 auto next = popToken(); 3056 NonterminalType!(12) r; 3057 Location rl; 3058 gotoParent = parse18(r, rl, currentStart, next); 3059 if (gotoParent < 0) 3060 return gotoParent; 3061 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 3062 currentResultLocation = rl; 3063 } 3064 else if (lexer.front.symbol == Lexer.tokenID!q{":"}) 3065 { 3066 auto next = popToken(); 3067 NonterminalType!(12) r; 3068 Location rl; 3069 gotoParent = parse20(r, rl, currentStart, next); 3070 if (gotoParent < 0) 3071 return gotoParent; 3072 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 3073 currentResultLocation = rl; 3074 } 3075 else if (lexer.front.symbol == Lexer.tokenID!q{"{"}) 3076 { 3077 auto next = popToken(); 3078 NonterminalType!(12) r; 3079 Location rl; 3080 gotoParent = parse21(r, rl, currentStart, next); 3081 if (gotoParent < 0) 3082 return gotoParent; 3083 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 3084 currentResultLocation = rl; 3085 } 3086 else if (lexer.front.symbol == Lexer.tokenID!q{"}"}) 3087 { 3088 auto next = popToken(); 3089 NonterminalType!(12) r; 3090 Location rl; 3091 gotoParent = parse22(r, rl, currentStart, next); 3092 if (gotoParent < 0) 3093 return gotoParent; 3094 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 3095 currentResultLocation = rl; 3096 } 3097 else if (lexer.front.symbol == Lexer.tokenID!q{"?"}) 3098 { 3099 auto next = popToken(); 3100 NonterminalType!(12) r; 3101 Location rl; 3102 gotoParent = parse23(r, rl, currentStart, next); 3103 if (gotoParent < 0) 3104 return gotoParent; 3105 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 3106 currentResultLocation = rl; 3107 } 3108 else if (lexer.front.symbol == Lexer.tokenID!q{"!"}) 3109 { 3110 auto next = popToken(); 3111 NonterminalType!(12) r; 3112 Location rl; 3113 gotoParent = parse24(r, rl, currentStart, next); 3114 if (gotoParent < 0) 3115 return gotoParent; 3116 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 3117 currentResultLocation = rl; 3118 } 3119 else if (lexer.front.symbol == Lexer.tokenID!q{"<"}) 3120 { 3121 auto next = popToken(); 3122 NonterminalType!(12) r; 3123 Location rl; 3124 gotoParent = parse25(r, rl, currentStart, next); 3125 if (gotoParent < 0) 3126 return gotoParent; 3127 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 3128 currentResultLocation = rl; 3129 } 3130 else if (lexer.front.symbol == Lexer.tokenID!q{">"}) 3131 { 3132 auto next = popToken(); 3133 NonterminalType!(12) r; 3134 Location rl; 3135 gotoParent = parse26(r, rl, currentStart, next); 3136 if (gotoParent < 0) 3137 return gotoParent; 3138 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 3139 currentResultLocation = rl; 3140 } 3141 else if (lexer.front.symbol == Lexer.tokenID!q{"*"}) 3142 { 3143 auto next = popToken(); 3144 NonterminalType!(12) r; 3145 Location rl; 3146 gotoParent = parse27(r, rl, currentStart, next); 3147 if (gotoParent < 0) 3148 return gotoParent; 3149 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 3150 currentResultLocation = rl; 3151 } 3152 else if (lexer.front.symbol == Lexer.tokenID!q{">>"}) 3153 { 3154 auto next = popToken(); 3155 NonterminalType!(12) r; 3156 Location rl; 3157 gotoParent = parse28(r, rl, currentStart, next); 3158 if (gotoParent < 0) 3159 return gotoParent; 3160 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 3161 currentResultLocation = rl; 3162 } 3163 else if (lexer.front.symbol == Lexer.tokenID!q{"<<"}) 3164 { 3165 auto next = popToken(); 3166 NonterminalType!(12) r; 3167 Location rl; 3168 gotoParent = parse29(r, rl, currentStart, next); 3169 if (gotoParent < 0) 3170 return gotoParent; 3171 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 3172 currentResultLocation = rl; 3173 } 3174 else if (lexer.front.symbol == Lexer.tokenID!q{"-"}) 3175 { 3176 auto next = popToken(); 3177 NonterminalType!(12) r; 3178 Location rl; 3179 gotoParent = parse30(r, rl, currentStart, next); 3180 if (gotoParent < 0) 3181 return gotoParent; 3182 currentResult = ParseResultIn.create(12/*AnnotationParamsPart*/, r); 3183 currentResultLocation = rl; 3184 } 3185 else 3186 { 3187 auto tmp = reduce35/*AnnotationParamsPart* @array = AnnotationParamsPart+ [virtual]*/(parseStart1, stack1); 3188 result = ThisParseResult.create(45/*AnnotationParamsPart**/, tmp.val); 3189 resultLocation = tmp.start; 3190 return 0; 3191 } 3192 3193 while (gotoParent == 0) 3194 { 3195 if (currentResult.nonterminalID == 12/*AnnotationParamsPart*/) 3196 { 3197 auto next = ParseStackElem!(Location, NonterminalType!12/*AnnotationParamsPart*/)(currentResultLocation, currentResult.get!(12/*AnnotationParamsPart*/)()); 3198 NonterminalType!(44) r; 3199 Location rl; 3200 gotoParent = parse32(r, rl, parseStart1, stack1, next); 3201 if (gotoParent < 0) 3202 return gotoParent; 3203 assert(gotoParent > 0); 3204 result = ThisParseResult.create(44/*AnnotationParamsPart+*/, r); 3205 resultLocation = rl; 3206 return gotoParent - 1; 3207 } 3208 else 3209 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 3210 } 3211 3212 result = currentResult; 3213 resultLocation = currentResultLocation; 3214 return gotoParent - 1; 3215 } 3216 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" "(" AnnotationParamsPart+ AnnotationParamsPart 3217 // type: unknown 3218 // AnnotationParamsPart+ -> AnnotationParamsPart+ AnnotationParamsPart. {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 3219 private int parse32(ref NonterminalType!(44) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, NonterminalType!44/*AnnotationParamsPart+*/) stack2, ParseStackElem!(Location, NonterminalType!12/*AnnotationParamsPart*/) stack1) 3220 { 3221 alias ThisParseResult = typeof(result); 3222 Location currentStart = lexer.front.currentLocation; 3223 { 3224 auto tmp = reduce33/*AnnotationParamsPart+ @array = AnnotationParamsPart+ AnnotationParamsPart [virtual]*/(parseStart2, stack2, stack1); 3225 result = tmp.val; 3226 resultLocation = tmp.start; 3227 return 1; 3228 } 3229 } 3230 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" "(" AnnotationParamsPart* 3231 // type: unknown 3232 // AnnotationParamsPart -> "(" AnnotationParamsPart*.")" {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 3233 private int parse33(ref NonterminalType!(12) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!45/*AnnotationParamsPart**/) stack1) 3234 { 3235 alias ThisParseResult = typeof(result); 3236 alias ParseResultIn = CreatorInstance.NonterminalUnion!([12]); 3237 ParseResultIn currentResult; 3238 Location currentResultLocation; 3239 int gotoParent = -1; 3240 Location currentStart = lexer.front.currentLocation; 3241 if (lexer.empty) 3242 { 3243 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 3244 return -1; 3245 } 3246 else if (lexer.front.symbol == Lexer.tokenID!q{")"}) 3247 { 3248 auto next = popToken(); 3249 NonterminalType!(12) r; 3250 Location rl; 3251 gotoParent = parse34(r, rl, parseStart2, stack2, stack1, next); 3252 if (gotoParent < 0) 3253 return gotoParent; 3254 assert(gotoParent > 0); 3255 result = r; 3256 resultLocation = rl; 3257 return gotoParent - 1; 3258 } 3259 else 3260 { 3261 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 3262 lexer.front.currentLocation, lexer.front.currentTokenEnd); 3263 return -1; 3264 } 3265 } 3266 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" "(" AnnotationParamsPart* ")" 3267 // type: unknown 3268 // AnnotationParamsPart -> "(" AnnotationParamsPart* ")". {Identifier, StringLiteral, CharacterSetLiteral, IntegerLiteral, ";", "=", "(", ")", ",", ":", "{", "}", "?", "!", "<", ">", "*", ">>", "<<", "-"} 3269 private int parse34(ref NonterminalType!(12) result, ref Location resultLocation, Location parseStart3, ParseStackElem!(Location, Token) stack3, ParseStackElem!(Location, NonterminalType!45/*AnnotationParamsPart**/) stack2, ParseStackElem!(Location, Token) stack1) 3270 { 3271 alias ThisParseResult = typeof(result); 3272 Location currentStart = lexer.front.currentLocation; 3273 { 3274 auto tmp = reduce41_AnnotationParamsPart/*AnnotationParamsPart = "(" AnnotationParamsPart* ")"*/(parseStart3, stack3, stack2, stack1); 3275 result = tmp.val; 3276 resultLocation = tmp.start; 3277 return 2; 3278 } 3279 } 3280 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" AnnotationParamsPart* 3281 // type: unknown 3282 // AnnotationParams -> "(" AnnotationParamsPart*.")" {Identifier, StringLiteral, CharacterSetLiteral, ";", "=", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 3283 private int parse35(ref NonterminalType!(11) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!45/*AnnotationParamsPart**/) stack1) 3284 { 3285 alias ThisParseResult = typeof(result); 3286 alias ParseResultIn = CreatorInstance.NonterminalUnion!([11]); 3287 ParseResultIn currentResult; 3288 Location currentResultLocation; 3289 int gotoParent = -1; 3290 Location currentStart = lexer.front.currentLocation; 3291 if (lexer.empty) 3292 { 3293 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 3294 return -1; 3295 } 3296 else if (lexer.front.symbol == Lexer.tokenID!q{")"}) 3297 { 3298 auto next = popToken(); 3299 NonterminalType!(11) r; 3300 Location rl; 3301 gotoParent = parse36(r, rl, parseStart2, stack2, stack1, next); 3302 if (gotoParent < 0) 3303 return gotoParent; 3304 assert(gotoParent > 0); 3305 result = r; 3306 resultLocation = rl; 3307 return gotoParent - 1; 3308 } 3309 else 3310 { 3311 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 3312 lexer.front.currentLocation, lexer.front.currentTokenEnd); 3313 return -1; 3314 } 3315 } 3316 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier "(" AnnotationParamsPart* ")" 3317 // type: unknown 3318 // AnnotationParams -> "(" AnnotationParamsPart* ")". {Identifier, StringLiteral, CharacterSetLiteral, ";", "=", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 3319 private int parse36(ref NonterminalType!(11) result, ref Location resultLocation, Location parseStart3, ParseStackElem!(Location, Token) stack3, ParseStackElem!(Location, NonterminalType!45/*AnnotationParamsPart**/) stack2, ParseStackElem!(Location, Token) stack1) 3320 { 3321 alias ThisParseResult = typeof(result); 3322 Location currentStart = lexer.front.currentLocation; 3323 { 3324 auto tmp = reduce36_AnnotationParams/*AnnotationParams = "(" AnnotationParamsPart* ")"*/(parseStart3, stack3, stack2, stack1); 3325 result = tmp.val; 3326 resultLocation = tmp.start; 3327 return 2; 3328 } 3329 } 3330 // path: EBNF DeclarationType Identifier MacroParametersPart "@" Identifier AnnotationParams 3331 // type: unknown 3332 // Annotation -> "@" Identifier AnnotationParams?. {Identifier, StringLiteral, CharacterSetLiteral, ";", "=", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 3333 private int parse37(ref NonterminalType!(10) result, ref Location resultLocation, Location parseStart3, ParseStackElem!(Location, Token) stack3, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!43/*AnnotationParams?*/) stack1) 3334 { 3335 alias ThisParseResult = typeof(result); 3336 Location currentStart = lexer.front.currentLocation; 3337 { 3338 auto tmp = reduce31_Annotation/*Annotation = "@" Identifier AnnotationParams?*/(parseStart3, stack3, stack2, stack1); 3339 result = tmp.val; 3340 resultLocation = tmp.start; 3341 return 2; 3342 } 3343 } 3344 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation+ 3345 // type: unknown 3346 // Annotation+ -> Annotation+.Annotation {";", "=", "@"} 3347 // Annotation* -> Annotation+. {";", "="} 3348 // Annotation -> ."@" Identifier AnnotationParams? {";", "=", "@"} 3349 private int parse38(ref CreatorInstance.NonterminalUnion!([40, 41]) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, NonterminalType!40/*Annotation+*/) stack1) 3350 { 3351 alias ThisParseResult = typeof(result); 3352 alias ParseResultIn = CreatorInstance.NonterminalUnion!([10, 40, 41]); 3353 ParseResultIn currentResult; 3354 Location currentResultLocation; 3355 int gotoParent = -1; 3356 Location currentStart = lexer.front.currentLocation; 3357 if (lexer.empty) 3358 { 3359 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 3360 return -1; 3361 } 3362 else if (lexer.front.symbol == Lexer.tokenID!q{"@"}) 3363 { 3364 auto next = popToken(); 3365 NonterminalType!(10) r; 3366 Location rl; 3367 gotoParent = parse8(r, rl, currentStart, next); 3368 if (gotoParent < 0) 3369 return gotoParent; 3370 currentResult = ParseResultIn.create(10/*Annotation*/, r); 3371 currentResultLocation = rl; 3372 } 3373 else 3374 { 3375 auto tmp = reduce14/*Annotation* @array = Annotation+ [virtual]*/(parseStart1, stack1); 3376 result = ThisParseResult.create(41/*Annotation**/, tmp.val); 3377 resultLocation = tmp.start; 3378 return 0; 3379 } 3380 3381 while (gotoParent == 0) 3382 { 3383 if (currentResult.nonterminalID == 10/*Annotation*/) 3384 { 3385 auto next = ParseStackElem!(Location, NonterminalType!10/*Annotation*/)(currentResultLocation, currentResult.get!(10/*Annotation*/)()); 3386 NonterminalType!(40) r; 3387 Location rl; 3388 gotoParent = parse39(r, rl, parseStart1, stack1, next); 3389 if (gotoParent < 0) 3390 return gotoParent; 3391 assert(gotoParent > 0); 3392 result = ThisParseResult.create(40/*Annotation+*/, r); 3393 resultLocation = rl; 3394 return gotoParent - 1; 3395 } 3396 else 3397 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 3398 } 3399 3400 result = currentResult; 3401 resultLocation = currentResultLocation; 3402 return gotoParent - 1; 3403 } 3404 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation+ Annotation 3405 // type: unknown 3406 // Annotation+ -> Annotation+ Annotation. {";", "=", "@"} 3407 private int parse39(ref NonterminalType!(40) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, NonterminalType!40/*Annotation+*/) stack2, ParseStackElem!(Location, NonterminalType!10/*Annotation*/) stack1) 3408 { 3409 alias ThisParseResult = typeof(result); 3410 Location currentStart = lexer.front.currentLocation; 3411 { 3412 auto tmp = reduce12/*Annotation+ @array = Annotation+ Annotation [virtual]*/(parseStart2, stack2, stack1); 3413 result = tmp.val; 3414 resultLocation = tmp.start; 3415 return 1; 3416 } 3417 } 3418 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* 3419 // type: unknown 3420 // SymbolDeclaration -> DeclarationType? Identifier MacroParametersPart? Annotation*.";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 3421 // SymbolDeclaration -> DeclarationType? Identifier MacroParametersPart? Annotation*."=" Expression ";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 3422 private int parse40(ref NonterminalType!(2) result, ref Location resultLocation, Location parseStart4, ParseStackElem!(Location, NonterminalType!38/*DeclarationType?*/) stack4, ParseStackElem!(Location, Token) stack3, ParseStackElem!(Location, NonterminalType!39/*MacroParametersPart?*/) stack2, ParseStackElem!(Location, NonterminalType!41/*Annotation**/) stack1) 3423 { 3424 alias ThisParseResult = typeof(result); 3425 alias ParseResultIn = CreatorInstance.NonterminalUnion!([2]); 3426 ParseResultIn currentResult; 3427 Location currentResultLocation; 3428 int gotoParent = -1; 3429 Location currentStart = lexer.front.currentLocation; 3430 if (lexer.empty) 3431 { 3432 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 3433 return -1; 3434 } 3435 else if (lexer.front.symbol == Lexer.tokenID!q{";"}) 3436 { 3437 auto next = popToken(); 3438 NonterminalType!(2) r; 3439 Location rl; 3440 gotoParent = parse41(r, rl, parseStart4, stack4, stack3, stack2, stack1, next); 3441 if (gotoParent < 0) 3442 return gotoParent; 3443 assert(gotoParent > 0); 3444 result = r; 3445 resultLocation = rl; 3446 return gotoParent - 1; 3447 } 3448 else if (lexer.front.symbol == Lexer.tokenID!q{"="}) 3449 { 3450 auto next = popToken(); 3451 NonterminalType!(2) r; 3452 Location rl; 3453 gotoParent = parse42(r, rl, parseStart4, stack4, stack3, stack2, stack1, next); 3454 if (gotoParent < 0) 3455 return gotoParent; 3456 assert(gotoParent > 0); 3457 result = r; 3458 resultLocation = rl; 3459 return gotoParent - 1; 3460 } 3461 else 3462 { 3463 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 3464 lexer.front.currentLocation, lexer.front.currentTokenEnd); 3465 return -1; 3466 } 3467 } 3468 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* ";" 3469 // type: unknown 3470 // SymbolDeclaration -> DeclarationType? Identifier MacroParametersPart? Annotation* ";". {$end, Identifier, "fragment", "token", "option", "import", "match"} 3471 private int parse41(ref NonterminalType!(2) result, ref Location resultLocation, Location parseStart5, ParseStackElem!(Location, NonterminalType!38/*DeclarationType?*/) stack5, ParseStackElem!(Location, Token) stack4, ParseStackElem!(Location, NonterminalType!39/*MacroParametersPart?*/) stack3, ParseStackElem!(Location, NonterminalType!41/*Annotation**/) stack2, ParseStackElem!(Location, Token) stack1) 3472 { 3473 alias ThisParseResult = typeof(result); 3474 Location currentStart = lexer.front.currentLocation; 3475 { 3476 auto tmp = reduce15_SymbolDeclaration/*SymbolDeclaration = DeclarationType? Identifier MacroParametersPart? Annotation* ";"*/(parseStart5, stack5, stack4, stack3, stack2, stack1); 3477 result = tmp.val; 3478 resultLocation = tmp.start; 3479 return 4; 3480 } 3481 } 3482 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" 3483 // type: unknown 3484 // SymbolDeclaration -> DeclarationType? Identifier MacroParametersPart? Annotation* "=".Expression ";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 3485 // Annotation -> ."@" Identifier AnnotationParams? {Identifier, StringLiteral, CharacterSetLiteral, ";", "@", "{", "!", "<", "|", "^", "t("} 3486 // NegativeLookahead -> ."!" Symbol {Identifier, StringLiteral, CharacterSetLiteral, ";", "@", "{", "!", "<", "|", "^", "t("} 3487 // NegativeLookahead -> ."!" "anytoken" {Identifier, StringLiteral, CharacterSetLiteral, ";", "@", "{", "!", "<", "|", "^", "t("} 3488 // Expression -> .Alternation {";"} 3489 // Alternation -> .Alternation "|" Concatenation {";", "|"} 3490 // Alternation -> .Concatenation {";", "|"} 3491 // Concatenation -> .TokenMinus {";", "|"} 3492 // Concatenation -> .TokenMinus TokenMinus+ @regArray_ProductionAnnotation* {";", "|"} 3493 // Concatenation -> .TokenMinus @regArray_ProductionAnnotation+ {";", "|"} 3494 // Concatenation -> .@regArray_ProductionAnnotation+ {";", "|"} 3495 // TokenMinus -> .TokenMinus "-" AnnotatedExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", "@", "{", "!", "<", "-", "|", "^", "t("} 3496 // TokenMinus -> .AnnotatedExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", "@", "{", "!", "<", "-", "|", "^", "t("} 3497 // AnnotatedExpression -> .@regArray_ExpressionAnnotation* ExpressionName? ExpressionPrefix* PostfixExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", "@", "{", "!", "<", "-", "|", "^", "t("} 3498 // @regArray_ExpressionAnnotation* -> . {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 3499 // $regarray_1 -> .$regarray_1 $regarrayedge_1_1 {Identifier, StringLiteral, CharacterSetLiteral, ";", "@", "{", "!", "<", "|", "^", "t("} 3500 // $regarray_1 -> .$regarrayedge_0_1 {Identifier, StringLiteral, CharacterSetLiteral, ";", "@", "{", "!", "<", "|", "^", "t("} 3501 // @regArray_ProductionAnnotation+ ---> $regarray_1 3502 // @regArray_ExpressionAnnotation* ---> $regarray_1 3503 // $regarrayedge_0_1 ---> Annotation 3504 // $regarrayedge_0_1 ---> NegativeLookahead 3505 private int parse42(ref NonterminalType!(2) result, ref Location resultLocation, Location parseStart5, ParseStackElem!(Location, NonterminalType!38/*DeclarationType?*/) stack5, ParseStackElem!(Location, Token) stack4, ParseStackElem!(Location, NonterminalType!39/*MacroParametersPart?*/) stack3, ParseStackElem!(Location, NonterminalType!41/*Annotation**/) stack2, ParseStackElem!(Location, Token) stack1) 3506 { 3507 alias ThisParseResult = typeof(result); 3508 alias ParseResultIn = CreatorInstance.NonterminalUnion!([2, 10, 13, 14, 15, 16, 18, 19, 51, 57]); 3509 ParseResultIn currentResult; 3510 Location currentResultLocation; 3511 int gotoParent = -1; 3512 Location currentStart = lexer.front.currentLocation; 3513 if (lexer.empty) 3514 { 3515 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 3516 return -1; 3517 } 3518 else if (lexer.front.symbol == Lexer.tokenID!q{"@"}) 3519 { 3520 auto next = popToken(); 3521 NonterminalType!(10) r; 3522 Location rl; 3523 gotoParent = parse8(r, rl, currentStart, next); 3524 if (gotoParent < 0) 3525 return gotoParent; 3526 currentResult = ParseResultIn.create(10/*Annotation*/, r); 3527 currentResultLocation = rl; 3528 } 3529 else if (lexer.front.symbol == Lexer.tokenID!q{"!"}) 3530 { 3531 auto next = popToken(); 3532 NonterminalType!(13) r; 3533 Location rl; 3534 gotoParent = parse53(r, rl, currentStart, next); 3535 if (gotoParent < 0) 3536 return gotoParent; 3537 currentResult = ParseResultIn.create(13/*NegativeLookahead*/, r); 3538 currentResultLocation = rl; 3539 } 3540 else 3541 { 3542 auto tmp = reduce127/*@regArray_ExpressionAnnotation* @array @directUnwrap @regArray =*/(); 3543 currentResult = ParseResultIn.create(51/*@regArray_ExpressionAnnotation**/, tmp.val); 3544 currentResultLocation = tmp.start; 3545 gotoParent = 0; 3546 } 3547 3548 while (gotoParent == 0) 3549 { 3550 if (currentResult.nonterminalID == 10/*Annotation*/) 3551 { 3552 auto next = ParseStackElem!(Location, NonterminalType!58/*$regarrayedge_0_1*/)(currentResultLocation, currentResult.get!(10/*Annotation*/)()); 3553 NonterminalType!(57) r; 3554 Location rl; 3555 gotoParent = parse43(r, rl, currentStart, next); 3556 if (gotoParent < 0) 3557 return gotoParent; 3558 currentResult = ParseResultIn.create(57/*$regarray_1*/, r); 3559 currentResultLocation = rl; 3560 } 3561 else if (currentResult.nonterminalID == 13/*NegativeLookahead*/) 3562 { 3563 auto next = ParseStackElem!(Location, NonterminalType!58/*$regarrayedge_0_1*/)(currentResultLocation, currentResult.get!(13/*NegativeLookahead*/)()); 3564 NonterminalType!(57) r; 3565 Location rl; 3566 gotoParent = parse43(r, rl, currentStart, next); 3567 if (gotoParent < 0) 3568 return gotoParent; 3569 currentResult = ParseResultIn.create(57/*$regarray_1*/, r); 3570 currentResultLocation = rl; 3571 } 3572 else if (currentResult.nonterminalID == 14/*Expression*/) 3573 { 3574 auto next = ParseStackElem!(Location, NonterminalType!14/*Expression*/)(currentResultLocation, currentResult.get!(14/*Expression*/)()); 3575 NonterminalType!(2) r; 3576 Location rl; 3577 gotoParent = parse44(r, rl, parseStart5, stack5, stack4, stack3, stack2, stack1, next); 3578 if (gotoParent < 0) 3579 return gotoParent; 3580 assert(gotoParent > 0); 3581 result = r; 3582 resultLocation = rl; 3583 return gotoParent - 1; 3584 } 3585 else if (currentResult.nonterminalID == 15/*Alternation*/) 3586 { 3587 auto next = ParseStackElem!(Location, NonterminalType!15/*Alternation*/)(currentResultLocation, currentResult.get!(15/*Alternation*/)()); 3588 CreatorInstance.NonterminalUnion!([14, 15]) r; 3589 Location rl; 3590 gotoParent = parse46(r, rl, currentStart, next); 3591 if (gotoParent < 0) 3592 return gotoParent; 3593 currentResult = r; 3594 currentResultLocation = rl; 3595 } 3596 else if (currentResult.nonterminalID == 16/*Concatenation*/) 3597 { 3598 currentResult = ParseResultIn.create(15/*Alternation*/, currentResult.get!(16/*Concatenation*/)); 3599 currentResultLocation = currentResultLocation; 3600 } 3601 else if (currentResult.nonterminalID == 18/*TokenMinus*/) 3602 { 3603 auto next = ParseStackElem!(Location, NonterminalType!18/*TokenMinus*/)(currentResultLocation, currentResult.get!(18/*TokenMinus*/)()); 3604 CreatorInstance.NonterminalUnion!([16, 18]) r; 3605 Location rl; 3606 gotoParent = parse49(r, rl, currentStart, next); 3607 if (gotoParent < 0) 3608 return gotoParent; 3609 currentResult = r; 3610 currentResultLocation = rl; 3611 } 3612 else if (currentResult.nonterminalID == 19/*AnnotatedExpression*/) 3613 { 3614 currentResult = ParseResultIn.create(18/*TokenMinus*/, currentResult.get!(19/*AnnotatedExpression*/)); 3615 currentResultLocation = currentResultLocation; 3616 } 3617 else if (currentResult.nonterminalID == 51/*@regArray_ExpressionAnnotation**/) 3618 { 3619 auto next = ParseStackElem!(Location, NonterminalType!51/*@regArray_ExpressionAnnotation**/)(currentResultLocation, currentResult.get!(51/*@regArray_ExpressionAnnotation**/)()); 3620 NonterminalType!(19) r; 3621 Location rl; 3622 gotoParent = parse63(r, rl, currentStart, next); 3623 if (gotoParent < 0) 3624 return gotoParent; 3625 currentResult = ParseResultIn.create(19/*AnnotatedExpression*/, r); 3626 currentResultLocation = rl; 3627 } 3628 else if (currentResult.nonterminalID == 57/*$regarray_1*/) 3629 { 3630 auto next = ParseStackElem!(Location, CreatorInstance.NonterminalArray)(currentResultLocation, currentResult.get!(57/*$regarray_1*/)()); 3631 CreatorInstance.NonterminalUnion!([16, 19, 57]) r; 3632 Location rl; 3633 gotoParent = parse80(r, rl, currentStart, next); 3634 if (gotoParent < 0) 3635 return gotoParent; 3636 currentResult = r; 3637 currentResultLocation = rl; 3638 } 3639 else 3640 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 3641 } 3642 3643 result = currentResult.get!(2/*SymbolDeclaration*/); 3644 resultLocation = currentResultLocation; 3645 return gotoParent - 1; 3646 } 3647 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Annotation 3648 // type: unknown 3649 // $regarray_1 -> $regarrayedge_0_1. {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 3650 private int parse43(ref NonterminalType!(57) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, NonterminalType!58/*$regarrayedge_0_1*/) stack1) 3651 { 3652 alias ThisParseResult = typeof(result); 3653 Location currentStart = lexer.front.currentLocation; 3654 { 3655 auto tmp = reduce126/*$regarray_1 @array @directUnwrap = @inheritAnyTag $regarrayedge_0_1*/(parseStart1, stack1); 3656 result = tmp.val; 3657 resultLocation = tmp.start; 3658 return 0; 3659 } 3660 } 3661 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Expression 3662 // type: unknown 3663 // SymbolDeclaration -> DeclarationType? Identifier MacroParametersPart? Annotation* "=" Expression.";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 3664 private int parse44(ref NonterminalType!(2) result, ref Location resultLocation, Location parseStart6, ParseStackElem!(Location, NonterminalType!38/*DeclarationType?*/) stack6, ParseStackElem!(Location, Token) stack5, ParseStackElem!(Location, NonterminalType!39/*MacroParametersPart?*/) stack4, ParseStackElem!(Location, NonterminalType!41/*Annotation**/) stack3, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!14/*Expression*/) stack1) 3665 { 3666 alias ThisParseResult = typeof(result); 3667 alias ParseResultIn = CreatorInstance.NonterminalUnion!([2]); 3668 ParseResultIn currentResult; 3669 Location currentResultLocation; 3670 int gotoParent = -1; 3671 Location currentStart = lexer.front.currentLocation; 3672 if (lexer.empty) 3673 { 3674 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 3675 return -1; 3676 } 3677 else if (lexer.front.symbol == Lexer.tokenID!q{";"}) 3678 { 3679 auto next = popToken(); 3680 NonterminalType!(2) r; 3681 Location rl; 3682 gotoParent = parse45(r, rl, parseStart6, stack6, stack5, stack4, stack3, stack2, stack1, next); 3683 if (gotoParent < 0) 3684 return gotoParent; 3685 assert(gotoParent > 0); 3686 result = r; 3687 resultLocation = rl; 3688 return gotoParent - 1; 3689 } 3690 else 3691 { 3692 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 3693 lexer.front.currentLocation, lexer.front.currentTokenEnd); 3694 return -1; 3695 } 3696 } 3697 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Expression ";" 3698 // type: unknown 3699 // SymbolDeclaration -> DeclarationType? Identifier MacroParametersPart? Annotation* "=" Expression ";". {$end, Identifier, "fragment", "token", "option", "import", "match"} 3700 private int parse45(ref NonterminalType!(2) result, ref Location resultLocation, Location parseStart7, ParseStackElem!(Location, NonterminalType!38/*DeclarationType?*/) stack7, ParseStackElem!(Location, Token) stack6, ParseStackElem!(Location, NonterminalType!39/*MacroParametersPart?*/) stack5, ParseStackElem!(Location, NonterminalType!41/*Annotation**/) stack4, ParseStackElem!(Location, Token) stack3, ParseStackElem!(Location, NonterminalType!14/*Expression*/) stack2, ParseStackElem!(Location, Token) stack1) 3701 { 3702 alias ThisParseResult = typeof(result); 3703 Location currentStart = lexer.front.currentLocation; 3704 { 3705 auto tmp = reduce16_SymbolDeclaration/*SymbolDeclaration = DeclarationType? Identifier MacroParametersPart? Annotation* "=" Expression ";"*/(parseStart7, stack7, stack6, stack5, stack4, stack3, stack2, stack1); 3706 result = tmp.val; 3707 resultLocation = tmp.start; 3708 return 6; 3709 } 3710 } 3711 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation 3712 // type: unknown 3713 // Expression -> Alternation. {";", ")", ",", "}"} 3714 // Alternation -> Alternation."|" Concatenation {";", ")", ",", "}", "|"} 3715 private int parse46(ref CreatorInstance.NonterminalUnion!([14, 15]) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, NonterminalType!15/*Alternation*/) stack1) 3716 { 3717 alias ThisParseResult = typeof(result); 3718 alias ParseResultIn = CreatorInstance.NonterminalUnion!([14, 15]); 3719 ParseResultIn currentResult; 3720 Location currentResultLocation; 3721 int gotoParent = -1; 3722 Location currentStart = lexer.front.currentLocation; 3723 if (lexer.empty) 3724 { 3725 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 3726 return -1; 3727 } 3728 else if (lexer.front.symbol == Lexer.tokenID!q{"|"}) 3729 { 3730 auto next = popToken(); 3731 NonterminalType!(15) r; 3732 Location rl; 3733 gotoParent = parse47(r, rl, parseStart1, stack1, next); 3734 if (gotoParent < 0) 3735 return gotoParent; 3736 assert(gotoParent > 0); 3737 result = ThisParseResult.create(15/*Alternation*/, r); 3738 resultLocation = rl; 3739 return gotoParent - 1; 3740 } 3741 else 3742 { 3743 auto tmp = reduce58_Expression/*Expression = <Alternation*/(parseStart1, stack1); 3744 result = ThisParseResult.create(14/*Expression*/, tmp.val); 3745 resultLocation = tmp.start; 3746 return 0; 3747 } 3748 } 3749 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" 3750 // type: unknown 3751 // Alternation -> Alternation "|".Concatenation {";", ")", ",", "}", "|"} 3752 // Annotation -> ."@" Identifier AnnotationParams? {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 3753 // NegativeLookahead -> ."!" Symbol {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 3754 // NegativeLookahead -> ."!" "anytoken" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 3755 // Concatenation -> .TokenMinus {";", ")", ",", "}", "|"} 3756 // Concatenation -> .TokenMinus TokenMinus+ @regArray_ProductionAnnotation* {";", ")", ",", "}", "|"} 3757 // Concatenation -> .TokenMinus @regArray_ProductionAnnotation+ {";", ")", ",", "}", "|"} 3758 // Concatenation -> .@regArray_ProductionAnnotation+ {";", ")", ",", "}", "|"} 3759 // TokenMinus -> .TokenMinus "-" AnnotatedExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "-", "|", "^", "t("} 3760 // TokenMinus -> .AnnotatedExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "-", "|", "^", "t("} 3761 // AnnotatedExpression -> .@regArray_ExpressionAnnotation* ExpressionName? ExpressionPrefix* PostfixExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "-", "|", "^", "t("} 3762 // @regArray_ExpressionAnnotation* -> . {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 3763 // $regarray_1 -> .$regarray_1 $regarrayedge_1_1 {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 3764 // $regarray_1 -> .$regarrayedge_0_1 {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 3765 // @regArray_ProductionAnnotation+ ---> $regarray_1 3766 // @regArray_ExpressionAnnotation* ---> $regarray_1 3767 // $regarrayedge_0_1 ---> Annotation 3768 // $regarrayedge_0_1 ---> NegativeLookahead 3769 private int parse47(ref NonterminalType!(15) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, NonterminalType!15/*Alternation*/) stack2, ParseStackElem!(Location, Token) stack1) 3770 { 3771 alias ThisParseResult = typeof(result); 3772 alias ParseResultIn = CreatorInstance.NonterminalUnion!([10, 13, 15, 16, 18, 19, 51, 57]); 3773 ParseResultIn currentResult; 3774 Location currentResultLocation; 3775 int gotoParent = -1; 3776 Location currentStart = lexer.front.currentLocation; 3777 if (lexer.empty) 3778 { 3779 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 3780 return -1; 3781 } 3782 else if (lexer.front.symbol == Lexer.tokenID!q{"@"}) 3783 { 3784 auto next = popToken(); 3785 NonterminalType!(10) r; 3786 Location rl; 3787 gotoParent = parse8(r, rl, currentStart, next); 3788 if (gotoParent < 0) 3789 return gotoParent; 3790 currentResult = ParseResultIn.create(10/*Annotation*/, r); 3791 currentResultLocation = rl; 3792 } 3793 else if (lexer.front.symbol == Lexer.tokenID!q{"!"}) 3794 { 3795 auto next = popToken(); 3796 NonterminalType!(13) r; 3797 Location rl; 3798 gotoParent = parse53(r, rl, currentStart, next); 3799 if (gotoParent < 0) 3800 return gotoParent; 3801 currentResult = ParseResultIn.create(13/*NegativeLookahead*/, r); 3802 currentResultLocation = rl; 3803 } 3804 else 3805 { 3806 auto tmp = reduce127/*@regArray_ExpressionAnnotation* @array @directUnwrap @regArray =*/(); 3807 currentResult = ParseResultIn.create(51/*@regArray_ExpressionAnnotation**/, tmp.val); 3808 currentResultLocation = tmp.start; 3809 gotoParent = 0; 3810 } 3811 3812 while (gotoParent == 0) 3813 { 3814 if (currentResult.nonterminalID == 10/*Annotation*/) 3815 { 3816 auto next = ParseStackElem!(Location, NonterminalType!58/*$regarrayedge_0_1*/)(currentResultLocation, currentResult.get!(10/*Annotation*/)()); 3817 NonterminalType!(57) r; 3818 Location rl; 3819 gotoParent = parse43(r, rl, currentStart, next); 3820 if (gotoParent < 0) 3821 return gotoParent; 3822 currentResult = ParseResultIn.create(57/*$regarray_1*/, r); 3823 currentResultLocation = rl; 3824 } 3825 else if (currentResult.nonterminalID == 13/*NegativeLookahead*/) 3826 { 3827 auto next = ParseStackElem!(Location, NonterminalType!58/*$regarrayedge_0_1*/)(currentResultLocation, currentResult.get!(13/*NegativeLookahead*/)()); 3828 NonterminalType!(57) r; 3829 Location rl; 3830 gotoParent = parse43(r, rl, currentStart, next); 3831 if (gotoParent < 0) 3832 return gotoParent; 3833 currentResult = ParseResultIn.create(57/*$regarray_1*/, r); 3834 currentResultLocation = rl; 3835 } 3836 else if (currentResult.nonterminalID == 16/*Concatenation*/) 3837 { 3838 auto next = ParseStackElem!(Location, NonterminalType!16/*Concatenation*/)(currentResultLocation, currentResult.get!(16/*Concatenation*/)()); 3839 NonterminalType!(15) r; 3840 Location rl; 3841 gotoParent = parse48(r, rl, parseStart2, stack2, stack1, next); 3842 if (gotoParent < 0) 3843 return gotoParent; 3844 assert(gotoParent > 0); 3845 result = r; 3846 resultLocation = rl; 3847 return gotoParent - 1; 3848 } 3849 else if (currentResult.nonterminalID == 18/*TokenMinus*/) 3850 { 3851 auto next = ParseStackElem!(Location, NonterminalType!18/*TokenMinus*/)(currentResultLocation, currentResult.get!(18/*TokenMinus*/)()); 3852 CreatorInstance.NonterminalUnion!([16, 18]) r; 3853 Location rl; 3854 gotoParent = parse49(r, rl, currentStart, next); 3855 if (gotoParent < 0) 3856 return gotoParent; 3857 currentResult = r; 3858 currentResultLocation = rl; 3859 } 3860 else if (currentResult.nonterminalID == 19/*AnnotatedExpression*/) 3861 { 3862 currentResult = ParseResultIn.create(18/*TokenMinus*/, currentResult.get!(19/*AnnotatedExpression*/)); 3863 currentResultLocation = currentResultLocation; 3864 } 3865 else if (currentResult.nonterminalID == 51/*@regArray_ExpressionAnnotation**/) 3866 { 3867 auto next = ParseStackElem!(Location, NonterminalType!51/*@regArray_ExpressionAnnotation**/)(currentResultLocation, currentResult.get!(51/*@regArray_ExpressionAnnotation**/)()); 3868 NonterminalType!(19) r; 3869 Location rl; 3870 gotoParent = parse63(r, rl, currentStart, next); 3871 if (gotoParent < 0) 3872 return gotoParent; 3873 currentResult = ParseResultIn.create(19/*AnnotatedExpression*/, r); 3874 currentResultLocation = rl; 3875 } 3876 else if (currentResult.nonterminalID == 57/*$regarray_1*/) 3877 { 3878 auto next = ParseStackElem!(Location, CreatorInstance.NonterminalArray)(currentResultLocation, currentResult.get!(57/*$regarray_1*/)()); 3879 CreatorInstance.NonterminalUnion!([16, 19, 57]) r; 3880 Location rl; 3881 gotoParent = parse80(r, rl, currentStart, next); 3882 if (gotoParent < 0) 3883 return gotoParent; 3884 currentResult = r; 3885 currentResultLocation = rl; 3886 } 3887 else 3888 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 3889 } 3890 3891 result = currentResult.get!(15/*Alternation*/); 3892 resultLocation = currentResultLocation; 3893 return gotoParent - 1; 3894 } 3895 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" Concatenation 3896 // type: unknown 3897 // Alternation -> Alternation "|" Concatenation. {";", ")", ",", "}", "|"} 3898 private int parse48(ref NonterminalType!(15) result, ref Location resultLocation, Location parseStart3, ParseStackElem!(Location, NonterminalType!15/*Alternation*/) stack3, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!16/*Concatenation*/) stack1) 3899 { 3900 alias ThisParseResult = typeof(result); 3901 Location currentStart = lexer.front.currentLocation; 3902 { 3903 auto tmp = reduce60_Alternation/*Alternation = Alternation "|" Concatenation*/(parseStart3, stack3, stack2, stack1); 3904 result = tmp.val; 3905 resultLocation = tmp.start; 3906 return 2; 3907 } 3908 } 3909 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus 3910 // type: unknown 3911 // Concatenation -> TokenMinus. {";", ")", ",", "}", "|"} 3912 // Concatenation -> TokenMinus.TokenMinus+ @regArray_ProductionAnnotation* {";", ")", ",", "}", "|"} 3913 // Concatenation -> TokenMinus.@regArray_ProductionAnnotation+ {";", ")", ",", "}", "|"} 3914 // TokenMinus -> TokenMinus."-" AnnotatedExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "-", "|", "^", "t("} 3915 // Annotation -> ."@" Identifier AnnotationParams? {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 3916 // NegativeLookahead -> ."!" Symbol {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 3917 // NegativeLookahead -> ."!" "anytoken" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 3918 // TokenMinus -> .TokenMinus "-" AnnotatedExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "-", "|", "^", "t("} 3919 // TokenMinus -> .AnnotatedExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "-", "|", "^", "t("} 3920 // AnnotatedExpression -> .@regArray_ExpressionAnnotation* ExpressionName? ExpressionPrefix* PostfixExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "-", "|", "^", "t("} 3921 // TokenMinus+ -> .TokenMinus {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 3922 // TokenMinus+ -> .TokenMinus+ TokenMinus {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 3923 // @regArray_ExpressionAnnotation* -> . {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 3924 // $regarray_1 -> .$regarray_1 $regarrayedge_1_1 {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 3925 // $regarray_1 -> .$regarrayedge_0_1 {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 3926 // @regArray_ProductionAnnotation+ ---> $regarray_1 3927 // @regArray_ExpressionAnnotation* ---> $regarray_1 3928 // $regarrayedge_0_1 ---> Annotation 3929 // $regarrayedge_0_1 ---> NegativeLookahead 3930 private int parse49(ref CreatorInstance.NonterminalUnion!([16, 18]) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, NonterminalType!18/*TokenMinus*/) stack1) 3931 { 3932 alias ThisParseResult = typeof(result); 3933 alias ParseResultIn = CreatorInstance.NonterminalUnion!([10, 13, 16, 18, 19, 46, 51, 57]); 3934 ParseResultIn currentResult; 3935 Location currentResultLocation; 3936 int gotoParent = -1; 3937 Location currentStart = lexer.front.currentLocation; 3938 if (lexer.empty) 3939 { 3940 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 3941 return -1; 3942 } 3943 else if (lexer.front.symbol == Lexer.tokenID!"Identifier" || lexer.front.symbol == Lexer.tokenID!"StringLiteral" || lexer.front.symbol == Lexer.tokenID!"CharacterSetLiteral" || lexer.front.symbol == Lexer.tokenID!q{"{"} || lexer.front.symbol == Lexer.tokenID!q{"<"} || lexer.front.symbol == Lexer.tokenID!q{"^"} || lexer.front.symbol == Lexer.tokenID!q{"t("}) 3944 { 3945 auto tmp = reduce127/*@regArray_ExpressionAnnotation* @array @directUnwrap @regArray =*/(); 3946 currentResult = ParseResultIn.create(51/*@regArray_ExpressionAnnotation**/, tmp.val); 3947 currentResultLocation = tmp.start; 3948 gotoParent = 0; 3949 } 3950 else if (lexer.front.symbol == Lexer.tokenID!q{";"} || lexer.front.symbol == Lexer.tokenID!q{")"} || lexer.front.symbol == Lexer.tokenID!q{","} || lexer.front.symbol == Lexer.tokenID!q{"}"} || lexer.front.symbol == Lexer.tokenID!q{"|"}) 3951 { 3952 auto tmp = reduce61_Concatenation/*Concatenation = <TokenMinus*/(parseStart1, stack1); 3953 result = ThisParseResult.create(16/*Concatenation*/, tmp.val); 3954 resultLocation = tmp.start; 3955 return 0; 3956 } 3957 else if (lexer.front.symbol == Lexer.tokenID!q{"@"}) 3958 { 3959 auto next = popToken(); 3960 NonterminalType!(10) r; 3961 Location rl; 3962 gotoParent = parse8(r, rl, currentStart, next); 3963 if (gotoParent < 0) 3964 return gotoParent; 3965 currentResult = ParseResultIn.create(10/*Annotation*/, r); 3966 currentResultLocation = rl; 3967 } 3968 else if (lexer.front.symbol == Lexer.tokenID!q{"!"}) 3969 { 3970 auto next = popToken(); 3971 NonterminalType!(13) r; 3972 Location rl; 3973 gotoParent = parse53(r, rl, currentStart, next); 3974 if (gotoParent < 0) 3975 return gotoParent; 3976 currentResult = ParseResultIn.create(13/*NegativeLookahead*/, r); 3977 currentResultLocation = rl; 3978 } 3979 else if (lexer.front.symbol == Lexer.tokenID!q{"-"}) 3980 { 3981 auto next = popToken(); 3982 NonterminalType!(18) r; 3983 Location rl; 3984 gotoParent = parse51(r, rl, parseStart1, stack1, next); 3985 if (gotoParent < 0) 3986 return gotoParent; 3987 assert(gotoParent > 0); 3988 result = ThisParseResult.create(18/*TokenMinus*/, r); 3989 resultLocation = rl; 3990 return gotoParent - 1; 3991 } 3992 else 3993 { 3994 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 3995 lexer.front.currentLocation, lexer.front.currentTokenEnd); 3996 return -1; 3997 } 3998 3999 while (gotoParent == 0) 4000 { 4001 if (currentResult.nonterminalID == 10/*Annotation*/) 4002 { 4003 auto next = ParseStackElem!(Location, NonterminalType!58/*$regarrayedge_0_1*/)(currentResultLocation, currentResult.get!(10/*Annotation*/)()); 4004 NonterminalType!(57) r; 4005 Location rl; 4006 gotoParent = parse43(r, rl, currentStart, next); 4007 if (gotoParent < 0) 4008 return gotoParent; 4009 currentResult = ParseResultIn.create(57/*$regarray_1*/, r); 4010 currentResultLocation = rl; 4011 } 4012 else if (currentResult.nonterminalID == 13/*NegativeLookahead*/) 4013 { 4014 auto next = ParseStackElem!(Location, NonterminalType!58/*$regarrayedge_0_1*/)(currentResultLocation, currentResult.get!(13/*NegativeLookahead*/)()); 4015 NonterminalType!(57) r; 4016 Location rl; 4017 gotoParent = parse43(r, rl, currentStart, next); 4018 if (gotoParent < 0) 4019 return gotoParent; 4020 currentResult = ParseResultIn.create(57/*$regarray_1*/, r); 4021 currentResultLocation = rl; 4022 } 4023 else if (currentResult.nonterminalID == 18/*TokenMinus*/) 4024 { 4025 auto next = ParseStackElem!(Location, NonterminalType!18/*TokenMinus*/)(currentResultLocation, currentResult.get!(18/*TokenMinus*/)()); 4026 CreatorInstance.NonterminalUnion!([18, 46]) r; 4027 Location rl; 4028 gotoParent = parse50(r, rl, currentStart, next); 4029 if (gotoParent < 0) 4030 return gotoParent; 4031 currentResult = r; 4032 currentResultLocation = rl; 4033 } 4034 else if (currentResult.nonterminalID == 19/*AnnotatedExpression*/) 4035 { 4036 currentResult = ParseResultIn.create(18/*TokenMinus*/, currentResult.get!(19/*AnnotatedExpression*/)); 4037 currentResultLocation = currentResultLocation; 4038 } 4039 else if (currentResult.nonterminalID == 46/*TokenMinus+*/) 4040 { 4041 auto next = ParseStackElem!(Location, NonterminalType!46/*TokenMinus+*/)(currentResultLocation, currentResult.get!(46/*TokenMinus+*/)()); 4042 CreatorInstance.NonterminalUnion!([16, 46]) r; 4043 Location rl; 4044 gotoParent = parse109(r, rl, parseStart1, stack1, currentStart, next); 4045 if (gotoParent < 0) 4046 return gotoParent; 4047 currentResult = r; 4048 currentResultLocation = rl; 4049 } 4050 else if (currentResult.nonterminalID == 51/*@regArray_ExpressionAnnotation**/) 4051 { 4052 auto next = ParseStackElem!(Location, NonterminalType!51/*@regArray_ExpressionAnnotation**/)(currentResultLocation, currentResult.get!(51/*@regArray_ExpressionAnnotation**/)()); 4053 NonterminalType!(19) r; 4054 Location rl; 4055 gotoParent = parse63(r, rl, currentStart, next); 4056 if (gotoParent < 0) 4057 return gotoParent; 4058 currentResult = ParseResultIn.create(19/*AnnotatedExpression*/, r); 4059 currentResultLocation = rl; 4060 } 4061 else if (currentResult.nonterminalID == 57/*$regarray_1*/) 4062 { 4063 auto next = ParseStackElem!(Location, CreatorInstance.NonterminalArray)(currentResultLocation, currentResult.get!(57/*$regarray_1*/)()); 4064 CreatorInstance.NonterminalUnion!([16, 19, 57]) r; 4065 Location rl; 4066 gotoParent = parse113(r, rl, parseStart1, stack1, currentStart, next); 4067 if (gotoParent < 0) 4068 return gotoParent; 4069 currentResult = r; 4070 currentResultLocation = rl; 4071 } 4072 else 4073 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 4074 } 4075 4076 result = currentResult; 4077 resultLocation = currentResultLocation; 4078 return gotoParent - 1; 4079 } 4080 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus 4081 // type: unknown 4082 // TokenMinus -> TokenMinus."-" AnnotatedExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "-", "|", "^", "t("} 4083 // TokenMinus+ -> TokenMinus. {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 4084 private int parse50(ref CreatorInstance.NonterminalUnion!([18, 46]) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, NonterminalType!18/*TokenMinus*/) stack1) 4085 { 4086 alias ThisParseResult = typeof(result); 4087 alias ParseResultIn = CreatorInstance.NonterminalUnion!([18, 46]); 4088 ParseResultIn currentResult; 4089 Location currentResultLocation; 4090 int gotoParent = -1; 4091 Location currentStart = lexer.front.currentLocation; 4092 if (lexer.empty) 4093 { 4094 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 4095 return -1; 4096 } 4097 else if (lexer.front.symbol == Lexer.tokenID!q{"-"}) 4098 { 4099 auto next = popToken(); 4100 NonterminalType!(18) r; 4101 Location rl; 4102 gotoParent = parse51(r, rl, parseStart1, stack1, next); 4103 if (gotoParent < 0) 4104 return gotoParent; 4105 assert(gotoParent > 0); 4106 result = ThisParseResult.create(18/*TokenMinus*/, r); 4107 resultLocation = rl; 4108 return gotoParent - 1; 4109 } 4110 else 4111 { 4112 auto tmp = reduce62/*TokenMinus+ @array = TokenMinus [virtual]*/(parseStart1, stack1); 4113 result = ThisParseResult.create(46/*TokenMinus+*/, tmp.val); 4114 resultLocation = tmp.start; 4115 return 0; 4116 } 4117 } 4118 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" 4119 // type: unknown 4120 // TokenMinus -> TokenMinus "-".AnnotatedExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "-", "|", "^", "t("} 4121 // Annotation -> ."@" Identifier AnnotationParams? {Identifier, StringLiteral, CharacterSetLiteral, "@", "{", "!", "<", "^", "t("} 4122 // NegativeLookahead -> ."!" Symbol {Identifier, StringLiteral, CharacterSetLiteral, "@", "{", "!", "<", "^", "t("} 4123 // NegativeLookahead -> ."!" "anytoken" {Identifier, StringLiteral, CharacterSetLiteral, "@", "{", "!", "<", "^", "t("} 4124 // AnnotatedExpression -> .@regArray_ExpressionAnnotation* ExpressionName? ExpressionPrefix* PostfixExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "-", "|", "^", "t("} 4125 // @regArray_ExpressionAnnotation* -> . {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 4126 // $regarray_1 -> .$regarray_1 $regarrayedge_1_1 {Identifier, StringLiteral, CharacterSetLiteral, "@", "{", "!", "<", "^", "t("} 4127 // $regarray_1 -> .$regarrayedge_0_1 {Identifier, StringLiteral, CharacterSetLiteral, "@", "{", "!", "<", "^", "t("} 4128 // @regArray_ExpressionAnnotation* ---> $regarray_1 4129 // $regarrayedge_0_1 ---> Annotation 4130 // $regarrayedge_0_1 ---> NegativeLookahead 4131 private int parse51(ref NonterminalType!(18) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, NonterminalType!18/*TokenMinus*/) stack2, ParseStackElem!(Location, Token) stack1) 4132 { 4133 alias ThisParseResult = typeof(result); 4134 alias ParseResultIn = CreatorInstance.NonterminalUnion!([10, 13, 18, 19, 51, 57]); 4135 ParseResultIn currentResult; 4136 Location currentResultLocation; 4137 int gotoParent = -1; 4138 Location currentStart = lexer.front.currentLocation; 4139 if (lexer.empty) 4140 { 4141 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 4142 return -1; 4143 } 4144 else if (lexer.front.symbol == Lexer.tokenID!q{"@"}) 4145 { 4146 auto next = popToken(); 4147 NonterminalType!(10) r; 4148 Location rl; 4149 gotoParent = parse8(r, rl, currentStart, next); 4150 if (gotoParent < 0) 4151 return gotoParent; 4152 currentResult = ParseResultIn.create(10/*Annotation*/, r); 4153 currentResultLocation = rl; 4154 } 4155 else if (lexer.front.symbol == Lexer.tokenID!q{"!"}) 4156 { 4157 auto next = popToken(); 4158 NonterminalType!(13) r; 4159 Location rl; 4160 gotoParent = parse53(r, rl, currentStart, next); 4161 if (gotoParent < 0) 4162 return gotoParent; 4163 currentResult = ParseResultIn.create(13/*NegativeLookahead*/, r); 4164 currentResultLocation = rl; 4165 } 4166 else 4167 { 4168 auto tmp = reduce127/*@regArray_ExpressionAnnotation* @array @directUnwrap @regArray =*/(); 4169 currentResult = ParseResultIn.create(51/*@regArray_ExpressionAnnotation**/, tmp.val); 4170 currentResultLocation = tmp.start; 4171 gotoParent = 0; 4172 } 4173 4174 while (gotoParent == 0) 4175 { 4176 if (currentResult.nonterminalID == 10/*Annotation*/) 4177 { 4178 auto next = ParseStackElem!(Location, NonterminalType!58/*$regarrayedge_0_1*/)(currentResultLocation, currentResult.get!(10/*Annotation*/)()); 4179 NonterminalType!(57) r; 4180 Location rl; 4181 gotoParent = parse43(r, rl, currentStart, next); 4182 if (gotoParent < 0) 4183 return gotoParent; 4184 currentResult = ParseResultIn.create(57/*$regarray_1*/, r); 4185 currentResultLocation = rl; 4186 } 4187 else if (currentResult.nonterminalID == 13/*NegativeLookahead*/) 4188 { 4189 auto next = ParseStackElem!(Location, NonterminalType!58/*$regarrayedge_0_1*/)(currentResultLocation, currentResult.get!(13/*NegativeLookahead*/)()); 4190 NonterminalType!(57) r; 4191 Location rl; 4192 gotoParent = parse43(r, rl, currentStart, next); 4193 if (gotoParent < 0) 4194 return gotoParent; 4195 currentResult = ParseResultIn.create(57/*$regarray_1*/, r); 4196 currentResultLocation = rl; 4197 } 4198 else if (currentResult.nonterminalID == 19/*AnnotatedExpression*/) 4199 { 4200 auto next = ParseStackElem!(Location, NonterminalType!19/*AnnotatedExpression*/)(currentResultLocation, currentResult.get!(19/*AnnotatedExpression*/)()); 4201 NonterminalType!(18) r; 4202 Location rl; 4203 gotoParent = parse52(r, rl, parseStart2, stack2, stack1, next); 4204 if (gotoParent < 0) 4205 return gotoParent; 4206 assert(gotoParent > 0); 4207 result = r; 4208 resultLocation = rl; 4209 return gotoParent - 1; 4210 } 4211 else if (currentResult.nonterminalID == 51/*@regArray_ExpressionAnnotation**/) 4212 { 4213 auto next = ParseStackElem!(Location, NonterminalType!51/*@regArray_ExpressionAnnotation**/)(currentResultLocation, currentResult.get!(51/*@regArray_ExpressionAnnotation**/)()); 4214 NonterminalType!(19) r; 4215 Location rl; 4216 gotoParent = parse63(r, rl, currentStart, next); 4217 if (gotoParent < 0) 4218 return gotoParent; 4219 currentResult = ParseResultIn.create(19/*AnnotatedExpression*/, r); 4220 currentResultLocation = rl; 4221 } 4222 else if (currentResult.nonterminalID == 57/*$regarray_1*/) 4223 { 4224 auto next = ParseStackElem!(Location, CreatorInstance.NonterminalArray)(currentResultLocation, currentResult.get!(57/*$regarray_1*/)()); 4225 CreatorInstance.NonterminalUnion!([19, 57]) r; 4226 Location rl; 4227 gotoParent = parse108(r, rl, currentStart, next); 4228 if (gotoParent < 0) 4229 return gotoParent; 4230 currentResult = r; 4231 currentResultLocation = rl; 4232 } 4233 else 4234 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 4235 } 4236 4237 result = currentResult.get!(18/*TokenMinus*/); 4238 resultLocation = currentResultLocation; 4239 return gotoParent - 1; 4240 } 4241 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" AnnotatedExpression 4242 // type: unknown 4243 // TokenMinus -> TokenMinus "-" AnnotatedExpression. {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "-", "|", "^", "t("} 4244 private int parse52(ref NonterminalType!(18) result, ref Location resultLocation, Location parseStart3, ParseStackElem!(Location, NonterminalType!18/*TokenMinus*/) stack3, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!19/*AnnotatedExpression*/) stack1) 4245 { 4246 alias ThisParseResult = typeof(result); 4247 Location currentStart = lexer.front.currentLocation; 4248 { 4249 auto tmp = reduce76_TokenMinus/*TokenMinus = TokenMinus "-" AnnotatedExpression*/(parseStart3, stack3, stack2, stack1); 4250 result = tmp.val; 4251 resultLocation = tmp.start; 4252 return 2; 4253 } 4254 } 4255 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" 4256 // type: unknown 4257 // NegativeLookahead -> "!".Symbol {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 4258 // NegativeLookahead -> "!"."anytoken" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 4259 // Symbol -> .Name {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 4260 // Symbol -> .Token {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 4261 // Symbol -> .MacroInstance {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 4262 // Name -> .Identifier {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 4263 // Token -> .StringLiteral {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 4264 // Token -> .CharacterSetLiteral {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 4265 // MacroInstance -> .Identifier "(" ExpressionList? ")" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 4266 private int parse53(ref NonterminalType!(13) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 4267 { 4268 alias ThisParseResult = typeof(result); 4269 alias ParseResultIn = CreatorInstance.NonterminalUnion!([13, 28, 29, 30, 33]); 4270 ParseResultIn currentResult; 4271 Location currentResultLocation; 4272 int gotoParent = -1; 4273 Location currentStart = lexer.front.currentLocation; 4274 if (lexer.empty) 4275 { 4276 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 4277 return -1; 4278 } 4279 else if (lexer.front.symbol == Lexer.tokenID!"Identifier") 4280 { 4281 auto next = popToken(); 4282 CreatorInstance.NonterminalUnion!([29, 33]) r; 4283 Location rl; 4284 gotoParent = parse54(r, rl, currentStart, next); 4285 if (gotoParent < 0) 4286 return gotoParent; 4287 currentResult = r; 4288 currentResultLocation = rl; 4289 } 4290 else if (lexer.front.symbol == Lexer.tokenID!"StringLiteral") 4291 { 4292 auto next = popToken(); 4293 NonterminalType!(30) r; 4294 Location rl; 4295 gotoParent = parse75(r, rl, currentStart, next); 4296 if (gotoParent < 0) 4297 return gotoParent; 4298 currentResult = ParseResultIn.create(30/*Token*/, r); 4299 currentResultLocation = rl; 4300 } 4301 else if (lexer.front.symbol == Lexer.tokenID!"CharacterSetLiteral") 4302 { 4303 auto next = popToken(); 4304 NonterminalType!(30) r; 4305 Location rl; 4306 gotoParent = parse76(r, rl, currentStart, next); 4307 if (gotoParent < 0) 4308 return gotoParent; 4309 currentResult = ParseResultIn.create(30/*Token*/, r); 4310 currentResultLocation = rl; 4311 } 4312 else if (lexer.front.symbol == Lexer.tokenID!q{"anytoken"}) 4313 { 4314 auto next = popToken(); 4315 NonterminalType!(13) r; 4316 Location rl; 4317 gotoParent = parse107(r, rl, parseStart1, stack1, next); 4318 if (gotoParent < 0) 4319 return gotoParent; 4320 assert(gotoParent > 0); 4321 result = r; 4322 resultLocation = rl; 4323 return gotoParent - 1; 4324 } 4325 else 4326 { 4327 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 4328 lexer.front.currentLocation, lexer.front.currentTokenEnd); 4329 return -1; 4330 } 4331 4332 while (gotoParent == 0) 4333 { 4334 if (currentResult.nonterminalID == 28/*Symbol*/) 4335 { 4336 auto next = ParseStackElem!(Location, NonterminalType!28/*Symbol*/)(currentResultLocation, currentResult.get!(28/*Symbol*/)()); 4337 NonterminalType!(13) r; 4338 Location rl; 4339 gotoParent = parse106(r, rl, parseStart1, stack1, next); 4340 if (gotoParent < 0) 4341 return gotoParent; 4342 assert(gotoParent > 0); 4343 result = r; 4344 resultLocation = rl; 4345 return gotoParent - 1; 4346 } 4347 else if (currentResult.nonterminalID == 29/*Name*/) 4348 { 4349 currentResult = ParseResultIn.create(28/*Symbol*/, currentResult.get!(29/*Name*/)); 4350 currentResultLocation = currentResultLocation; 4351 } 4352 else if (currentResult.nonterminalID == 30/*Token*/) 4353 { 4354 currentResult = ParseResultIn.create(28/*Symbol*/, currentResult.get!(30/*Token*/)); 4355 currentResultLocation = currentResultLocation; 4356 } 4357 else if (currentResult.nonterminalID == 33/*MacroInstance*/) 4358 { 4359 currentResult = ParseResultIn.create(28/*Symbol*/, currentResult.get!(33/*MacroInstance*/)); 4360 currentResultLocation = currentResultLocation; 4361 } 4362 else 4363 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 4364 } 4365 4366 result = currentResult.get!(13/*NegativeLookahead*/); 4367 resultLocation = currentResultLocation; 4368 return gotoParent - 1; 4369 } 4370 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier 4371 // type: unknown 4372 // Name -> Identifier. {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 4373 // MacroInstance -> Identifier."(" ExpressionList? ")" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 4374 private int parse54(ref CreatorInstance.NonterminalUnion!([29, 33]) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 4375 { 4376 alias ThisParseResult = typeof(result); 4377 alias ParseResultIn = CreatorInstance.NonterminalUnion!([29, 33]); 4378 ParseResultIn currentResult; 4379 Location currentResultLocation; 4380 int gotoParent = -1; 4381 Location currentStart = lexer.front.currentLocation; 4382 if (lexer.empty) 4383 { 4384 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 4385 return -1; 4386 } 4387 else if (lexer.front.symbol == Lexer.tokenID!q{"("}) 4388 { 4389 auto next = popToken(); 4390 NonterminalType!(33) r; 4391 Location rl; 4392 gotoParent = parse55(r, rl, parseStart1, stack1, next); 4393 if (gotoParent < 0) 4394 return gotoParent; 4395 assert(gotoParent > 0); 4396 result = ThisParseResult.create(33/*MacroInstance*/, r); 4397 resultLocation = rl; 4398 return gotoParent - 1; 4399 } 4400 else 4401 { 4402 auto tmp = reduce108_Name/*Name = Identifier*/(parseStart1, stack1); 4403 result = ThisParseResult.create(29/*Name*/, tmp.val); 4404 resultLocation = tmp.start; 4405 return 0; 4406 } 4407 } 4408 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" 4409 // type: unknown 4410 // MacroInstance -> Identifier "(".ExpressionList? ")" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", ">>", "-", "|", "^", "+", "t("} 4411 // Annotation -> ."@" Identifier AnnotationParams? {Identifier, StringLiteral, CharacterSetLiteral, ")", ",", "@", "{", "!", "<", "|", "^", "t("} 4412 // NegativeLookahead -> ."!" Symbol {Identifier, StringLiteral, CharacterSetLiteral, ")", ",", "@", "{", "!", "<", "|", "^", "t("} 4413 // NegativeLookahead -> ."!" "anytoken" {Identifier, StringLiteral, CharacterSetLiteral, ")", ",", "@", "{", "!", "<", "|", "^", "t("} 4414 // Expression -> .Alternation {")", ","} 4415 // Alternation -> .Alternation "|" Concatenation {")", ",", "|"} 4416 // Alternation -> .Concatenation {")", ",", "|"} 4417 // Concatenation -> .TokenMinus {")", ",", "|"} 4418 // Concatenation -> .TokenMinus TokenMinus+ @regArray_ProductionAnnotation* {")", ",", "|"} 4419 // Concatenation -> .TokenMinus @regArray_ProductionAnnotation+ {")", ",", "|"} 4420 // Concatenation -> .@regArray_ProductionAnnotation+ {")", ",", "|"} 4421 // TokenMinus -> .TokenMinus "-" AnnotatedExpression {Identifier, StringLiteral, CharacterSetLiteral, ")", ",", "@", "{", "!", "<", "-", "|", "^", "t("} 4422 // TokenMinus -> .AnnotatedExpression {Identifier, StringLiteral, CharacterSetLiteral, ")", ",", "@", "{", "!", "<", "-", "|", "^", "t("} 4423 // AnnotatedExpression -> .@regArray_ExpressionAnnotation* ExpressionName? ExpressionPrefix* PostfixExpression {Identifier, StringLiteral, CharacterSetLiteral, ")", ",", "@", "{", "!", "<", "-", "|", "^", "t("} 4424 // ExpressionList -> .Expression {")", ","} 4425 // ExpressionList -> .ExpressionList "," Expression {")", ","} 4426 // @regArray_ExpressionAnnotation* -> . {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 4427 // ExpressionList? -> . {")"} 4428 // $regarray_1 -> .$regarray_1 $regarrayedge_1_1 {Identifier, StringLiteral, CharacterSetLiteral, ")", ",", "@", "{", "!", "<", "|", "^", "t("} 4429 // $regarray_1 -> .$regarrayedge_0_1 {Identifier, StringLiteral, CharacterSetLiteral, ")", ",", "@", "{", "!", "<", "|", "^", "t("} 4430 // ExpressionList? ---> ExpressionList 4431 // @regArray_ProductionAnnotation+ ---> $regarray_1 4432 // @regArray_ExpressionAnnotation* ---> $regarray_1 4433 // $regarrayedge_0_1 ---> Annotation 4434 // $regarrayedge_0_1 ---> NegativeLookahead 4435 private int parse55(ref NonterminalType!(33) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, Token) stack1) 4436 { 4437 alias ThisParseResult = typeof(result); 4438 alias ParseResultIn = CreatorInstance.NonterminalUnion!([10, 13, 14, 15, 16, 18, 19, 33, 35, 51, 55, 57]); 4439 ParseResultIn currentResult; 4440 Location currentResultLocation; 4441 int gotoParent = -1; 4442 Location currentStart = lexer.front.currentLocation; 4443 if (lexer.empty) 4444 { 4445 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 4446 return -1; 4447 } 4448 else if (lexer.front.symbol == Lexer.tokenID!"Identifier" || lexer.front.symbol == Lexer.tokenID!"StringLiteral" || lexer.front.symbol == Lexer.tokenID!"CharacterSetLiteral" || lexer.front.symbol == Lexer.tokenID!q{"{"} || lexer.front.symbol == Lexer.tokenID!q{"<"} || lexer.front.symbol == Lexer.tokenID!q{"^"} || lexer.front.symbol == Lexer.tokenID!q{"t("}) 4449 { 4450 auto tmp = reduce127/*@regArray_ExpressionAnnotation* @array @directUnwrap @regArray =*/(); 4451 currentResult = ParseResultIn.create(51/*@regArray_ExpressionAnnotation**/, tmp.val); 4452 currentResultLocation = tmp.start; 4453 gotoParent = 0; 4454 } 4455 else if (lexer.front.symbol == Lexer.tokenID!q{")"}) 4456 { 4457 auto tmp = reduce115/*ExpressionList? = [virtual]*/(); 4458 currentResult = ParseResultIn.create(55/*ExpressionList?*/, tmp.val); 4459 currentResultLocation = tmp.start; 4460 gotoParent = 0; 4461 } 4462 else if (lexer.front.symbol == Lexer.tokenID!q{"@"}) 4463 { 4464 auto next = popToken(); 4465 NonterminalType!(10) r; 4466 Location rl; 4467 gotoParent = parse8(r, rl, currentStart, next); 4468 if (gotoParent < 0) 4469 return gotoParent; 4470 currentResult = ParseResultIn.create(10/*Annotation*/, r); 4471 currentResultLocation = rl; 4472 } 4473 else if (lexer.front.symbol == Lexer.tokenID!q{"!"}) 4474 { 4475 auto next = popToken(); 4476 NonterminalType!(13) r; 4477 Location rl; 4478 gotoParent = parse53(r, rl, currentStart, next); 4479 if (gotoParent < 0) 4480 return gotoParent; 4481 currentResult = ParseResultIn.create(13/*NegativeLookahead*/, r); 4482 currentResultLocation = rl; 4483 } 4484 else 4485 { 4486 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 4487 lexer.front.currentLocation, lexer.front.currentTokenEnd); 4488 return -1; 4489 } 4490 4491 while (gotoParent == 0) 4492 { 4493 if (currentResult.nonterminalID == 10/*Annotation*/) 4494 { 4495 auto next = ParseStackElem!(Location, NonterminalType!58/*$regarrayedge_0_1*/)(currentResultLocation, currentResult.get!(10/*Annotation*/)()); 4496 NonterminalType!(57) r; 4497 Location rl; 4498 gotoParent = parse43(r, rl, currentStart, next); 4499 if (gotoParent < 0) 4500 return gotoParent; 4501 currentResult = ParseResultIn.create(57/*$regarray_1*/, r); 4502 currentResultLocation = rl; 4503 } 4504 else if (currentResult.nonterminalID == 13/*NegativeLookahead*/) 4505 { 4506 auto next = ParseStackElem!(Location, NonterminalType!58/*$regarrayedge_0_1*/)(currentResultLocation, currentResult.get!(13/*NegativeLookahead*/)()); 4507 NonterminalType!(57) r; 4508 Location rl; 4509 gotoParent = parse43(r, rl, currentStart, next); 4510 if (gotoParent < 0) 4511 return gotoParent; 4512 currentResult = ParseResultIn.create(57/*$regarray_1*/, r); 4513 currentResultLocation = rl; 4514 } 4515 else if (currentResult.nonterminalID == 14/*Expression*/) 4516 { 4517 auto next = ParseStackElem!(Location, NonterminalType!14/*Expression*/)(currentResultLocation, currentResult.get!(14/*Expression*/)()); 4518 NonterminalType!(35) r; 4519 Location rl; 4520 gotoParent = parse56(r, rl, currentStart, next); 4521 if (gotoParent < 0) 4522 return gotoParent; 4523 currentResult = ParseResultIn.create(35/*ExpressionList*/, r); 4524 currentResultLocation = rl; 4525 } 4526 else if (currentResult.nonterminalID == 15/*Alternation*/) 4527 { 4528 auto next = ParseStackElem!(Location, NonterminalType!15/*Alternation*/)(currentResultLocation, currentResult.get!(15/*Alternation*/)()); 4529 CreatorInstance.NonterminalUnion!([14, 15]) r; 4530 Location rl; 4531 gotoParent = parse46(r, rl, currentStart, next); 4532 if (gotoParent < 0) 4533 return gotoParent; 4534 currentResult = r; 4535 currentResultLocation = rl; 4536 } 4537 else if (currentResult.nonterminalID == 16/*Concatenation*/) 4538 { 4539 currentResult = ParseResultIn.create(15/*Alternation*/, currentResult.get!(16/*Concatenation*/)); 4540 currentResultLocation = currentResultLocation; 4541 } 4542 else if (currentResult.nonterminalID == 18/*TokenMinus*/) 4543 { 4544 auto next = ParseStackElem!(Location, NonterminalType!18/*TokenMinus*/)(currentResultLocation, currentResult.get!(18/*TokenMinus*/)()); 4545 CreatorInstance.NonterminalUnion!([16, 18]) r; 4546 Location rl; 4547 gotoParent = parse49(r, rl, currentStart, next); 4548 if (gotoParent < 0) 4549 return gotoParent; 4550 currentResult = r; 4551 currentResultLocation = rl; 4552 } 4553 else if (currentResult.nonterminalID == 19/*AnnotatedExpression*/) 4554 { 4555 currentResult = ParseResultIn.create(18/*TokenMinus*/, currentResult.get!(19/*AnnotatedExpression*/)); 4556 currentResultLocation = currentResultLocation; 4557 } 4558 else if (currentResult.nonterminalID == 35/*ExpressionList*/) 4559 { 4560 auto next = ParseStackElem!(Location, CreatorInstance.NonterminalArray)(currentResultLocation, currentResult.get!(35/*ExpressionList*/)()); 4561 CreatorInstance.NonterminalUnion!([33, 35]) r; 4562 Location rl; 4563 gotoParent = parse59(r, rl, parseStart2, stack2, stack1, currentStart, next); 4564 if (gotoParent < 0) 4565 return gotoParent; 4566 currentResult = r; 4567 currentResultLocation = rl; 4568 } 4569 else if (currentResult.nonterminalID == 51/*@regArray_ExpressionAnnotation**/) 4570 { 4571 auto next = ParseStackElem!(Location, NonterminalType!51/*@regArray_ExpressionAnnotation**/)(currentResultLocation, currentResult.get!(51/*@regArray_ExpressionAnnotation**/)()); 4572 NonterminalType!(19) r; 4573 Location rl; 4574 gotoParent = parse63(r, rl, currentStart, next); 4575 if (gotoParent < 0) 4576 return gotoParent; 4577 currentResult = ParseResultIn.create(19/*AnnotatedExpression*/, r); 4578 currentResultLocation = rl; 4579 } 4580 else if (currentResult.nonterminalID == 55/*ExpressionList?*/) 4581 { 4582 auto next = ParseStackElem!(Location, NonterminalType!55/*ExpressionList?*/)(currentResultLocation, currentResult.get!(55/*ExpressionList?*/)()); 4583 NonterminalType!(33) r; 4584 Location rl; 4585 gotoParent = parse105(r, rl, parseStart2, stack2, stack1, next); 4586 if (gotoParent < 0) 4587 return gotoParent; 4588 assert(gotoParent > 0); 4589 result = r; 4590 resultLocation = rl; 4591 return gotoParent - 1; 4592 } 4593 else if (currentResult.nonterminalID == 57/*$regarray_1*/) 4594 { 4595 auto next = ParseStackElem!(Location, CreatorInstance.NonterminalArray)(currentResultLocation, currentResult.get!(57/*$regarray_1*/)()); 4596 CreatorInstance.NonterminalUnion!([16, 19, 57]) r; 4597 Location rl; 4598 gotoParent = parse80(r, rl, currentStart, next); 4599 if (gotoParent < 0) 4600 return gotoParent; 4601 currentResult = r; 4602 currentResultLocation = rl; 4603 } 4604 else 4605 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 4606 } 4607 4608 result = currentResult.get!(33/*MacroInstance*/); 4609 resultLocation = currentResultLocation; 4610 return gotoParent - 1; 4611 } 4612 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" Expression 4613 // type: unknown 4614 // ExpressionList -> Expression. {")", ","} 4615 private int parse56(ref NonterminalType!(35) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, NonterminalType!14/*Expression*/) stack1) 4616 { 4617 alias ThisParseResult = typeof(result); 4618 Location currentStart = lexer.front.currentLocation; 4619 { 4620 auto tmp = reduce118_ExpressionList/*ExpressionList @array = Expression*/(parseStart1, stack1); 4621 result = tmp.val; 4622 resultLocation = tmp.start; 4623 return 0; 4624 } 4625 } 4626 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList 4627 // type: unknown 4628 // MacroInstance -> Identifier "(" ExpressionList?.")" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", ">>", "-", "|", "^", "+", "t("} 4629 // ExpressionList -> ExpressionList."," Expression {")", ","} 4630 private int parse59(ref CreatorInstance.NonterminalUnion!([33, 35]) result, ref Location resultLocation, Location parseStart3, ParseStackElem!(Location, Token) stack3, ParseStackElem!(Location, Token) stack2, Location parseStart1, ParseStackElem!(Location, CreatorInstance.NonterminalArray) stack1) 4631 { 4632 alias ThisParseResult = typeof(result); 4633 alias ParseResultIn = CreatorInstance.NonterminalUnion!([33, 35]); 4634 ParseResultIn currentResult; 4635 Location currentResultLocation; 4636 int gotoParent = -1; 4637 Location currentStart = lexer.front.currentLocation; 4638 if (lexer.empty) 4639 { 4640 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 4641 return -1; 4642 } 4643 else if (lexer.front.symbol == Lexer.tokenID!q{")"}) 4644 { 4645 auto next = popToken(); 4646 NonterminalType!(33) r; 4647 Location rl; 4648 gotoParent = parse60(r, rl, parseStart3, stack3, stack2, stack1, next); 4649 if (gotoParent < 0) 4650 return gotoParent; 4651 assert(gotoParent > 0); 4652 result = ThisParseResult.create(33/*MacroInstance*/, r); 4653 resultLocation = rl; 4654 return gotoParent - 1; 4655 } 4656 else if (lexer.front.symbol == Lexer.tokenID!q{","}) 4657 { 4658 auto next = popToken(); 4659 NonterminalType!(35) r; 4660 Location rl; 4661 gotoParent = parse61(r, rl, parseStart1, stack1, next); 4662 if (gotoParent < 0) 4663 return gotoParent; 4664 assert(gotoParent > 0); 4665 result = ThisParseResult.create(35/*ExpressionList*/, r); 4666 resultLocation = rl; 4667 return gotoParent - 1; 4668 } 4669 else 4670 { 4671 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 4672 lexer.front.currentLocation, lexer.front.currentTokenEnd); 4673 return -1; 4674 } 4675 } 4676 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList ")" 4677 // type: unknown 4678 // MacroInstance -> Identifier "(" ExpressionList? ")". {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", ">>", "-", "|", "^", "+", "t("} 4679 private int parse60(ref NonterminalType!(33) result, ref Location resultLocation, Location parseStart4, ParseStackElem!(Location, Token) stack4, ParseStackElem!(Location, Token) stack3, ParseStackElem!(Location, NonterminalType!55/*ExpressionList?*/) stack2, ParseStackElem!(Location, Token) stack1) 4680 { 4681 alias ThisParseResult = typeof(result); 4682 Location currentStart = lexer.front.currentLocation; 4683 { 4684 auto tmp = reduce116_MacroInstance/*MacroInstance = Identifier "(" ExpressionList? ")"*/(parseStart4, stack4, stack3, stack2, stack1); 4685 result = tmp.val; 4686 resultLocation = tmp.start; 4687 return 3; 4688 } 4689 } 4690 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," 4691 // type: unknown 4692 // ExpressionList -> ExpressionList ",".Expression {")", ","} 4693 // Annotation -> ."@" Identifier AnnotationParams? {Identifier, StringLiteral, CharacterSetLiteral, ")", ",", "@", "{", "!", "<", "|", "^", "t("} 4694 // NegativeLookahead -> ."!" Symbol {Identifier, StringLiteral, CharacterSetLiteral, ")", ",", "@", "{", "!", "<", "|", "^", "t("} 4695 // NegativeLookahead -> ."!" "anytoken" {Identifier, StringLiteral, CharacterSetLiteral, ")", ",", "@", "{", "!", "<", "|", "^", "t("} 4696 // Expression -> .Alternation {")", ","} 4697 // Alternation -> .Alternation "|" Concatenation {")", ",", "|"} 4698 // Alternation -> .Concatenation {")", ",", "|"} 4699 // Concatenation -> .TokenMinus {")", ",", "|"} 4700 // Concatenation -> .TokenMinus TokenMinus+ @regArray_ProductionAnnotation* {")", ",", "|"} 4701 // Concatenation -> .TokenMinus @regArray_ProductionAnnotation+ {")", ",", "|"} 4702 // Concatenation -> .@regArray_ProductionAnnotation+ {")", ",", "|"} 4703 // TokenMinus -> .TokenMinus "-" AnnotatedExpression {Identifier, StringLiteral, CharacterSetLiteral, ")", ",", "@", "{", "!", "<", "-", "|", "^", "t("} 4704 // TokenMinus -> .AnnotatedExpression {Identifier, StringLiteral, CharacterSetLiteral, ")", ",", "@", "{", "!", "<", "-", "|", "^", "t("} 4705 // AnnotatedExpression -> .@regArray_ExpressionAnnotation* ExpressionName? ExpressionPrefix* PostfixExpression {Identifier, StringLiteral, CharacterSetLiteral, ")", ",", "@", "{", "!", "<", "-", "|", "^", "t("} 4706 // @regArray_ExpressionAnnotation* -> . {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 4707 // $regarray_1 -> .$regarray_1 $regarrayedge_1_1 {Identifier, StringLiteral, CharacterSetLiteral, ")", ",", "@", "{", "!", "<", "|", "^", "t("} 4708 // $regarray_1 -> .$regarrayedge_0_1 {Identifier, StringLiteral, CharacterSetLiteral, ")", ",", "@", "{", "!", "<", "|", "^", "t("} 4709 // @regArray_ProductionAnnotation+ ---> $regarray_1 4710 // @regArray_ExpressionAnnotation* ---> $regarray_1 4711 // $regarrayedge_0_1 ---> Annotation 4712 // $regarrayedge_0_1 ---> NegativeLookahead 4713 private int parse61(ref NonterminalType!(35) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, NonterminalType!35/*ExpressionList*/) stack2, ParseStackElem!(Location, Token) stack1) 4714 { 4715 alias ThisParseResult = typeof(result); 4716 alias ParseResultIn = CreatorInstance.NonterminalUnion!([10, 13, 14, 15, 16, 18, 19, 35, 51, 57]); 4717 ParseResultIn currentResult; 4718 Location currentResultLocation; 4719 int gotoParent = -1; 4720 Location currentStart = lexer.front.currentLocation; 4721 if (lexer.empty) 4722 { 4723 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 4724 return -1; 4725 } 4726 else if (lexer.front.symbol == Lexer.tokenID!q{"@"}) 4727 { 4728 auto next = popToken(); 4729 NonterminalType!(10) r; 4730 Location rl; 4731 gotoParent = parse8(r, rl, currentStart, next); 4732 if (gotoParent < 0) 4733 return gotoParent; 4734 currentResult = ParseResultIn.create(10/*Annotation*/, r); 4735 currentResultLocation = rl; 4736 } 4737 else if (lexer.front.symbol == Lexer.tokenID!q{"!"}) 4738 { 4739 auto next = popToken(); 4740 NonterminalType!(13) r; 4741 Location rl; 4742 gotoParent = parse53(r, rl, currentStart, next); 4743 if (gotoParent < 0) 4744 return gotoParent; 4745 currentResult = ParseResultIn.create(13/*NegativeLookahead*/, r); 4746 currentResultLocation = rl; 4747 } 4748 else 4749 { 4750 auto tmp = reduce127/*@regArray_ExpressionAnnotation* @array @directUnwrap @regArray =*/(); 4751 currentResult = ParseResultIn.create(51/*@regArray_ExpressionAnnotation**/, tmp.val); 4752 currentResultLocation = tmp.start; 4753 gotoParent = 0; 4754 } 4755 4756 while (gotoParent == 0) 4757 { 4758 if (currentResult.nonterminalID == 10/*Annotation*/) 4759 { 4760 auto next = ParseStackElem!(Location, NonterminalType!58/*$regarrayedge_0_1*/)(currentResultLocation, currentResult.get!(10/*Annotation*/)()); 4761 NonterminalType!(57) r; 4762 Location rl; 4763 gotoParent = parse43(r, rl, currentStart, next); 4764 if (gotoParent < 0) 4765 return gotoParent; 4766 currentResult = ParseResultIn.create(57/*$regarray_1*/, r); 4767 currentResultLocation = rl; 4768 } 4769 else if (currentResult.nonterminalID == 13/*NegativeLookahead*/) 4770 { 4771 auto next = ParseStackElem!(Location, NonterminalType!58/*$regarrayedge_0_1*/)(currentResultLocation, currentResult.get!(13/*NegativeLookahead*/)()); 4772 NonterminalType!(57) r; 4773 Location rl; 4774 gotoParent = parse43(r, rl, currentStart, next); 4775 if (gotoParent < 0) 4776 return gotoParent; 4777 currentResult = ParseResultIn.create(57/*$regarray_1*/, r); 4778 currentResultLocation = rl; 4779 } 4780 else if (currentResult.nonterminalID == 14/*Expression*/) 4781 { 4782 auto next = ParseStackElem!(Location, NonterminalType!14/*Expression*/)(currentResultLocation, currentResult.get!(14/*Expression*/)()); 4783 NonterminalType!(35) r; 4784 Location rl; 4785 gotoParent = parse62(r, rl, parseStart2, stack2, stack1, next); 4786 if (gotoParent < 0) 4787 return gotoParent; 4788 assert(gotoParent > 0); 4789 result = r; 4790 resultLocation = rl; 4791 return gotoParent - 1; 4792 } 4793 else if (currentResult.nonterminalID == 15/*Alternation*/) 4794 { 4795 auto next = ParseStackElem!(Location, NonterminalType!15/*Alternation*/)(currentResultLocation, currentResult.get!(15/*Alternation*/)()); 4796 CreatorInstance.NonterminalUnion!([14, 15]) r; 4797 Location rl; 4798 gotoParent = parse46(r, rl, currentStart, next); 4799 if (gotoParent < 0) 4800 return gotoParent; 4801 currentResult = r; 4802 currentResultLocation = rl; 4803 } 4804 else if (currentResult.nonterminalID == 16/*Concatenation*/) 4805 { 4806 currentResult = ParseResultIn.create(15/*Alternation*/, currentResult.get!(16/*Concatenation*/)); 4807 currentResultLocation = currentResultLocation; 4808 } 4809 else if (currentResult.nonterminalID == 18/*TokenMinus*/) 4810 { 4811 auto next = ParseStackElem!(Location, NonterminalType!18/*TokenMinus*/)(currentResultLocation, currentResult.get!(18/*TokenMinus*/)()); 4812 CreatorInstance.NonterminalUnion!([16, 18]) r; 4813 Location rl; 4814 gotoParent = parse49(r, rl, currentStart, next); 4815 if (gotoParent < 0) 4816 return gotoParent; 4817 currentResult = r; 4818 currentResultLocation = rl; 4819 } 4820 else if (currentResult.nonterminalID == 19/*AnnotatedExpression*/) 4821 { 4822 currentResult = ParseResultIn.create(18/*TokenMinus*/, currentResult.get!(19/*AnnotatedExpression*/)); 4823 currentResultLocation = currentResultLocation; 4824 } 4825 else if (currentResult.nonterminalID == 51/*@regArray_ExpressionAnnotation**/) 4826 { 4827 auto next = ParseStackElem!(Location, NonterminalType!51/*@regArray_ExpressionAnnotation**/)(currentResultLocation, currentResult.get!(51/*@regArray_ExpressionAnnotation**/)()); 4828 NonterminalType!(19) r; 4829 Location rl; 4830 gotoParent = parse63(r, rl, currentStart, next); 4831 if (gotoParent < 0) 4832 return gotoParent; 4833 currentResult = ParseResultIn.create(19/*AnnotatedExpression*/, r); 4834 currentResultLocation = rl; 4835 } 4836 else if (currentResult.nonterminalID == 57/*$regarray_1*/) 4837 { 4838 auto next = ParseStackElem!(Location, CreatorInstance.NonterminalArray)(currentResultLocation, currentResult.get!(57/*$regarray_1*/)()); 4839 CreatorInstance.NonterminalUnion!([16, 19, 57]) r; 4840 Location rl; 4841 gotoParent = parse80(r, rl, currentStart, next); 4842 if (gotoParent < 0) 4843 return gotoParent; 4844 currentResult = r; 4845 currentResultLocation = rl; 4846 } 4847 else 4848 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 4849 } 4850 4851 result = currentResult.get!(35/*ExpressionList*/); 4852 resultLocation = currentResultLocation; 4853 return gotoParent - 1; 4854 } 4855 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," Expression 4856 // type: unknown 4857 // ExpressionList -> ExpressionList "," Expression. {")", ","} 4858 private int parse62(ref NonterminalType!(35) result, ref Location resultLocation, Location parseStart3, ParseStackElem!(Location, NonterminalType!35/*ExpressionList*/) stack3, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!14/*Expression*/) stack1) 4859 { 4860 alias ThisParseResult = typeof(result); 4861 Location currentStart = lexer.front.currentLocation; 4862 { 4863 auto tmp = reduce119_ExpressionList/*ExpressionList @array = ExpressionList "," Expression*/(parseStart3, stack3, stack2, stack1); 4864 result = tmp.val; 4865 resultLocation = tmp.start; 4866 return 2; 4867 } 4868 } 4869 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* 4870 // type: unknown 4871 // AnnotatedExpression -> @regArray_ExpressionAnnotation*.ExpressionName? ExpressionPrefix* PostfixExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "-", "|", "^", "t("} 4872 // ExpressionName -> .Identifier ":" {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 4873 // ExpressionName? -> . {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 4874 // ExpressionName? ---> ExpressionName 4875 private int parse63(ref NonterminalType!(19) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, NonterminalType!51/*@regArray_ExpressionAnnotation**/) stack1) 4876 { 4877 alias ThisParseResult = typeof(result); 4878 alias ParseResultIn = CreatorInstance.NonterminalUnion!([19, 21, 52]); 4879 ParseResultIn currentResult; 4880 Location currentResultLocation; 4881 int gotoParent = -1; 4882 Location currentStart = lexer.front.currentLocation; 4883 if (lexer.empty) 4884 { 4885 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 4886 return -1; 4887 } 4888 else if (lexer.front.symbol == Lexer.tokenID!"Identifier") 4889 { 4890 Lexer tmpLexer = *lexer; 4891 tmpLexer.popFront(); 4892 if (!tmpLexer.empty && tmpLexer.front.symbol == Lexer.tokenID!q{":"}) 4893 { 4894 auto next = popToken(); 4895 NonterminalType!(21) r; 4896 Location rl; 4897 gotoParent = parse64(r, rl, currentStart, next); 4898 if (gotoParent < 0) 4899 return gotoParent; 4900 currentResult = ParseResultIn.create(21/*ExpressionName*/, r); 4901 currentResultLocation = rl; 4902 } 4903 else if (!tmpLexer.empty && (tmpLexer.front.symbol == Lexer.tokenID!"Identifier" || tmpLexer.front.symbol == Lexer.tokenID!"StringLiteral" || tmpLexer.front.symbol == Lexer.tokenID!"CharacterSetLiteral" || tmpLexer.front.symbol == Lexer.tokenID!q{";"} || tmpLexer.front.symbol == Lexer.tokenID!q{"("} || tmpLexer.front.symbol == Lexer.tokenID!q{")"} || tmpLexer.front.symbol == Lexer.tokenID!q{","} || tmpLexer.front.symbol == Lexer.tokenID!q{"..."} || tmpLexer.front.symbol == Lexer.tokenID!q{"@"} || tmpLexer.front.symbol == Lexer.tokenID!q{"{"} || tmpLexer.front.symbol == Lexer.tokenID!q{"}"} || tmpLexer.front.symbol == Lexer.tokenID!q{"?"} || tmpLexer.front.symbol == Lexer.tokenID!q{"!"} || tmpLexer.front.symbol == Lexer.tokenID!q{"<"} || tmpLexer.front.symbol == Lexer.tokenID!q{"*"} || tmpLexer.front.symbol == Lexer.tokenID!q{">>"} || tmpLexer.front.symbol == Lexer.tokenID!q{"-"} || tmpLexer.front.symbol == Lexer.tokenID!q{"|"} || tmpLexer.front.symbol == Lexer.tokenID!q{"^"} || tmpLexer.front.symbol == Lexer.tokenID!q{"+"} || tmpLexer.front.symbol == Lexer.tokenID!q{"t("})) 4904 { 4905 auto tmp = reduce82/*ExpressionName? = [virtual]*/(); 4906 currentResult = ParseResultIn.create(52/*ExpressionName?*/, tmp.val); 4907 currentResultLocation = tmp.start; 4908 gotoParent = 0; 4909 } 4910 else 4911 { 4912 lastError = new SingleParseException!Location(text("unexpected Token \"", tmpLexer.front.content, "\" \"", lexer.tokenName(tmpLexer.front.symbol), "\""), 4913 tmpLexer.front.currentLocation, tmpLexer.front.currentTokenEnd); 4914 return -1; 4915 } 4916 } 4917 else 4918 { 4919 auto tmp = reduce82/*ExpressionName? = [virtual]*/(); 4920 currentResult = ParseResultIn.create(52/*ExpressionName?*/, tmp.val); 4921 currentResultLocation = tmp.start; 4922 gotoParent = 0; 4923 } 4924 4925 while (gotoParent == 0) 4926 { 4927 if (currentResult.nonterminalID == 21/*ExpressionName*/) 4928 { 4929 auto next = ParseStackElem!(Location, NonterminalType!52/*ExpressionName?*/)(currentResultLocation, currentResult.get!(21/*ExpressionName*/)()); 4930 NonterminalType!(19) r; 4931 Location rl; 4932 gotoParent = parse66(r, rl, parseStart1, stack1, next); 4933 if (gotoParent < 0) 4934 return gotoParent; 4935 assert(gotoParent > 0); 4936 result = r; 4937 resultLocation = rl; 4938 return gotoParent - 1; 4939 } 4940 else if (currentResult.nonterminalID == 52/*ExpressionName?*/) 4941 { 4942 auto next = ParseStackElem!(Location, NonterminalType!52/*ExpressionName?*/)(currentResultLocation, currentResult.get!(52/*ExpressionName?*/)()); 4943 NonterminalType!(19) r; 4944 Location rl; 4945 gotoParent = parse66(r, rl, parseStart1, stack1, next); 4946 if (gotoParent < 0) 4947 return gotoParent; 4948 assert(gotoParent > 0); 4949 result = r; 4950 resultLocation = rl; 4951 return gotoParent - 1; 4952 } 4953 else 4954 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 4955 } 4956 4957 result = currentResult.get!(19/*AnnotatedExpression*/); 4958 resultLocation = currentResultLocation; 4959 return gotoParent - 1; 4960 } 4961 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* Identifier 4962 // type: unknown 4963 // ExpressionName -> Identifier.":" {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 4964 private int parse64(ref NonterminalType!(21) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 4965 { 4966 alias ThisParseResult = typeof(result); 4967 alias ParseResultIn = CreatorInstance.NonterminalUnion!([21]); 4968 ParseResultIn currentResult; 4969 Location currentResultLocation; 4970 int gotoParent = -1; 4971 Location currentStart = lexer.front.currentLocation; 4972 if (lexer.empty) 4973 { 4974 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 4975 return -1; 4976 } 4977 else if (lexer.front.symbol == Lexer.tokenID!q{":"}) 4978 { 4979 auto next = popToken(); 4980 NonterminalType!(21) r; 4981 Location rl; 4982 gotoParent = parse65(r, rl, parseStart1, stack1, next); 4983 if (gotoParent < 0) 4984 return gotoParent; 4985 assert(gotoParent > 0); 4986 result = r; 4987 resultLocation = rl; 4988 return gotoParent - 1; 4989 } 4990 else 4991 { 4992 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 4993 lexer.front.currentLocation, lexer.front.currentTokenEnd); 4994 return -1; 4995 } 4996 } 4997 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* Identifier ":" 4998 // type: unknown 4999 // ExpressionName -> Identifier ":". {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 5000 private int parse65(ref NonterminalType!(21) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, Token) stack1) 5001 { 5002 alias ThisParseResult = typeof(result); 5003 Location currentStart = lexer.front.currentLocation; 5004 { 5005 auto tmp = reduce90_ExpressionName/*ExpressionName = Identifier ":"*/(parseStart2, stack2, stack1); 5006 result = tmp.val; 5007 resultLocation = tmp.start; 5008 return 1; 5009 } 5010 } 5011 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName 5012 // type: unknown 5013 // AnnotatedExpression -> @regArray_ExpressionAnnotation* ExpressionName?.ExpressionPrefix* PostfixExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "-", "|", "^", "t("} 5014 // ExpressionPrefix -> ."<" {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 5015 // ExpressionPrefix -> ."^" {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 5016 // ExpressionPrefix+ -> .ExpressionPrefix {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 5017 // ExpressionPrefix+ -> .ExpressionPrefix+ ExpressionPrefix {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 5018 // ExpressionPrefix* -> . {Identifier, StringLiteral, CharacterSetLiteral, "{", "t("} 5019 // ExpressionPrefix* -> .ExpressionPrefix+ {Identifier, StringLiteral, CharacterSetLiteral, "{", "t("} 5020 private int parse66(ref NonterminalType!(19) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, NonterminalType!51/*@regArray_ExpressionAnnotation**/) stack2, ParseStackElem!(Location, NonterminalType!52/*ExpressionName?*/) stack1) 5021 { 5022 alias ThisParseResult = typeof(result); 5023 alias ParseResultIn = CreatorInstance.NonterminalUnion!([19, 22, 53, 54]); 5024 ParseResultIn currentResult; 5025 Location currentResultLocation; 5026 int gotoParent = -1; 5027 Location currentStart = lexer.front.currentLocation; 5028 if (lexer.empty) 5029 { 5030 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 5031 return -1; 5032 } 5033 else if (lexer.front.symbol == Lexer.tokenID!q{"<"}) 5034 { 5035 auto next = popToken(); 5036 NonterminalType!(22) r; 5037 Location rl; 5038 gotoParent = parse68(r, rl, currentStart, next); 5039 if (gotoParent < 0) 5040 return gotoParent; 5041 currentResult = ParseResultIn.create(22/*ExpressionPrefix*/, r); 5042 currentResultLocation = rl; 5043 } 5044 else if (lexer.front.symbol == Lexer.tokenID!q{"^"}) 5045 { 5046 auto next = popToken(); 5047 NonterminalType!(22) r; 5048 Location rl; 5049 gotoParent = parse69(r, rl, currentStart, next); 5050 if (gotoParent < 0) 5051 return gotoParent; 5052 currentResult = ParseResultIn.create(22/*ExpressionPrefix*/, r); 5053 currentResultLocation = rl; 5054 } 5055 else 5056 { 5057 auto tmp = reduce85/*ExpressionPrefix* @array = [virtual]*/(); 5058 currentResult = ParseResultIn.create(54/*ExpressionPrefix**/, tmp.val); 5059 currentResultLocation = tmp.start; 5060 gotoParent = 0; 5061 } 5062 5063 while (gotoParent == 0) 5064 { 5065 if (currentResult.nonterminalID == 22/*ExpressionPrefix*/) 5066 { 5067 auto next = ParseStackElem!(Location, NonterminalType!22/*ExpressionPrefix*/)(currentResultLocation, currentResult.get!(22/*ExpressionPrefix*/)()); 5068 NonterminalType!(53) r; 5069 Location rl; 5070 gotoParent = parse67(r, rl, currentStart, next); 5071 if (gotoParent < 0) 5072 return gotoParent; 5073 currentResult = ParseResultIn.create(53/*ExpressionPrefix+*/, r); 5074 currentResultLocation = rl; 5075 } 5076 else if (currentResult.nonterminalID == 53/*ExpressionPrefix+*/) 5077 { 5078 auto next = ParseStackElem!(Location, NonterminalType!53/*ExpressionPrefix+*/)(currentResultLocation, currentResult.get!(53/*ExpressionPrefix+*/)()); 5079 CreatorInstance.NonterminalUnion!([53, 54]) r; 5080 Location rl; 5081 gotoParent = parse70(r, rl, currentStart, next); 5082 if (gotoParent < 0) 5083 return gotoParent; 5084 currentResult = r; 5085 currentResultLocation = rl; 5086 } 5087 else if (currentResult.nonterminalID == 54/*ExpressionPrefix**/) 5088 { 5089 auto next = ParseStackElem!(Location, NonterminalType!54/*ExpressionPrefix**/)(currentResultLocation, currentResult.get!(54/*ExpressionPrefix**/)()); 5090 NonterminalType!(19) r; 5091 Location rl; 5092 gotoParent = parse72(r, rl, parseStart2, stack2, stack1, next); 5093 if (gotoParent < 0) 5094 return gotoParent; 5095 assert(gotoParent > 0); 5096 result = r; 5097 resultLocation = rl; 5098 return gotoParent - 1; 5099 } 5100 else 5101 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 5102 } 5103 5104 result = currentResult.get!(19/*AnnotatedExpression*/); 5105 resultLocation = currentResultLocation; 5106 return gotoParent - 1; 5107 } 5108 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix 5109 // type: unknown 5110 // ExpressionPrefix+ -> ExpressionPrefix. {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 5111 private int parse67(ref NonterminalType!(53) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, NonterminalType!22/*ExpressionPrefix*/) stack1) 5112 { 5113 alias ThisParseResult = typeof(result); 5114 Location currentStart = lexer.front.currentLocation; 5115 { 5116 auto tmp = reduce83/*ExpressionPrefix+ @array = ExpressionPrefix [virtual]*/(parseStart1, stack1); 5117 result = tmp.val; 5118 resultLocation = tmp.start; 5119 return 0; 5120 } 5121 } 5122 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName "<" 5123 // type: unknown 5124 // ExpressionPrefix -> "<". {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 5125 private int parse68(ref NonterminalType!(22) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 5126 { 5127 alias ThisParseResult = typeof(result); 5128 Location currentStart = lexer.front.currentLocation; 5129 { 5130 auto tmp = reduce91_ExpressionPrefix/*ExpressionPrefix = "<"*/(parseStart1, stack1); 5131 result = tmp.val; 5132 resultLocation = tmp.start; 5133 return 0; 5134 } 5135 } 5136 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName "^" 5137 // type: unknown 5138 // ExpressionPrefix -> "^". {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 5139 private int parse69(ref NonterminalType!(22) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 5140 { 5141 alias ThisParseResult = typeof(result); 5142 Location currentStart = lexer.front.currentLocation; 5143 { 5144 auto tmp = reduce92_ExpressionPrefix/*ExpressionPrefix = "^"*/(parseStart1, stack1); 5145 result = tmp.val; 5146 resultLocation = tmp.start; 5147 return 0; 5148 } 5149 } 5150 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix+ 5151 // type: unknown 5152 // ExpressionPrefix+ -> ExpressionPrefix+.ExpressionPrefix {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 5153 // ExpressionPrefix* -> ExpressionPrefix+. {Identifier, StringLiteral, CharacterSetLiteral, "{", "t("} 5154 // ExpressionPrefix -> ."<" {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 5155 // ExpressionPrefix -> ."^" {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 5156 private int parse70(ref CreatorInstance.NonterminalUnion!([53, 54]) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, NonterminalType!53/*ExpressionPrefix+*/) stack1) 5157 { 5158 alias ThisParseResult = typeof(result); 5159 alias ParseResultIn = CreatorInstance.NonterminalUnion!([22, 53, 54]); 5160 ParseResultIn currentResult; 5161 Location currentResultLocation; 5162 int gotoParent = -1; 5163 Location currentStart = lexer.front.currentLocation; 5164 if (lexer.empty) 5165 { 5166 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 5167 return -1; 5168 } 5169 else if (lexer.front.symbol == Lexer.tokenID!q{"<"}) 5170 { 5171 auto next = popToken(); 5172 NonterminalType!(22) r; 5173 Location rl; 5174 gotoParent = parse68(r, rl, currentStart, next); 5175 if (gotoParent < 0) 5176 return gotoParent; 5177 currentResult = ParseResultIn.create(22/*ExpressionPrefix*/, r); 5178 currentResultLocation = rl; 5179 } 5180 else if (lexer.front.symbol == Lexer.tokenID!q{"^"}) 5181 { 5182 auto next = popToken(); 5183 NonterminalType!(22) r; 5184 Location rl; 5185 gotoParent = parse69(r, rl, currentStart, next); 5186 if (gotoParent < 0) 5187 return gotoParent; 5188 currentResult = ParseResultIn.create(22/*ExpressionPrefix*/, r); 5189 currentResultLocation = rl; 5190 } 5191 else 5192 { 5193 auto tmp = reduce86/*ExpressionPrefix* @array = ExpressionPrefix+ [virtual]*/(parseStart1, stack1); 5194 result = ThisParseResult.create(54/*ExpressionPrefix**/, tmp.val); 5195 resultLocation = tmp.start; 5196 return 0; 5197 } 5198 5199 while (gotoParent == 0) 5200 { 5201 if (currentResult.nonterminalID == 22/*ExpressionPrefix*/) 5202 { 5203 auto next = ParseStackElem!(Location, NonterminalType!22/*ExpressionPrefix*/)(currentResultLocation, currentResult.get!(22/*ExpressionPrefix*/)()); 5204 NonterminalType!(53) r; 5205 Location rl; 5206 gotoParent = parse71(r, rl, parseStart1, stack1, next); 5207 if (gotoParent < 0) 5208 return gotoParent; 5209 assert(gotoParent > 0); 5210 result = ThisParseResult.create(53/*ExpressionPrefix+*/, r); 5211 resultLocation = rl; 5212 return gotoParent - 1; 5213 } 5214 else 5215 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 5216 } 5217 5218 result = currentResult; 5219 resultLocation = currentResultLocation; 5220 return gotoParent - 1; 5221 } 5222 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix+ ExpressionPrefix 5223 // type: unknown 5224 // ExpressionPrefix+ -> ExpressionPrefix+ ExpressionPrefix. {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 5225 private int parse71(ref NonterminalType!(53) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, NonterminalType!53/*ExpressionPrefix+*/) stack2, ParseStackElem!(Location, NonterminalType!22/*ExpressionPrefix*/) stack1) 5226 { 5227 alias ThisParseResult = typeof(result); 5228 Location currentStart = lexer.front.currentLocation; 5229 { 5230 auto tmp = reduce84/*ExpressionPrefix+ @array = ExpressionPrefix+ ExpressionPrefix [virtual]*/(parseStart2, stack2, stack1); 5231 result = tmp.val; 5232 resultLocation = tmp.start; 5233 return 1; 5234 } 5235 } 5236 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix* 5237 // type: unknown 5238 // AnnotatedExpression -> @regArray_ExpressionAnnotation* ExpressionName? ExpressionPrefix*.PostfixExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "-", "|", "^", "t("} 5239 // PostfixExpression -> .Optional {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5240 // PostfixExpression -> .Repetition {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5241 // PostfixExpression -> .RepetitionPlus {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5242 // PostfixExpression -> .AtomExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5243 // Optional -> .PostfixExpression "?" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5244 // Repetition -> .PostfixExpression "*" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5245 // RepetitionPlus -> .PostfixExpression "+" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5246 // AtomExpression -> .Symbol {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5247 // AtomExpression -> .UnpackVariadicList {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5248 // AtomExpression -> .SubToken {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5249 // AtomExpression -> .ParenExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5250 // AtomExpression -> .Tuple {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5251 // Symbol -> .Name {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", ">>", "-", "|", "^", "+", "t("} 5252 // Symbol -> .Token {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", ">>", "-", "|", "^", "+", "t("} 5253 // Symbol -> .MacroInstance {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", ">>", "-", "|", "^", "+", "t("} 5254 // Name -> .Identifier {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", ">>", "-", "|", "^", "+", "t("} 5255 // Token -> .StringLiteral {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", ">>", "-", "|", "^", "+", "t("} 5256 // Token -> .CharacterSetLiteral {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", ">>", "-", "|", "^", "+", "t("} 5257 // UnpackVariadicList -> .Identifier "..." {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5258 // SubToken -> .Symbol ">>" Symbol {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5259 // SubToken -> .Symbol ">>" ParenExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5260 // MacroInstance -> .Identifier "(" ExpressionList? ")" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", ">>", "-", "|", "^", "+", "t("} 5261 // ParenExpression -> ."{" Expression "}" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5262 // Tuple -> ."t(" ExpressionList? ")" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5263 private int parse72(ref NonterminalType!(19) result, ref Location resultLocation, Location parseStart3, ParseStackElem!(Location, NonterminalType!51/*@regArray_ExpressionAnnotation**/) stack3, ParseStackElem!(Location, NonterminalType!52/*ExpressionName?*/) stack2, ParseStackElem!(Location, NonterminalType!54/*ExpressionPrefix**/) stack1) 5264 { 5265 alias ThisParseResult = typeof(result); 5266 alias ParseResultIn = CreatorInstance.NonterminalUnion!([19, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36]); 5267 ParseResultIn currentResult; 5268 Location currentResultLocation; 5269 int gotoParent = -1; 5270 Location currentStart = lexer.front.currentLocation; 5271 if (lexer.empty) 5272 { 5273 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 5274 return -1; 5275 } 5276 else if (lexer.front.symbol == Lexer.tokenID!"Identifier") 5277 { 5278 auto next = popToken(); 5279 CreatorInstance.NonterminalUnion!([29, 31, 33]) r; 5280 Location rl; 5281 gotoParent = parse73(r, rl, currentStart, next); 5282 if (gotoParent < 0) 5283 return gotoParent; 5284 currentResult = r; 5285 currentResultLocation = rl; 5286 } 5287 else if (lexer.front.symbol == Lexer.tokenID!"StringLiteral") 5288 { 5289 auto next = popToken(); 5290 NonterminalType!(30) r; 5291 Location rl; 5292 gotoParent = parse75(r, rl, currentStart, next); 5293 if (gotoParent < 0) 5294 return gotoParent; 5295 currentResult = ParseResultIn.create(30/*Token*/, r); 5296 currentResultLocation = rl; 5297 } 5298 else if (lexer.front.symbol == Lexer.tokenID!"CharacterSetLiteral") 5299 { 5300 auto next = popToken(); 5301 NonterminalType!(30) r; 5302 Location rl; 5303 gotoParent = parse76(r, rl, currentStart, next); 5304 if (gotoParent < 0) 5305 return gotoParent; 5306 currentResult = ParseResultIn.create(30/*Token*/, r); 5307 currentResultLocation = rl; 5308 } 5309 else if (lexer.front.symbol == Lexer.tokenID!q{"{"}) 5310 { 5311 auto next = popToken(); 5312 NonterminalType!(34) r; 5313 Location rl; 5314 gotoParent = parse77(r, rl, currentStart, next); 5315 if (gotoParent < 0) 5316 return gotoParent; 5317 currentResult = ParseResultIn.create(34/*ParenExpression*/, r); 5318 currentResultLocation = rl; 5319 } 5320 else if (lexer.front.symbol == Lexer.tokenID!q{"t("}) 5321 { 5322 auto next = popToken(); 5323 NonterminalType!(36) r; 5324 Location rl; 5325 gotoParent = parse99(r, rl, currentStart, next); 5326 if (gotoParent < 0) 5327 return gotoParent; 5328 currentResult = ParseResultIn.create(36/*Tuple*/, r); 5329 currentResultLocation = rl; 5330 } 5331 else 5332 { 5333 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 5334 lexer.front.currentLocation, lexer.front.currentTokenEnd); 5335 return -1; 5336 } 5337 5338 while (gotoParent == 0) 5339 { 5340 if (currentResult.nonterminalID == 23/*PostfixExpression*/) 5341 { 5342 auto next = ParseStackElem!(Location, NonterminalType!23/*PostfixExpression*/)(currentResultLocation, currentResult.get!(23/*PostfixExpression*/)()); 5343 CreatorInstance.NonterminalUnion!([19, 24, 25, 26]) r; 5344 Location rl; 5345 gotoParent = parse82(r, rl, parseStart3, stack3, stack2, stack1, currentStart, next); 5346 if (gotoParent < 0) 5347 return gotoParent; 5348 currentResult = r; 5349 currentResultLocation = rl; 5350 } 5351 else if (currentResult.nonterminalID == 24/*Optional*/) 5352 { 5353 currentResult = ParseResultIn.create(23/*PostfixExpression*/, currentResult.get!(24/*Optional*/)); 5354 currentResultLocation = currentResultLocation; 5355 } 5356 else if (currentResult.nonterminalID == 25/*Repetition*/) 5357 { 5358 currentResult = ParseResultIn.create(23/*PostfixExpression*/, currentResult.get!(25/*Repetition*/)); 5359 currentResultLocation = currentResultLocation; 5360 } 5361 else if (currentResult.nonterminalID == 26/*RepetitionPlus*/) 5362 { 5363 currentResult = ParseResultIn.create(23/*PostfixExpression*/, currentResult.get!(26/*RepetitionPlus*/)); 5364 currentResultLocation = currentResultLocation; 5365 } 5366 else if (currentResult.nonterminalID == 27/*AtomExpression*/) 5367 { 5368 currentResult = ParseResultIn.create(23/*PostfixExpression*/, currentResult.get!(27/*AtomExpression*/)); 5369 currentResultLocation = currentResultLocation; 5370 } 5371 else if (currentResult.nonterminalID == 28/*Symbol*/) 5372 { 5373 auto next = ParseStackElem!(Location, NonterminalType!28/*Symbol*/)(currentResultLocation, currentResult.get!(28/*Symbol*/)()); 5374 CreatorInstance.NonterminalUnion!([27, 32]) r; 5375 Location rl; 5376 gotoParent = parse90(r, rl, currentStart, next); 5377 if (gotoParent < 0) 5378 return gotoParent; 5379 currentResult = r; 5380 currentResultLocation = rl; 5381 } 5382 else if (currentResult.nonterminalID == 29/*Name*/) 5383 { 5384 currentResult = ParseResultIn.create(28/*Symbol*/, currentResult.get!(29/*Name*/)); 5385 currentResultLocation = currentResultLocation; 5386 } 5387 else if (currentResult.nonterminalID == 30/*Token*/) 5388 { 5389 currentResult = ParseResultIn.create(28/*Symbol*/, currentResult.get!(30/*Token*/)); 5390 currentResultLocation = currentResultLocation; 5391 } 5392 else if (currentResult.nonterminalID == 31/*UnpackVariadicList*/) 5393 { 5394 currentResult = ParseResultIn.create(27/*AtomExpression*/, currentResult.get!(31/*UnpackVariadicList*/)); 5395 currentResultLocation = currentResultLocation; 5396 } 5397 else if (currentResult.nonterminalID == 32/*SubToken*/) 5398 { 5399 currentResult = ParseResultIn.create(27/*AtomExpression*/, currentResult.get!(32/*SubToken*/)); 5400 currentResultLocation = currentResultLocation; 5401 } 5402 else if (currentResult.nonterminalID == 33/*MacroInstance*/) 5403 { 5404 currentResult = ParseResultIn.create(28/*Symbol*/, currentResult.get!(33/*MacroInstance*/)); 5405 currentResultLocation = currentResultLocation; 5406 } 5407 else if (currentResult.nonterminalID == 34/*ParenExpression*/) 5408 { 5409 currentResult = ParseResultIn.create(27/*AtomExpression*/, currentResult.get!(34/*ParenExpression*/)); 5410 currentResultLocation = currentResultLocation; 5411 } 5412 else if (currentResult.nonterminalID == 36/*Tuple*/) 5413 { 5414 currentResult = ParseResultIn.create(27/*AtomExpression*/, currentResult.get!(36/*Tuple*/)); 5415 currentResultLocation = currentResultLocation; 5416 } 5417 else 5418 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 5419 } 5420 5421 result = currentResult.get!(19/*AnnotatedExpression*/); 5422 resultLocation = currentResultLocation; 5423 return gotoParent - 1; 5424 } 5425 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix* Identifier 5426 // type: unknown 5427 // Name -> Identifier. {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", ">>", "-", "|", "^", "+", "t("} 5428 // UnpackVariadicList -> Identifier."..." {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5429 // MacroInstance -> Identifier."(" ExpressionList? ")" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", ">>", "-", "|", "^", "+", "t("} 5430 private int parse73(ref CreatorInstance.NonterminalUnion!([29, 31, 33]) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 5431 { 5432 alias ThisParseResult = typeof(result); 5433 alias ParseResultIn = CreatorInstance.NonterminalUnion!([29, 31, 33]); 5434 ParseResultIn currentResult; 5435 Location currentResultLocation; 5436 int gotoParent = -1; 5437 Location currentStart = lexer.front.currentLocation; 5438 if (lexer.empty) 5439 { 5440 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 5441 return -1; 5442 } 5443 else if (lexer.front.symbol == Lexer.tokenID!q{"("}) 5444 { 5445 auto next = popToken(); 5446 NonterminalType!(33) r; 5447 Location rl; 5448 gotoParent = parse55(r, rl, parseStart1, stack1, next); 5449 if (gotoParent < 0) 5450 return gotoParent; 5451 assert(gotoParent > 0); 5452 result = ThisParseResult.create(33/*MacroInstance*/, r); 5453 resultLocation = rl; 5454 return gotoParent - 1; 5455 } 5456 else if (lexer.front.symbol == Lexer.tokenID!q{"..."}) 5457 { 5458 auto next = popToken(); 5459 NonterminalType!(31) r; 5460 Location rl; 5461 gotoParent = parse74(r, rl, parseStart1, stack1, next); 5462 if (gotoParent < 0) 5463 return gotoParent; 5464 assert(gotoParent > 0); 5465 result = ThisParseResult.create(31/*UnpackVariadicList*/, r); 5466 resultLocation = rl; 5467 return gotoParent - 1; 5468 } 5469 else 5470 { 5471 auto tmp = reduce108_Name/*Name = Identifier*/(parseStart1, stack1); 5472 result = ThisParseResult.create(29/*Name*/, tmp.val); 5473 resultLocation = tmp.start; 5474 return 0; 5475 } 5476 } 5477 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix* Identifier "..." 5478 // type: unknown 5479 // UnpackVariadicList -> Identifier "...". {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5480 private int parse74(ref NonterminalType!(31) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, Token) stack1) 5481 { 5482 alias ThisParseResult = typeof(result); 5483 Location currentStart = lexer.front.currentLocation; 5484 { 5485 auto tmp = reduce111_UnpackVariadicList/*UnpackVariadicList = Identifier "..."*/(parseStart2, stack2, stack1); 5486 result = tmp.val; 5487 resultLocation = tmp.start; 5488 return 1; 5489 } 5490 } 5491 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix* StringLiteral 5492 // type: unknown 5493 // Token -> StringLiteral. {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", ">>", "-", "|", "^", "+", "t("} 5494 private int parse75(ref NonterminalType!(30) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 5495 { 5496 alias ThisParseResult = typeof(result); 5497 Location currentStart = lexer.front.currentLocation; 5498 { 5499 auto tmp = reduce109_Token/*Token = StringLiteral*/(parseStart1, stack1); 5500 result = tmp.val; 5501 resultLocation = tmp.start; 5502 return 0; 5503 } 5504 } 5505 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix* CharacterSetLiteral 5506 // type: unknown 5507 // Token -> CharacterSetLiteral. {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", ">>", "-", "|", "^", "+", "t("} 5508 private int parse76(ref NonterminalType!(30) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 5509 { 5510 alias ThisParseResult = typeof(result); 5511 Location currentStart = lexer.front.currentLocation; 5512 { 5513 auto tmp = reduce110_Token/*Token = CharacterSetLiteral*/(parseStart1, stack1); 5514 result = tmp.val; 5515 resultLocation = tmp.start; 5516 return 0; 5517 } 5518 } 5519 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix* "{" 5520 // type: unknown 5521 // ParenExpression -> "{".Expression "}" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5522 // Annotation -> ."@" Identifier AnnotationParams? {Identifier, StringLiteral, CharacterSetLiteral, "@", "{", "}", "!", "<", "|", "^", "t("} 5523 // NegativeLookahead -> ."!" Symbol {Identifier, StringLiteral, CharacterSetLiteral, "@", "{", "}", "!", "<", "|", "^", "t("} 5524 // NegativeLookahead -> ."!" "anytoken" {Identifier, StringLiteral, CharacterSetLiteral, "@", "{", "}", "!", "<", "|", "^", "t("} 5525 // Expression -> .Alternation {"}"} 5526 // Alternation -> .Alternation "|" Concatenation {"}", "|"} 5527 // Alternation -> .Concatenation {"}", "|"} 5528 // Concatenation -> .TokenMinus {"}", "|"} 5529 // Concatenation -> .TokenMinus TokenMinus+ @regArray_ProductionAnnotation* {"}", "|"} 5530 // Concatenation -> .TokenMinus @regArray_ProductionAnnotation+ {"}", "|"} 5531 // Concatenation -> .@regArray_ProductionAnnotation+ {"}", "|"} 5532 // TokenMinus -> .TokenMinus "-" AnnotatedExpression {Identifier, StringLiteral, CharacterSetLiteral, "@", "{", "}", "!", "<", "-", "|", "^", "t("} 5533 // TokenMinus -> .AnnotatedExpression {Identifier, StringLiteral, CharacterSetLiteral, "@", "{", "}", "!", "<", "-", "|", "^", "t("} 5534 // AnnotatedExpression -> .@regArray_ExpressionAnnotation* ExpressionName? ExpressionPrefix* PostfixExpression {Identifier, StringLiteral, CharacterSetLiteral, "@", "{", "}", "!", "<", "-", "|", "^", "t("} 5535 // @regArray_ExpressionAnnotation* -> . {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 5536 // $regarray_1 -> .$regarray_1 $regarrayedge_1_1 {Identifier, StringLiteral, CharacterSetLiteral, "@", "{", "}", "!", "<", "|", "^", "t("} 5537 // $regarray_1 -> .$regarrayedge_0_1 {Identifier, StringLiteral, CharacterSetLiteral, "@", "{", "}", "!", "<", "|", "^", "t("} 5538 // @regArray_ProductionAnnotation+ ---> $regarray_1 5539 // @regArray_ExpressionAnnotation* ---> $regarray_1 5540 // $regarrayedge_0_1 ---> Annotation 5541 // $regarrayedge_0_1 ---> NegativeLookahead 5542 private int parse77(ref NonterminalType!(34) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 5543 { 5544 alias ThisParseResult = typeof(result); 5545 alias ParseResultIn = CreatorInstance.NonterminalUnion!([10, 13, 14, 15, 16, 18, 19, 34, 51, 57]); 5546 ParseResultIn currentResult; 5547 Location currentResultLocation; 5548 int gotoParent = -1; 5549 Location currentStart = lexer.front.currentLocation; 5550 if (lexer.empty) 5551 { 5552 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 5553 return -1; 5554 } 5555 else if (lexer.front.symbol == Lexer.tokenID!q{"@"}) 5556 { 5557 auto next = popToken(); 5558 NonterminalType!(10) r; 5559 Location rl; 5560 gotoParent = parse8(r, rl, currentStart, next); 5561 if (gotoParent < 0) 5562 return gotoParent; 5563 currentResult = ParseResultIn.create(10/*Annotation*/, r); 5564 currentResultLocation = rl; 5565 } 5566 else if (lexer.front.symbol == Lexer.tokenID!q{"!"}) 5567 { 5568 auto next = popToken(); 5569 NonterminalType!(13) r; 5570 Location rl; 5571 gotoParent = parse53(r, rl, currentStart, next); 5572 if (gotoParent < 0) 5573 return gotoParent; 5574 currentResult = ParseResultIn.create(13/*NegativeLookahead*/, r); 5575 currentResultLocation = rl; 5576 } 5577 else 5578 { 5579 auto tmp = reduce127/*@regArray_ExpressionAnnotation* @array @directUnwrap @regArray =*/(); 5580 currentResult = ParseResultIn.create(51/*@regArray_ExpressionAnnotation**/, tmp.val); 5581 currentResultLocation = tmp.start; 5582 gotoParent = 0; 5583 } 5584 5585 while (gotoParent == 0) 5586 { 5587 if (currentResult.nonterminalID == 10/*Annotation*/) 5588 { 5589 auto next = ParseStackElem!(Location, NonterminalType!58/*$regarrayedge_0_1*/)(currentResultLocation, currentResult.get!(10/*Annotation*/)()); 5590 NonterminalType!(57) r; 5591 Location rl; 5592 gotoParent = parse43(r, rl, currentStart, next); 5593 if (gotoParent < 0) 5594 return gotoParent; 5595 currentResult = ParseResultIn.create(57/*$regarray_1*/, r); 5596 currentResultLocation = rl; 5597 } 5598 else if (currentResult.nonterminalID == 13/*NegativeLookahead*/) 5599 { 5600 auto next = ParseStackElem!(Location, NonterminalType!58/*$regarrayedge_0_1*/)(currentResultLocation, currentResult.get!(13/*NegativeLookahead*/)()); 5601 NonterminalType!(57) r; 5602 Location rl; 5603 gotoParent = parse43(r, rl, currentStart, next); 5604 if (gotoParent < 0) 5605 return gotoParent; 5606 currentResult = ParseResultIn.create(57/*$regarray_1*/, r); 5607 currentResultLocation = rl; 5608 } 5609 else if (currentResult.nonterminalID == 14/*Expression*/) 5610 { 5611 auto next = ParseStackElem!(Location, NonterminalType!14/*Expression*/)(currentResultLocation, currentResult.get!(14/*Expression*/)()); 5612 NonterminalType!(34) r; 5613 Location rl; 5614 gotoParent = parse78(r, rl, parseStart1, stack1, next); 5615 if (gotoParent < 0) 5616 return gotoParent; 5617 assert(gotoParent > 0); 5618 result = r; 5619 resultLocation = rl; 5620 return gotoParent - 1; 5621 } 5622 else if (currentResult.nonterminalID == 15/*Alternation*/) 5623 { 5624 auto next = ParseStackElem!(Location, NonterminalType!15/*Alternation*/)(currentResultLocation, currentResult.get!(15/*Alternation*/)()); 5625 CreatorInstance.NonterminalUnion!([14, 15]) r; 5626 Location rl; 5627 gotoParent = parse46(r, rl, currentStart, next); 5628 if (gotoParent < 0) 5629 return gotoParent; 5630 currentResult = r; 5631 currentResultLocation = rl; 5632 } 5633 else if (currentResult.nonterminalID == 16/*Concatenation*/) 5634 { 5635 currentResult = ParseResultIn.create(15/*Alternation*/, currentResult.get!(16/*Concatenation*/)); 5636 currentResultLocation = currentResultLocation; 5637 } 5638 else if (currentResult.nonterminalID == 18/*TokenMinus*/) 5639 { 5640 auto next = ParseStackElem!(Location, NonterminalType!18/*TokenMinus*/)(currentResultLocation, currentResult.get!(18/*TokenMinus*/)()); 5641 CreatorInstance.NonterminalUnion!([16, 18]) r; 5642 Location rl; 5643 gotoParent = parse49(r, rl, currentStart, next); 5644 if (gotoParent < 0) 5645 return gotoParent; 5646 currentResult = r; 5647 currentResultLocation = rl; 5648 } 5649 else if (currentResult.nonterminalID == 19/*AnnotatedExpression*/) 5650 { 5651 currentResult = ParseResultIn.create(18/*TokenMinus*/, currentResult.get!(19/*AnnotatedExpression*/)); 5652 currentResultLocation = currentResultLocation; 5653 } 5654 else if (currentResult.nonterminalID == 51/*@regArray_ExpressionAnnotation**/) 5655 { 5656 auto next = ParseStackElem!(Location, NonterminalType!51/*@regArray_ExpressionAnnotation**/)(currentResultLocation, currentResult.get!(51/*@regArray_ExpressionAnnotation**/)()); 5657 NonterminalType!(19) r; 5658 Location rl; 5659 gotoParent = parse63(r, rl, currentStart, next); 5660 if (gotoParent < 0) 5661 return gotoParent; 5662 currentResult = ParseResultIn.create(19/*AnnotatedExpression*/, r); 5663 currentResultLocation = rl; 5664 } 5665 else if (currentResult.nonterminalID == 57/*$regarray_1*/) 5666 { 5667 auto next = ParseStackElem!(Location, CreatorInstance.NonterminalArray)(currentResultLocation, currentResult.get!(57/*$regarray_1*/)()); 5668 CreatorInstance.NonterminalUnion!([16, 19, 57]) r; 5669 Location rl; 5670 gotoParent = parse80(r, rl, currentStart, next); 5671 if (gotoParent < 0) 5672 return gotoParent; 5673 currentResult = r; 5674 currentResultLocation = rl; 5675 } 5676 else 5677 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 5678 } 5679 5680 result = currentResult.get!(34/*ParenExpression*/); 5681 resultLocation = currentResultLocation; 5682 return gotoParent - 1; 5683 } 5684 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix* "{" Expression 5685 // type: unknown 5686 // ParenExpression -> "{" Expression."}" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5687 private int parse78(ref NonterminalType!(34) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!14/*Expression*/) stack1) 5688 { 5689 alias ThisParseResult = typeof(result); 5690 alias ParseResultIn = CreatorInstance.NonterminalUnion!([34]); 5691 ParseResultIn currentResult; 5692 Location currentResultLocation; 5693 int gotoParent = -1; 5694 Location currentStart = lexer.front.currentLocation; 5695 if (lexer.empty) 5696 { 5697 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 5698 return -1; 5699 } 5700 else if (lexer.front.symbol == Lexer.tokenID!q{"}"}) 5701 { 5702 auto next = popToken(); 5703 NonterminalType!(34) r; 5704 Location rl; 5705 gotoParent = parse79(r, rl, parseStart2, stack2, stack1, next); 5706 if (gotoParent < 0) 5707 return gotoParent; 5708 assert(gotoParent > 0); 5709 result = r; 5710 resultLocation = rl; 5711 return gotoParent - 1; 5712 } 5713 else 5714 { 5715 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 5716 lexer.front.currentLocation, lexer.front.currentTokenEnd); 5717 return -1; 5718 } 5719 } 5720 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix* "{" Expression "}" 5721 // type: unknown 5722 // ParenExpression -> "{" Expression "}". {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5723 private int parse79(ref NonterminalType!(34) result, ref Location resultLocation, Location parseStart3, ParseStackElem!(Location, Token) stack3, ParseStackElem!(Location, NonterminalType!14/*Expression*/) stack2, ParseStackElem!(Location, Token) stack1) 5724 { 5725 alias ThisParseResult = typeof(result); 5726 Location currentStart = lexer.front.currentLocation; 5727 { 5728 auto tmp = reduce117_ParenExpression/*ParenExpression = "{" Expression "}"*/(parseStart3, stack3, stack2, stack1); 5729 result = tmp.val; 5730 resultLocation = tmp.start; 5731 return 2; 5732 } 5733 } 5734 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix* "{" $regarray_1 5735 // type: unknown 5736 // Concatenation -> @regArray_ProductionAnnotation+. {";", ")", ",", "}", "|"} 5737 // AnnotatedExpression -> @regArray_ExpressionAnnotation*.ExpressionName? ExpressionPrefix* PostfixExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "-", "|", "^", "t("} 5738 // $regarray_1 -> $regarray_1.$regarrayedge_1_1 {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 5739 // Annotation -> ."@" Identifier AnnotationParams? {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 5740 // NegativeLookahead -> ."!" Symbol {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 5741 // NegativeLookahead -> ."!" "anytoken" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 5742 // ExpressionName -> .Identifier ":" {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 5743 // ExpressionName? -> . {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 5744 // ExpressionName? ---> ExpressionName 5745 // $regarrayedge_1_1 ---> Annotation 5746 // $regarrayedge_1_1 ---> NegativeLookahead 5747 private int parse80(ref CreatorInstance.NonterminalUnion!([16, 19, 57]) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, CreatorInstance.NonterminalArray) stack1) 5748 { 5749 alias ThisParseResult = typeof(result); 5750 alias ParseResultIn = CreatorInstance.NonterminalUnion!([10, 13, 16, 19, 21, 52, 57]); 5751 ParseResultIn currentResult; 5752 Location currentResultLocation; 5753 int gotoParent = -1; 5754 Location currentStart = lexer.front.currentLocation; 5755 if (lexer.empty) 5756 { 5757 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 5758 return -1; 5759 } 5760 else if (lexer.front.symbol == Lexer.tokenID!"Identifier") 5761 { 5762 Lexer tmpLexer = *lexer; 5763 tmpLexer.popFront(); 5764 if (!tmpLexer.empty && tmpLexer.front.symbol == Lexer.tokenID!q{":"}) 5765 { 5766 auto next = popToken(); 5767 NonterminalType!(21) r; 5768 Location rl; 5769 gotoParent = parse64(r, rl, currentStart, next); 5770 if (gotoParent < 0) 5771 return gotoParent; 5772 currentResult = ParseResultIn.create(21/*ExpressionName*/, r); 5773 currentResultLocation = rl; 5774 } 5775 else if (!tmpLexer.empty && (tmpLexer.front.symbol == Lexer.tokenID!"Identifier" || tmpLexer.front.symbol == Lexer.tokenID!"StringLiteral" || tmpLexer.front.symbol == Lexer.tokenID!"CharacterSetLiteral" || tmpLexer.front.symbol == Lexer.tokenID!q{";"} || tmpLexer.front.symbol == Lexer.tokenID!q{"("} || tmpLexer.front.symbol == Lexer.tokenID!q{")"} || tmpLexer.front.symbol == Lexer.tokenID!q{","} || tmpLexer.front.symbol == Lexer.tokenID!q{"..."} || tmpLexer.front.symbol == Lexer.tokenID!q{"@"} || tmpLexer.front.symbol == Lexer.tokenID!q{"{"} || tmpLexer.front.symbol == Lexer.tokenID!q{"}"} || tmpLexer.front.symbol == Lexer.tokenID!q{"?"} || tmpLexer.front.symbol == Lexer.tokenID!q{"!"} || tmpLexer.front.symbol == Lexer.tokenID!q{"<"} || tmpLexer.front.symbol == Lexer.tokenID!q{"*"} || tmpLexer.front.symbol == Lexer.tokenID!q{">>"} || tmpLexer.front.symbol == Lexer.tokenID!q{"-"} || tmpLexer.front.symbol == Lexer.tokenID!q{"|"} || tmpLexer.front.symbol == Lexer.tokenID!q{"^"} || tmpLexer.front.symbol == Lexer.tokenID!q{"+"} || tmpLexer.front.symbol == Lexer.tokenID!q{"t("})) 5776 { 5777 auto tmp = reduce82/*ExpressionName? = [virtual]*/(); 5778 currentResult = ParseResultIn.create(52/*ExpressionName?*/, tmp.val); 5779 currentResultLocation = tmp.start; 5780 gotoParent = 0; 5781 } 5782 else 5783 { 5784 lastError = new SingleParseException!Location(text("unexpected Token \"", tmpLexer.front.content, "\" \"", lexer.tokenName(tmpLexer.front.symbol), "\""), 5785 tmpLexer.front.currentLocation, tmpLexer.front.currentTokenEnd); 5786 return -1; 5787 } 5788 } 5789 else if (lexer.front.symbol == Lexer.tokenID!"StringLiteral" || lexer.front.symbol == Lexer.tokenID!"CharacterSetLiteral" || lexer.front.symbol == Lexer.tokenID!q{"{"} || lexer.front.symbol == Lexer.tokenID!q{"<"} || lexer.front.symbol == Lexer.tokenID!q{"^"} || lexer.front.symbol == Lexer.tokenID!q{"t("}) 5790 { 5791 auto tmp = reduce82/*ExpressionName? = [virtual]*/(); 5792 currentResult = ParseResultIn.create(52/*ExpressionName?*/, tmp.val); 5793 currentResultLocation = tmp.start; 5794 gotoParent = 0; 5795 } 5796 else if (lexer.front.symbol == Lexer.tokenID!q{";"} || lexer.front.symbol == Lexer.tokenID!q{")"} || lexer.front.symbol == Lexer.tokenID!q{","} || lexer.front.symbol == Lexer.tokenID!q{"}"} || lexer.front.symbol == Lexer.tokenID!q{"|"}) 5797 { 5798 auto tmp = reduce72_Concatenation/*Concatenation = @regArray @regArray_ProductionAnnotation+*/(parseStart1, stack1); 5799 result = ThisParseResult.create(16/*Concatenation*/, tmp.val); 5800 resultLocation = tmp.start; 5801 return 0; 5802 } 5803 else if (lexer.front.symbol == Lexer.tokenID!q{"@"}) 5804 { 5805 auto next = popToken(); 5806 NonterminalType!(10) r; 5807 Location rl; 5808 gotoParent = parse8(r, rl, currentStart, next); 5809 if (gotoParent < 0) 5810 return gotoParent; 5811 currentResult = ParseResultIn.create(10/*Annotation*/, r); 5812 currentResultLocation = rl; 5813 } 5814 else if (lexer.front.symbol == Lexer.tokenID!q{"!"}) 5815 { 5816 auto next = popToken(); 5817 NonterminalType!(13) r; 5818 Location rl; 5819 gotoParent = parse53(r, rl, currentStart, next); 5820 if (gotoParent < 0) 5821 return gotoParent; 5822 currentResult = ParseResultIn.create(13/*NegativeLookahead*/, r); 5823 currentResultLocation = rl; 5824 } 5825 else 5826 { 5827 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 5828 lexer.front.currentLocation, lexer.front.currentTokenEnd); 5829 return -1; 5830 } 5831 5832 while (gotoParent == 0) 5833 { 5834 if (currentResult.nonterminalID == 10/*Annotation*/) 5835 { 5836 auto next = ParseStackElem!(Location, NonterminalType!59/*$regarrayedge_1_1*/)(currentResultLocation, currentResult.get!(10/*Annotation*/)()); 5837 NonterminalType!(57) r; 5838 Location rl; 5839 gotoParent = parse81(r, rl, parseStart1, stack1, next); 5840 if (gotoParent < 0) 5841 return gotoParent; 5842 assert(gotoParent > 0); 5843 result = ThisParseResult.create(57/*$regarray_1*/, r); 5844 resultLocation = rl; 5845 return gotoParent - 1; 5846 } 5847 else if (currentResult.nonterminalID == 13/*NegativeLookahead*/) 5848 { 5849 auto next = ParseStackElem!(Location, NonterminalType!59/*$regarrayedge_1_1*/)(currentResultLocation, currentResult.get!(13/*NegativeLookahead*/)()); 5850 NonterminalType!(57) r; 5851 Location rl; 5852 gotoParent = parse81(r, rl, parseStart1, stack1, next); 5853 if (gotoParent < 0) 5854 return gotoParent; 5855 assert(gotoParent > 0); 5856 result = ThisParseResult.create(57/*$regarray_1*/, r); 5857 resultLocation = rl; 5858 return gotoParent - 1; 5859 } 5860 else if (currentResult.nonterminalID == 21/*ExpressionName*/) 5861 { 5862 auto next = ParseStackElem!(Location, NonterminalType!52/*ExpressionName?*/)(currentResultLocation, currentResult.get!(21/*ExpressionName*/)()); 5863 NonterminalType!(19) r; 5864 Location rl; 5865 gotoParent = parse66(r, rl, parseStart1, stack1, next); 5866 if (gotoParent < 0) 5867 return gotoParent; 5868 assert(gotoParent > 0); 5869 result = ThisParseResult.create(19/*AnnotatedExpression*/, r); 5870 resultLocation = rl; 5871 return gotoParent - 1; 5872 } 5873 else if (currentResult.nonterminalID == 52/*ExpressionName?*/) 5874 { 5875 auto next = ParseStackElem!(Location, NonterminalType!52/*ExpressionName?*/)(currentResultLocation, currentResult.get!(52/*ExpressionName?*/)()); 5876 NonterminalType!(19) r; 5877 Location rl; 5878 gotoParent = parse66(r, rl, parseStart1, stack1, next); 5879 if (gotoParent < 0) 5880 return gotoParent; 5881 assert(gotoParent > 0); 5882 result = ThisParseResult.create(19/*AnnotatedExpression*/, r); 5883 resultLocation = rl; 5884 return gotoParent - 1; 5885 } 5886 else 5887 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 5888 } 5889 5890 result = currentResult; 5891 resultLocation = currentResultLocation; 5892 return gotoParent - 1; 5893 } 5894 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix* "{" $regarray_1 Annotation 5895 // type: unknown 5896 // $regarray_1 -> $regarray_1 $regarrayedge_1_1. {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 5897 private int parse81(ref NonterminalType!(57) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, NonterminalType!57/*$regarray_1*/) stack2, ParseStackElem!(Location, NonterminalType!59/*$regarrayedge_1_1*/) stack1) 5898 { 5899 alias ThisParseResult = typeof(result); 5900 Location currentStart = lexer.front.currentLocation; 5901 { 5902 auto tmp = reduce121/*$regarray_1 @array @directUnwrap = @inheritAnyTag $regarray_1 $regarrayedge_1_1*/(parseStart2, stack2, stack1); 5903 result = tmp.val; 5904 resultLocation = tmp.start; 5905 return 1; 5906 } 5907 } 5908 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix* PostfixExpression 5909 // type: unknown 5910 // AnnotatedExpression -> @regArray_ExpressionAnnotation* ExpressionName? ExpressionPrefix* PostfixExpression. {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "-", "|", "^", "t("} 5911 // Optional -> PostfixExpression."?" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5912 // Repetition -> PostfixExpression."*" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5913 // RepetitionPlus -> PostfixExpression."+" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5914 private int parse82(ref CreatorInstance.NonterminalUnion!([19, 24, 25, 26]) result, ref Location resultLocation, Location parseStart4, ParseStackElem!(Location, NonterminalType!51/*@regArray_ExpressionAnnotation**/) stack4, ParseStackElem!(Location, NonterminalType!52/*ExpressionName?*/) stack3, ParseStackElem!(Location, NonterminalType!54/*ExpressionPrefix**/) stack2, Location parseStart1, ParseStackElem!(Location, NonterminalType!23/*PostfixExpression*/) stack1) 5915 { 5916 alias ThisParseResult = typeof(result); 5917 alias ParseResultIn = CreatorInstance.NonterminalUnion!([19, 24, 25, 26]); 5918 ParseResultIn currentResult; 5919 Location currentResultLocation; 5920 int gotoParent = -1; 5921 Location currentStart = lexer.front.currentLocation; 5922 if (lexer.empty) 5923 { 5924 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 5925 return -1; 5926 } 5927 else if (lexer.front.symbol == Lexer.tokenID!q{"?"}) 5928 { 5929 auto next = popToken(); 5930 NonterminalType!(24) r; 5931 Location rl; 5932 gotoParent = parse83(r, rl, parseStart1, stack1, next); 5933 if (gotoParent < 0) 5934 return gotoParent; 5935 assert(gotoParent > 0); 5936 result = ThisParseResult.create(24/*Optional*/, r); 5937 resultLocation = rl; 5938 return gotoParent - 1; 5939 } 5940 else if (lexer.front.symbol == Lexer.tokenID!q{"*"}) 5941 { 5942 auto next = popToken(); 5943 NonterminalType!(25) r; 5944 Location rl; 5945 gotoParent = parse84(r, rl, parseStart1, stack1, next); 5946 if (gotoParent < 0) 5947 return gotoParent; 5948 assert(gotoParent > 0); 5949 result = ThisParseResult.create(25/*Repetition*/, r); 5950 resultLocation = rl; 5951 return gotoParent - 1; 5952 } 5953 else if (lexer.front.symbol == Lexer.tokenID!q{"+"}) 5954 { 5955 auto next = popToken(); 5956 NonterminalType!(26) r; 5957 Location rl; 5958 gotoParent = parse85(r, rl, parseStart1, stack1, next); 5959 if (gotoParent < 0) 5960 return gotoParent; 5961 assert(gotoParent > 0); 5962 result = ThisParseResult.create(26/*RepetitionPlus*/, r); 5963 resultLocation = rl; 5964 return gotoParent - 1; 5965 } 5966 else 5967 { 5968 auto tmp = reduce87_AnnotatedExpression/*AnnotatedExpression = @regArray @regArray_ExpressionAnnotation* ExpressionName? ExpressionPrefix* PostfixExpression*/(parseStart4, stack4, stack3, stack2, stack1); 5969 result = ThisParseResult.create(19/*AnnotatedExpression*/, tmp.val); 5970 resultLocation = tmp.start; 5971 return 3; 5972 } 5973 } 5974 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix* PostfixExpression "?" 5975 // type: unknown 5976 // Optional -> PostfixExpression "?". {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5977 private int parse83(ref NonterminalType!(24) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, NonterminalType!23/*PostfixExpression*/) stack2, ParseStackElem!(Location, Token) stack1) 5978 { 5979 alias ThisParseResult = typeof(result); 5980 Location currentStart = lexer.front.currentLocation; 5981 { 5982 auto tmp = reduce97_Optional/*Optional = PostfixExpression "?"*/(parseStart2, stack2, stack1); 5983 result = tmp.val; 5984 resultLocation = tmp.start; 5985 return 1; 5986 } 5987 } 5988 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix* PostfixExpression "*" 5989 // type: unknown 5990 // Repetition -> PostfixExpression "*". {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 5991 private int parse84(ref NonterminalType!(25) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, NonterminalType!23/*PostfixExpression*/) stack2, ParseStackElem!(Location, Token) stack1) 5992 { 5993 alias ThisParseResult = typeof(result); 5994 Location currentStart = lexer.front.currentLocation; 5995 { 5996 auto tmp = reduce98_Repetition/*Repetition = PostfixExpression "*"*/(parseStart2, stack2, stack1); 5997 result = tmp.val; 5998 resultLocation = tmp.start; 5999 return 1; 6000 } 6001 } 6002 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix* PostfixExpression "+" 6003 // type: unknown 6004 // RepetitionPlus -> PostfixExpression "+". {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 6005 private int parse85(ref NonterminalType!(26) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, NonterminalType!23/*PostfixExpression*/) stack2, ParseStackElem!(Location, Token) stack1) 6006 { 6007 alias ThisParseResult = typeof(result); 6008 Location currentStart = lexer.front.currentLocation; 6009 { 6010 auto tmp = reduce99_RepetitionPlus/*RepetitionPlus = PostfixExpression "+"*/(parseStart2, stack2, stack1); 6011 result = tmp.val; 6012 resultLocation = tmp.start; 6013 return 1; 6014 } 6015 } 6016 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix* Symbol 6017 // type: unknown 6018 // AtomExpression -> Symbol. {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 6019 // SubToken -> Symbol.">>" Symbol {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 6020 // SubToken -> Symbol.">>" ParenExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 6021 private int parse90(ref CreatorInstance.NonterminalUnion!([27, 32]) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, NonterminalType!28/*Symbol*/) stack1) 6022 { 6023 alias ThisParseResult = typeof(result); 6024 alias ParseResultIn = CreatorInstance.NonterminalUnion!([27, 32]); 6025 ParseResultIn currentResult; 6026 Location currentResultLocation; 6027 int gotoParent = -1; 6028 Location currentStart = lexer.front.currentLocation; 6029 if (lexer.empty) 6030 { 6031 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 6032 return -1; 6033 } 6034 else if (lexer.front.symbol == Lexer.tokenID!q{">>"}) 6035 { 6036 auto next = popToken(); 6037 NonterminalType!(32) r; 6038 Location rl; 6039 gotoParent = parse91(r, rl, parseStart1, stack1, next); 6040 if (gotoParent < 0) 6041 return gotoParent; 6042 assert(gotoParent > 0); 6043 result = ThisParseResult.create(32/*SubToken*/, r); 6044 resultLocation = rl; 6045 return gotoParent - 1; 6046 } 6047 else 6048 { 6049 auto tmp = reduce100_AtomExpression/*AtomExpression = <Symbol*/(parseStart1, stack1); 6050 result = ThisParseResult.create(27/*AtomExpression*/, tmp.val); 6051 resultLocation = tmp.start; 6052 return 0; 6053 } 6054 } 6055 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix* Symbol ">>" 6056 // type: unknown 6057 // SubToken -> Symbol ">>".Symbol {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 6058 // SubToken -> Symbol ">>".ParenExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 6059 // Symbol -> .Name {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 6060 // Symbol -> .Token {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 6061 // Symbol -> .MacroInstance {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 6062 // Name -> .Identifier {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 6063 // Token -> .StringLiteral {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 6064 // Token -> .CharacterSetLiteral {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 6065 // MacroInstance -> .Identifier "(" ExpressionList? ")" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 6066 // ParenExpression -> ."{" Expression "}" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 6067 private int parse91(ref NonterminalType!(32) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, NonterminalType!28/*Symbol*/) stack2, ParseStackElem!(Location, Token) stack1) 6068 { 6069 alias ThisParseResult = typeof(result); 6070 alias ParseResultIn = CreatorInstance.NonterminalUnion!([28, 29, 30, 32, 33, 34]); 6071 ParseResultIn currentResult; 6072 Location currentResultLocation; 6073 int gotoParent = -1; 6074 Location currentStart = lexer.front.currentLocation; 6075 if (lexer.empty) 6076 { 6077 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 6078 return -1; 6079 } 6080 else if (lexer.front.symbol == Lexer.tokenID!"Identifier") 6081 { 6082 auto next = popToken(); 6083 CreatorInstance.NonterminalUnion!([29, 33]) r; 6084 Location rl; 6085 gotoParent = parse54(r, rl, currentStart, next); 6086 if (gotoParent < 0) 6087 return gotoParent; 6088 currentResult = r; 6089 currentResultLocation = rl; 6090 } 6091 else if (lexer.front.symbol == Lexer.tokenID!"StringLiteral") 6092 { 6093 auto next = popToken(); 6094 NonterminalType!(30) r; 6095 Location rl; 6096 gotoParent = parse75(r, rl, currentStart, next); 6097 if (gotoParent < 0) 6098 return gotoParent; 6099 currentResult = ParseResultIn.create(30/*Token*/, r); 6100 currentResultLocation = rl; 6101 } 6102 else if (lexer.front.symbol == Lexer.tokenID!"CharacterSetLiteral") 6103 { 6104 auto next = popToken(); 6105 NonterminalType!(30) r; 6106 Location rl; 6107 gotoParent = parse76(r, rl, currentStart, next); 6108 if (gotoParent < 0) 6109 return gotoParent; 6110 currentResult = ParseResultIn.create(30/*Token*/, r); 6111 currentResultLocation = rl; 6112 } 6113 else if (lexer.front.symbol == Lexer.tokenID!q{"{"}) 6114 { 6115 auto next = popToken(); 6116 NonterminalType!(34) r; 6117 Location rl; 6118 gotoParent = parse77(r, rl, currentStart, next); 6119 if (gotoParent < 0) 6120 return gotoParent; 6121 currentResult = ParseResultIn.create(34/*ParenExpression*/, r); 6122 currentResultLocation = rl; 6123 } 6124 else 6125 { 6126 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 6127 lexer.front.currentLocation, lexer.front.currentTokenEnd); 6128 return -1; 6129 } 6130 6131 while (gotoParent == 0) 6132 { 6133 if (currentResult.nonterminalID == 28/*Symbol*/) 6134 { 6135 auto next = ParseStackElem!(Location, NonterminalType!28/*Symbol*/)(currentResultLocation, currentResult.get!(28/*Symbol*/)()); 6136 NonterminalType!(32) r; 6137 Location rl; 6138 gotoParent = parse92(r, rl, parseStart2, stack2, stack1, next); 6139 if (gotoParent < 0) 6140 return gotoParent; 6141 assert(gotoParent > 0); 6142 result = r; 6143 resultLocation = rl; 6144 return gotoParent - 1; 6145 } 6146 else if (currentResult.nonterminalID == 29/*Name*/) 6147 { 6148 currentResult = ParseResultIn.create(28/*Symbol*/, currentResult.get!(29/*Name*/)); 6149 currentResultLocation = currentResultLocation; 6150 } 6151 else if (currentResult.nonterminalID == 30/*Token*/) 6152 { 6153 currentResult = ParseResultIn.create(28/*Symbol*/, currentResult.get!(30/*Token*/)); 6154 currentResultLocation = currentResultLocation; 6155 } 6156 else if (currentResult.nonterminalID == 33/*MacroInstance*/) 6157 { 6158 currentResult = ParseResultIn.create(28/*Symbol*/, currentResult.get!(33/*MacroInstance*/)); 6159 currentResultLocation = currentResultLocation; 6160 } 6161 else if (currentResult.nonterminalID == 34/*ParenExpression*/) 6162 { 6163 auto next = ParseStackElem!(Location, NonterminalType!34/*ParenExpression*/)(currentResultLocation, currentResult.get!(34/*ParenExpression*/)()); 6164 NonterminalType!(32) r; 6165 Location rl; 6166 gotoParent = parse96(r, rl, parseStart2, stack2, stack1, next); 6167 if (gotoParent < 0) 6168 return gotoParent; 6169 assert(gotoParent > 0); 6170 result = r; 6171 resultLocation = rl; 6172 return gotoParent - 1; 6173 } 6174 else 6175 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 6176 } 6177 6178 result = currentResult.get!(32/*SubToken*/); 6179 resultLocation = currentResultLocation; 6180 return gotoParent - 1; 6181 } 6182 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix* Symbol ">>" Symbol 6183 // type: unknown 6184 // SubToken -> Symbol ">>" Symbol. {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 6185 private int parse92(ref NonterminalType!(32) result, ref Location resultLocation, Location parseStart3, ParseStackElem!(Location, NonterminalType!28/*Symbol*/) stack3, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!28/*Symbol*/) stack1) 6186 { 6187 alias ThisParseResult = typeof(result); 6188 Location currentStart = lexer.front.currentLocation; 6189 { 6190 auto tmp = reduce112_SubToken/*SubToken = Symbol ">>" Symbol*/(parseStart3, stack3, stack2, stack1); 6191 result = tmp.val; 6192 resultLocation = tmp.start; 6193 return 2; 6194 } 6195 } 6196 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix* Symbol ">>" ParenExpression 6197 // type: unknown 6198 // SubToken -> Symbol ">>" ParenExpression. {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 6199 private int parse96(ref NonterminalType!(32) result, ref Location resultLocation, Location parseStart3, ParseStackElem!(Location, NonterminalType!28/*Symbol*/) stack3, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!34/*ParenExpression*/) stack1) 6200 { 6201 alias ThisParseResult = typeof(result); 6202 Location currentStart = lexer.front.currentLocation; 6203 { 6204 auto tmp = reduce113_SubToken/*SubToken = Symbol ">>" ParenExpression*/(parseStart3, stack3, stack2, stack1); 6205 result = tmp.val; 6206 resultLocation = tmp.start; 6207 return 2; 6208 } 6209 } 6210 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix* "t(" 6211 // type: unknown 6212 // Tuple -> "t(".ExpressionList? ")" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 6213 // Annotation -> ."@" Identifier AnnotationParams? {Identifier, StringLiteral, CharacterSetLiteral, ")", ",", "@", "{", "!", "<", "|", "^", "t("} 6214 // NegativeLookahead -> ."!" Symbol {Identifier, StringLiteral, CharacterSetLiteral, ")", ",", "@", "{", "!", "<", "|", "^", "t("} 6215 // NegativeLookahead -> ."!" "anytoken" {Identifier, StringLiteral, CharacterSetLiteral, ")", ",", "@", "{", "!", "<", "|", "^", "t("} 6216 // Expression -> .Alternation {")", ","} 6217 // Alternation -> .Alternation "|" Concatenation {")", ",", "|"} 6218 // Alternation -> .Concatenation {")", ",", "|"} 6219 // Concatenation -> .TokenMinus {")", ",", "|"} 6220 // Concatenation -> .TokenMinus TokenMinus+ @regArray_ProductionAnnotation* {")", ",", "|"} 6221 // Concatenation -> .TokenMinus @regArray_ProductionAnnotation+ {")", ",", "|"} 6222 // Concatenation -> .@regArray_ProductionAnnotation+ {")", ",", "|"} 6223 // TokenMinus -> .TokenMinus "-" AnnotatedExpression {Identifier, StringLiteral, CharacterSetLiteral, ")", ",", "@", "{", "!", "<", "-", "|", "^", "t("} 6224 // TokenMinus -> .AnnotatedExpression {Identifier, StringLiteral, CharacterSetLiteral, ")", ",", "@", "{", "!", "<", "-", "|", "^", "t("} 6225 // AnnotatedExpression -> .@regArray_ExpressionAnnotation* ExpressionName? ExpressionPrefix* PostfixExpression {Identifier, StringLiteral, CharacterSetLiteral, ")", ",", "@", "{", "!", "<", "-", "|", "^", "t("} 6226 // ExpressionList -> .Expression {")", ","} 6227 // ExpressionList -> .ExpressionList "," Expression {")", ","} 6228 // @regArray_ExpressionAnnotation* -> . {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 6229 // ExpressionList? -> . {")"} 6230 // $regarray_1 -> .$regarray_1 $regarrayedge_1_1 {Identifier, StringLiteral, CharacterSetLiteral, ")", ",", "@", "{", "!", "<", "|", "^", "t("} 6231 // $regarray_1 -> .$regarrayedge_0_1 {Identifier, StringLiteral, CharacterSetLiteral, ")", ",", "@", "{", "!", "<", "|", "^", "t("} 6232 // ExpressionList? ---> ExpressionList 6233 // @regArray_ProductionAnnotation+ ---> $regarray_1 6234 // @regArray_ExpressionAnnotation* ---> $regarray_1 6235 // $regarrayedge_0_1 ---> Annotation 6236 // $regarrayedge_0_1 ---> NegativeLookahead 6237 private int parse99(ref NonterminalType!(36) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 6238 { 6239 alias ThisParseResult = typeof(result); 6240 alias ParseResultIn = CreatorInstance.NonterminalUnion!([10, 13, 14, 15, 16, 18, 19, 35, 36, 51, 55, 57]); 6241 ParseResultIn currentResult; 6242 Location currentResultLocation; 6243 int gotoParent = -1; 6244 Location currentStart = lexer.front.currentLocation; 6245 if (lexer.empty) 6246 { 6247 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 6248 return -1; 6249 } 6250 else if (lexer.front.symbol == Lexer.tokenID!"Identifier" || lexer.front.symbol == Lexer.tokenID!"StringLiteral" || lexer.front.symbol == Lexer.tokenID!"CharacterSetLiteral" || lexer.front.symbol == Lexer.tokenID!q{"{"} || lexer.front.symbol == Lexer.tokenID!q{"<"} || lexer.front.symbol == Lexer.tokenID!q{"^"} || lexer.front.symbol == Lexer.tokenID!q{"t("}) 6251 { 6252 auto tmp = reduce127/*@regArray_ExpressionAnnotation* @array @directUnwrap @regArray =*/(); 6253 currentResult = ParseResultIn.create(51/*@regArray_ExpressionAnnotation**/, tmp.val); 6254 currentResultLocation = tmp.start; 6255 gotoParent = 0; 6256 } 6257 else if (lexer.front.symbol == Lexer.tokenID!q{")"}) 6258 { 6259 auto tmp = reduce115/*ExpressionList? = [virtual]*/(); 6260 currentResult = ParseResultIn.create(55/*ExpressionList?*/, tmp.val); 6261 currentResultLocation = tmp.start; 6262 gotoParent = 0; 6263 } 6264 else if (lexer.front.symbol == Lexer.tokenID!q{"@"}) 6265 { 6266 auto next = popToken(); 6267 NonterminalType!(10) r; 6268 Location rl; 6269 gotoParent = parse8(r, rl, currentStart, next); 6270 if (gotoParent < 0) 6271 return gotoParent; 6272 currentResult = ParseResultIn.create(10/*Annotation*/, r); 6273 currentResultLocation = rl; 6274 } 6275 else if (lexer.front.symbol == Lexer.tokenID!q{"!"}) 6276 { 6277 auto next = popToken(); 6278 NonterminalType!(13) r; 6279 Location rl; 6280 gotoParent = parse53(r, rl, currentStart, next); 6281 if (gotoParent < 0) 6282 return gotoParent; 6283 currentResult = ParseResultIn.create(13/*NegativeLookahead*/, r); 6284 currentResultLocation = rl; 6285 } 6286 else 6287 { 6288 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 6289 lexer.front.currentLocation, lexer.front.currentTokenEnd); 6290 return -1; 6291 } 6292 6293 while (gotoParent == 0) 6294 { 6295 if (currentResult.nonterminalID == 10/*Annotation*/) 6296 { 6297 auto next = ParseStackElem!(Location, NonterminalType!58/*$regarrayedge_0_1*/)(currentResultLocation, currentResult.get!(10/*Annotation*/)()); 6298 NonterminalType!(57) r; 6299 Location rl; 6300 gotoParent = parse43(r, rl, currentStart, next); 6301 if (gotoParent < 0) 6302 return gotoParent; 6303 currentResult = ParseResultIn.create(57/*$regarray_1*/, r); 6304 currentResultLocation = rl; 6305 } 6306 else if (currentResult.nonterminalID == 13/*NegativeLookahead*/) 6307 { 6308 auto next = ParseStackElem!(Location, NonterminalType!58/*$regarrayedge_0_1*/)(currentResultLocation, currentResult.get!(13/*NegativeLookahead*/)()); 6309 NonterminalType!(57) r; 6310 Location rl; 6311 gotoParent = parse43(r, rl, currentStart, next); 6312 if (gotoParent < 0) 6313 return gotoParent; 6314 currentResult = ParseResultIn.create(57/*$regarray_1*/, r); 6315 currentResultLocation = rl; 6316 } 6317 else if (currentResult.nonterminalID == 14/*Expression*/) 6318 { 6319 auto next = ParseStackElem!(Location, NonterminalType!14/*Expression*/)(currentResultLocation, currentResult.get!(14/*Expression*/)()); 6320 NonterminalType!(35) r; 6321 Location rl; 6322 gotoParent = parse56(r, rl, currentStart, next); 6323 if (gotoParent < 0) 6324 return gotoParent; 6325 currentResult = ParseResultIn.create(35/*ExpressionList*/, r); 6326 currentResultLocation = rl; 6327 } 6328 else if (currentResult.nonterminalID == 15/*Alternation*/) 6329 { 6330 auto next = ParseStackElem!(Location, NonterminalType!15/*Alternation*/)(currentResultLocation, currentResult.get!(15/*Alternation*/)()); 6331 CreatorInstance.NonterminalUnion!([14, 15]) r; 6332 Location rl; 6333 gotoParent = parse46(r, rl, currentStart, next); 6334 if (gotoParent < 0) 6335 return gotoParent; 6336 currentResult = r; 6337 currentResultLocation = rl; 6338 } 6339 else if (currentResult.nonterminalID == 16/*Concatenation*/) 6340 { 6341 currentResult = ParseResultIn.create(15/*Alternation*/, currentResult.get!(16/*Concatenation*/)); 6342 currentResultLocation = currentResultLocation; 6343 } 6344 else if (currentResult.nonterminalID == 18/*TokenMinus*/) 6345 { 6346 auto next = ParseStackElem!(Location, NonterminalType!18/*TokenMinus*/)(currentResultLocation, currentResult.get!(18/*TokenMinus*/)()); 6347 CreatorInstance.NonterminalUnion!([16, 18]) r; 6348 Location rl; 6349 gotoParent = parse49(r, rl, currentStart, next); 6350 if (gotoParent < 0) 6351 return gotoParent; 6352 currentResult = r; 6353 currentResultLocation = rl; 6354 } 6355 else if (currentResult.nonterminalID == 19/*AnnotatedExpression*/) 6356 { 6357 currentResult = ParseResultIn.create(18/*TokenMinus*/, currentResult.get!(19/*AnnotatedExpression*/)); 6358 currentResultLocation = currentResultLocation; 6359 } 6360 else if (currentResult.nonterminalID == 35/*ExpressionList*/) 6361 { 6362 auto next = ParseStackElem!(Location, CreatorInstance.NonterminalArray)(currentResultLocation, currentResult.get!(35/*ExpressionList*/)()); 6363 CreatorInstance.NonterminalUnion!([35, 36]) r; 6364 Location rl; 6365 gotoParent = parse100(r, rl, parseStart1, stack1, currentStart, next); 6366 if (gotoParent < 0) 6367 return gotoParent; 6368 currentResult = r; 6369 currentResultLocation = rl; 6370 } 6371 else if (currentResult.nonterminalID == 51/*@regArray_ExpressionAnnotation**/) 6372 { 6373 auto next = ParseStackElem!(Location, NonterminalType!51/*@regArray_ExpressionAnnotation**/)(currentResultLocation, currentResult.get!(51/*@regArray_ExpressionAnnotation**/)()); 6374 NonterminalType!(19) r; 6375 Location rl; 6376 gotoParent = parse63(r, rl, currentStart, next); 6377 if (gotoParent < 0) 6378 return gotoParent; 6379 currentResult = ParseResultIn.create(19/*AnnotatedExpression*/, r); 6380 currentResultLocation = rl; 6381 } 6382 else if (currentResult.nonterminalID == 55/*ExpressionList?*/) 6383 { 6384 auto next = ParseStackElem!(Location, NonterminalType!55/*ExpressionList?*/)(currentResultLocation, currentResult.get!(55/*ExpressionList?*/)()); 6385 NonterminalType!(36) r; 6386 Location rl; 6387 gotoParent = parse102(r, rl, parseStart1, stack1, next); 6388 if (gotoParent < 0) 6389 return gotoParent; 6390 assert(gotoParent > 0); 6391 result = r; 6392 resultLocation = rl; 6393 return gotoParent - 1; 6394 } 6395 else if (currentResult.nonterminalID == 57/*$regarray_1*/) 6396 { 6397 auto next = ParseStackElem!(Location, CreatorInstance.NonterminalArray)(currentResultLocation, currentResult.get!(57/*$regarray_1*/)()); 6398 CreatorInstance.NonterminalUnion!([16, 19, 57]) r; 6399 Location rl; 6400 gotoParent = parse80(r, rl, currentStart, next); 6401 if (gotoParent < 0) 6402 return gotoParent; 6403 currentResult = r; 6404 currentResultLocation = rl; 6405 } 6406 else 6407 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 6408 } 6409 6410 result = currentResult.get!(36/*Tuple*/); 6411 resultLocation = currentResultLocation; 6412 return gotoParent - 1; 6413 } 6414 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix* "t(" ExpressionList 6415 // type: unknown 6416 // Tuple -> "t(" ExpressionList?.")" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 6417 // ExpressionList -> ExpressionList."," Expression {")", ","} 6418 private int parse100(ref CreatorInstance.NonterminalUnion!([35, 36]) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, Token) stack2, Location parseStart1, ParseStackElem!(Location, CreatorInstance.NonterminalArray) stack1) 6419 { 6420 alias ThisParseResult = typeof(result); 6421 alias ParseResultIn = CreatorInstance.NonterminalUnion!([35, 36]); 6422 ParseResultIn currentResult; 6423 Location currentResultLocation; 6424 int gotoParent = -1; 6425 Location currentStart = lexer.front.currentLocation; 6426 if (lexer.empty) 6427 { 6428 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 6429 return -1; 6430 } 6431 else if (lexer.front.symbol == Lexer.tokenID!q{")"}) 6432 { 6433 auto next = popToken(); 6434 NonterminalType!(36) r; 6435 Location rl; 6436 gotoParent = parse101(r, rl, parseStart2, stack2, stack1, next); 6437 if (gotoParent < 0) 6438 return gotoParent; 6439 assert(gotoParent > 0); 6440 result = ThisParseResult.create(36/*Tuple*/, r); 6441 resultLocation = rl; 6442 return gotoParent - 1; 6443 } 6444 else if (lexer.front.symbol == Lexer.tokenID!q{","}) 6445 { 6446 auto next = popToken(); 6447 NonterminalType!(35) r; 6448 Location rl; 6449 gotoParent = parse61(r, rl, parseStart1, stack1, next); 6450 if (gotoParent < 0) 6451 return gotoParent; 6452 assert(gotoParent > 0); 6453 result = ThisParseResult.create(35/*ExpressionList*/, r); 6454 resultLocation = rl; 6455 return gotoParent - 1; 6456 } 6457 else 6458 { 6459 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 6460 lexer.front.currentLocation, lexer.front.currentTokenEnd); 6461 return -1; 6462 } 6463 } 6464 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix* "t(" ExpressionList ")" 6465 // type: unknown 6466 // Tuple -> "t(" ExpressionList? ")". {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 6467 private int parse101(ref NonterminalType!(36) result, ref Location resultLocation, Location parseStart3, ParseStackElem!(Location, Token) stack3, ParseStackElem!(Location, NonterminalType!55/*ExpressionList?*/) stack2, ParseStackElem!(Location, Token) stack1) 6468 { 6469 alias ThisParseResult = typeof(result); 6470 Location currentStart = lexer.front.currentLocation; 6471 { 6472 auto tmp = reduce120_Tuple/*Tuple = "t(" ExpressionList? ")"*/(parseStart3, stack3, stack2, stack1); 6473 result = tmp.val; 6474 resultLocation = tmp.start; 6475 return 2; 6476 } 6477 } 6478 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList "," @regArray_ExpressionAnnotation* ExpressionName ExpressionPrefix* "t(" ExpressionList? 6479 // type: unknown 6480 // Tuple -> "t(" ExpressionList?.")" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", "-", "|", "^", "+", "t("} 6481 private int parse102(ref NonterminalType!(36) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!55/*ExpressionList?*/) stack1) 6482 { 6483 alias ThisParseResult = typeof(result); 6484 alias ParseResultIn = CreatorInstance.NonterminalUnion!([36]); 6485 ParseResultIn currentResult; 6486 Location currentResultLocation; 6487 int gotoParent = -1; 6488 Location currentStart = lexer.front.currentLocation; 6489 if (lexer.empty) 6490 { 6491 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 6492 return -1; 6493 } 6494 else if (lexer.front.symbol == Lexer.tokenID!q{")"}) 6495 { 6496 auto next = popToken(); 6497 NonterminalType!(36) r; 6498 Location rl; 6499 gotoParent = parse101(r, rl, parseStart2, stack2, stack1, next); 6500 if (gotoParent < 0) 6501 return gotoParent; 6502 assert(gotoParent > 0); 6503 result = r; 6504 resultLocation = rl; 6505 return gotoParent - 1; 6506 } 6507 else 6508 { 6509 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 6510 lexer.front.currentLocation, lexer.front.currentTokenEnd); 6511 return -1; 6512 } 6513 } 6514 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Identifier "(" ExpressionList? 6515 // type: unknown 6516 // MacroInstance -> Identifier "(" ExpressionList?.")" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "?", "!", "<", "*", ">>", "-", "|", "^", "+", "t("} 6517 private int parse105(ref NonterminalType!(33) result, ref Location resultLocation, Location parseStart3, ParseStackElem!(Location, Token) stack3, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!55/*ExpressionList?*/) stack1) 6518 { 6519 alias ThisParseResult = typeof(result); 6520 alias ParseResultIn = CreatorInstance.NonterminalUnion!([33]); 6521 ParseResultIn currentResult; 6522 Location currentResultLocation; 6523 int gotoParent = -1; 6524 Location currentStart = lexer.front.currentLocation; 6525 if (lexer.empty) 6526 { 6527 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 6528 return -1; 6529 } 6530 else if (lexer.front.symbol == Lexer.tokenID!q{")"}) 6531 { 6532 auto next = popToken(); 6533 NonterminalType!(33) r; 6534 Location rl; 6535 gotoParent = parse60(r, rl, parseStart3, stack3, stack2, stack1, next); 6536 if (gotoParent < 0) 6537 return gotoParent; 6538 assert(gotoParent > 0); 6539 result = r; 6540 resultLocation = rl; 6541 return gotoParent - 1; 6542 } 6543 else 6544 { 6545 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 6546 lexer.front.currentLocation, lexer.front.currentTokenEnd); 6547 return -1; 6548 } 6549 } 6550 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" Symbol 6551 // type: unknown 6552 // NegativeLookahead -> "!" Symbol. {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 6553 private int parse106(ref NonterminalType!(13) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!28/*Symbol*/) stack1) 6554 { 6555 alias ThisParseResult = typeof(result); 6556 Location currentStart = lexer.front.currentLocation; 6557 { 6558 auto tmp = reduce56_NegativeLookahead/*NegativeLookahead = "!" Symbol*/(parseStart2, stack2, stack1); 6559 result = tmp.val; 6560 resultLocation = tmp.start; 6561 return 1; 6562 } 6563 } 6564 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" "!" "anytoken" 6565 // type: unknown 6566 // NegativeLookahead -> "!" "anytoken". {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 6567 private int parse107(ref NonterminalType!(13) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, Token) stack1) 6568 { 6569 alias ThisParseResult = typeof(result); 6570 Location currentStart = lexer.front.currentLocation; 6571 { 6572 auto tmp = reduce57_NegativeLookahead/*NegativeLookahead = "!" "anytoken"*/(parseStart2, stack2, stack1); 6573 result = tmp.val; 6574 resultLocation = tmp.start; 6575 return 1; 6576 } 6577 } 6578 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus "-" $regarray_1 6579 // type: unknown 6580 // AnnotatedExpression -> @regArray_ExpressionAnnotation*.ExpressionName? ExpressionPrefix* PostfixExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "-", "|", "^", "t("} 6581 // $regarray_1 -> $regarray_1.$regarrayedge_1_1 {Identifier, StringLiteral, CharacterSetLiteral, "@", "{", "!", "<", "^", "t("} 6582 // Annotation -> ."@" Identifier AnnotationParams? {Identifier, StringLiteral, CharacterSetLiteral, "@", "{", "!", "<", "^", "t("} 6583 // NegativeLookahead -> ."!" Symbol {Identifier, StringLiteral, CharacterSetLiteral, "@", "{", "!", "<", "^", "t("} 6584 // NegativeLookahead -> ."!" "anytoken" {Identifier, StringLiteral, CharacterSetLiteral, "@", "{", "!", "<", "^", "t("} 6585 // ExpressionName -> .Identifier ":" {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 6586 // ExpressionName? -> . {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 6587 // ExpressionName? ---> ExpressionName 6588 // $regarrayedge_1_1 ---> Annotation 6589 // $regarrayedge_1_1 ---> NegativeLookahead 6590 private int parse108(ref CreatorInstance.NonterminalUnion!([19, 57]) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, CreatorInstance.NonterminalArray) stack1) 6591 { 6592 alias ThisParseResult = typeof(result); 6593 alias ParseResultIn = CreatorInstance.NonterminalUnion!([10, 13, 19, 21, 52, 57]); 6594 ParseResultIn currentResult; 6595 Location currentResultLocation; 6596 int gotoParent = -1; 6597 Location currentStart = lexer.front.currentLocation; 6598 if (lexer.empty) 6599 { 6600 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 6601 return -1; 6602 } 6603 else if (lexer.front.symbol == Lexer.tokenID!"Identifier") 6604 { 6605 Lexer tmpLexer = *lexer; 6606 tmpLexer.popFront(); 6607 if (!tmpLexer.empty && tmpLexer.front.symbol == Lexer.tokenID!q{":"}) 6608 { 6609 auto next = popToken(); 6610 NonterminalType!(21) r; 6611 Location rl; 6612 gotoParent = parse64(r, rl, currentStart, next); 6613 if (gotoParent < 0) 6614 return gotoParent; 6615 currentResult = ParseResultIn.create(21/*ExpressionName*/, r); 6616 currentResultLocation = rl; 6617 } 6618 else if (!tmpLexer.empty && (tmpLexer.front.symbol == Lexer.tokenID!"Identifier" || tmpLexer.front.symbol == Lexer.tokenID!"StringLiteral" || tmpLexer.front.symbol == Lexer.tokenID!"CharacterSetLiteral" || tmpLexer.front.symbol == Lexer.tokenID!q{";"} || tmpLexer.front.symbol == Lexer.tokenID!q{"("} || tmpLexer.front.symbol == Lexer.tokenID!q{")"} || tmpLexer.front.symbol == Lexer.tokenID!q{","} || tmpLexer.front.symbol == Lexer.tokenID!q{"..."} || tmpLexer.front.symbol == Lexer.tokenID!q{"@"} || tmpLexer.front.symbol == Lexer.tokenID!q{"{"} || tmpLexer.front.symbol == Lexer.tokenID!q{"}"} || tmpLexer.front.symbol == Lexer.tokenID!q{"?"} || tmpLexer.front.symbol == Lexer.tokenID!q{"!"} || tmpLexer.front.symbol == Lexer.tokenID!q{"<"} || tmpLexer.front.symbol == Lexer.tokenID!q{"*"} || tmpLexer.front.symbol == Lexer.tokenID!q{">>"} || tmpLexer.front.symbol == Lexer.tokenID!q{"-"} || tmpLexer.front.symbol == Lexer.tokenID!q{"|"} || tmpLexer.front.symbol == Lexer.tokenID!q{"^"} || tmpLexer.front.symbol == Lexer.tokenID!q{"+"} || tmpLexer.front.symbol == Lexer.tokenID!q{"t("})) 6619 { 6620 auto tmp = reduce82/*ExpressionName? = [virtual]*/(); 6621 currentResult = ParseResultIn.create(52/*ExpressionName?*/, tmp.val); 6622 currentResultLocation = tmp.start; 6623 gotoParent = 0; 6624 } 6625 else 6626 { 6627 lastError = new SingleParseException!Location(text("unexpected Token \"", tmpLexer.front.content, "\" \"", lexer.tokenName(tmpLexer.front.symbol), "\""), 6628 tmpLexer.front.currentLocation, tmpLexer.front.currentTokenEnd); 6629 return -1; 6630 } 6631 } 6632 else if (lexer.front.symbol == Lexer.tokenID!q{"@"}) 6633 { 6634 auto next = popToken(); 6635 NonterminalType!(10) r; 6636 Location rl; 6637 gotoParent = parse8(r, rl, currentStart, next); 6638 if (gotoParent < 0) 6639 return gotoParent; 6640 currentResult = ParseResultIn.create(10/*Annotation*/, r); 6641 currentResultLocation = rl; 6642 } 6643 else if (lexer.front.symbol == Lexer.tokenID!q{"!"}) 6644 { 6645 auto next = popToken(); 6646 NonterminalType!(13) r; 6647 Location rl; 6648 gotoParent = parse53(r, rl, currentStart, next); 6649 if (gotoParent < 0) 6650 return gotoParent; 6651 currentResult = ParseResultIn.create(13/*NegativeLookahead*/, r); 6652 currentResultLocation = rl; 6653 } 6654 else 6655 { 6656 auto tmp = reduce82/*ExpressionName? = [virtual]*/(); 6657 currentResult = ParseResultIn.create(52/*ExpressionName?*/, tmp.val); 6658 currentResultLocation = tmp.start; 6659 gotoParent = 0; 6660 } 6661 6662 while (gotoParent == 0) 6663 { 6664 if (currentResult.nonterminalID == 10/*Annotation*/) 6665 { 6666 auto next = ParseStackElem!(Location, NonterminalType!59/*$regarrayedge_1_1*/)(currentResultLocation, currentResult.get!(10/*Annotation*/)()); 6667 NonterminalType!(57) r; 6668 Location rl; 6669 gotoParent = parse81(r, rl, parseStart1, stack1, next); 6670 if (gotoParent < 0) 6671 return gotoParent; 6672 assert(gotoParent > 0); 6673 result = ThisParseResult.create(57/*$regarray_1*/, r); 6674 resultLocation = rl; 6675 return gotoParent - 1; 6676 } 6677 else if (currentResult.nonterminalID == 13/*NegativeLookahead*/) 6678 { 6679 auto next = ParseStackElem!(Location, NonterminalType!59/*$regarrayedge_1_1*/)(currentResultLocation, currentResult.get!(13/*NegativeLookahead*/)()); 6680 NonterminalType!(57) r; 6681 Location rl; 6682 gotoParent = parse81(r, rl, parseStart1, stack1, next); 6683 if (gotoParent < 0) 6684 return gotoParent; 6685 assert(gotoParent > 0); 6686 result = ThisParseResult.create(57/*$regarray_1*/, r); 6687 resultLocation = rl; 6688 return gotoParent - 1; 6689 } 6690 else if (currentResult.nonterminalID == 21/*ExpressionName*/) 6691 { 6692 auto next = ParseStackElem!(Location, NonterminalType!52/*ExpressionName?*/)(currentResultLocation, currentResult.get!(21/*ExpressionName*/)()); 6693 NonterminalType!(19) r; 6694 Location rl; 6695 gotoParent = parse66(r, rl, parseStart1, stack1, next); 6696 if (gotoParent < 0) 6697 return gotoParent; 6698 assert(gotoParent > 0); 6699 result = ThisParseResult.create(19/*AnnotatedExpression*/, r); 6700 resultLocation = rl; 6701 return gotoParent - 1; 6702 } 6703 else if (currentResult.nonterminalID == 52/*ExpressionName?*/) 6704 { 6705 auto next = ParseStackElem!(Location, NonterminalType!52/*ExpressionName?*/)(currentResultLocation, currentResult.get!(52/*ExpressionName?*/)()); 6706 NonterminalType!(19) r; 6707 Location rl; 6708 gotoParent = parse66(r, rl, parseStart1, stack1, next); 6709 if (gotoParent < 0) 6710 return gotoParent; 6711 assert(gotoParent > 0); 6712 result = ThisParseResult.create(19/*AnnotatedExpression*/, r); 6713 resultLocation = rl; 6714 return gotoParent - 1; 6715 } 6716 else 6717 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 6718 } 6719 6720 result = currentResult; 6721 resultLocation = currentResultLocation; 6722 return gotoParent - 1; 6723 } 6724 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus+ 6725 // type: unknown 6726 // Concatenation -> TokenMinus TokenMinus+.@regArray_ProductionAnnotation* {";", ")", ",", "}", "|"} 6727 // TokenMinus+ -> TokenMinus+.TokenMinus {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 6728 // Annotation -> ."@" Identifier AnnotationParams? {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 6729 // NegativeLookahead -> ."!" Symbol {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 6730 // NegativeLookahead -> ."!" "anytoken" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 6731 // TokenMinus -> .TokenMinus "-" AnnotatedExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "-", "|", "^", "t("} 6732 // TokenMinus -> .AnnotatedExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "-", "|", "^", "t("} 6733 // AnnotatedExpression -> .@regArray_ExpressionAnnotation* ExpressionName? ExpressionPrefix* PostfixExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "-", "|", "^", "t("} 6734 // @regArray_ProductionAnnotation* -> . {";", ")", ",", "}", "|"} 6735 // @regArray_ExpressionAnnotation* -> . {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 6736 // $regarray_1 -> .$regarray_1 $regarrayedge_1_1 {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 6737 // $regarray_1 -> .$regarrayedge_0_1 {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 6738 // @regArray_ProductionAnnotation* ---> $regarray_1 6739 // @regArray_ExpressionAnnotation* ---> $regarray_1 6740 // $regarrayedge_0_1 ---> Annotation 6741 // $regarrayedge_0_1 ---> NegativeLookahead 6742 private int parse109(ref CreatorInstance.NonterminalUnion!([16, 46]) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, NonterminalType!18/*TokenMinus*/) stack2, Location parseStart1, ParseStackElem!(Location, NonterminalType!46/*TokenMinus+*/) stack1) 6743 { 6744 alias ThisParseResult = typeof(result); 6745 alias ParseResultIn = CreatorInstance.NonterminalUnion!([10, 13, 16, 18, 19, 46, 48, 51, 57]); 6746 ParseResultIn currentResult; 6747 Location currentResultLocation; 6748 int gotoParent = -1; 6749 Location currentStart = lexer.front.currentLocation; 6750 if (lexer.empty) 6751 { 6752 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 6753 return -1; 6754 } 6755 else if (lexer.front.symbol == Lexer.tokenID!"Identifier" || lexer.front.symbol == Lexer.tokenID!"StringLiteral" || lexer.front.symbol == Lexer.tokenID!"CharacterSetLiteral" || lexer.front.symbol == Lexer.tokenID!q{"{"} || lexer.front.symbol == Lexer.tokenID!q{"<"} || lexer.front.symbol == Lexer.tokenID!q{"^"} || lexer.front.symbol == Lexer.tokenID!q{"t("}) 6756 { 6757 auto tmp = reduce127/*@regArray_ExpressionAnnotation* @array @directUnwrap @regArray =*/(); 6758 currentResult = ParseResultIn.create(51/*@regArray_ExpressionAnnotation**/, tmp.val); 6759 currentResultLocation = tmp.start; 6760 gotoParent = 0; 6761 } 6762 else if (lexer.front.symbol == Lexer.tokenID!q{";"} || lexer.front.symbol == Lexer.tokenID!q{")"} || lexer.front.symbol == Lexer.tokenID!q{","} || lexer.front.symbol == Lexer.tokenID!q{"}"} || lexer.front.symbol == Lexer.tokenID!q{"|"}) 6763 { 6764 auto tmp = reduce128/*@regArray_ProductionAnnotation* @array @directUnwrap @regArray =*/(); 6765 currentResult = ParseResultIn.create(48/*@regArray_ProductionAnnotation**/, tmp.val); 6766 currentResultLocation = tmp.start; 6767 gotoParent = 0; 6768 } 6769 else if (lexer.front.symbol == Lexer.tokenID!q{"@"}) 6770 { 6771 auto next = popToken(); 6772 NonterminalType!(10) r; 6773 Location rl; 6774 gotoParent = parse8(r, rl, currentStart, next); 6775 if (gotoParent < 0) 6776 return gotoParent; 6777 currentResult = ParseResultIn.create(10/*Annotation*/, r); 6778 currentResultLocation = rl; 6779 } 6780 else if (lexer.front.symbol == Lexer.tokenID!q{"!"}) 6781 { 6782 auto next = popToken(); 6783 NonterminalType!(13) r; 6784 Location rl; 6785 gotoParent = parse53(r, rl, currentStart, next); 6786 if (gotoParent < 0) 6787 return gotoParent; 6788 currentResult = ParseResultIn.create(13/*NegativeLookahead*/, r); 6789 currentResultLocation = rl; 6790 } 6791 else 6792 { 6793 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 6794 lexer.front.currentLocation, lexer.front.currentTokenEnd); 6795 return -1; 6796 } 6797 6798 while (gotoParent == 0) 6799 { 6800 if (currentResult.nonterminalID == 10/*Annotation*/) 6801 { 6802 auto next = ParseStackElem!(Location, NonterminalType!58/*$regarrayedge_0_1*/)(currentResultLocation, currentResult.get!(10/*Annotation*/)()); 6803 NonterminalType!(57) r; 6804 Location rl; 6805 gotoParent = parse43(r, rl, currentStart, next); 6806 if (gotoParent < 0) 6807 return gotoParent; 6808 currentResult = ParseResultIn.create(57/*$regarray_1*/, r); 6809 currentResultLocation = rl; 6810 } 6811 else if (currentResult.nonterminalID == 13/*NegativeLookahead*/) 6812 { 6813 auto next = ParseStackElem!(Location, NonterminalType!58/*$regarrayedge_0_1*/)(currentResultLocation, currentResult.get!(13/*NegativeLookahead*/)()); 6814 NonterminalType!(57) r; 6815 Location rl; 6816 gotoParent = parse43(r, rl, currentStart, next); 6817 if (gotoParent < 0) 6818 return gotoParent; 6819 currentResult = ParseResultIn.create(57/*$regarray_1*/, r); 6820 currentResultLocation = rl; 6821 } 6822 else if (currentResult.nonterminalID == 18/*TokenMinus*/) 6823 { 6824 auto next = ParseStackElem!(Location, NonterminalType!18/*TokenMinus*/)(currentResultLocation, currentResult.get!(18/*TokenMinus*/)()); 6825 CreatorInstance.NonterminalUnion!([18, 46]) r; 6826 Location rl; 6827 gotoParent = parse110(r, rl, parseStart1, stack1, currentStart, next); 6828 if (gotoParent < 0) 6829 return gotoParent; 6830 currentResult = r; 6831 currentResultLocation = rl; 6832 } 6833 else if (currentResult.nonterminalID == 19/*AnnotatedExpression*/) 6834 { 6835 currentResult = ParseResultIn.create(18/*TokenMinus*/, currentResult.get!(19/*AnnotatedExpression*/)); 6836 currentResultLocation = currentResultLocation; 6837 } 6838 else if (currentResult.nonterminalID == 48/*@regArray_ProductionAnnotation**/) 6839 { 6840 auto next = ParseStackElem!(Location, NonterminalType!48/*@regArray_ProductionAnnotation**/)(currentResultLocation, currentResult.get!(48/*@regArray_ProductionAnnotation**/)()); 6841 NonterminalType!(16) r; 6842 Location rl; 6843 gotoParent = parse111(r, rl, parseStart2, stack2, stack1, next); 6844 if (gotoParent < 0) 6845 return gotoParent; 6846 assert(gotoParent > 0); 6847 result = ThisParseResult.create(16/*Concatenation*/, r); 6848 resultLocation = rl; 6849 return gotoParent - 1; 6850 } 6851 else if (currentResult.nonterminalID == 51/*@regArray_ExpressionAnnotation**/) 6852 { 6853 auto next = ParseStackElem!(Location, NonterminalType!51/*@regArray_ExpressionAnnotation**/)(currentResultLocation, currentResult.get!(51/*@regArray_ExpressionAnnotation**/)()); 6854 NonterminalType!(19) r; 6855 Location rl; 6856 gotoParent = parse63(r, rl, currentStart, next); 6857 if (gotoParent < 0) 6858 return gotoParent; 6859 currentResult = ParseResultIn.create(19/*AnnotatedExpression*/, r); 6860 currentResultLocation = rl; 6861 } 6862 else if (currentResult.nonterminalID == 57/*$regarray_1*/) 6863 { 6864 auto next = ParseStackElem!(Location, CreatorInstance.NonterminalArray)(currentResultLocation, currentResult.get!(57/*$regarray_1*/)()); 6865 CreatorInstance.NonterminalUnion!([16, 19, 57]) r; 6866 Location rl; 6867 gotoParent = parse112(r, rl, parseStart2, stack2, stack1, currentStart, next); 6868 if (gotoParent < 0) 6869 return gotoParent; 6870 currentResult = r; 6871 currentResultLocation = rl; 6872 } 6873 else 6874 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 6875 } 6876 6877 result = currentResult; 6878 resultLocation = currentResultLocation; 6879 return gotoParent - 1; 6880 } 6881 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus+ TokenMinus 6882 // type: unknown 6883 // TokenMinus+ -> TokenMinus+ TokenMinus. {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 6884 // TokenMinus -> TokenMinus."-" AnnotatedExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "-", "|", "^", "t("} 6885 private int parse110(ref CreatorInstance.NonterminalUnion!([18, 46]) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, NonterminalType!46/*TokenMinus+*/) stack2, Location parseStart1, ParseStackElem!(Location, NonterminalType!18/*TokenMinus*/) stack1) 6886 { 6887 alias ThisParseResult = typeof(result); 6888 alias ParseResultIn = CreatorInstance.NonterminalUnion!([18, 46]); 6889 ParseResultIn currentResult; 6890 Location currentResultLocation; 6891 int gotoParent = -1; 6892 Location currentStart = lexer.front.currentLocation; 6893 if (lexer.empty) 6894 { 6895 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 6896 return -1; 6897 } 6898 else if (lexer.front.symbol == Lexer.tokenID!q{"-"}) 6899 { 6900 auto next = popToken(); 6901 NonterminalType!(18) r; 6902 Location rl; 6903 gotoParent = parse51(r, rl, parseStart1, stack1, next); 6904 if (gotoParent < 0) 6905 return gotoParent; 6906 assert(gotoParent > 0); 6907 result = ThisParseResult.create(18/*TokenMinus*/, r); 6908 resultLocation = rl; 6909 return gotoParent - 1; 6910 } 6911 else 6912 { 6913 auto tmp = reduce63/*TokenMinus+ @array = TokenMinus+ TokenMinus [virtual]*/(parseStart2, stack2, stack1); 6914 result = ThisParseResult.create(46/*TokenMinus+*/, tmp.val); 6915 resultLocation = tmp.start; 6916 return 1; 6917 } 6918 } 6919 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus+ @regArray_ProductionAnnotation* 6920 // type: unknown 6921 // Concatenation -> TokenMinus TokenMinus+ @regArray_ProductionAnnotation*. {";", ")", ",", "}", "|"} 6922 private int parse111(ref NonterminalType!(16) result, ref Location resultLocation, Location parseStart3, ParseStackElem!(Location, NonterminalType!18/*TokenMinus*/) stack3, ParseStackElem!(Location, NonterminalType!46/*TokenMinus+*/) stack2, ParseStackElem!(Location, NonterminalType!48/*@regArray_ProductionAnnotation**/) stack1) 6923 { 6924 alias ThisParseResult = typeof(result); 6925 Location currentStart = lexer.front.currentLocation; 6926 { 6927 auto tmp = reduce68_Concatenation/*Concatenation = TokenMinus TokenMinus+ @regArray @regArray_ProductionAnnotation**/(parseStart3, stack3, stack2, stack1); 6928 result = tmp.val; 6929 resultLocation = tmp.start; 6930 return 2; 6931 } 6932 } 6933 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus TokenMinus+ $regarray_1 6934 // type: unknown 6935 // Concatenation -> TokenMinus TokenMinus+ @regArray_ProductionAnnotation*. {";", ")", ",", "}", "|"} 6936 // AnnotatedExpression -> @regArray_ExpressionAnnotation*.ExpressionName? ExpressionPrefix* PostfixExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "-", "|", "^", "t("} 6937 // $regarray_1 -> $regarray_1.$regarrayedge_1_1 {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 6938 // Annotation -> ."@" Identifier AnnotationParams? {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 6939 // NegativeLookahead -> ."!" Symbol {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 6940 // NegativeLookahead -> ."!" "anytoken" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 6941 // ExpressionName -> .Identifier ":" {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 6942 // ExpressionName? -> . {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 6943 // ExpressionName? ---> ExpressionName 6944 // $regarrayedge_1_1 ---> Annotation 6945 // $regarrayedge_1_1 ---> NegativeLookahead 6946 private int parse112(ref CreatorInstance.NonterminalUnion!([16, 19, 57]) result, ref Location resultLocation, Location parseStart3, ParseStackElem!(Location, NonterminalType!18/*TokenMinus*/) stack3, ParseStackElem!(Location, NonterminalType!46/*TokenMinus+*/) stack2, Location parseStart1, ParseStackElem!(Location, CreatorInstance.NonterminalArray) stack1) 6947 { 6948 alias ThisParseResult = typeof(result); 6949 alias ParseResultIn = CreatorInstance.NonterminalUnion!([10, 13, 16, 19, 21, 52, 57]); 6950 ParseResultIn currentResult; 6951 Location currentResultLocation; 6952 int gotoParent = -1; 6953 Location currentStart = lexer.front.currentLocation; 6954 if (lexer.empty) 6955 { 6956 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 6957 return -1; 6958 } 6959 else if (lexer.front.symbol == Lexer.tokenID!"Identifier") 6960 { 6961 Lexer tmpLexer = *lexer; 6962 tmpLexer.popFront(); 6963 if (!tmpLexer.empty && tmpLexer.front.symbol == Lexer.tokenID!q{":"}) 6964 { 6965 auto next = popToken(); 6966 NonterminalType!(21) r; 6967 Location rl; 6968 gotoParent = parse64(r, rl, currentStart, next); 6969 if (gotoParent < 0) 6970 return gotoParent; 6971 currentResult = ParseResultIn.create(21/*ExpressionName*/, r); 6972 currentResultLocation = rl; 6973 } 6974 else if (!tmpLexer.empty && (tmpLexer.front.symbol == Lexer.tokenID!"Identifier" || tmpLexer.front.symbol == Lexer.tokenID!"StringLiteral" || tmpLexer.front.symbol == Lexer.tokenID!"CharacterSetLiteral" || tmpLexer.front.symbol == Lexer.tokenID!q{";"} || tmpLexer.front.symbol == Lexer.tokenID!q{"("} || tmpLexer.front.symbol == Lexer.tokenID!q{")"} || tmpLexer.front.symbol == Lexer.tokenID!q{","} || tmpLexer.front.symbol == Lexer.tokenID!q{"..."} || tmpLexer.front.symbol == Lexer.tokenID!q{"@"} || tmpLexer.front.symbol == Lexer.tokenID!q{"{"} || tmpLexer.front.symbol == Lexer.tokenID!q{"}"} || tmpLexer.front.symbol == Lexer.tokenID!q{"?"} || tmpLexer.front.symbol == Lexer.tokenID!q{"!"} || tmpLexer.front.symbol == Lexer.tokenID!q{"<"} || tmpLexer.front.symbol == Lexer.tokenID!q{"*"} || tmpLexer.front.symbol == Lexer.tokenID!q{">>"} || tmpLexer.front.symbol == Lexer.tokenID!q{"-"} || tmpLexer.front.symbol == Lexer.tokenID!q{"|"} || tmpLexer.front.symbol == Lexer.tokenID!q{"^"} || tmpLexer.front.symbol == Lexer.tokenID!q{"+"} || tmpLexer.front.symbol == Lexer.tokenID!q{"t("})) 6975 { 6976 auto tmp = reduce82/*ExpressionName? = [virtual]*/(); 6977 currentResult = ParseResultIn.create(52/*ExpressionName?*/, tmp.val); 6978 currentResultLocation = tmp.start; 6979 gotoParent = 0; 6980 } 6981 else 6982 { 6983 lastError = new SingleParseException!Location(text("unexpected Token \"", tmpLexer.front.content, "\" \"", lexer.tokenName(tmpLexer.front.symbol), "\""), 6984 tmpLexer.front.currentLocation, tmpLexer.front.currentTokenEnd); 6985 return -1; 6986 } 6987 } 6988 else if (lexer.front.symbol == Lexer.tokenID!"StringLiteral" || lexer.front.symbol == Lexer.tokenID!"CharacterSetLiteral" || lexer.front.symbol == Lexer.tokenID!q{"{"} || lexer.front.symbol == Lexer.tokenID!q{"<"} || lexer.front.symbol == Lexer.tokenID!q{"^"} || lexer.front.symbol == Lexer.tokenID!q{"t("}) 6989 { 6990 auto tmp = reduce82/*ExpressionName? = [virtual]*/(); 6991 currentResult = ParseResultIn.create(52/*ExpressionName?*/, tmp.val); 6992 currentResultLocation = tmp.start; 6993 gotoParent = 0; 6994 } 6995 else if (lexer.front.symbol == Lexer.tokenID!q{";"} || lexer.front.symbol == Lexer.tokenID!q{")"} || lexer.front.symbol == Lexer.tokenID!q{","} || lexer.front.symbol == Lexer.tokenID!q{"}"} || lexer.front.symbol == Lexer.tokenID!q{"|"}) 6996 { 6997 auto tmp = reduce68_Concatenation/*Concatenation = TokenMinus TokenMinus+ @regArray @regArray_ProductionAnnotation**/(parseStart3, stack3, stack2, stack1); 6998 result = ThisParseResult.create(16/*Concatenation*/, tmp.val); 6999 resultLocation = tmp.start; 7000 return 2; 7001 } 7002 else if (lexer.front.symbol == Lexer.tokenID!q{"@"}) 7003 { 7004 auto next = popToken(); 7005 NonterminalType!(10) r; 7006 Location rl; 7007 gotoParent = parse8(r, rl, currentStart, next); 7008 if (gotoParent < 0) 7009 return gotoParent; 7010 currentResult = ParseResultIn.create(10/*Annotation*/, r); 7011 currentResultLocation = rl; 7012 } 7013 else if (lexer.front.symbol == Lexer.tokenID!q{"!"}) 7014 { 7015 auto next = popToken(); 7016 NonterminalType!(13) r; 7017 Location rl; 7018 gotoParent = parse53(r, rl, currentStart, next); 7019 if (gotoParent < 0) 7020 return gotoParent; 7021 currentResult = ParseResultIn.create(13/*NegativeLookahead*/, r); 7022 currentResultLocation = rl; 7023 } 7024 else 7025 { 7026 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 7027 lexer.front.currentLocation, lexer.front.currentTokenEnd); 7028 return -1; 7029 } 7030 7031 while (gotoParent == 0) 7032 { 7033 if (currentResult.nonterminalID == 10/*Annotation*/) 7034 { 7035 auto next = ParseStackElem!(Location, NonterminalType!59/*$regarrayedge_1_1*/)(currentResultLocation, currentResult.get!(10/*Annotation*/)()); 7036 NonterminalType!(57) r; 7037 Location rl; 7038 gotoParent = parse81(r, rl, parseStart1, stack1, next); 7039 if (gotoParent < 0) 7040 return gotoParent; 7041 assert(gotoParent > 0); 7042 result = ThisParseResult.create(57/*$regarray_1*/, r); 7043 resultLocation = rl; 7044 return gotoParent - 1; 7045 } 7046 else if (currentResult.nonterminalID == 13/*NegativeLookahead*/) 7047 { 7048 auto next = ParseStackElem!(Location, NonterminalType!59/*$regarrayedge_1_1*/)(currentResultLocation, currentResult.get!(13/*NegativeLookahead*/)()); 7049 NonterminalType!(57) r; 7050 Location rl; 7051 gotoParent = parse81(r, rl, parseStart1, stack1, next); 7052 if (gotoParent < 0) 7053 return gotoParent; 7054 assert(gotoParent > 0); 7055 result = ThisParseResult.create(57/*$regarray_1*/, r); 7056 resultLocation = rl; 7057 return gotoParent - 1; 7058 } 7059 else if (currentResult.nonterminalID == 21/*ExpressionName*/) 7060 { 7061 auto next = ParseStackElem!(Location, NonterminalType!52/*ExpressionName?*/)(currentResultLocation, currentResult.get!(21/*ExpressionName*/)()); 7062 NonterminalType!(19) r; 7063 Location rl; 7064 gotoParent = parse66(r, rl, parseStart1, stack1, next); 7065 if (gotoParent < 0) 7066 return gotoParent; 7067 assert(gotoParent > 0); 7068 result = ThisParseResult.create(19/*AnnotatedExpression*/, r); 7069 resultLocation = rl; 7070 return gotoParent - 1; 7071 } 7072 else if (currentResult.nonterminalID == 52/*ExpressionName?*/) 7073 { 7074 auto next = ParseStackElem!(Location, NonterminalType!52/*ExpressionName?*/)(currentResultLocation, currentResult.get!(52/*ExpressionName?*/)()); 7075 NonterminalType!(19) r; 7076 Location rl; 7077 gotoParent = parse66(r, rl, parseStart1, stack1, next); 7078 if (gotoParent < 0) 7079 return gotoParent; 7080 assert(gotoParent > 0); 7081 result = ThisParseResult.create(19/*AnnotatedExpression*/, r); 7082 resultLocation = rl; 7083 return gotoParent - 1; 7084 } 7085 else 7086 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 7087 } 7088 7089 result = currentResult; 7090 resultLocation = currentResultLocation; 7091 return gotoParent - 1; 7092 } 7093 // path: EBNF DeclarationType Identifier MacroParametersPart Annotation* "=" Alternation "|" TokenMinus $regarray_1 7094 // type: unknown 7095 // Concatenation -> TokenMinus @regArray_ProductionAnnotation+. {";", ")", ",", "}", "|"} 7096 // AnnotatedExpression -> @regArray_ExpressionAnnotation*.ExpressionName? ExpressionPrefix* PostfixExpression {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "-", "|", "^", "t("} 7097 // $regarray_1 -> $regarray_1.$regarrayedge_1_1 {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 7098 // Annotation -> ."@" Identifier AnnotationParams? {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 7099 // NegativeLookahead -> ."!" Symbol {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 7100 // NegativeLookahead -> ."!" "anytoken" {Identifier, StringLiteral, CharacterSetLiteral, ";", ")", ",", "@", "{", "}", "!", "<", "|", "^", "t("} 7101 // ExpressionName -> .Identifier ":" {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 7102 // ExpressionName? -> . {Identifier, StringLiteral, CharacterSetLiteral, "{", "<", "^", "t("} 7103 // ExpressionName? ---> ExpressionName 7104 // $regarrayedge_1_1 ---> Annotation 7105 // $regarrayedge_1_1 ---> NegativeLookahead 7106 private int parse113(ref CreatorInstance.NonterminalUnion!([16, 19, 57]) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, NonterminalType!18/*TokenMinus*/) stack2, Location parseStart1, ParseStackElem!(Location, CreatorInstance.NonterminalArray) stack1) 7107 { 7108 alias ThisParseResult = typeof(result); 7109 alias ParseResultIn = CreatorInstance.NonterminalUnion!([10, 13, 16, 19, 21, 52, 57]); 7110 ParseResultIn currentResult; 7111 Location currentResultLocation; 7112 int gotoParent = -1; 7113 Location currentStart = lexer.front.currentLocation; 7114 if (lexer.empty) 7115 { 7116 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 7117 return -1; 7118 } 7119 else if (lexer.front.symbol == Lexer.tokenID!"Identifier") 7120 { 7121 Lexer tmpLexer = *lexer; 7122 tmpLexer.popFront(); 7123 if (!tmpLexer.empty && tmpLexer.front.symbol == Lexer.tokenID!q{":"}) 7124 { 7125 auto next = popToken(); 7126 NonterminalType!(21) r; 7127 Location rl; 7128 gotoParent = parse64(r, rl, currentStart, next); 7129 if (gotoParent < 0) 7130 return gotoParent; 7131 currentResult = ParseResultIn.create(21/*ExpressionName*/, r); 7132 currentResultLocation = rl; 7133 } 7134 else if (!tmpLexer.empty && (tmpLexer.front.symbol == Lexer.tokenID!"Identifier" || tmpLexer.front.symbol == Lexer.tokenID!"StringLiteral" || tmpLexer.front.symbol == Lexer.tokenID!"CharacterSetLiteral" || tmpLexer.front.symbol == Lexer.tokenID!q{";"} || tmpLexer.front.symbol == Lexer.tokenID!q{"("} || tmpLexer.front.symbol == Lexer.tokenID!q{")"} || tmpLexer.front.symbol == Lexer.tokenID!q{","} || tmpLexer.front.symbol == Lexer.tokenID!q{"..."} || tmpLexer.front.symbol == Lexer.tokenID!q{"@"} || tmpLexer.front.symbol == Lexer.tokenID!q{"{"} || tmpLexer.front.symbol == Lexer.tokenID!q{"}"} || tmpLexer.front.symbol == Lexer.tokenID!q{"?"} || tmpLexer.front.symbol == Lexer.tokenID!q{"!"} || tmpLexer.front.symbol == Lexer.tokenID!q{"<"} || tmpLexer.front.symbol == Lexer.tokenID!q{"*"} || tmpLexer.front.symbol == Lexer.tokenID!q{">>"} || tmpLexer.front.symbol == Lexer.tokenID!q{"-"} || tmpLexer.front.symbol == Lexer.tokenID!q{"|"} || tmpLexer.front.symbol == Lexer.tokenID!q{"^"} || tmpLexer.front.symbol == Lexer.tokenID!q{"+"} || tmpLexer.front.symbol == Lexer.tokenID!q{"t("})) 7135 { 7136 auto tmp = reduce82/*ExpressionName? = [virtual]*/(); 7137 currentResult = ParseResultIn.create(52/*ExpressionName?*/, tmp.val); 7138 currentResultLocation = tmp.start; 7139 gotoParent = 0; 7140 } 7141 else 7142 { 7143 lastError = new SingleParseException!Location(text("unexpected Token \"", tmpLexer.front.content, "\" \"", lexer.tokenName(tmpLexer.front.symbol), "\""), 7144 tmpLexer.front.currentLocation, tmpLexer.front.currentTokenEnd); 7145 return -1; 7146 } 7147 } 7148 else if (lexer.front.symbol == Lexer.tokenID!"StringLiteral" || lexer.front.symbol == Lexer.tokenID!"CharacterSetLiteral" || lexer.front.symbol == Lexer.tokenID!q{"{"} || lexer.front.symbol == Lexer.tokenID!q{"<"} || lexer.front.symbol == Lexer.tokenID!q{"^"} || lexer.front.symbol == Lexer.tokenID!q{"t("}) 7149 { 7150 auto tmp = reduce82/*ExpressionName? = [virtual]*/(); 7151 currentResult = ParseResultIn.create(52/*ExpressionName?*/, tmp.val); 7152 currentResultLocation = tmp.start; 7153 gotoParent = 0; 7154 } 7155 else if (lexer.front.symbol == Lexer.tokenID!q{";"} || lexer.front.symbol == Lexer.tokenID!q{")"} || lexer.front.symbol == Lexer.tokenID!q{","} || lexer.front.symbol == Lexer.tokenID!q{"}"} || lexer.front.symbol == Lexer.tokenID!q{"|"}) 7156 { 7157 auto tmp = reduce71_Concatenation/*Concatenation = TokenMinus @regArray @regArray_ProductionAnnotation+*/(parseStart2, stack2, stack1); 7158 result = ThisParseResult.create(16/*Concatenation*/, tmp.val); 7159 resultLocation = tmp.start; 7160 return 1; 7161 } 7162 else if (lexer.front.symbol == Lexer.tokenID!q{"@"}) 7163 { 7164 auto next = popToken(); 7165 NonterminalType!(10) r; 7166 Location rl; 7167 gotoParent = parse8(r, rl, currentStart, next); 7168 if (gotoParent < 0) 7169 return gotoParent; 7170 currentResult = ParseResultIn.create(10/*Annotation*/, r); 7171 currentResultLocation = rl; 7172 } 7173 else if (lexer.front.symbol == Lexer.tokenID!q{"!"}) 7174 { 7175 auto next = popToken(); 7176 NonterminalType!(13) r; 7177 Location rl; 7178 gotoParent = parse53(r, rl, currentStart, next); 7179 if (gotoParent < 0) 7180 return gotoParent; 7181 currentResult = ParseResultIn.create(13/*NegativeLookahead*/, r); 7182 currentResultLocation = rl; 7183 } 7184 else 7185 { 7186 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 7187 lexer.front.currentLocation, lexer.front.currentTokenEnd); 7188 return -1; 7189 } 7190 7191 while (gotoParent == 0) 7192 { 7193 if (currentResult.nonterminalID == 10/*Annotation*/) 7194 { 7195 auto next = ParseStackElem!(Location, NonterminalType!59/*$regarrayedge_1_1*/)(currentResultLocation, currentResult.get!(10/*Annotation*/)()); 7196 NonterminalType!(57) r; 7197 Location rl; 7198 gotoParent = parse81(r, rl, parseStart1, stack1, next); 7199 if (gotoParent < 0) 7200 return gotoParent; 7201 assert(gotoParent > 0); 7202 result = ThisParseResult.create(57/*$regarray_1*/, r); 7203 resultLocation = rl; 7204 return gotoParent - 1; 7205 } 7206 else if (currentResult.nonterminalID == 13/*NegativeLookahead*/) 7207 { 7208 auto next = ParseStackElem!(Location, NonterminalType!59/*$regarrayedge_1_1*/)(currentResultLocation, currentResult.get!(13/*NegativeLookahead*/)()); 7209 NonterminalType!(57) r; 7210 Location rl; 7211 gotoParent = parse81(r, rl, parseStart1, stack1, next); 7212 if (gotoParent < 0) 7213 return gotoParent; 7214 assert(gotoParent > 0); 7215 result = ThisParseResult.create(57/*$regarray_1*/, r); 7216 resultLocation = rl; 7217 return gotoParent - 1; 7218 } 7219 else if (currentResult.nonterminalID == 21/*ExpressionName*/) 7220 { 7221 auto next = ParseStackElem!(Location, NonterminalType!52/*ExpressionName?*/)(currentResultLocation, currentResult.get!(21/*ExpressionName*/)()); 7222 NonterminalType!(19) r; 7223 Location rl; 7224 gotoParent = parse66(r, rl, parseStart1, stack1, next); 7225 if (gotoParent < 0) 7226 return gotoParent; 7227 assert(gotoParent > 0); 7228 result = ThisParseResult.create(19/*AnnotatedExpression*/, r); 7229 resultLocation = rl; 7230 return gotoParent - 1; 7231 } 7232 else if (currentResult.nonterminalID == 52/*ExpressionName?*/) 7233 { 7234 auto next = ParseStackElem!(Location, NonterminalType!52/*ExpressionName?*/)(currentResultLocation, currentResult.get!(52/*ExpressionName?*/)()); 7235 NonterminalType!(19) r; 7236 Location rl; 7237 gotoParent = parse66(r, rl, parseStart1, stack1, next); 7238 if (gotoParent < 0) 7239 return gotoParent; 7240 assert(gotoParent > 0); 7241 result = ThisParseResult.create(19/*AnnotatedExpression*/, r); 7242 resultLocation = rl; 7243 return gotoParent - 1; 7244 } 7245 else 7246 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 7247 } 7248 7249 result = currentResult; 7250 resultLocation = currentResultLocation; 7251 return gotoParent - 1; 7252 } 7253 // path: EBNF DeclarationType Identifier "(" 7254 // type: unknown 7255 // MacroParametersPart -> "(".MacroParameters? ")" {";", "=", "@"} 7256 // MacroParameters -> .MacroParameters "," MacroParameter {")", ","} 7257 // MacroParameters -> .MacroParameter {")", ","} 7258 // MacroParameter -> .Identifier {")", ","} 7259 // MacroParameter -> .Identifier "..." {")", ","} 7260 // MacroParameters? -> . {")"} 7261 // MacroParameters? ---> MacroParameters 7262 private int parse114(ref NonterminalType!(4) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 7263 { 7264 alias ThisParseResult = typeof(result); 7265 alias ParseResultIn = CreatorInstance.NonterminalUnion!([4, 5, 6, 42]); 7266 ParseResultIn currentResult; 7267 Location currentResultLocation; 7268 int gotoParent = -1; 7269 Location currentStart = lexer.front.currentLocation; 7270 if (lexer.empty) 7271 { 7272 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 7273 return -1; 7274 } 7275 else if (lexer.front.symbol == Lexer.tokenID!"Identifier") 7276 { 7277 auto next = popToken(); 7278 NonterminalType!(6) r; 7279 Location rl; 7280 gotoParent = parse115(r, rl, currentStart, next); 7281 if (gotoParent < 0) 7282 return gotoParent; 7283 currentResult = ParseResultIn.create(6/*MacroParameter*/, r); 7284 currentResultLocation = rl; 7285 } 7286 else 7287 { 7288 auto tmp = reduce20/*MacroParameters? = [virtual]*/(); 7289 currentResult = ParseResultIn.create(42/*MacroParameters?*/, tmp.val); 7290 currentResultLocation = tmp.start; 7291 gotoParent = 0; 7292 } 7293 7294 while (gotoParent == 0) 7295 { 7296 if (currentResult.nonterminalID == 5/*MacroParameters*/) 7297 { 7298 auto next = ParseStackElem!(Location, CreatorInstance.NonterminalArray)(currentResultLocation, currentResult.get!(5/*MacroParameters*/)()); 7299 CreatorInstance.NonterminalUnion!([4, 5]) r; 7300 Location rl; 7301 gotoParent = parse117(r, rl, parseStart1, stack1, currentStart, next); 7302 if (gotoParent < 0) 7303 return gotoParent; 7304 currentResult = r; 7305 currentResultLocation = rl; 7306 } 7307 else if (currentResult.nonterminalID == 6/*MacroParameter*/) 7308 { 7309 auto next = ParseStackElem!(Location, NonterminalType!6/*MacroParameter*/)(currentResultLocation, currentResult.get!(6/*MacroParameter*/)()); 7310 NonterminalType!(5) r; 7311 Location rl; 7312 gotoParent = parse121(r, rl, currentStart, next); 7313 if (gotoParent < 0) 7314 return gotoParent; 7315 currentResult = ParseResultIn.create(5/*MacroParameters*/, r); 7316 currentResultLocation = rl; 7317 } 7318 else if (currentResult.nonterminalID == 42/*MacroParameters?*/) 7319 { 7320 auto next = ParseStackElem!(Location, NonterminalType!42/*MacroParameters?*/)(currentResultLocation, currentResult.get!(42/*MacroParameters?*/)()); 7321 NonterminalType!(4) r; 7322 Location rl; 7323 gotoParent = parse122(r, rl, parseStart1, stack1, next); 7324 if (gotoParent < 0) 7325 return gotoParent; 7326 assert(gotoParent > 0); 7327 result = r; 7328 resultLocation = rl; 7329 return gotoParent - 1; 7330 } 7331 else 7332 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 7333 } 7334 7335 result = currentResult.get!(4/*MacroParametersPart*/); 7336 resultLocation = currentResultLocation; 7337 return gotoParent - 1; 7338 } 7339 // path: EBNF DeclarationType Identifier "(" Identifier 7340 // type: unknown 7341 // MacroParameter -> Identifier. {")", ","} 7342 // MacroParameter -> Identifier."..." {")", ","} 7343 private int parse115(ref NonterminalType!(6) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 7344 { 7345 alias ThisParseResult = typeof(result); 7346 alias ParseResultIn = CreatorInstance.NonterminalUnion!([6]); 7347 ParseResultIn currentResult; 7348 Location currentResultLocation; 7349 int gotoParent = -1; 7350 Location currentStart = lexer.front.currentLocation; 7351 if (lexer.empty) 7352 { 7353 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 7354 return -1; 7355 } 7356 else if (lexer.front.symbol == Lexer.tokenID!q{"..."}) 7357 { 7358 auto next = popToken(); 7359 NonterminalType!(6) r; 7360 Location rl; 7361 gotoParent = parse116(r, rl, parseStart1, stack1, next); 7362 if (gotoParent < 0) 7363 return gotoParent; 7364 assert(gotoParent > 0); 7365 result = r; 7366 resultLocation = rl; 7367 return gotoParent - 1; 7368 } 7369 else 7370 { 7371 auto tmp = reduce24_MacroParameter/*MacroParameter = Identifier*/(parseStart1, stack1); 7372 result = tmp.val; 7373 resultLocation = tmp.start; 7374 return 0; 7375 } 7376 } 7377 // path: EBNF DeclarationType Identifier "(" Identifier "..." 7378 // type: unknown 7379 // MacroParameter -> Identifier "...". {")", ","} 7380 private int parse116(ref NonterminalType!(6) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, Token) stack1) 7381 { 7382 alias ThisParseResult = typeof(result); 7383 Location currentStart = lexer.front.currentLocation; 7384 { 7385 auto tmp = reduce25_MacroParameter/*MacroParameter = Identifier "..."*/(parseStart2, stack2, stack1); 7386 result = tmp.val; 7387 resultLocation = tmp.start; 7388 return 1; 7389 } 7390 } 7391 // path: EBNF DeclarationType Identifier "(" MacroParameters 7392 // type: unknown 7393 // MacroParametersPart -> "(" MacroParameters?.")" {";", "=", "@"} 7394 // MacroParameters -> MacroParameters."," MacroParameter {")", ","} 7395 private int parse117(ref CreatorInstance.NonterminalUnion!([4, 5]) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, Token) stack2, Location parseStart1, ParseStackElem!(Location, CreatorInstance.NonterminalArray) stack1) 7396 { 7397 alias ThisParseResult = typeof(result); 7398 alias ParseResultIn = CreatorInstance.NonterminalUnion!([4, 5]); 7399 ParseResultIn currentResult; 7400 Location currentResultLocation; 7401 int gotoParent = -1; 7402 Location currentStart = lexer.front.currentLocation; 7403 if (lexer.empty) 7404 { 7405 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 7406 return -1; 7407 } 7408 else if (lexer.front.symbol == Lexer.tokenID!q{")"}) 7409 { 7410 auto next = popToken(); 7411 NonterminalType!(4) r; 7412 Location rl; 7413 gotoParent = parse118(r, rl, parseStart2, stack2, stack1, next); 7414 if (gotoParent < 0) 7415 return gotoParent; 7416 assert(gotoParent > 0); 7417 result = ThisParseResult.create(4/*MacroParametersPart*/, r); 7418 resultLocation = rl; 7419 return gotoParent - 1; 7420 } 7421 else if (lexer.front.symbol == Lexer.tokenID!q{","}) 7422 { 7423 auto next = popToken(); 7424 NonterminalType!(5) r; 7425 Location rl; 7426 gotoParent = parse119(r, rl, parseStart1, stack1, next); 7427 if (gotoParent < 0) 7428 return gotoParent; 7429 assert(gotoParent > 0); 7430 result = ThisParseResult.create(5/*MacroParameters*/, r); 7431 resultLocation = rl; 7432 return gotoParent - 1; 7433 } 7434 else 7435 { 7436 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 7437 lexer.front.currentLocation, lexer.front.currentTokenEnd); 7438 return -1; 7439 } 7440 } 7441 // path: EBNF DeclarationType Identifier "(" MacroParameters ")" 7442 // type: unknown 7443 // MacroParametersPart -> "(" MacroParameters? ")". {";", "=", "@"} 7444 private int parse118(ref NonterminalType!(4) result, ref Location resultLocation, Location parseStart3, ParseStackElem!(Location, Token) stack3, ParseStackElem!(Location, NonterminalType!42/*MacroParameters?*/) stack2, ParseStackElem!(Location, Token) stack1) 7445 { 7446 alias ThisParseResult = typeof(result); 7447 Location currentStart = lexer.front.currentLocation; 7448 { 7449 auto tmp = reduce21_MacroParametersPart/*MacroParametersPart = "(" MacroParameters? ")"*/(parseStart3, stack3, stack2, stack1); 7450 result = tmp.val; 7451 resultLocation = tmp.start; 7452 return 2; 7453 } 7454 } 7455 // path: EBNF DeclarationType Identifier "(" MacroParameters "," 7456 // type: unknown 7457 // MacroParameters -> MacroParameters ",".MacroParameter {")", ","} 7458 // MacroParameter -> .Identifier {")", ","} 7459 // MacroParameter -> .Identifier "..." {")", ","} 7460 private int parse119(ref NonterminalType!(5) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, NonterminalType!5/*MacroParameters*/) stack2, ParseStackElem!(Location, Token) stack1) 7461 { 7462 alias ThisParseResult = typeof(result); 7463 alias ParseResultIn = CreatorInstance.NonterminalUnion!([5, 6]); 7464 ParseResultIn currentResult; 7465 Location currentResultLocation; 7466 int gotoParent = -1; 7467 Location currentStart = lexer.front.currentLocation; 7468 if (lexer.empty) 7469 { 7470 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 7471 return -1; 7472 } 7473 else if (lexer.front.symbol == Lexer.tokenID!"Identifier") 7474 { 7475 auto next = popToken(); 7476 NonterminalType!(6) r; 7477 Location rl; 7478 gotoParent = parse115(r, rl, currentStart, next); 7479 if (gotoParent < 0) 7480 return gotoParent; 7481 currentResult = ParseResultIn.create(6/*MacroParameter*/, r); 7482 currentResultLocation = rl; 7483 } 7484 else 7485 { 7486 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 7487 lexer.front.currentLocation, lexer.front.currentTokenEnd); 7488 return -1; 7489 } 7490 7491 while (gotoParent == 0) 7492 { 7493 if (currentResult.nonterminalID == 6/*MacroParameter*/) 7494 { 7495 auto next = ParseStackElem!(Location, NonterminalType!6/*MacroParameter*/)(currentResultLocation, currentResult.get!(6/*MacroParameter*/)()); 7496 NonterminalType!(5) r; 7497 Location rl; 7498 gotoParent = parse120(r, rl, parseStart2, stack2, stack1, next); 7499 if (gotoParent < 0) 7500 return gotoParent; 7501 assert(gotoParent > 0); 7502 result = r; 7503 resultLocation = rl; 7504 return gotoParent - 1; 7505 } 7506 else 7507 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 7508 } 7509 7510 result = currentResult.get!(5/*MacroParameters*/); 7511 resultLocation = currentResultLocation; 7512 return gotoParent - 1; 7513 } 7514 // path: EBNF DeclarationType Identifier "(" MacroParameters "," MacroParameter 7515 // type: unknown 7516 // MacroParameters -> MacroParameters "," MacroParameter. {")", ","} 7517 private int parse120(ref NonterminalType!(5) result, ref Location resultLocation, Location parseStart3, ParseStackElem!(Location, NonterminalType!5/*MacroParameters*/) stack3, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!6/*MacroParameter*/) stack1) 7518 { 7519 alias ThisParseResult = typeof(result); 7520 Location currentStart = lexer.front.currentLocation; 7521 { 7522 auto tmp = reduce23_MacroParameters/*MacroParameters @array = MacroParameters "," MacroParameter*/(parseStart3, stack3, stack2, stack1); 7523 result = tmp.val; 7524 resultLocation = tmp.start; 7525 return 2; 7526 } 7527 } 7528 // path: EBNF DeclarationType Identifier "(" MacroParameter 7529 // type: unknown 7530 // MacroParameters -> MacroParameter. {")", ","} 7531 private int parse121(ref NonterminalType!(5) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, NonterminalType!6/*MacroParameter*/) stack1) 7532 { 7533 alias ThisParseResult = typeof(result); 7534 Location currentStart = lexer.front.currentLocation; 7535 { 7536 auto tmp = reduce22_MacroParameters/*MacroParameters @array = MacroParameter*/(parseStart1, stack1); 7537 result = tmp.val; 7538 resultLocation = tmp.start; 7539 return 0; 7540 } 7541 } 7542 // path: EBNF DeclarationType Identifier "(" MacroParameters? 7543 // type: unknown 7544 // MacroParametersPart -> "(" MacroParameters?.")" {";", "=", "@"} 7545 private int parse122(ref NonterminalType!(4) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!42/*MacroParameters?*/) stack1) 7546 { 7547 alias ThisParseResult = typeof(result); 7548 alias ParseResultIn = CreatorInstance.NonterminalUnion!([4]); 7549 ParseResultIn currentResult; 7550 Location currentResultLocation; 7551 int gotoParent = -1; 7552 Location currentStart = lexer.front.currentLocation; 7553 if (lexer.empty) 7554 { 7555 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 7556 return -1; 7557 } 7558 else if (lexer.front.symbol == Lexer.tokenID!q{")"}) 7559 { 7560 auto next = popToken(); 7561 NonterminalType!(4) r; 7562 Location rl; 7563 gotoParent = parse118(r, rl, parseStart2, stack2, stack1, next); 7564 if (gotoParent < 0) 7565 return gotoParent; 7566 assert(gotoParent > 0); 7567 result = r; 7568 resultLocation = rl; 7569 return gotoParent - 1; 7570 } 7571 else 7572 { 7573 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 7574 lexer.front.currentLocation, lexer.front.currentTokenEnd); 7575 return -1; 7576 } 7577 } 7578 // path: EBNF "fragment" 7579 // type: unknown 7580 // DeclarationType -> "fragment". {Identifier} 7581 private int parse124(ref NonterminalType!(3) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 7582 { 7583 alias ThisParseResult = typeof(result); 7584 Location currentStart = lexer.front.currentLocation; 7585 { 7586 auto tmp = reduce17_DeclarationType/*DeclarationType = "fragment"*/(parseStart1, stack1); 7587 result = tmp.val; 7588 resultLocation = tmp.start; 7589 return 0; 7590 } 7591 } 7592 // path: EBNF "token" 7593 // type: unknown 7594 // DeclarationType -> "token". {Identifier} 7595 private int parse126(ref NonterminalType!(3) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 7596 { 7597 alias ThisParseResult = typeof(result); 7598 Location currentStart = lexer.front.currentLocation; 7599 { 7600 auto tmp = reduce18_DeclarationType/*DeclarationType = "token"*/(parseStart1, stack1); 7601 result = tmp.val; 7602 resultLocation = tmp.start; 7603 return 0; 7604 } 7605 } 7606 // path: EBNF "option" 7607 // type: unknown 7608 // OptionDeclaration -> "option".Identifier "=" IntegerLiteral ";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 7609 private int parse128(ref NonterminalType!(7) result, ref Location resultLocation, Location parseStart1/+, ParseStackElem!(Location, Token) stack1+/) 7610 { 7611 alias ThisParseResult = typeof(result); 7612 alias ParseResultIn = CreatorInstance.NonterminalUnion!([7]); 7613 ParseResultIn currentResult; 7614 Location currentResultLocation; 7615 int gotoParent = -1; 7616 Location currentStart = lexer.front.currentLocation; 7617 if (lexer.empty) 7618 { 7619 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 7620 return -1; 7621 } 7622 else if (lexer.front.symbol == Lexer.tokenID!"Identifier") 7623 { 7624 auto next = popToken(); 7625 NonterminalType!(7) r; 7626 Location rl; 7627 gotoParent = parse129(r, rl, parseStart1/*, stack1*/, next); 7628 if (gotoParent < 0) 7629 return gotoParent; 7630 assert(gotoParent > 0); 7631 result = r; 7632 resultLocation = rl; 7633 return gotoParent - 1; 7634 } 7635 else 7636 { 7637 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 7638 lexer.front.currentLocation, lexer.front.currentTokenEnd); 7639 return -1; 7640 } 7641 } 7642 // path: EBNF "option" Identifier 7643 // type: unknown 7644 // OptionDeclaration -> "option" Identifier."=" IntegerLiteral ";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 7645 private int parse129(ref NonterminalType!(7) result, ref Location resultLocation, Location parseStart2/+, ParseStackElem!(Location, Token) stack2+/, ParseStackElem!(Location, Token) stack1) 7646 { 7647 alias ThisParseResult = typeof(result); 7648 alias ParseResultIn = CreatorInstance.NonterminalUnion!([7]); 7649 ParseResultIn currentResult; 7650 Location currentResultLocation; 7651 int gotoParent = -1; 7652 Location currentStart = lexer.front.currentLocation; 7653 if (lexer.empty) 7654 { 7655 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 7656 return -1; 7657 } 7658 else if (lexer.front.symbol == Lexer.tokenID!q{"="}) 7659 { 7660 auto next = popToken(); 7661 NonterminalType!(7) r; 7662 Location rl; 7663 gotoParent = parse130(r, rl, parseStart2/*, stack2*/, stack1/*, next*/); 7664 if (gotoParent < 0) 7665 return gotoParent; 7666 assert(gotoParent > 0); 7667 result = r; 7668 resultLocation = rl; 7669 return gotoParent - 1; 7670 } 7671 else 7672 { 7673 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 7674 lexer.front.currentLocation, lexer.front.currentTokenEnd); 7675 return -1; 7676 } 7677 } 7678 // path: EBNF "option" Identifier "=" 7679 // type: unknown 7680 // OptionDeclaration -> "option" Identifier "=".IntegerLiteral ";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 7681 private int parse130(ref NonterminalType!(7) result, ref Location resultLocation, Location parseStart3/+, ParseStackElem!(Location, Token) stack3+/, ParseStackElem!(Location, Token) stack2/+, ParseStackElem!(Location, Token) stack1+/) 7682 { 7683 alias ThisParseResult = typeof(result); 7684 alias ParseResultIn = CreatorInstance.NonterminalUnion!([7]); 7685 ParseResultIn currentResult; 7686 Location currentResultLocation; 7687 int gotoParent = -1; 7688 Location currentStart = lexer.front.currentLocation; 7689 if (lexer.empty) 7690 { 7691 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 7692 return -1; 7693 } 7694 else if (lexer.front.symbol == Lexer.tokenID!"IntegerLiteral") 7695 { 7696 auto next = popToken(); 7697 NonterminalType!(7) r; 7698 Location rl; 7699 gotoParent = parse131(r, rl, parseStart3/*, stack3*/, stack2/*, stack1*/, next); 7700 if (gotoParent < 0) 7701 return gotoParent; 7702 assert(gotoParent > 0); 7703 result = r; 7704 resultLocation = rl; 7705 return gotoParent - 1; 7706 } 7707 else 7708 { 7709 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 7710 lexer.front.currentLocation, lexer.front.currentTokenEnd); 7711 return -1; 7712 } 7713 } 7714 // path: EBNF "option" Identifier "=" IntegerLiteral 7715 // type: unknown 7716 // OptionDeclaration -> "option" Identifier "=" IntegerLiteral.";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 7717 private int parse131(ref NonterminalType!(7) result, ref Location resultLocation, Location parseStart4/+, ParseStackElem!(Location, Token) stack4+/, ParseStackElem!(Location, Token) stack3/+, ParseStackElem!(Location, Token) stack2+/, ParseStackElem!(Location, Token) stack1) 7718 { 7719 alias ThisParseResult = typeof(result); 7720 alias ParseResultIn = CreatorInstance.NonterminalUnion!([7]); 7721 ParseResultIn currentResult; 7722 Location currentResultLocation; 7723 int gotoParent = -1; 7724 Location currentStart = lexer.front.currentLocation; 7725 if (lexer.empty) 7726 { 7727 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 7728 return -1; 7729 } 7730 else if (lexer.front.symbol == Lexer.tokenID!q{";"}) 7731 { 7732 auto next = popToken(); 7733 NonterminalType!(7) r; 7734 Location rl; 7735 gotoParent = parse132(r, rl, parseStart4/*, stack4*/, stack3/*, stack2*/, stack1/*, next*/); 7736 if (gotoParent < 0) 7737 return gotoParent; 7738 assert(gotoParent > 0); 7739 result = r; 7740 resultLocation = rl; 7741 return gotoParent - 1; 7742 } 7743 else 7744 { 7745 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 7746 lexer.front.currentLocation, lexer.front.currentTokenEnd); 7747 return -1; 7748 } 7749 } 7750 // path: EBNF "option" Identifier "=" IntegerLiteral ";" 7751 // type: unknown 7752 // OptionDeclaration -> "option" Identifier "=" IntegerLiteral ";". {$end, Identifier, "fragment", "token", "option", "import", "match"} 7753 private int parse132(ref NonterminalType!(7) result, ref Location resultLocation, Location parseStart5/+, ParseStackElem!(Location, Token) stack5+/, ParseStackElem!(Location, Token) stack4/+, ParseStackElem!(Location, Token) stack3+/, ParseStackElem!(Location, Token) stack2/+, ParseStackElem!(Location, Token) stack1+/) 7754 { 7755 alias ThisParseResult = typeof(result); 7756 Location currentStart = lexer.front.currentLocation; 7757 { 7758 auto tmp = reduce26_OptionDeclaration/*OptionDeclaration = ^"option" Identifier ^"=" IntegerLiteral ^";"*/(parseStart5, /*dropped, */stack4, /*dropped, */stack2, /*dropped*/); 7759 result = tmp.val; 7760 resultLocation = tmp.start; 7761 return 4; 7762 } 7763 } 7764 // path: EBNF "import" 7765 // type: unknown 7766 // Import -> "import".StringLiteral ";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 7767 private int parse133(ref NonterminalType!(8) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 7768 { 7769 alias ThisParseResult = typeof(result); 7770 alias ParseResultIn = CreatorInstance.NonterminalUnion!([8]); 7771 ParseResultIn currentResult; 7772 Location currentResultLocation; 7773 int gotoParent = -1; 7774 Location currentStart = lexer.front.currentLocation; 7775 if (lexer.empty) 7776 { 7777 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 7778 return -1; 7779 } 7780 else if (lexer.front.symbol == Lexer.tokenID!"StringLiteral") 7781 { 7782 auto next = popToken(); 7783 NonterminalType!(8) r; 7784 Location rl; 7785 gotoParent = parse134(r, rl, parseStart1, stack1, next); 7786 if (gotoParent < 0) 7787 return gotoParent; 7788 assert(gotoParent > 0); 7789 result = r; 7790 resultLocation = rl; 7791 return gotoParent - 1; 7792 } 7793 else 7794 { 7795 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 7796 lexer.front.currentLocation, lexer.front.currentTokenEnd); 7797 return -1; 7798 } 7799 } 7800 // path: EBNF "import" StringLiteral 7801 // type: unknown 7802 // Import -> "import" StringLiteral.";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 7803 private int parse134(ref NonterminalType!(8) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, Token) stack1) 7804 { 7805 alias ThisParseResult = typeof(result); 7806 alias ParseResultIn = CreatorInstance.NonterminalUnion!([8]); 7807 ParseResultIn currentResult; 7808 Location currentResultLocation; 7809 int gotoParent = -1; 7810 Location currentStart = lexer.front.currentLocation; 7811 if (lexer.empty) 7812 { 7813 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 7814 return -1; 7815 } 7816 else if (lexer.front.symbol == Lexer.tokenID!q{";"}) 7817 { 7818 auto next = popToken(); 7819 NonterminalType!(8) r; 7820 Location rl; 7821 gotoParent = parse135(r, rl, parseStart2, stack2, stack1, next); 7822 if (gotoParent < 0) 7823 return gotoParent; 7824 assert(gotoParent > 0); 7825 result = r; 7826 resultLocation = rl; 7827 return gotoParent - 1; 7828 } 7829 else 7830 { 7831 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 7832 lexer.front.currentLocation, lexer.front.currentTokenEnd); 7833 return -1; 7834 } 7835 } 7836 // path: EBNF "import" StringLiteral ";" 7837 // type: unknown 7838 // Import -> "import" StringLiteral ";". {$end, Identifier, "fragment", "token", "option", "import", "match"} 7839 private int parse135(ref NonterminalType!(8) result, ref Location resultLocation, Location parseStart3, ParseStackElem!(Location, Token) stack3, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, Token) stack1) 7840 { 7841 alias ThisParseResult = typeof(result); 7842 Location currentStart = lexer.front.currentLocation; 7843 { 7844 auto tmp = reduce27_Import/*Import = "import" StringLiteral ";"*/(parseStart3, stack3, stack2, stack1); 7845 result = tmp.val; 7846 resultLocation = tmp.start; 7847 return 2; 7848 } 7849 } 7850 // path: EBNF "match" 7851 // type: unknown 7852 // MatchDeclaration -> "match".Symbol Symbol ";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 7853 // Symbol -> .Name {Identifier, StringLiteral, CharacterSetLiteral} 7854 // Symbol -> .Token {Identifier, StringLiteral, CharacterSetLiteral} 7855 // Symbol -> .MacroInstance {Identifier, StringLiteral, CharacterSetLiteral} 7856 // Name -> .Identifier {Identifier, StringLiteral, CharacterSetLiteral} 7857 // Token -> .StringLiteral {Identifier, StringLiteral, CharacterSetLiteral} 7858 // Token -> .CharacterSetLiteral {Identifier, StringLiteral, CharacterSetLiteral} 7859 // MacroInstance -> .Identifier "(" ExpressionList? ")" {Identifier, StringLiteral, CharacterSetLiteral} 7860 private int parse136(ref NonterminalType!(9) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, Token) stack1) 7861 { 7862 alias ThisParseResult = typeof(result); 7863 alias ParseResultIn = CreatorInstance.NonterminalUnion!([9, 28, 29, 30, 33]); 7864 ParseResultIn currentResult; 7865 Location currentResultLocation; 7866 int gotoParent = -1; 7867 Location currentStart = lexer.front.currentLocation; 7868 if (lexer.empty) 7869 { 7870 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 7871 return -1; 7872 } 7873 else if (lexer.front.symbol == Lexer.tokenID!"Identifier") 7874 { 7875 auto next = popToken(); 7876 CreatorInstance.NonterminalUnion!([29, 33]) r; 7877 Location rl; 7878 gotoParent = parse54(r, rl, currentStart, next); 7879 if (gotoParent < 0) 7880 return gotoParent; 7881 currentResult = r; 7882 currentResultLocation = rl; 7883 } 7884 else if (lexer.front.symbol == Lexer.tokenID!"StringLiteral") 7885 { 7886 auto next = popToken(); 7887 NonterminalType!(30) r; 7888 Location rl; 7889 gotoParent = parse75(r, rl, currentStart, next); 7890 if (gotoParent < 0) 7891 return gotoParent; 7892 currentResult = ParseResultIn.create(30/*Token*/, r); 7893 currentResultLocation = rl; 7894 } 7895 else if (lexer.front.symbol == Lexer.tokenID!"CharacterSetLiteral") 7896 { 7897 auto next = popToken(); 7898 NonterminalType!(30) r; 7899 Location rl; 7900 gotoParent = parse76(r, rl, currentStart, next); 7901 if (gotoParent < 0) 7902 return gotoParent; 7903 currentResult = ParseResultIn.create(30/*Token*/, r); 7904 currentResultLocation = rl; 7905 } 7906 else 7907 { 7908 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 7909 lexer.front.currentLocation, lexer.front.currentTokenEnd); 7910 return -1; 7911 } 7912 7913 while (gotoParent == 0) 7914 { 7915 if (currentResult.nonterminalID == 28/*Symbol*/) 7916 { 7917 auto next = ParseStackElem!(Location, NonterminalType!28/*Symbol*/)(currentResultLocation, currentResult.get!(28/*Symbol*/)()); 7918 NonterminalType!(9) r; 7919 Location rl; 7920 gotoParent = parse137(r, rl, parseStart1, stack1, next); 7921 if (gotoParent < 0) 7922 return gotoParent; 7923 assert(gotoParent > 0); 7924 result = r; 7925 resultLocation = rl; 7926 return gotoParent - 1; 7927 } 7928 else if (currentResult.nonterminalID == 29/*Name*/) 7929 { 7930 currentResult = ParseResultIn.create(28/*Symbol*/, currentResult.get!(29/*Name*/)); 7931 currentResultLocation = currentResultLocation; 7932 } 7933 else if (currentResult.nonterminalID == 30/*Token*/) 7934 { 7935 currentResult = ParseResultIn.create(28/*Symbol*/, currentResult.get!(30/*Token*/)); 7936 currentResultLocation = currentResultLocation; 7937 } 7938 else if (currentResult.nonterminalID == 33/*MacroInstance*/) 7939 { 7940 currentResult = ParseResultIn.create(28/*Symbol*/, currentResult.get!(33/*MacroInstance*/)); 7941 currentResultLocation = currentResultLocation; 7942 } 7943 else 7944 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 7945 } 7946 7947 result = currentResult.get!(9/*MatchDeclaration*/); 7948 resultLocation = currentResultLocation; 7949 return gotoParent - 1; 7950 } 7951 // path: EBNF "match" Symbol 7952 // type: unknown 7953 // MatchDeclaration -> "match" Symbol.Symbol ";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 7954 // Symbol -> .Name {";"} 7955 // Symbol -> .Token {";"} 7956 // Symbol -> .MacroInstance {";"} 7957 // Name -> .Identifier {";"} 7958 // Token -> .StringLiteral {";"} 7959 // Token -> .CharacterSetLiteral {";"} 7960 // MacroInstance -> .Identifier "(" ExpressionList? ")" {";"} 7961 private int parse137(ref NonterminalType!(9) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, Token) stack2, ParseStackElem!(Location, NonterminalType!28/*Symbol*/) stack1) 7962 { 7963 alias ThisParseResult = typeof(result); 7964 alias ParseResultIn = CreatorInstance.NonterminalUnion!([9, 28, 29, 30, 33]); 7965 ParseResultIn currentResult; 7966 Location currentResultLocation; 7967 int gotoParent = -1; 7968 Location currentStart = lexer.front.currentLocation; 7969 if (lexer.empty) 7970 { 7971 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 7972 return -1; 7973 } 7974 else if (lexer.front.symbol == Lexer.tokenID!"Identifier") 7975 { 7976 auto next = popToken(); 7977 CreatorInstance.NonterminalUnion!([29, 33]) r; 7978 Location rl; 7979 gotoParent = parse54(r, rl, currentStart, next); 7980 if (gotoParent < 0) 7981 return gotoParent; 7982 currentResult = r; 7983 currentResultLocation = rl; 7984 } 7985 else if (lexer.front.symbol == Lexer.tokenID!"StringLiteral") 7986 { 7987 auto next = popToken(); 7988 NonterminalType!(30) r; 7989 Location rl; 7990 gotoParent = parse75(r, rl, currentStart, next); 7991 if (gotoParent < 0) 7992 return gotoParent; 7993 currentResult = ParseResultIn.create(30/*Token*/, r); 7994 currentResultLocation = rl; 7995 } 7996 else if (lexer.front.symbol == Lexer.tokenID!"CharacterSetLiteral") 7997 { 7998 auto next = popToken(); 7999 NonterminalType!(30) r; 8000 Location rl; 8001 gotoParent = parse76(r, rl, currentStart, next); 8002 if (gotoParent < 0) 8003 return gotoParent; 8004 currentResult = ParseResultIn.create(30/*Token*/, r); 8005 currentResultLocation = rl; 8006 } 8007 else 8008 { 8009 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 8010 lexer.front.currentLocation, lexer.front.currentTokenEnd); 8011 return -1; 8012 } 8013 8014 while (gotoParent == 0) 8015 { 8016 if (currentResult.nonterminalID == 28/*Symbol*/) 8017 { 8018 auto next = ParseStackElem!(Location, NonterminalType!28/*Symbol*/)(currentResultLocation, currentResult.get!(28/*Symbol*/)()); 8019 NonterminalType!(9) r; 8020 Location rl; 8021 gotoParent = parse138(r, rl, parseStart2, stack2, stack1, next); 8022 if (gotoParent < 0) 8023 return gotoParent; 8024 assert(gotoParent > 0); 8025 result = r; 8026 resultLocation = rl; 8027 return gotoParent - 1; 8028 } 8029 else if (currentResult.nonterminalID == 29/*Name*/) 8030 { 8031 currentResult = ParseResultIn.create(28/*Symbol*/, currentResult.get!(29/*Name*/)); 8032 currentResultLocation = currentResultLocation; 8033 } 8034 else if (currentResult.nonterminalID == 30/*Token*/) 8035 { 8036 currentResult = ParseResultIn.create(28/*Symbol*/, currentResult.get!(30/*Token*/)); 8037 currentResultLocation = currentResultLocation; 8038 } 8039 else if (currentResult.nonterminalID == 33/*MacroInstance*/) 8040 { 8041 currentResult = ParseResultIn.create(28/*Symbol*/, currentResult.get!(33/*MacroInstance*/)); 8042 currentResultLocation = currentResultLocation; 8043 } 8044 else 8045 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 8046 } 8047 8048 result = currentResult.get!(9/*MatchDeclaration*/); 8049 resultLocation = currentResultLocation; 8050 return gotoParent - 1; 8051 } 8052 // path: EBNF "match" Symbol Symbol 8053 // type: unknown 8054 // MatchDeclaration -> "match" Symbol Symbol.";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 8055 private int parse138(ref NonterminalType!(9) result, ref Location resultLocation, Location parseStart3, ParseStackElem!(Location, Token) stack3, ParseStackElem!(Location, NonterminalType!28/*Symbol*/) stack2, ParseStackElem!(Location, NonterminalType!28/*Symbol*/) stack1) 8056 { 8057 alias ThisParseResult = typeof(result); 8058 alias ParseResultIn = CreatorInstance.NonterminalUnion!([9]); 8059 ParseResultIn currentResult; 8060 Location currentResultLocation; 8061 int gotoParent = -1; 8062 Location currentStart = lexer.front.currentLocation; 8063 if (lexer.empty) 8064 { 8065 lastError = new SingleParseException!Location("EOF", lexer.front.currentLocation, lexer.front.currentTokenEnd); 8066 return -1; 8067 } 8068 else if (lexer.front.symbol == Lexer.tokenID!q{";"}) 8069 { 8070 auto next = popToken(); 8071 NonterminalType!(9) r; 8072 Location rl; 8073 gotoParent = parse139(r, rl, parseStart3, stack3, stack2, stack1, next); 8074 if (gotoParent < 0) 8075 return gotoParent; 8076 assert(gotoParent > 0); 8077 result = r; 8078 resultLocation = rl; 8079 return gotoParent - 1; 8080 } 8081 else 8082 { 8083 lastError = new SingleParseException!Location(text("unexpected Token \"", lexer.front.content, "\" \"", lexer.tokenName(lexer.front.symbol), "\""), 8084 lexer.front.currentLocation, lexer.front.currentTokenEnd); 8085 return -1; 8086 } 8087 } 8088 // path: EBNF "match" Symbol Symbol ";" 8089 // type: unknown 8090 // MatchDeclaration -> "match" Symbol Symbol ";". {$end, Identifier, "fragment", "token", "option", "import", "match"} 8091 private int parse139(ref NonterminalType!(9) result, ref Location resultLocation, Location parseStart4, ParseStackElem!(Location, Token) stack4, ParseStackElem!(Location, NonterminalType!28/*Symbol*/) stack3, ParseStackElem!(Location, NonterminalType!28/*Symbol*/) stack2, ParseStackElem!(Location, Token) stack1) 8092 { 8093 alias ThisParseResult = typeof(result); 8094 Location currentStart = lexer.front.currentLocation; 8095 { 8096 auto tmp = reduce28_MatchDeclaration/*MatchDeclaration = "match" Symbol Symbol ";"*/(parseStart4, stack4, stack3, stack2, stack1); 8097 result = tmp.val; 8098 resultLocation = tmp.start; 8099 return 3; 8100 } 8101 } 8102 // path: EBNF Declaration+ 8103 // type: unknown 8104 // EBNF -> Declaration+. {$end} 8105 // Declaration+ -> Declaration+.Declaration {$end, Identifier, "fragment", "token", "option", "import", "match"} 8106 // Declaration -> .SymbolDeclaration {$end, Identifier, "fragment", "token", "option", "import", "match"} 8107 // Declaration -> .OptionDeclaration {$end, Identifier, "fragment", "token", "option", "import", "match"} 8108 // Declaration -> .Import {$end, Identifier, "fragment", "token", "option", "import", "match"} 8109 // Declaration -> .MatchDeclaration {$end, Identifier, "fragment", "token", "option", "import", "match"} 8110 // SymbolDeclaration -> .DeclarationType? Identifier MacroParametersPart? Annotation* ";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 8111 // SymbolDeclaration -> .DeclarationType? Identifier MacroParametersPart? Annotation* "=" Expression ";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 8112 // DeclarationType -> ."fragment" {Identifier} 8113 // DeclarationType -> ."token" {Identifier} 8114 // OptionDeclaration -> ."option" Identifier "=" IntegerLiteral ";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 8115 // Import -> ."import" StringLiteral ";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 8116 // MatchDeclaration -> ."match" Symbol Symbol ";" {$end, Identifier, "fragment", "token", "option", "import", "match"} 8117 // DeclarationType? -> . {Identifier} 8118 // DeclarationType? ---> DeclarationType 8119 private int parse140(ref CreatorInstance.NonterminalUnion!([0, 37]) result, ref Location resultLocation, Location parseStart1, ParseStackElem!(Location, NonterminalType!37/*Declaration+*/) stack1) 8120 { 8121 alias ThisParseResult = typeof(result); 8122 alias ParseResultIn = CreatorInstance.NonterminalUnion!([0, 1, 2, 3, 7, 8, 9, 37, 38]); 8123 ParseResultIn currentResult; 8124 Location currentResultLocation; 8125 int gotoParent = -1; 8126 Location currentStart = lexer.front.currentLocation; 8127 if (lexer.empty) 8128 { 8129 auto tmp = reduce2_EBNF/*EBNF = Declaration+*/(parseStart1, stack1); 8130 result = ThisParseResult.create(0/*EBNF*/, tmp.val); 8131 resultLocation = tmp.start; 8132 return 0; 8133 } 8134 else if (lexer.front.symbol == Lexer.tokenID!"Identifier") 8135 { 8136 auto tmp = reduce8/*DeclarationType? = [virtual]*/(); 8137 currentResult = ParseResultIn.create(38/*DeclarationType?*/, tmp.val); 8138 currentResultLocation = tmp.start; 8139 gotoParent = 0; 8140 } 8141 else if (lexer.front.symbol == Lexer.tokenID!q{"fragment"}) 8142 { 8143 auto next = popToken(); 8144 NonterminalType!(3) r; 8145 Location rl; 8146 gotoParent = parse124(r, rl, currentStart, next); 8147 if (gotoParent < 0) 8148 return gotoParent; 8149 currentResult = ParseResultIn.create(3/*DeclarationType*/, r); 8150 currentResultLocation = rl; 8151 } 8152 else if (lexer.front.symbol == Lexer.tokenID!q{"token"}) 8153 { 8154 auto next = popToken(); 8155 NonterminalType!(3) r; 8156 Location rl; 8157 gotoParent = parse126(r, rl, currentStart, next); 8158 if (gotoParent < 0) 8159 return gotoParent; 8160 currentResult = ParseResultIn.create(3/*DeclarationType*/, r); 8161 currentResultLocation = rl; 8162 } 8163 else if (lexer.front.symbol == Lexer.tokenID!q{"option"}) 8164 { 8165 auto next = popToken(); 8166 NonterminalType!(7) r; 8167 Location rl; 8168 gotoParent = parse128(r, rl, currentStart/*, next*/); 8169 if (gotoParent < 0) 8170 return gotoParent; 8171 currentResult = ParseResultIn.create(7/*OptionDeclaration*/, r); 8172 currentResultLocation = rl; 8173 } 8174 else if (lexer.front.symbol == Lexer.tokenID!q{"import"}) 8175 { 8176 auto next = popToken(); 8177 NonterminalType!(8) r; 8178 Location rl; 8179 gotoParent = parse133(r, rl, currentStart, next); 8180 if (gotoParent < 0) 8181 return gotoParent; 8182 currentResult = ParseResultIn.create(8/*Import*/, r); 8183 currentResultLocation = rl; 8184 } 8185 else if (lexer.front.symbol == Lexer.tokenID!q{"match"}) 8186 { 8187 auto next = popToken(); 8188 NonterminalType!(9) r; 8189 Location rl; 8190 gotoParent = parse136(r, rl, currentStart, next); 8191 if (gotoParent < 0) 8192 return gotoParent; 8193 currentResult = ParseResultIn.create(9/*MatchDeclaration*/, r); 8194 currentResultLocation = rl; 8195 } 8196 else 8197 { 8198 auto tmp = reduce2_EBNF/*EBNF = Declaration+*/(parseStart1, stack1); 8199 result = ThisParseResult.create(0/*EBNF*/, tmp.val); 8200 resultLocation = tmp.start; 8201 return 0; 8202 } 8203 8204 while (gotoParent == 0) 8205 { 8206 if (currentResult.nonterminalID == 1/*Declaration*/) 8207 { 8208 auto next = ParseStackElem!(Location, NonterminalType!1/*Declaration*/)(currentResultLocation, currentResult.get!(1/*Declaration*/)()); 8209 NonterminalType!(37) r; 8210 Location rl; 8211 gotoParent = parse141(r, rl, parseStart1, stack1, next); 8212 if (gotoParent < 0) 8213 return gotoParent; 8214 assert(gotoParent > 0); 8215 result = ThisParseResult.create(37/*Declaration+*/, r); 8216 resultLocation = rl; 8217 return gotoParent - 1; 8218 } 8219 else if (currentResult.nonterminalID == 2/*SymbolDeclaration*/) 8220 { 8221 currentResult = ParseResultIn.create(1/*Declaration*/, currentResult.get!(2/*SymbolDeclaration*/)); 8222 currentResultLocation = currentResultLocation; 8223 } 8224 else if (currentResult.nonterminalID == 3/*DeclarationType*/) 8225 { 8226 auto next = ParseStackElem!(Location, NonterminalType!38/*DeclarationType?*/)(currentResultLocation, currentResult.get!(3/*DeclarationType*/)()); 8227 NonterminalType!(2) r; 8228 Location rl; 8229 gotoParent = parse4(r, rl, currentStart, next); 8230 if (gotoParent < 0) 8231 return gotoParent; 8232 currentResult = ParseResultIn.create(2/*SymbolDeclaration*/, r); 8233 currentResultLocation = rl; 8234 } 8235 else if (currentResult.nonterminalID == 7/*OptionDeclaration*/) 8236 { 8237 currentResult = ParseResultIn.create(1/*Declaration*/, currentResult.get!(7/*OptionDeclaration*/)); 8238 currentResultLocation = currentResultLocation; 8239 } 8240 else if (currentResult.nonterminalID == 8/*Import*/) 8241 { 8242 currentResult = ParseResultIn.create(1/*Declaration*/, currentResult.get!(8/*Import*/)); 8243 currentResultLocation = currentResultLocation; 8244 } 8245 else if (currentResult.nonterminalID == 9/*MatchDeclaration*/) 8246 { 8247 currentResult = ParseResultIn.create(1/*Declaration*/, currentResult.get!(9/*MatchDeclaration*/)); 8248 currentResultLocation = currentResultLocation; 8249 } 8250 else if (currentResult.nonterminalID == 38/*DeclarationType?*/) 8251 { 8252 auto next = ParseStackElem!(Location, NonterminalType!38/*DeclarationType?*/)(currentResultLocation, currentResult.get!(38/*DeclarationType?*/)()); 8253 NonterminalType!(2) r; 8254 Location rl; 8255 gotoParent = parse4(r, rl, currentStart, next); 8256 if (gotoParent < 0) 8257 return gotoParent; 8258 currentResult = ParseResultIn.create(2/*SymbolDeclaration*/, r); 8259 currentResultLocation = rl; 8260 } 8261 else 8262 assert(0, text("no jump ", currentResult.nonterminalID, " ", allNonterminals[currentResult.nonterminalID].name)); 8263 } 8264 8265 result = currentResult; 8266 resultLocation = currentResultLocation; 8267 return gotoParent - 1; 8268 } 8269 // path: EBNF Declaration+ Declaration 8270 // type: unknown 8271 // Declaration+ -> Declaration+ Declaration. {$end, Identifier, "fragment", "token", "option", "import", "match"} 8272 private int parse141(ref NonterminalType!(37) result, ref Location resultLocation, Location parseStart2, ParseStackElem!(Location, NonterminalType!37/*Declaration+*/) stack2, ParseStackElem!(Location, NonterminalType!1/*Declaration*/) stack1) 8273 { 8274 alias ThisParseResult = typeof(result); 8275 Location currentStart = lexer.front.currentLocation; 8276 { 8277 auto tmp = reduce1/*Declaration+ @array = Declaration+ Declaration [virtual]*/(parseStart2, stack2, stack1); 8278 result = tmp.val; 8279 resultLocation = tmp.start; 8280 return 1; 8281 } 8282 } 8283 } 8284 8285 immutable allTokens = [ 8286 /* 0: */ immutable(Token)("$end", []), 8287 /* 1: */ immutable(Token)("Identifier", ["lowPrio"]), 8288 /* 2: */ immutable(Token)("StringLiteral", []), 8289 /* 3: */ immutable(Token)("CharacterSetLiteral", []), 8290 /* 4: */ immutable(Token)("IntegerLiteral", []), 8291 /* 5: */ immutable(Token)(q{";"}, []), 8292 /* 6: */ immutable(Token)(q{"="}, []), 8293 /* 7: */ immutable(Token)(q{"fragment"}, []), 8294 /* 8: */ immutable(Token)(q{"token"}, []), 8295 /* 9: */ immutable(Token)(q{"("}, []), 8296 /* 10: */ immutable(Token)(q{")"}, []), 8297 /* 11: */ immutable(Token)(q{","}, []), 8298 /* 12: */ immutable(Token)(q{"..."}, []), 8299 /* 13: */ immutable(Token)(q{"option"}, []), 8300 /* 14: */ immutable(Token)(q{"import"}, []), 8301 /* 15: */ immutable(Token)(q{"match"}, []), 8302 /* 16: */ immutable(Token)(q{"@"}, []), 8303 /* 17: */ immutable(Token)(q{":"}, []), 8304 /* 18: */ immutable(Token)(q{"{"}, []), 8305 /* 19: */ immutable(Token)(q{"}"}, []), 8306 /* 20: */ immutable(Token)(q{"?"}, []), 8307 /* 21: */ immutable(Token)(q{"!"}, []), 8308 /* 22: */ immutable(Token)(q{"<"}, []), 8309 /* 23: */ immutable(Token)(q{">"}, []), 8310 /* 24: */ immutable(Token)(q{"*"}, []), 8311 /* 25: */ immutable(Token)(q{">>"}, []), 8312 /* 26: */ immutable(Token)(q{"<<"}, []), 8313 /* 27: */ immutable(Token)(q{"-"}, []), 8314 /* 28: */ immutable(Token)(q{"anytoken"}, []), 8315 /* 29: */ immutable(Token)(q{"|"}, []), 8316 /* 30: */ immutable(Token)(q{"^"}, []), 8317 /* 31: */ immutable(Token)(q{"+"}, []), 8318 /* 32: */ immutable(Token)(q{"t("}, []), 8319 ]; 8320 8321 immutable allNonterminals = [ 8322 /* 0: */ immutable(Nonterminal)("EBNF", NonterminalFlags.nonterminal, [], [0]), 8323 /* 1: */ immutable(Nonterminal)("Declaration", NonterminalFlags.nonterminal, [], [2, 7, 8, 9]), 8324 /* 2: */ immutable(Nonterminal)("SymbolDeclaration", NonterminalFlags.nonterminal, [], [2]), 8325 /* 3: */ immutable(Nonterminal)("DeclarationType", NonterminalFlags.nonterminal, [], [3]), 8326 /* 4: */ immutable(Nonterminal)("MacroParametersPart", NonterminalFlags.nonterminal, [], [4]), 8327 /* 5: */ immutable(Nonterminal)("MacroParameters", NonterminalFlags.array | NonterminalFlags.arrayOfNonterminal | NonterminalFlags.arrayOfString, ["array"], [6]), 8328 /* 6: */ immutable(Nonterminal)("MacroParameter", NonterminalFlags.nonterminal, [], [6]), 8329 /* 7: */ immutable(Nonterminal)("OptionDeclaration", NonterminalFlags.nonterminal, [], [7]), 8330 /* 8: */ immutable(Nonterminal)("Import", NonterminalFlags.nonterminal, [], [8]), 8331 /* 9: */ immutable(Nonterminal)("MatchDeclaration", NonterminalFlags.nonterminal, [], [9]), 8332 /* 10: */ immutable(Nonterminal)("Annotation", NonterminalFlags.nonterminal, [], [10]), 8333 /* 11: */ immutable(Nonterminal)("AnnotationParams", NonterminalFlags.nonterminal, [], [11]), 8334 /* 12: */ immutable(Nonterminal)("AnnotationParamsPart", NonterminalFlags.nonterminal, [], [12]), 8335 /* 13: */ immutable(Nonterminal)("NegativeLookahead", NonterminalFlags.nonterminal, [], [13]), 8336 /* 14: */ immutable(Nonterminal)("Expression", NonterminalFlags.nonterminal, [], [15, 16, 18, 19]), 8337 /* 15: */ immutable(Nonterminal)("Alternation", NonterminalFlags.nonterminal, [], [15, 16, 18, 19]), 8338 /* 16: */ immutable(Nonterminal)("Concatenation", NonterminalFlags.nonterminal, [], [16, 18, 19]), 8339 /* 17: */ immutable(Nonterminal)("ProductionAnnotation", NonterminalFlags.nonterminal, ["directUnwrap"], [10, 13]), 8340 /* 18: */ immutable(Nonterminal)("TokenMinus", NonterminalFlags.nonterminal, [], [18, 19]), 8341 /* 19: */ immutable(Nonterminal)("AnnotatedExpression", NonterminalFlags.nonterminal, [], [19]), 8342 /* 20: */ immutable(Nonterminal)("ExpressionAnnotation", NonterminalFlags.nonterminal, ["directUnwrap"], [10, 13]), 8343 /* 21: */ immutable(Nonterminal)("ExpressionName", NonterminalFlags.nonterminal, [], [21]), 8344 /* 22: */ immutable(Nonterminal)("ExpressionPrefix", NonterminalFlags.nonterminal, [], [22]), 8345 /* 23: */ immutable(Nonterminal)("PostfixExpression", NonterminalFlags.nonterminal, [], [24, 25, 26, 29, 30, 31, 32, 33, 34, 36]), 8346 /* 24: */ immutable(Nonterminal)("Optional", NonterminalFlags.nonterminal, [], [24]), 8347 /* 25: */ immutable(Nonterminal)("Repetition", NonterminalFlags.nonterminal, [], [25]), 8348 /* 26: */ immutable(Nonterminal)("RepetitionPlus", NonterminalFlags.nonterminal, [], [26]), 8349 /* 27: */ immutable(Nonterminal)("AtomExpression", NonterminalFlags.nonterminal, [], [29, 30, 31, 32, 33, 34, 36]), 8350 /* 28: */ immutable(Nonterminal)("Symbol", NonterminalFlags.nonterminal, [], [29, 30, 33]), 8351 /* 29: */ immutable(Nonterminal)("Name", NonterminalFlags.nonterminal, [], [29]), 8352 /* 30: */ immutable(Nonterminal)("Token", NonterminalFlags.nonterminal, [], [30]), 8353 /* 31: */ immutable(Nonterminal)("UnpackVariadicList", NonterminalFlags.nonterminal, [], [31]), 8354 /* 32: */ immutable(Nonterminal)("SubToken", NonterminalFlags.nonterminal, [], [32]), 8355 /* 33: */ immutable(Nonterminal)("MacroInstance", NonterminalFlags.nonterminal, [], [33]), 8356 /* 34: */ immutable(Nonterminal)("ParenExpression", NonterminalFlags.nonterminal, [], [34]), 8357 /* 35: */ immutable(Nonterminal)("ExpressionList", NonterminalFlags.array | NonterminalFlags.arrayOfNonterminal | NonterminalFlags.arrayOfString, ["array"], [15, 16, 18, 19]), 8358 /* 36: */ immutable(Nonterminal)("Tuple", NonterminalFlags.nonterminal, [], [36]), 8359 /* 37: */ immutable(Nonterminal)("Declaration+", NonterminalFlags.array | NonterminalFlags.arrayOfNonterminal, ["array"], [2, 7, 8, 9]), 8360 /* 38: */ immutable(Nonterminal)("DeclarationType?", NonterminalFlags.empty | NonterminalFlags.nonterminal, [], [3]), 8361 /* 39: */ immutable(Nonterminal)("MacroParametersPart?", NonterminalFlags.empty | NonterminalFlags.nonterminal, [], [4]), 8362 /* 40: */ immutable(Nonterminal)("Annotation+", NonterminalFlags.array | NonterminalFlags.arrayOfNonterminal, ["array"], [10]), 8363 /* 41: */ immutable(Nonterminal)("Annotation*", NonterminalFlags.empty | NonterminalFlags.array | NonterminalFlags.arrayOfNonterminal, ["array"], [10]), 8364 /* 42: */ immutable(Nonterminal)("MacroParameters?", NonterminalFlags.empty | NonterminalFlags.array | NonterminalFlags.arrayOfNonterminal | NonterminalFlags.arrayOfString, [], [6]), 8365 /* 43: */ immutable(Nonterminal)("AnnotationParams?", NonterminalFlags.empty | NonterminalFlags.nonterminal, [], [11]), 8366 /* 44: */ immutable(Nonterminal)("AnnotationParamsPart+", NonterminalFlags.array | NonterminalFlags.arrayOfNonterminal, ["array"], [12]), 8367 /* 45: */ immutable(Nonterminal)("AnnotationParamsPart*", NonterminalFlags.empty | NonterminalFlags.array | NonterminalFlags.arrayOfNonterminal, ["array"], [12]), 8368 /* 46: */ immutable(Nonterminal)("TokenMinus+", NonterminalFlags.array | NonterminalFlags.arrayOfNonterminal, ["array"], [18, 19]), 8369 /* 47: */ immutable(Nonterminal)("ProductionAnnotation+", NonterminalFlags.array | NonterminalFlags.arrayOfNonterminal, ["array"], [10, 13]), 8370 /* 48: */ immutable(Nonterminal)("@regArray_ProductionAnnotation*", NonterminalFlags.empty | NonterminalFlags.array | NonterminalFlags.arrayOfNonterminal, ["array", "directUnwrap", "regArray"], [10, 13]), 8371 /* 49: */ immutable(Nonterminal)("@regArray_ProductionAnnotation+", NonterminalFlags.array | NonterminalFlags.arrayOfNonterminal, ["array", "directUnwrap", "regArray"], [10, 13]), 8372 /* 50: */ immutable(Nonterminal)("ExpressionAnnotation+", NonterminalFlags.array | NonterminalFlags.arrayOfNonterminal, ["array"], [10, 13]), 8373 /* 51: */ immutable(Nonterminal)("@regArray_ExpressionAnnotation*", NonterminalFlags.empty | NonterminalFlags.array | NonterminalFlags.arrayOfNonterminal, ["array", "directUnwrap", "regArray"], [10, 13]), 8374 /* 52: */ immutable(Nonterminal)("ExpressionName?", NonterminalFlags.empty | NonterminalFlags.nonterminal, [], [21]), 8375 /* 53: */ immutable(Nonterminal)("ExpressionPrefix+", NonterminalFlags.array | NonterminalFlags.arrayOfNonterminal, ["array"], [22]), 8376 /* 54: */ immutable(Nonterminal)("ExpressionPrefix*", NonterminalFlags.empty | NonterminalFlags.array | NonterminalFlags.arrayOfNonterminal, ["array"], [22]), 8377 /* 55: */ immutable(Nonterminal)("ExpressionList?", NonterminalFlags.empty | NonterminalFlags.array | NonterminalFlags.arrayOfNonterminal | NonterminalFlags.arrayOfString, [], [15, 16, 18, 19]), 8378 /* 56: */ immutable(Nonterminal)("$regarray_0", NonterminalFlags.none, ["array", "directUnwrap"], []), 8379 /* 57: */ immutable(Nonterminal)("$regarray_1", NonterminalFlags.array | NonterminalFlags.arrayOfNonterminal, ["array", "directUnwrap"], [10, 13]), 8380 /* 58: */ immutable(Nonterminal)("$regarrayedge_0_1", NonterminalFlags.nonterminal, ["directUnwrap"], [10, 13]), 8381 /* 59: */ immutable(Nonterminal)("$regarrayedge_1_1", NonterminalFlags.nonterminal, ["directUnwrap"], [10, 13]), 8382 ]; 8383 8384 immutable allProductions = [ 8385 // 0: Declaration+ @array = Declaration [virtual] 8386 immutable(Production)(immutable(NonterminalID)(37), [ 8387 immutable(SymbolInstance)(immutable(Symbol)(false, 1), "", "", false, false, [], []) 8388 ], [], [], false, true), 8389 // 1: Declaration+ @array = Declaration+ Declaration [virtual] 8390 immutable(Production)(immutable(NonterminalID)(37), [ 8391 immutable(SymbolInstance)(immutable(Symbol)(false, 37), "", "", false, false, [], []), 8392 immutable(SymbolInstance)(immutable(Symbol)(false, 1), "", "", false, false, [], []) 8393 ], [], [], false, true), 8394 // 2: EBNF = Declaration+ 8395 immutable(Production)(immutable(NonterminalID)(0), [ 8396 immutable(SymbolInstance)(immutable(Symbol)(false, 37), "", "", false, false, [], []) 8397 ], [], [], false, false), 8398 // 3: Declaration = <SymbolDeclaration 8399 immutable(Production)(immutable(NonterminalID)(1), [ 8400 immutable(SymbolInstance)(immutable(Symbol)(false, 2), "", "", true, false, [], []) 8401 ], [], [], false, false), 8402 // 4: Declaration = <MatchDeclaration 8403 immutable(Production)(immutable(NonterminalID)(1), [ 8404 immutable(SymbolInstance)(immutable(Symbol)(false, 9), "", "", true, false, [], []) 8405 ], [], [], false, false), 8406 // 5: Declaration = <Import 8407 immutable(Production)(immutable(NonterminalID)(1), [ 8408 immutable(SymbolInstance)(immutable(Symbol)(false, 8), "", "", true, false, [], []) 8409 ], [], [], false, false), 8410 // 6: Declaration = <OptionDeclaration 8411 immutable(Production)(immutable(NonterminalID)(1), [ 8412 immutable(SymbolInstance)(immutable(Symbol)(false, 7), "", "", true, false, [], []) 8413 ], [], [], false, false), 8414 // 7: DeclarationType? = <DeclarationType [virtual] 8415 immutable(Production)(immutable(NonterminalID)(38), [ 8416 immutable(SymbolInstance)(immutable(Symbol)(false, 3), "", "", true, false, [], []) 8417 ], [], [], false, true), 8418 // 8: DeclarationType? = [virtual] 8419 immutable(Production)(immutable(NonterminalID)(38), [], [], [], false, true), 8420 // 9: MacroParametersPart? = <MacroParametersPart [virtual] 8421 immutable(Production)(immutable(NonterminalID)(39), [ 8422 immutable(SymbolInstance)(immutable(Symbol)(false, 4), "", "", true, false, [], []) 8423 ], [], [], false, true), 8424 // 10: MacroParametersPart? = [virtual] 8425 immutable(Production)(immutable(NonterminalID)(39), [], [], [], false, true), 8426 // 11: Annotation+ @array = Annotation [virtual] 8427 immutable(Production)(immutable(NonterminalID)(40), [ 8428 immutable(SymbolInstance)(immutable(Symbol)(false, 10), "", "", false, false, [], []) 8429 ], [], [], false, true), 8430 // 12: Annotation+ @array = Annotation+ Annotation [virtual] 8431 immutable(Production)(immutable(NonterminalID)(40), [ 8432 immutable(SymbolInstance)(immutable(Symbol)(false, 40), "", "", false, false, [], []), 8433 immutable(SymbolInstance)(immutable(Symbol)(false, 10), "", "", false, false, [], []) 8434 ], [], [], false, true), 8435 // 13: Annotation* @array = [virtual] 8436 immutable(Production)(immutable(NonterminalID)(41), [], [], [], false, true), 8437 // 14: Annotation* @array = Annotation+ [virtual] 8438 immutable(Production)(immutable(NonterminalID)(41), [ 8439 immutable(SymbolInstance)(immutable(Symbol)(false, 40), "", "", false, false, [], []) 8440 ], [], [], false, true), 8441 // 15: SymbolDeclaration = DeclarationType? Identifier MacroParametersPart? Annotation* ";" 8442 immutable(Production)(immutable(NonterminalID)(2), [ 8443 immutable(SymbolInstance)(immutable(Symbol)(false, 38), "", "", false, false, [], []), 8444 immutable(SymbolInstance)(immutable(Symbol)(true, 1), "", "", false, false, [], []), 8445 immutable(SymbolInstance)(immutable(Symbol)(false, 39), "", "", false, false, [], []), 8446 immutable(SymbolInstance)(immutable(Symbol)(false, 41), "", "", false, false, [], []), 8447 immutable(SymbolInstance)(immutable(Symbol)(true, 5), "", "", false, false, [], []) 8448 ], [], [], false, false), 8449 // 16: SymbolDeclaration = DeclarationType? Identifier MacroParametersPart? Annotation* "=" Expression ";" 8450 immutable(Production)(immutable(NonterminalID)(2), [ 8451 immutable(SymbolInstance)(immutable(Symbol)(false, 38), "", "", false, false, [], []), 8452 immutable(SymbolInstance)(immutable(Symbol)(true, 1), "", "", false, false, [], []), 8453 immutable(SymbolInstance)(immutable(Symbol)(false, 39), "", "", false, false, [], []), 8454 immutable(SymbolInstance)(immutable(Symbol)(false, 41), "", "", false, false, [], []), 8455 immutable(SymbolInstance)(immutable(Symbol)(true, 6), "", "", false, false, [], []), 8456 immutable(SymbolInstance)(immutable(Symbol)(false, 14), "", "", false, false, [], []), 8457 immutable(SymbolInstance)(immutable(Symbol)(true, 5), "", "", false, false, [], []) 8458 ], [], [], false, false), 8459 // 17: DeclarationType = "fragment" 8460 immutable(Production)(immutable(NonterminalID)(3), [ 8461 immutable(SymbolInstance)(immutable(Symbol)(true, 7), "", "", false, false, [], []) 8462 ], [], [], false, false), 8463 // 18: DeclarationType = "token" 8464 immutable(Production)(immutable(NonterminalID)(3), [ 8465 immutable(SymbolInstance)(immutable(Symbol)(true, 8), "", "", false, false, [], []) 8466 ], [], [], false, false), 8467 // 19: MacroParameters? = <MacroParameters [virtual] 8468 immutable(Production)(immutable(NonterminalID)(42), [ 8469 immutable(SymbolInstance)(immutable(Symbol)(false, 5), "", "", true, false, [], []) 8470 ], [], [], false, true), 8471 // 20: MacroParameters? = [virtual] 8472 immutable(Production)(immutable(NonterminalID)(42), [], [], [], false, true), 8473 // 21: MacroParametersPart = "(" MacroParameters? ")" 8474 immutable(Production)(immutable(NonterminalID)(4), [ 8475 immutable(SymbolInstance)(immutable(Symbol)(true, 9), "", "", false, false, [], []), 8476 immutable(SymbolInstance)(immutable(Symbol)(false, 42), "", "", false, false, [], []), 8477 immutable(SymbolInstance)(immutable(Symbol)(true, 10), "", "", false, false, [], []) 8478 ], [], [], false, false), 8479 // 22: MacroParameters @array = MacroParameter 8480 immutable(Production)(immutable(NonterminalID)(5), [ 8481 immutable(SymbolInstance)(immutable(Symbol)(false, 6), "", "", false, false, [], []) 8482 ], [], [], false, false), 8483 // 23: MacroParameters @array = MacroParameters "," MacroParameter 8484 immutable(Production)(immutable(NonterminalID)(5), [ 8485 immutable(SymbolInstance)(immutable(Symbol)(false, 5), "", "", false, false, [], []), 8486 immutable(SymbolInstance)(immutable(Symbol)(true, 11), "", "", false, false, [], []), 8487 immutable(SymbolInstance)(immutable(Symbol)(false, 6), "", "", false, false, [], []) 8488 ], [], [], false, false), 8489 // 24: MacroParameter = Identifier 8490 immutable(Production)(immutable(NonterminalID)(6), [ 8491 immutable(SymbolInstance)(immutable(Symbol)(true, 1), "", "", false, false, [], []) 8492 ], [], [], false, false), 8493 // 25: MacroParameter = Identifier "..." 8494 immutable(Production)(immutable(NonterminalID)(6), [ 8495 immutable(SymbolInstance)(immutable(Symbol)(true, 1), "", "", false, false, [], []), 8496 immutable(SymbolInstance)(immutable(Symbol)(true, 12), "", "", false, false, [], []) 8497 ], [], [], false, false), 8498 // 26: OptionDeclaration = ^"option" Identifier ^"=" IntegerLiteral ^";" 8499 immutable(Production)(immutable(NonterminalID)(7), [ 8500 immutable(SymbolInstance)(immutable(Symbol)(true, 13), "", "", false, true, [], []), 8501 immutable(SymbolInstance)(immutable(Symbol)(true, 1), "", "", false, false, [], []), 8502 immutable(SymbolInstance)(immutable(Symbol)(true, 6), "", "", false, true, [], []), 8503 immutable(SymbolInstance)(immutable(Symbol)(true, 4), "", "", false, false, [], []), 8504 immutable(SymbolInstance)(immutable(Symbol)(true, 5), "", "", false, true, [], []) 8505 ], [], [], false, false), 8506 // 27: Import = "import" StringLiteral ";" 8507 immutable(Production)(immutable(NonterminalID)(8), [ 8508 immutable(SymbolInstance)(immutable(Symbol)(true, 14), "", "", false, false, [], []), 8509 immutable(SymbolInstance)(immutable(Symbol)(true, 2), "", "", false, false, [], []), 8510 immutable(SymbolInstance)(immutable(Symbol)(true, 5), "", "", false, false, [], []) 8511 ], [], [], false, false), 8512 // 28: MatchDeclaration = "match" Symbol Symbol ";" 8513 immutable(Production)(immutable(NonterminalID)(9), [ 8514 immutable(SymbolInstance)(immutable(Symbol)(true, 15), "", "", false, false, [], []), 8515 immutable(SymbolInstance)(immutable(Symbol)(false, 28), "", "", false, false, [], []), 8516 immutable(SymbolInstance)(immutable(Symbol)(false, 28), "", "", false, false, [], []), 8517 immutable(SymbolInstance)(immutable(Symbol)(true, 5), "", "", false, false, [], []) 8518 ], [], [], false, false), 8519 // 29: AnnotationParams? = <AnnotationParams [virtual] 8520 immutable(Production)(immutable(NonterminalID)(43), [ 8521 immutable(SymbolInstance)(immutable(Symbol)(false, 11), "", "", true, false, [], []) 8522 ], [], [], false, true), 8523 // 30: AnnotationParams? = [virtual] 8524 immutable(Production)(immutable(NonterminalID)(43), [], [], [], false, true), 8525 // 31: Annotation = "@" Identifier AnnotationParams? 8526 immutable(Production)(immutable(NonterminalID)(10), [ 8527 immutable(SymbolInstance)(immutable(Symbol)(true, 16), "", "", false, false, [], []), 8528 immutable(SymbolInstance)(immutable(Symbol)(true, 1), "", "", false, false, [], []), 8529 immutable(SymbolInstance)(immutable(Symbol)(false, 43), "", "", false, false, [], []) 8530 ], [], [], false, false), 8531 // 32: AnnotationParamsPart+ @array = AnnotationParamsPart [virtual] 8532 immutable(Production)(immutable(NonterminalID)(44), [ 8533 immutable(SymbolInstance)(immutable(Symbol)(false, 12), "", "", false, false, [], []) 8534 ], [], [], false, true), 8535 // 33: AnnotationParamsPart+ @array = AnnotationParamsPart+ AnnotationParamsPart [virtual] 8536 immutable(Production)(immutable(NonterminalID)(44), [ 8537 immutable(SymbolInstance)(immutable(Symbol)(false, 44), "", "", false, false, [], []), 8538 immutable(SymbolInstance)(immutable(Symbol)(false, 12), "", "", false, false, [], []) 8539 ], [], [], false, true), 8540 // 34: AnnotationParamsPart* @array = [virtual] 8541 immutable(Production)(immutable(NonterminalID)(45), [], [], [], false, true), 8542 // 35: AnnotationParamsPart* @array = AnnotationParamsPart+ [virtual] 8543 immutable(Production)(immutable(NonterminalID)(45), [ 8544 immutable(SymbolInstance)(immutable(Symbol)(false, 44), "", "", false, false, [], []) 8545 ], [], [], false, true), 8546 // 36: AnnotationParams = "(" AnnotationParamsPart* ")" 8547 immutable(Production)(immutable(NonterminalID)(11), [ 8548 immutable(SymbolInstance)(immutable(Symbol)(true, 9), "", "", false, false, [], []), 8549 immutable(SymbolInstance)(immutable(Symbol)(false, 45), "", "", false, false, [], []), 8550 immutable(SymbolInstance)(immutable(Symbol)(true, 10), "", "", false, false, [], []) 8551 ], [], [], false, false), 8552 // 37: AnnotationParamsPart = StringLiteral 8553 immutable(Production)(immutable(NonterminalID)(12), [ 8554 immutable(SymbolInstance)(immutable(Symbol)(true, 2), "", "", false, false, [], []) 8555 ], [], [], false, false), 8556 // 38: AnnotationParamsPart = Identifier 8557 immutable(Production)(immutable(NonterminalID)(12), [ 8558 immutable(SymbolInstance)(immutable(Symbol)(true, 1), "", "", false, false, [], []) 8559 ], [], [], false, false), 8560 // 39: AnnotationParamsPart = CharacterSetLiteral 8561 immutable(Production)(immutable(NonterminalID)(12), [ 8562 immutable(SymbolInstance)(immutable(Symbol)(true, 3), "", "", false, false, [], []) 8563 ], [], [], false, false), 8564 // 40: AnnotationParamsPart = IntegerLiteral 8565 immutable(Production)(immutable(NonterminalID)(12), [ 8566 immutable(SymbolInstance)(immutable(Symbol)(true, 4), "", "", false, false, [], []) 8567 ], [], [], false, false), 8568 // 41: AnnotationParamsPart = "(" AnnotationParamsPart* ")" 8569 immutable(Production)(immutable(NonterminalID)(12), [ 8570 immutable(SymbolInstance)(immutable(Symbol)(true, 9), "", "", false, false, [], []), 8571 immutable(SymbolInstance)(immutable(Symbol)(false, 45), "", "", false, false, [], []), 8572 immutable(SymbolInstance)(immutable(Symbol)(true, 10), "", "", false, false, [], []) 8573 ], [], [], false, false), 8574 // 42: AnnotationParamsPart = "=" 8575 immutable(Production)(immutable(NonterminalID)(12), [ 8576 immutable(SymbolInstance)(immutable(Symbol)(true, 6), "", "", false, false, [], []) 8577 ], [], [], false, false), 8578 // 43: AnnotationParamsPart = ":" 8579 immutable(Production)(immutable(NonterminalID)(12), [ 8580 immutable(SymbolInstance)(immutable(Symbol)(true, 17), "", "", false, false, [], []) 8581 ], [], [], false, false), 8582 // 44: AnnotationParamsPart = ";" 8583 immutable(Production)(immutable(NonterminalID)(12), [ 8584 immutable(SymbolInstance)(immutable(Symbol)(true, 5), "", "", false, false, [], []) 8585 ], [], [], false, false), 8586 // 45: AnnotationParamsPart = "," 8587 immutable(Production)(immutable(NonterminalID)(12), [ 8588 immutable(SymbolInstance)(immutable(Symbol)(true, 11), "", "", false, false, [], []) 8589 ], [], [], false, false), 8590 // 46: AnnotationParamsPart = "{" 8591 immutable(Production)(immutable(NonterminalID)(12), [ 8592 immutable(SymbolInstance)(immutable(Symbol)(true, 18), "", "", false, false, [], []) 8593 ], [], [], false, false), 8594 // 47: AnnotationParamsPart = "}" 8595 immutable(Production)(immutable(NonterminalID)(12), [ 8596 immutable(SymbolInstance)(immutable(Symbol)(true, 19), "", "", false, false, [], []) 8597 ], [], [], false, false), 8598 // 48: AnnotationParamsPart = "?" 8599 immutable(Production)(immutable(NonterminalID)(12), [ 8600 immutable(SymbolInstance)(immutable(Symbol)(true, 20), "", "", false, false, [], []) 8601 ], [], [], false, false), 8602 // 49: AnnotationParamsPart = "!" 8603 immutable(Production)(immutable(NonterminalID)(12), [ 8604 immutable(SymbolInstance)(immutable(Symbol)(true, 21), "", "", false, false, [], []) 8605 ], [], [], false, false), 8606 // 50: AnnotationParamsPart = "<" 8607 immutable(Production)(immutable(NonterminalID)(12), [ 8608 immutable(SymbolInstance)(immutable(Symbol)(true, 22), "", "", false, false, [], []) 8609 ], [], [], false, false), 8610 // 51: AnnotationParamsPart = ">" 8611 immutable(Production)(immutable(NonterminalID)(12), [ 8612 immutable(SymbolInstance)(immutable(Symbol)(true, 23), "", "", false, false, [], []) 8613 ], [], [], false, false), 8614 // 52: AnnotationParamsPart = "*" 8615 immutable(Production)(immutable(NonterminalID)(12), [ 8616 immutable(SymbolInstance)(immutable(Symbol)(true, 24), "", "", false, false, [], []) 8617 ], [], [], false, false), 8618 // 53: AnnotationParamsPart = ">>" 8619 immutable(Production)(immutable(NonterminalID)(12), [ 8620 immutable(SymbolInstance)(immutable(Symbol)(true, 25), "", "", false, false, [], []) 8621 ], [], [], false, false), 8622 // 54: AnnotationParamsPart = "<<" 8623 immutable(Production)(immutable(NonterminalID)(12), [ 8624 immutable(SymbolInstance)(immutable(Symbol)(true, 26), "", "", false, false, [], []) 8625 ], [], [], false, false), 8626 // 55: AnnotationParamsPart = "-" 8627 immutable(Production)(immutable(NonterminalID)(12), [ 8628 immutable(SymbolInstance)(immutable(Symbol)(true, 27), "", "", false, false, [], []) 8629 ], [], [], false, false), 8630 // 56: NegativeLookahead = "!" Symbol 8631 immutable(Production)(immutable(NonterminalID)(13), [ 8632 immutable(SymbolInstance)(immutable(Symbol)(true, 21), "", "", false, false, [], []), 8633 immutable(SymbolInstance)(immutable(Symbol)(false, 28), "", "", false, false, [], []) 8634 ], [], [], false, false), 8635 // 57: NegativeLookahead = "!" "anytoken" 8636 immutable(Production)(immutable(NonterminalID)(13), [ 8637 immutable(SymbolInstance)(immutable(Symbol)(true, 21), "", "", false, false, [], []), 8638 immutable(SymbolInstance)(immutable(Symbol)(true, 28), "", "", false, false, [], []) 8639 ], [], [], false, false), 8640 // 58: Expression = <Alternation 8641 immutable(Production)(immutable(NonterminalID)(14), [ 8642 immutable(SymbolInstance)(immutable(Symbol)(false, 15), "", "", true, false, [], []) 8643 ], [], [], false, false), 8644 // 59: Alternation = <Concatenation 8645 immutable(Production)(immutable(NonterminalID)(15), [ 8646 immutable(SymbolInstance)(immutable(Symbol)(false, 16), "", "", true, false, [], []) 8647 ], [], [], false, false), 8648 // 60: Alternation = Alternation "|" Concatenation 8649 immutable(Production)(immutable(NonterminalID)(15), [ 8650 immutable(SymbolInstance)(immutable(Symbol)(false, 15), "", "", false, false, [], []), 8651 immutable(SymbolInstance)(immutable(Symbol)(true, 29), "", "", false, false, [], []), 8652 immutable(SymbolInstance)(immutable(Symbol)(false, 16), "", "", false, false, [], []) 8653 ], [], [], false, false), 8654 // 61: Concatenation = <TokenMinus 8655 immutable(Production)(immutable(NonterminalID)(16), [ 8656 immutable(SymbolInstance)(immutable(Symbol)(false, 18), "", "", true, false, [], []) 8657 ], [], [], false, false), 8658 // 62: TokenMinus+ @array = TokenMinus [virtual] 8659 immutable(Production)(immutable(NonterminalID)(46), [ 8660 immutable(SymbolInstance)(immutable(Symbol)(false, 18), "", "", false, false, [], []) 8661 ], [], [], false, true), 8662 // 63: TokenMinus+ @array = TokenMinus+ TokenMinus [virtual] 8663 immutable(Production)(immutable(NonterminalID)(46), [ 8664 immutable(SymbolInstance)(immutable(Symbol)(false, 46), "", "", false, false, [], []), 8665 immutable(SymbolInstance)(immutable(Symbol)(false, 18), "", "", false, false, [], []) 8666 ], [], [], false, true), 8667 // 64: ProductionAnnotation+ @array = ProductionAnnotation [virtual] 8668 immutable(Production)(immutable(NonterminalID)(47), [ 8669 immutable(SymbolInstance)(immutable(Symbol)(false, 17), "", "", false, false, [], []) 8670 ], [], [], false, true), 8671 // 65: ProductionAnnotation+ @array = ProductionAnnotation+ ProductionAnnotation [virtual] 8672 immutable(Production)(immutable(NonterminalID)(47), [ 8673 immutable(SymbolInstance)(immutable(Symbol)(false, 47), "", "", false, false, [], []), 8674 immutable(SymbolInstance)(immutable(Symbol)(false, 17), "", "", false, false, [], []) 8675 ], [], [], false, true), 8676 immutable(Production)(), 8677 immutable(Production)(), 8678 // 68: Concatenation = TokenMinus TokenMinus+ @regArray @regArray_ProductionAnnotation* 8679 immutable(Production)(immutable(NonterminalID)(16), [ 8680 immutable(SymbolInstance)(immutable(Symbol)(false, 18), "", "", false, false, [], []), 8681 immutable(SymbolInstance)(immutable(Symbol)(false, 46), "", "", false, false, [], []), 8682 immutable(SymbolInstance)(immutable(Symbol)(false, 48), "", "", false, false, ["regArray"], []) 8683 ], [], [], false, false), 8684 immutable(Production)(), 8685 immutable(Production)(), 8686 // 71: Concatenation = TokenMinus @regArray @regArray_ProductionAnnotation+ 8687 immutable(Production)(immutable(NonterminalID)(16), [ 8688 immutable(SymbolInstance)(immutable(Symbol)(false, 18), "", "", false, false, [], []), 8689 immutable(SymbolInstance)(immutable(Symbol)(false, 49), "", "", false, false, ["regArray"], []) 8690 ], [], [], false, false), 8691 // 72: Concatenation = @regArray @regArray_ProductionAnnotation+ 8692 immutable(Production)(immutable(NonterminalID)(16), [ 8693 immutable(SymbolInstance)(immutable(Symbol)(false, 49), "", "", false, false, ["regArray"], []) 8694 ], [], [], false, false), 8695 // 73: ProductionAnnotation @directUnwrap = <Annotation 8696 immutable(Production)(immutable(NonterminalID)(17), [ 8697 immutable(SymbolInstance)(immutable(Symbol)(false, 10), "", "", true, false, [], []) 8698 ], [], [], false, false), 8699 // 74: ProductionAnnotation @directUnwrap = <NegativeLookahead 8700 immutable(Production)(immutable(NonterminalID)(17), [ 8701 immutable(SymbolInstance)(immutable(Symbol)(false, 13), "", "", true, false, [], []) 8702 ], [], [], false, false), 8703 // 75: TokenMinus = <AnnotatedExpression 8704 immutable(Production)(immutable(NonterminalID)(18), [ 8705 immutable(SymbolInstance)(immutable(Symbol)(false, 19), "", "", true, false, [], []) 8706 ], [], [], false, false), 8707 // 76: TokenMinus = TokenMinus "-" AnnotatedExpression 8708 immutable(Production)(immutable(NonterminalID)(18), [ 8709 immutable(SymbolInstance)(immutable(Symbol)(false, 18), "", "", false, false, [], []), 8710 immutable(SymbolInstance)(immutable(Symbol)(true, 27), "", "", false, false, [], []), 8711 immutable(SymbolInstance)(immutable(Symbol)(false, 19), "", "", false, false, [], []) 8712 ], [], [], false, false), 8713 // 77: ExpressionAnnotation+ @array = ExpressionAnnotation [virtual] 8714 immutable(Production)(immutable(NonterminalID)(50), [ 8715 immutable(SymbolInstance)(immutable(Symbol)(false, 20), "", "", false, false, [], []) 8716 ], [], [], false, true), 8717 // 78: ExpressionAnnotation+ @array = ExpressionAnnotation+ ExpressionAnnotation [virtual] 8718 immutable(Production)(immutable(NonterminalID)(50), [ 8719 immutable(SymbolInstance)(immutable(Symbol)(false, 50), "", "", false, false, [], []), 8720 immutable(SymbolInstance)(immutable(Symbol)(false, 20), "", "", false, false, [], []) 8721 ], [], [], false, true), 8722 immutable(Production)(), 8723 immutable(Production)(), 8724 // 81: ExpressionName? = <ExpressionName [virtual] 8725 immutable(Production)(immutable(NonterminalID)(52), [ 8726 immutable(SymbolInstance)(immutable(Symbol)(false, 21), "", "", true, false, [], []) 8727 ], [], [], false, true), 8728 // 82: ExpressionName? = [virtual] 8729 immutable(Production)(immutable(NonterminalID)(52), [], [], [], false, true), 8730 // 83: ExpressionPrefix+ @array = ExpressionPrefix [virtual] 8731 immutable(Production)(immutable(NonterminalID)(53), [ 8732 immutable(SymbolInstance)(immutable(Symbol)(false, 22), "", "", false, false, [], []) 8733 ], [], [], false, true), 8734 // 84: ExpressionPrefix+ @array = ExpressionPrefix+ ExpressionPrefix [virtual] 8735 immutable(Production)(immutable(NonterminalID)(53), [ 8736 immutable(SymbolInstance)(immutable(Symbol)(false, 53), "", "", false, false, [], []), 8737 immutable(SymbolInstance)(immutable(Symbol)(false, 22), "", "", false, false, [], []) 8738 ], [], [], false, true), 8739 // 85: ExpressionPrefix* @array = [virtual] 8740 immutable(Production)(immutable(NonterminalID)(54), [], [], [], false, true), 8741 // 86: ExpressionPrefix* @array = ExpressionPrefix+ [virtual] 8742 immutable(Production)(immutable(NonterminalID)(54), [ 8743 immutable(SymbolInstance)(immutable(Symbol)(false, 53), "", "", false, false, [], []) 8744 ], [], [], false, true), 8745 // 87: AnnotatedExpression = @regArray @regArray_ExpressionAnnotation* ExpressionName? ExpressionPrefix* PostfixExpression 8746 immutable(Production)(immutable(NonterminalID)(19), [ 8747 immutable(SymbolInstance)(immutable(Symbol)(false, 51), "", "", false, false, ["regArray"], []), 8748 immutable(SymbolInstance)(immutable(Symbol)(false, 52), "", "", false, false, [], []), 8749 immutable(SymbolInstance)(immutable(Symbol)(false, 54), "", "", false, false, [], []), 8750 immutable(SymbolInstance)(immutable(Symbol)(false, 23), "", "", false, false, [], []) 8751 ], [], [], false, false), 8752 // 88: ExpressionAnnotation @directUnwrap = <Annotation 8753 immutable(Production)(immutable(NonterminalID)(20), [ 8754 immutable(SymbolInstance)(immutable(Symbol)(false, 10), "", "", true, false, [], []) 8755 ], [], [], false, false), 8756 // 89: ExpressionAnnotation @directUnwrap = <NegativeLookahead 8757 immutable(Production)(immutable(NonterminalID)(20), [ 8758 immutable(SymbolInstance)(immutable(Symbol)(false, 13), "", "", true, false, [], []) 8759 ], [], [], false, false), 8760 // 90: ExpressionName = Identifier ":" 8761 immutable(Production)(immutable(NonterminalID)(21), [ 8762 immutable(SymbolInstance)(immutable(Symbol)(true, 1), "", "", false, false, [], []), 8763 immutable(SymbolInstance)(immutable(Symbol)(true, 17), "", "", false, false, [], []) 8764 ], [], [], false, false), 8765 // 91: ExpressionPrefix = "<" 8766 immutable(Production)(immutable(NonterminalID)(22), [ 8767 immutable(SymbolInstance)(immutable(Symbol)(true, 22), "", "", false, false, [], []) 8768 ], [], [], false, false), 8769 // 92: ExpressionPrefix = "^" 8770 immutable(Production)(immutable(NonterminalID)(22), [ 8771 immutable(SymbolInstance)(immutable(Symbol)(true, 30), "", "", false, false, [], []) 8772 ], [], [], false, false), 8773 // 93: PostfixExpression = <Optional 8774 immutable(Production)(immutable(NonterminalID)(23), [ 8775 immutable(SymbolInstance)(immutable(Symbol)(false, 24), "", "", true, false, [], []) 8776 ], [], [], false, false), 8777 // 94: PostfixExpression = <Repetition 8778 immutable(Production)(immutable(NonterminalID)(23), [ 8779 immutable(SymbolInstance)(immutable(Symbol)(false, 25), "", "", true, false, [], []) 8780 ], [], [], false, false), 8781 // 95: PostfixExpression = <RepetitionPlus 8782 immutable(Production)(immutable(NonterminalID)(23), [ 8783 immutable(SymbolInstance)(immutable(Symbol)(false, 26), "", "", true, false, [], []) 8784 ], [], [], false, false), 8785 // 96: PostfixExpression = <AtomExpression 8786 immutable(Production)(immutable(NonterminalID)(23), [ 8787 immutable(SymbolInstance)(immutable(Symbol)(false, 27), "", "", true, false, [], []) 8788 ], [], [], false, false), 8789 // 97: Optional = PostfixExpression "?" 8790 immutable(Production)(immutable(NonterminalID)(24), [ 8791 immutable(SymbolInstance)(immutable(Symbol)(false, 23), "", "", false, false, [], []), 8792 immutable(SymbolInstance)(immutable(Symbol)(true, 20), "", "", false, false, [], []) 8793 ], [], [], false, false), 8794 // 98: Repetition = PostfixExpression "*" 8795 immutable(Production)(immutable(NonterminalID)(25), [ 8796 immutable(SymbolInstance)(immutable(Symbol)(false, 23), "", "", false, false, [], []), 8797 immutable(SymbolInstance)(immutable(Symbol)(true, 24), "", "", false, false, [], []) 8798 ], [], [], false, false), 8799 // 99: RepetitionPlus = PostfixExpression "+" 8800 immutable(Production)(immutable(NonterminalID)(26), [ 8801 immutable(SymbolInstance)(immutable(Symbol)(false, 23), "", "", false, false, [], []), 8802 immutable(SymbolInstance)(immutable(Symbol)(true, 31), "", "", false, false, [], []) 8803 ], [], [], false, false), 8804 // 100: AtomExpression = <Symbol 8805 immutable(Production)(immutable(NonterminalID)(27), [ 8806 immutable(SymbolInstance)(immutable(Symbol)(false, 28), "", "", true, false, [], []) 8807 ], [], [], false, false), 8808 // 101: AtomExpression = <ParenExpression 8809 immutable(Production)(immutable(NonterminalID)(27), [ 8810 immutable(SymbolInstance)(immutable(Symbol)(false, 34), "", "", true, false, [], []) 8811 ], [], [], false, false), 8812 // 102: AtomExpression = <SubToken 8813 immutable(Production)(immutable(NonterminalID)(27), [ 8814 immutable(SymbolInstance)(immutable(Symbol)(false, 32), "", "", true, false, [], []) 8815 ], [], [], false, false), 8816 // 103: AtomExpression = <UnpackVariadicList 8817 immutable(Production)(immutable(NonterminalID)(27), [ 8818 immutable(SymbolInstance)(immutable(Symbol)(false, 31), "", "", true, false, [], []) 8819 ], [], [], false, false), 8820 // 104: AtomExpression = <Tuple 8821 immutable(Production)(immutable(NonterminalID)(27), [ 8822 immutable(SymbolInstance)(immutable(Symbol)(false, 36), "", "", true, false, [], []) 8823 ], [], [], false, false), 8824 // 105: Symbol = <Name 8825 immutable(Production)(immutable(NonterminalID)(28), [ 8826 immutable(SymbolInstance)(immutable(Symbol)(false, 29), "", "", true, false, [], []) 8827 ], [], [], false, false), 8828 // 106: Symbol = <Token 8829 immutable(Production)(immutable(NonterminalID)(28), [ 8830 immutable(SymbolInstance)(immutable(Symbol)(false, 30), "", "", true, false, [], []) 8831 ], [], [], false, false), 8832 // 107: Symbol = <MacroInstance 8833 immutable(Production)(immutable(NonterminalID)(28), [ 8834 immutable(SymbolInstance)(immutable(Symbol)(false, 33), "", "", true, false, [], []) 8835 ], [], [], false, false), 8836 // 108: Name = Identifier 8837 immutable(Production)(immutable(NonterminalID)(29), [ 8838 immutable(SymbolInstance)(immutable(Symbol)(true, 1), "", "", false, false, [], []) 8839 ], [], [], false, false), 8840 // 109: Token = StringLiteral 8841 immutable(Production)(immutable(NonterminalID)(30), [ 8842 immutable(SymbolInstance)(immutable(Symbol)(true, 2), "", "", false, false, [], []) 8843 ], [], [], false, false), 8844 // 110: Token = CharacterSetLiteral 8845 immutable(Production)(immutable(NonterminalID)(30), [ 8846 immutable(SymbolInstance)(immutable(Symbol)(true, 3), "", "", false, false, [], []) 8847 ], [], [], false, false), 8848 // 111: UnpackVariadicList = Identifier "..." 8849 immutable(Production)(immutable(NonterminalID)(31), [ 8850 immutable(SymbolInstance)(immutable(Symbol)(true, 1), "", "", false, false, [], []), 8851 immutable(SymbolInstance)(immutable(Symbol)(true, 12), "", "", false, false, [], []) 8852 ], [], [], false, false), 8853 // 112: SubToken = Symbol ">>" Symbol 8854 immutable(Production)(immutable(NonterminalID)(32), [ 8855 immutable(SymbolInstance)(immutable(Symbol)(false, 28), "", "", false, false, [], []), 8856 immutable(SymbolInstance)(immutable(Symbol)(true, 25), "", "", false, false, [], []), 8857 immutable(SymbolInstance)(immutable(Symbol)(false, 28), "", "", false, false, [], []) 8858 ], [], [], false, false), 8859 // 113: SubToken = Symbol ">>" ParenExpression 8860 immutable(Production)(immutable(NonterminalID)(32), [ 8861 immutable(SymbolInstance)(immutable(Symbol)(false, 28), "", "", false, false, [], []), 8862 immutable(SymbolInstance)(immutable(Symbol)(true, 25), "", "", false, false, [], []), 8863 immutable(SymbolInstance)(immutable(Symbol)(false, 34), "", "", false, false, [], []) 8864 ], [], [], false, false), 8865 // 114: ExpressionList? = <ExpressionList [virtual] 8866 immutable(Production)(immutable(NonterminalID)(55), [ 8867 immutable(SymbolInstance)(immutable(Symbol)(false, 35), "", "", true, false, [], []) 8868 ], [], [], false, true), 8869 // 115: ExpressionList? = [virtual] 8870 immutable(Production)(immutable(NonterminalID)(55), [], [], [], false, true), 8871 // 116: MacroInstance = Identifier "(" ExpressionList? ")" 8872 immutable(Production)(immutable(NonterminalID)(33), [ 8873 immutable(SymbolInstance)(immutable(Symbol)(true, 1), "", "", false, false, [], []), 8874 immutable(SymbolInstance)(immutable(Symbol)(true, 9), "", "", false, false, [], []), 8875 immutable(SymbolInstance)(immutable(Symbol)(false, 55), "", "", false, false, [], []), 8876 immutable(SymbolInstance)(immutable(Symbol)(true, 10), "", "", false, false, [], []) 8877 ], [], [], false, false), 8878 // 117: ParenExpression = "{" Expression "}" 8879 immutable(Production)(immutable(NonterminalID)(34), [ 8880 immutable(SymbolInstance)(immutable(Symbol)(true, 18), "", "", false, false, [], []), 8881 immutable(SymbolInstance)(immutable(Symbol)(false, 14), "", "", false, false, [], []), 8882 immutable(SymbolInstance)(immutable(Symbol)(true, 19), "", "", false, false, [], []) 8883 ], [], [], false, false), 8884 // 118: ExpressionList @array = Expression 8885 immutable(Production)(immutable(NonterminalID)(35), [ 8886 immutable(SymbolInstance)(immutable(Symbol)(false, 14), "", "", false, false, [], []) 8887 ], [], [], false, false), 8888 // 119: ExpressionList @array = ExpressionList "," Expression 8889 immutable(Production)(immutable(NonterminalID)(35), [ 8890 immutable(SymbolInstance)(immutable(Symbol)(false, 35), "", "", false, false, [], []), 8891 immutable(SymbolInstance)(immutable(Symbol)(true, 11), "", "", false, false, [], []), 8892 immutable(SymbolInstance)(immutable(Symbol)(false, 14), "", "", false, false, [], []) 8893 ], [], [], false, false), 8894 // 120: Tuple = "t(" ExpressionList? ")" 8895 immutable(Production)(immutable(NonterminalID)(36), [ 8896 immutable(SymbolInstance)(immutable(Symbol)(true, 32), "", "", false, false, [], []), 8897 immutable(SymbolInstance)(immutable(Symbol)(false, 55), "", "", false, false, [], []), 8898 immutable(SymbolInstance)(immutable(Symbol)(true, 10), "", "", false, false, [], []) 8899 ], [], [], false, false), 8900 // 121: $regarray_1 @array @directUnwrap = @inheritAnyTag $regarray_1 $regarrayedge_1_1 8901 immutable(Production)(immutable(NonterminalID)(57), [ 8902 immutable(SymbolInstance)(immutable(Symbol)(false, 57), "", "", false, false, ["inheritAnyTag"], []), 8903 immutable(SymbolInstance)(immutable(Symbol)(false, 59), "", "", false, false, [], []) 8904 ], [], [], false, false), 8905 // 122: $regarrayedge_0_1 @directUnwrap = @excludeDirectUnwrap <Annotation 8906 immutable(Production)(immutable(NonterminalID)(58), [ 8907 immutable(SymbolInstance)(immutable(Symbol)(false, 10), "", "", true, false, ["excludeDirectUnwrap"], []) 8908 ], [], [], false, false), 8909 // 123: $regarrayedge_0_1 @directUnwrap = @excludeDirectUnwrap <NegativeLookahead 8910 immutable(Production)(immutable(NonterminalID)(58), [ 8911 immutable(SymbolInstance)(immutable(Symbol)(false, 13), "", "", true, false, ["excludeDirectUnwrap"], []) 8912 ], [], [], false, false), 8913 // 124: $regarrayedge_1_1 @directUnwrap = @excludeDirectUnwrap <Annotation 8914 immutable(Production)(immutable(NonterminalID)(59), [ 8915 immutable(SymbolInstance)(immutable(Symbol)(false, 10), "", "", true, false, ["excludeDirectUnwrap"], []) 8916 ], [], [], false, false), 8917 // 125: $regarrayedge_1_1 @directUnwrap = @excludeDirectUnwrap <NegativeLookahead 8918 immutable(Production)(immutable(NonterminalID)(59), [ 8919 immutable(SymbolInstance)(immutable(Symbol)(false, 13), "", "", true, false, ["excludeDirectUnwrap"], []) 8920 ], [], [], false, false), 8921 // 126: $regarray_1 @array @directUnwrap = @inheritAnyTag $regarrayedge_0_1 8922 immutable(Production)(immutable(NonterminalID)(57), [ 8923 immutable(SymbolInstance)(immutable(Symbol)(false, 58), "", "", false, false, ["inheritAnyTag"], []) 8924 ], [], [], false, false), 8925 // 127: @regArray_ExpressionAnnotation* @array @directUnwrap @regArray = 8926 immutable(Production)(immutable(NonterminalID)(51), [], [], [], false, false), 8927 // 128: @regArray_ProductionAnnotation* @array @directUnwrap @regArray = 8928 immutable(Production)(immutable(NonterminalID)(48), [], [], [], false, false), 8929 // 129: @regArray_ExpressionAnnotation* @array @directUnwrap @regArray = @inheritAnyTag <$regarray_1 8930 immutable(Production)(immutable(NonterminalID)(51), [ 8931 immutable(SymbolInstance)(immutable(Symbol)(false, 57), "", "", true, false, ["inheritAnyTag"], []) 8932 ], [], [], false, false), 8933 // 130: @regArray_ProductionAnnotation* @array @directUnwrap @regArray = @inheritAnyTag <$regarray_1 8934 immutable(Production)(immutable(NonterminalID)(48), [ 8935 immutable(SymbolInstance)(immutable(Symbol)(false, 57), "", "", true, false, ["inheritAnyTag"], []) 8936 ], [], [], false, false), 8937 // 131: @regArray_ProductionAnnotation+ @array @directUnwrap @regArray = @inheritAnyTag <$regarray_1 8938 immutable(Production)(immutable(NonterminalID)(49), [ 8939 immutable(SymbolInstance)(immutable(Symbol)(false, 57), "", "", true, false, ["inheritAnyTag"], []) 8940 ], [], [], false, false), 8941 ]; 8942 8943 immutable GrammarInfo grammarInfo = immutable(GrammarInfo)( 8944 startTokenID, startNonterminalID, startProductionID, 8945 allTokens, allNonterminals, allProductions); 8946 8947 Creator.Type parse(Creator, alias Lexer, string startNonterminal = "EBNF")(ref Lexer lexer, Creator creator) 8948 { 8949 alias Location = typeof(Lexer.init.front.currentLocation); 8950 auto parser = Parser!(Creator, Lexer)( 8951 creator, 8952 &lexer); 8953 ParameterTypeTuple!(__traits(getMember, parser, "parse" ~ startNonterminal))[0] parseResult; 8954 Location parseResultLocation; 8955 int gotoParent = __traits(getMember, parser, "parse" ~ startNonterminal)(parseResult, parseResultLocation); 8956 if (gotoParent < 0) 8957 { 8958 assert(parser.lastError !is null); 8959 throw parser.lastError; 8960 } 8961 else 8962 assert(parser.lastError is null); 8963 auto result = parseResult; 8964 creator.adjustStart(result, parseResultLocation); 8965 return result; 8966 } 8967 8968 Creator.Type parse(Creator, alias Lexer, string startNonterminal = "EBNF")(string input, Creator creator, typeof(Lexer.init.front.currentLocation) startLocation = typeof(Lexer.init.front.currentLocation).init) 8969 { 8970 alias Location = typeof(Lexer.init.front.currentLocation); 8971 Lexer lexer = Lexer(input, startLocation); 8972 auto result = parse!(Creator, Lexer, startNonterminal)(lexer, creator); 8973 if (!lexer.empty) 8974 { 8975 throw new SingleParseException!Location("input left after parse", 8976 lexer.front.currentLocation, lexer.front.currentTokenEnd); 8977 } 8978 return result; 8979 }