/NRefactory/ICSharpCode.NRefactory.VB/Lexer/Parser.cs

http://github.com/icsharpcode/ILSpy · C# · 8631 lines · 8598 code · 26 blank · 7 comment · 2920 complexity · 45c98f12a202b28535469a920eccc8c0 MD5 · raw file

Large files are truncated click here to view the full file

  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. namespace ICSharpCode.NRefactory.VB.Parser {
  5. partial class ExpressionFinder {
  6. const int startOfExpression = 55;
  7. const int endOfStatementTerminatorAndBlock = 263;
  8. static BitArray GetExpectedSet(int state)
  9. {
  10. switch (state) {
  11. case 0:
  12. case 1:
  13. return set[0];
  14. case 2:
  15. return set[1];
  16. case 3:
  17. case 4:
  18. return set[2];
  19. case 5:
  20. return set[3];
  21. case 6:
  22. case 88:
  23. case 264:
  24. case 530:
  25. {
  26. BitArray a = new BitArray(239);
  27. return a;
  28. }
  29. case 7:
  30. return set[4];
  31. case 8:
  32. return set[5];
  33. case 9:
  34. case 10:
  35. case 20:
  36. {
  37. BitArray a = new BitArray(239);
  38. a.Set(142, true);
  39. return a;
  40. }
  41. case 11:
  42. case 193:
  43. case 199:
  44. case 205:
  45. case 244:
  46. case 248:
  47. case 295:
  48. case 399:
  49. case 405:
  50. case 474:
  51. case 520:
  52. case 527:
  53. case 535:
  54. case 565:
  55. case 601:
  56. case 650:
  57. case 664:
  58. case 743:
  59. return set[6];
  60. case 12:
  61. case 13:
  62. case 566:
  63. case 567:
  64. case 612:
  65. case 622:
  66. {
  67. BitArray a = new BitArray(239);
  68. a.Set(1, true);
  69. a.Set(21, true);
  70. a.Set(37, true);
  71. return a;
  72. }
  73. case 14:
  74. case 21:
  75. case 23:
  76. case 24:
  77. case 36:
  78. case 256:
  79. case 259:
  80. case 260:
  81. case 296:
  82. case 300:
  83. case 322:
  84. case 337:
  85. case 348:
  86. case 351:
  87. case 357:
  88. case 362:
  89. case 372:
  90. case 373:
  91. case 396:
  92. case 423:
  93. case 526:
  94. case 532:
  95. case 538:
  96. case 542:
  97. case 550:
  98. case 558:
  99. case 568:
  100. case 577:
  101. case 594:
  102. case 599:
  103. case 607:
  104. case 613:
  105. case 616:
  106. case 623:
  107. case 626:
  108. case 645:
  109. case 648:
  110. case 672:
  111. case 680:
  112. case 716:
  113. {
  114. BitArray a = new BitArray(239);
  115. a.Set(1, true);
  116. a.Set(21, true);
  117. return a;
  118. }
  119. case 15:
  120. case 16:
  121. return set[7];
  122. case 17:
  123. case 18:
  124. return set[8];
  125. case 19:
  126. case 257:
  127. case 271:
  128. case 298:
  129. case 352:
  130. case 397:
  131. case 454:
  132. case 575:
  133. case 595:
  134. case 614:
  135. case 618:
  136. case 624:
  137. case 646:
  138. case 681:
  139. {
  140. BitArray a = new BitArray(239);
  141. a.Set(113, true);
  142. return a;
  143. }
  144. case 22:
  145. case 543:
  146. case 578:
  147. return set[9];
  148. case 25:
  149. {
  150. BitArray a = new BitArray(239);
  151. a.Set(1, true);
  152. return a;
  153. }
  154. case 26:
  155. case 27:
  156. return set[10];
  157. case 28:
  158. case 720:
  159. return set[11];
  160. case 29:
  161. return set[12];
  162. case 30:
  163. return set[13];
  164. case 31:
  165. case 32:
  166. case 152:
  167. case 217:
  168. case 218:
  169. case 265:
  170. case 276:
  171. case 277:
  172. case 444:
  173. case 445:
  174. case 462:
  175. case 463:
  176. case 464:
  177. case 465:
  178. case 553:
  179. case 554:
  180. case 587:
  181. case 588:
  182. case 675:
  183. case 676:
  184. case 729:
  185. case 730:
  186. return set[14];
  187. case 33:
  188. case 34:
  189. case 521:
  190. case 522:
  191. case 528:
  192. case 529:
  193. case 555:
  194. case 556:
  195. case 669:
  196. return set[15];
  197. case 35:
  198. case 37:
  199. case 157:
  200. case 168:
  201. case 171:
  202. case 187:
  203. case 203:
  204. case 221:
  205. case 307:
  206. case 332:
  207. case 422:
  208. case 440:
  209. case 477:
  210. case 531:
  211. case 549:
  212. case 557:
  213. case 629:
  214. case 632:
  215. case 654:
  216. case 657:
  217. case 659:
  218. case 671:
  219. case 684:
  220. case 686:
  221. case 709:
  222. case 712:
  223. case 715:
  224. case 721:
  225. case 724:
  226. case 742:
  227. return set[16];
  228. case 38:
  229. case 41:
  230. return set[17];
  231. case 39:
  232. return set[18];
  233. case 40:
  234. case 97:
  235. case 101:
  236. case 163:
  237. case 388:
  238. case 481:
  239. return set[19];
  240. case 42:
  241. case 177:
  242. case 184:
  243. case 189:
  244. case 253:
  245. case 424:
  246. case 451:
  247. case 473:
  248. case 476:
  249. case 589:
  250. case 590:
  251. case 642:
  252. {
  253. BitArray a = new BitArray(239);
  254. a.Set(37, true);
  255. return a;
  256. }
  257. case 43:
  258. case 44:
  259. case 165:
  260. case 166:
  261. return set[20];
  262. case 45:
  263. case 46:
  264. case 167:
  265. case 188:
  266. case 392:
  267. case 427:
  268. case 475:
  269. case 478:
  270. case 498:
  271. case 561:
  272. case 592:
  273. case 644:
  274. case 690:
  275. case 719:
  276. case 728:
  277. {
  278. BitArray a = new BitArray(239);
  279. a.Set(38, true);
  280. return a;
  281. }
  282. case 47:
  283. case 48:
  284. return set[21];
  285. case 49:
  286. case 179:
  287. case 186:
  288. case 394:
  289. {
  290. BitArray a = new BitArray(239);
  291. a.Set(22, true);
  292. return a;
  293. }
  294. case 50:
  295. case 51:
  296. case 52:
  297. case 54:
  298. case 390:
  299. case 391:
  300. case 412:
  301. case 413:
  302. case 419:
  303. case 420:
  304. case 489:
  305. case 490:
  306. case 703:
  307. case 704:
  308. return set[22];
  309. case 53:
  310. case 169:
  311. case 170:
  312. case 172:
  313. case 181:
  314. case 414:
  315. case 421:
  316. case 429:
  317. case 438:
  318. case 442:
  319. case 485:
  320. case 488:
  321. case 492:
  322. case 494:
  323. case 495:
  324. case 505:
  325. case 512:
  326. case 519:
  327. case 705:
  328. {
  329. BitArray a = new BitArray(239);
  330. a.Set(22, true);
  331. a.Set(38, true);
  332. return a;
  333. }
  334. case 55:
  335. case 56:
  336. case 70:
  337. case 75:
  338. case 76:
  339. case 77:
  340. case 83:
  341. case 99:
  342. case 155:
  343. case 178:
  344. case 180:
  345. case 182:
  346. case 185:
  347. case 195:
  348. case 197:
  349. case 215:
  350. case 239:
  351. case 274:
  352. case 284:
  353. case 286:
  354. case 287:
  355. case 304:
  356. case 321:
  357. case 326:
  358. case 335:
  359. case 341:
  360. case 343:
  361. case 347:
  362. case 350:
  363. case 356:
  364. case 367:
  365. case 369:
  366. case 370:
  367. case 376:
  368. case 393:
  369. case 395:
  370. case 415:
  371. case 439:
  372. case 467:
  373. case 483:
  374. case 484:
  375. case 486:
  376. case 487:
  377. case 548:
  378. case 628:
  379. return set[23];
  380. case 57:
  381. case 78:
  382. case 158:
  383. return set[24];
  384. case 58:
  385. return set[25];
  386. case 59:
  387. {
  388. BitArray a = new BitArray(239);
  389. a.Set(216, true);
  390. return a;
  391. }
  392. case 60:
  393. {
  394. BitArray a = new BitArray(239);
  395. a.Set(145, true);
  396. return a;
  397. }
  398. case 61:
  399. case 156:
  400. {
  401. BitArray a = new BitArray(239);
  402. a.Set(144, true);
  403. return a;
  404. }
  405. case 62:
  406. {
  407. BitArray a = new BitArray(239);
  408. a.Set(236, true);
  409. return a;
  410. }
  411. case 63:
  412. {
  413. BitArray a = new BitArray(239);
  414. a.Set(177, true);
  415. return a;
  416. }
  417. case 64:
  418. {
  419. BitArray a = new BitArray(239);
  420. a.Set(175, true);
  421. return a;
  422. }
  423. case 65:
  424. {
  425. BitArray a = new BitArray(239);
  426. a.Set(61, true);
  427. return a;
  428. }
  429. case 66:
  430. {
  431. BitArray a = new BitArray(239);
  432. a.Set(60, true);
  433. return a;
  434. }
  435. case 67:
  436. {
  437. BitArray a = new BitArray(239);
  438. a.Set(150, true);
  439. return a;
  440. }
  441. case 68:
  442. {
  443. BitArray a = new BitArray(239);
  444. a.Set(42, true);
  445. return a;
  446. }
  447. case 69:
  448. {
  449. BitArray a = new BitArray(239);
  450. a.Set(43, true);
  451. return a;
  452. }
  453. case 71:
  454. case 443:
  455. {
  456. BitArray a = new BitArray(239);
  457. a.Set(40, true);
  458. return a;
  459. }
  460. case 72:
  461. {
  462. BitArray a = new BitArray(239);
  463. a.Set(41, true);
  464. return a;
  465. }
  466. case 73:
  467. case 98:
  468. case 222:
  469. case 223:
  470. case 282:
  471. case 283:
  472. case 334:
  473. case 744:
  474. {
  475. BitArray a = new BitArray(239);
  476. a.Set(20, true);
  477. return a;
  478. }
  479. case 74:
  480. {
  481. BitArray a = new BitArray(239);
  482. a.Set(154, true);
  483. return a;
  484. }
  485. case 79:
  486. case 91:
  487. case 93:
  488. case 148:
  489. {
  490. BitArray a = new BitArray(239);
  491. a.Set(35, true);
  492. return a;
  493. }
  494. case 80:
  495. case 81:
  496. return set[26];
  497. case 82:
  498. {
  499. BitArray a = new BitArray(239);
  500. a.Set(36, true);
  501. return a;
  502. }
  503. case 84:
  504. case 100:
  505. case 515:
  506. {
  507. BitArray a = new BitArray(239);
  508. a.Set(22, true);
  509. a.Set(36, true);
  510. return a;
  511. }
  512. case 85:
  513. case 121:
  514. {
  515. BitArray a = new BitArray(239);
  516. a.Set(162, true);
  517. return a;
  518. }
  519. case 86:
  520. case 87:
  521. return set[27];
  522. case 89:
  523. case 92:
  524. case 149:
  525. case 150:
  526. case 153:
  527. return set[28];
  528. case 90:
  529. case 102:
  530. case 147:
  531. {
  532. BitArray a = new BitArray(239);
  533. a.Set(233, true);
  534. return a;
  535. }
  536. case 94:
  537. {
  538. BitArray a = new BitArray(239);
  539. a.Set(26, true);
  540. a.Set(36, true);
  541. a.Set(147, true);
  542. return a;
  543. }
  544. case 95:
  545. {
  546. BitArray a = new BitArray(239);
  547. a.Set(26, true);
  548. a.Set(147, true);
  549. return a;
  550. }
  551. case 96:
  552. case 685:
  553. {
  554. BitArray a = new BitArray(239);
  555. a.Set(26, true);
  556. return a;
  557. }
  558. case 103:
  559. case 353:
  560. {
  561. BitArray a = new BitArray(239);
  562. a.Set(231, true);
  563. return a;
  564. }
  565. case 104:
  566. {
  567. BitArray a = new BitArray(239);
  568. a.Set(230, true);
  569. return a;
  570. }
  571. case 105:
  572. {
  573. BitArray a = new BitArray(239);
  574. a.Set(224, true);
  575. return a;
  576. }
  577. case 106:
  578. {
  579. BitArray a = new BitArray(239);
  580. a.Set(223, true);
  581. return a;
  582. }
  583. case 107:
  584. case 299:
  585. {
  586. BitArray a = new BitArray(239);
  587. a.Set(218, true);
  588. return a;
  589. }
  590. case 108:
  591. {
  592. BitArray a = new BitArray(239);
  593. a.Set(213, true);
  594. return a;
  595. }
  596. case 109:
  597. {
  598. BitArray a = new BitArray(239);
  599. a.Set(212, true);
  600. return a;
  601. }
  602. case 110:
  603. {
  604. BitArray a = new BitArray(239);
  605. a.Set(211, true);
  606. return a;
  607. }
  608. case 111:
  609. case 455:
  610. {
  611. BitArray a = new BitArray(239);
  612. a.Set(210, true);
  613. return a;
  614. }
  615. case 112:
  616. {
  617. BitArray a = new BitArray(239);
  618. a.Set(209, true);
  619. return a;
  620. }
  621. case 113:
  622. {
  623. BitArray a = new BitArray(239);
  624. a.Set(206, true);
  625. return a;
  626. }
  627. case 114:
  628. {
  629. BitArray a = new BitArray(239);
  630. a.Set(203, true);
  631. return a;
  632. }
  633. case 115:
  634. case 359:
  635. {
  636. BitArray a = new BitArray(239);
  637. a.Set(197, true);
  638. return a;
  639. }
  640. case 116:
  641. case 600:
  642. case 619:
  643. {
  644. BitArray a = new BitArray(239);
  645. a.Set(186, true);
  646. return a;
  647. }
  648. case 117:
  649. {
  650. BitArray a = new BitArray(239);
  651. a.Set(184, true);
  652. return a;
  653. }
  654. case 118:
  655. {
  656. BitArray a = new BitArray(239);
  657. a.Set(176, true);
  658. return a;
  659. }
  660. case 119:
  661. {
  662. BitArray a = new BitArray(239);
  663. a.Set(170, true);
  664. return a;
  665. }
  666. case 120:
  667. case 316:
  668. case 323:
  669. case 338:
  670. {
  671. BitArray a = new BitArray(239);
  672. a.Set(163, true);
  673. return a;
  674. }
  675. case 122:
  676. {
  677. BitArray a = new BitArray(239);
  678. a.Set(147, true);
  679. return a;
  680. }
  681. case 123:
  682. case 226:
  683. case 231:
  684. case 233:
  685. {
  686. BitArray a = new BitArray(239);
  687. a.Set(146, true);
  688. return a;
  689. }
  690. case 124:
  691. case 228:
  692. case 232:
  693. {
  694. BitArray a = new BitArray(239);
  695. a.Set(143, true);
  696. return a;
  697. }
  698. case 125:
  699. {
  700. BitArray a = new BitArray(239);
  701. a.Set(139, true);
  702. return a;
  703. }
  704. case 126:
  705. {
  706. BitArray a = new BitArray(239);
  707. a.Set(133, true);
  708. return a;
  709. }
  710. case 127:
  711. case 258:
  712. {
  713. BitArray a = new BitArray(239);
  714. a.Set(127, true);
  715. return a;
  716. }
  717. case 128:
  718. case 151:
  719. case 251:
  720. {
  721. BitArray a = new BitArray(239);
  722. a.Set(126, true);
  723. return a;
  724. }
  725. case 129:
  726. {
  727. BitArray a = new BitArray(239);
  728. a.Set(124, true);
  729. return a;
  730. }
  731. case 130:
  732. {
  733. BitArray a = new BitArray(239);
  734. a.Set(121, true);
  735. return a;
  736. }
  737. case 131:
  738. case 196:
  739. {
  740. BitArray a = new BitArray(239);
  741. a.Set(116, true);
  742. return a;
  743. }
  744. case 132:
  745. {
  746. BitArray a = new BitArray(239);
  747. a.Set(108, true);
  748. return a;
  749. }
  750. case 133:
  751. {
  752. BitArray a = new BitArray(239);
  753. a.Set(107, true);
  754. return a;
  755. }
  756. case 134:
  757. {
  758. BitArray a = new BitArray(239);
  759. a.Set(104, true);
  760. return a;
  761. }
  762. case 135:
  763. case 637:
  764. {
  765. BitArray a = new BitArray(239);
  766. a.Set(98, true);
  767. return a;
  768. }
  769. case 136:
  770. {
  771. BitArray a = new BitArray(239);
  772. a.Set(87, true);
  773. return a;
  774. }
  775. case 137:
  776. {
  777. BitArray a = new BitArray(239);
  778. a.Set(84, true);
  779. return a;
  780. }
  781. case 138:
  782. case 208:
  783. case 238:
  784. {
  785. BitArray a = new BitArray(239);
  786. a.Set(70, true);
  787. return a;
  788. }
  789. case 139:
  790. {
  791. BitArray a = new BitArray(239);
  792. a.Set(67, true);
  793. return a;
  794. }
  795. case 140:
  796. {
  797. BitArray a = new BitArray(239);
  798. a.Set(66, true);
  799. return a;
  800. }
  801. case 141:
  802. {
  803. BitArray a = new BitArray(239);
  804. a.Set(65, true);
  805. return a;
  806. }
  807. case 142:
  808. {
  809. BitArray a = new BitArray(239);
  810. a.Set(64, true);
  811. return a;
  812. }
  813. case 143:
  814. {
  815. BitArray a = new BitArray(239);
  816. a.Set(62, true);
  817. return a;
  818. }
  819. case 144:
  820. case 250:
  821. {
  822. BitArray a = new BitArray(239);
  823. a.Set(58, true);
  824. return a;
  825. }
  826. case 145:
  827. {
  828. BitArray a = new BitArray(239);
  829. a.Set(2, true);
  830. return a;
  831. }
  832. case 146:
  833. return set[29];
  834. case 154:
  835. return set[30];
  836. case 159:
  837. return set[31];
  838. case 160:
  839. return set[32];
  840. case 161:
  841. case 162:
  842. case 479:
  843. case 480:
  844. return set[33];
  845. case 164:
  846. return set[34];
  847. case 173:
  848. case 174:
  849. case 319:
  850. case 328:
  851. return set[35];
  852. case 175:
  853. case 457:
  854. return set[36];
  855. case 176:
  856. case 375:
  857. {
  858. BitArray a = new BitArray(239);
  859. a.Set(135, true);
  860. return a;
  861. }
  862. case 183:
  863. return set[37];
  864. case 190:
  865. {
  866. BitArray a = new BitArray(239);
  867. a.Set(58, true);
  868. a.Set(126, true);
  869. return a;
  870. }
  871. case 191:
  872. case 192:
  873. return set[38];
  874. case 194:
  875. {
  876. BitArray a = new BitArray(239);
  877. a.Set(171, true);
  878. return a;
  879. }
  880. case 198:
  881. case 212:
  882. case 230:
  883. case 235:
  884. case 241:
  885. case 243:
  886. case 247:
  887. case 249:
  888. return set[39];
  889. case 200:
  890. case 201:
  891. {
  892. BitArray a = new BitArray(239);
  893. a.Set(63, true);
  894. a.Set(138, true);
  895. return a;
  896. }
  897. case 202:
  898. case 204:
  899. case 320:
  900. {
  901. BitArray a = new BitArray(239);
  902. a.Set(138, true);
  903. return a;
  904. }
  905. case 206:
  906. case 207:
  907. case 209:
  908. case 211:
  909. case 213:
  910. case 214:
  911. case 224:
  912. case 229:
  913. case 234:
  914. case 242:
  915. case 246:
  916. case 269:
  917. case 273:
  918. return set[40];
  919. case 210:
  920. {
  921. BitArray a = new BitArray(239);
  922. a.Set(22, true);
  923. a.Set(143, true);
  924. return a;
  925. }
  926. case 216:
  927. return set[41];
  928. case 219:
  929. case 278:
  930. return set[42];
  931. case 220:
  932. case 279:
  933. return set[43];
  934. case 225:
  935. {
  936. BitArray a = new BitArray(239);
  937. a.Set(22, true);
  938. a.Set(70, true);
  939. return a;
  940. }
  941. case 227:
  942. {
  943. BitArray a = new BitArray(239);
  944. a.Set(133, true);
  945. a.Set(143, true);
  946. a.Set(146, true);
  947. return a;
  948. }
  949. case 236:
  950. case 237:
  951. return set[44];
  952. case 240:
  953. {
  954. BitArray a = new BitArray(239);
  955. a.Set(64, true);
  956. a.Set(104, true);
  957. return a;
  958. }
  959. case 245:
  960. return set[45];
  961. case 252:
  962. case 552:
  963. case 663:
  964. case 674:
  965. case 682:
  966. {
  967. BitArray a = new BitArray(239);
  968. a.Set(127, true);
  969. a.Set(210, true);
  970. return a;
  971. }
  972. case 254:
  973. case 255:
  974. return set[46];
  975. case 261:
  976. case 262:
  977. return set[47];
  978. case 263:
  979. return set[48];
  980. case 266:
  981. return set[49];
  982. case 267:
  983. case 268:
  984. case 381:
  985. return set[50];
  986. case 270:
  987. case 275:
  988. case 365:
  989. case 655:
  990. case 656:
  991. case 658:
  992. case 693:
  993. case 710:
  994. case 711:
  995. case 713:
  996. case 722:
  997. case 723:
  998. case 725:
  999. case 737:
  1000. {
  1001. BitArray a = new BitArray(239);
  1002. a.Set(1, true);
  1003. a.Set(21, true);
  1004. a.Set(22, true);
  1005. return a;
  1006. }
  1007. case 272:
  1008. {
  1009. BitArray a = new BitArray(239);
  1010. a.Set(226, true);
  1011. return a;
  1012. }
  1013. case 280:
  1014. case 281:
  1015. return set[51];
  1016. case 285:
  1017. case 327:
  1018. case 342:
  1019. case 404:
  1020. return set[52];
  1021. case 288:
  1022. case 289:
  1023. case 309:
  1024. case 310:
  1025. case 324:
  1026. case 325:
  1027. case 339:
  1028. case 340:
  1029. return set[53];
  1030. case 290:
  1031. case 382:
  1032. case 385:
  1033. {
  1034. BitArray a = new BitArray(239);
  1035. a.Set(1, true);
  1036. a.Set(21, true);
  1037. a.Set(111, true);
  1038. return a;
  1039. }
  1040. case 291:
  1041. {
  1042. BitArray a = new BitArray(239);
  1043. a.Set(108, true);
  1044. a.Set(124, true);
  1045. a.Set(231, true);
  1046. return a;
  1047. }
  1048. case 292:
  1049. return set[54];
  1050. case 293:
  1051. case 312:
  1052. return set[55];
  1053. case 294:
  1054. {
  1055. BitArray a = new BitArray(239);
  1056. a.Set(5, true);
  1057. return a;
  1058. }
  1059. case 297:
  1060. {
  1061. BitArray a = new BitArray(239);
  1062. a.Set(75, true);
  1063. a.Set(113, true);
  1064. a.Set(123, true);
  1065. return a;
  1066. }
  1067. case 301:
  1068. case 302:
  1069. return set[56];
  1070. case 303:
  1071. case 308:
  1072. {
  1073. BitArray a = new BitArray(239);
  1074. a.Set(1, true);
  1075. a.Set(21, true);
  1076. a.Set(229, true);
  1077. return a;
  1078. }
  1079. case 305:
  1080. case 306:
  1081. return set[57];
  1082. case 311:
  1083. return set[58];
  1084. case 313:
  1085. {
  1086. BitArray a = new BitArray(239);
  1087. a.Set(118, true);
  1088. return a;
  1089. }
  1090. case 314:
  1091. case 315:
  1092. return set[59];
  1093. case 317:
  1094. case 318:
  1095. return set[60];
  1096. case 329:
  1097. case 330:
  1098. return set[61];
  1099. case 331:
  1100. return set[62];
  1101. case 333:
  1102. {
  1103. BitArray a = new BitArray(239);
  1104. a.Set(20, true);
  1105. a.Set(138, true);
  1106. return a;
  1107. }
  1108. case 336:
  1109. {
  1110. BitArray a = new BitArray(239);
  1111. a.Set(1, true);
  1112. a.Set(21, true);
  1113. a.Set(205, true);
  1114. return a;
  1115. }
  1116. case 344:
  1117. return set[63];
  1118. case 345:
  1119. case 349:
  1120. {
  1121. BitArray a = new BitArray(239);
  1122. a.Set(152, true);
  1123. return a;
  1124. }
  1125. case 346:
  1126. return set[64];
  1127. case 354:
  1128. case 355:
  1129. return set[65];
  1130. case 358:
  1131. {
  1132. BitArray a = new BitArray(239);
  1133. a.Set(74, true);
  1134. a.Set(113, true);
  1135. return a;
  1136. }
  1137. case 360:
  1138. case 361:
  1139. return set[66];
  1140. case 363:
  1141. case 364:
  1142. return set[67];
  1143. case 366:
  1144. case 368:
  1145. return set[68];
  1146. case 371:
  1147. case 377:
  1148. {
  1149. BitArray a = new BitArray(239);
  1150. a.Set(1, true);
  1151. a.Set(21, true);
  1152. a.Set(214, true);
  1153. return a;
  1154. }
  1155. case 374:
  1156. {
  1157. BitArray a = new BitArray(239);
  1158. a.Set(111, true);
  1159. a.Set(112, true);
  1160. a.Set(113, true);
  1161. return a;
  1162. }
  1163. case 378:
  1164. {
  1165. BitArray a = new BitArray(239);
  1166. a.Set(1, true);
  1167. a.Set(21, true);
  1168. a.Set(135, true);
  1169. return a;
  1170. }
  1171. case 379:
  1172. case 380:
  1173. case 452:
  1174. case 453:
  1175. return set[69];
  1176. case 383:
  1177. case 384:
  1178. case 386:
  1179. case 387:
  1180. return set[70];
  1181. case 389:
  1182. return set[71];
  1183. case 398:
  1184. {
  1185. BitArray a = new BitArray(239);
  1186. a.Set(211, true);
  1187. a.Set(233, true);
  1188. return a;
  1189. }
  1190. case 400:
  1191. case 401:
  1192. case 406:
  1193. case 407:
  1194. return set[72];
  1195. case 402:
  1196. case 408:
  1197. return set[73];
  1198. case 403:
  1199. case 411:
  1200. case 418:
  1201. return set[74];
  1202. case 409:
  1203. case 410:
  1204. case 416:
  1205. case 417:
  1206. case 700:
  1207. case 701:
  1208. return set[75];
  1209. case 425:
  1210. case 426:
  1211. return set[76];
  1212. case 428:
  1213. case 430:
  1214. case 431:
  1215. case 591:
  1216. case 643:
  1217. return set[77];
  1218. case 432:
  1219. case 433:
  1220. return set[78];
  1221. case 434:
  1222. case 435:
  1223. return set[79];
  1224. case 436:
  1225. return set[80];
  1226. case 437:
  1227. case 441:
  1228. {
  1229. BitArray a = new BitArray(239);
  1230. a.Set(20, true);
  1231. a.Set(22, true);
  1232. a.Set(38, true);
  1233. return a;
  1234. }
  1235. case 446:
  1236. case 450:
  1237. return set[81];
  1238. case 447:
  1239. case 448:
  1240. return set[82];
  1241. case 449:
  1242. {
  1243. BitArray a = new BitArray(239);
  1244. a.Set(21, true);
  1245. return a;
  1246. }
  1247. case 456:
  1248. return set[83];
  1249. case 458:
  1250. case 471:
  1251. return set[84];
  1252. case 459:
  1253. case 472:
  1254. return set[85];
  1255. case 460:
  1256. case 461:
  1257. case 736:
  1258. {
  1259. BitArray a = new BitArray(239);
  1260. a.Set(10, true);
  1261. return a;
  1262. }
  1263. case 466:
  1264. {
  1265. BitArray a = new BitArray(239);
  1266. a.Set(12, true);
  1267. return a;
  1268. }
  1269. case 468:
  1270. {
  1271. BitArray a = new BitArray(239);
  1272. a.Set(13, true);
  1273. return a;
  1274. }
  1275. case 469:
  1276. return set[86];
  1277. case 470:
  1278. return set[87];
  1279. case 482:
  1280. return set[88];
  1281. case 491:
  1282. case 493:
  1283. return set[89];
  1284. case 496:
  1285. case 497:
  1286. case 559:
  1287. case 560:
  1288. case 688:
  1289. case 689:
  1290. return set[90];
  1291. case 499:
  1292. case 500:
  1293. case 501:
  1294. case 506:
  1295. case 507:
  1296. case 562:
  1297. case 691:
  1298. case 718:
  1299. case 727:
  1300. return set[91];
  1301. case 502:
  1302. case 508:
  1303. case 517:
  1304. return set[92];
  1305. case 503:
  1306. case 504:
  1307. case 509:
  1308. case 510:
  1309. {
  1310. BitArray a = new BitArray(239);
  1311. a.Set(22, true);
  1312. a.Set(38, true);
  1313. a.Set(63, true);
  1314. return a;
  1315. }
  1316. case 511:
  1317. case 513:
  1318. case 518:
  1319. return set[93];
  1320. case 514:
  1321. case 516:
  1322. return set[94];
  1323. case 523:
  1324. case 536:
  1325. case 537:
  1326. case 593:
  1327. case 670:
  1328. {
  1329. BitArray a = new BitArray(239);
  1330. a.Set(1, true);
  1331. a.Set(21, true);
  1332. a.Set(63, true);
  1333. return a;
  1334. }
  1335. case 524:
  1336. case 525:
  1337. case 597:
  1338. case 598:
  1339. return set[95];
  1340. case 533:
  1341. case 534:
  1342. case 541:
  1343. {
  1344. BitArray a = new BitArray(239);
  1345. a.Set(115, true);
  1346. return a;
  1347. }
  1348. case 539:
  1349. case 540:
  1350. return set[96];
  1351. case 544:
  1352. case 545:
  1353. return set[97];
  1354. case 546:
  1355. case 547:
  1356. case 606:
  1357. {
  1358. BitArray a = new BitArray(239);
  1359. a.Set(1, true);
  1360. a.Set(20, true);
  1361. a.Set(21, true);
  1362. return a;
  1363. }
  1364. case 551:
  1365. {
  1366. BitArray a = new BitArray(239);
  1367. a.Set(103, true);
  1368. return a;
  1369. }
  1370. case 563:
  1371. case 564:
  1372. case 576:
  1373. {
  1374. BitArray a = new BitArray(239);
  1375. a.Set(84, true);
  1376. a.Set(155, true);
  1377. a.Set(209, true);
  1378. return a;
  1379. }
  1380. case 569:
  1381. case 570:
  1382. return set[98];
  1383. case 571:
  1384. case 572:
  1385. return set[99];
  1386. case 573:
  1387. case 574:
  1388. case 585:
  1389. return set[100];
  1390. case 579:
  1391. case 580:
  1392. return set[101];
  1393. case 581:
  1394. case 582:
  1395. case 707:
  1396. return set[102];
  1397. case 583:
  1398. return set[103];
  1399. case 584:
  1400. return set[104];
  1401. case 586:
  1402. case 596:
  1403. {
  1404. BitArray a = new BitArray(239);
  1405. a.Set(172, true);
  1406. return a;
  1407. }
  1408. case 602:
  1409. case 603:
  1410. return set[105];
  1411. case 604:
  1412. return set[106];
  1413. case 605:
  1414. case 636:
  1415. return set[107];
  1416. case 608:
  1417. case 609:
  1418. case 610:
  1419. case 627:
  1420. return set[108];
  1421. case 611:
  1422. case 615:
  1423. case 625:
  1424. {
  1425. BitArray a = new BitArray(239);
  1426. a.Set(128, true);
  1427. a.Set(198, true);
  1428. return a;
  1429. }
  1430. case 617:
  1431. return set[109];
  1432. case 620:
  1433. return set[110];
  1434. case 621:
  1435. return set[111];
  1436. case 630:
  1437. case 631:
  1438. case 633:
  1439. case 699:
  1440. case 702:
  1441. return set[112];
  1442. case 634:
  1443. case 635:
  1444. return set[113];
  1445. case 638:
  1446. case 640:
  1447. case 649:
  1448. {
  1449. BitArray a = new BitArray(239);
  1450. a.Set(119, true);
  1451. return a;
  1452. }
  1453. case 639:
  1454. return set[114];
  1455. case 641:
  1456. return set[115];
  1457. case 647:
  1458. {
  1459. BitArray a = new BitArray(239);
  1460. a.Set(56, true);
  1461. a.Set(189, true);
  1462. a.Set(193, true);
  1463. return a;
  1464. }
  1465. case 651:
  1466. case 652:
  1467. return set[116];
  1468. case 653:
  1469. case 660:
  1470. {
  1471. BitArray a = new BitArray(239);
  1472. a.Set(1, true);
  1473. a.Set(21, true);
  1474. a.Set(136, true);
  1475. return a;
  1476. }
  1477. case 661:
  1478. {
  1479. BitArray a = new BitArray(239);
  1480. a.Set(101, true);
  1481. return a;
  1482. }
  1483. case 662:
  1484. return set[117];
  1485. case 665:
  1486. case 666:
  1487. {
  1488. BitArray a = new BitArray(239);
  1489. a.Set(149, true);
  1490. return a;
  1491. }
  1492. case 667:
  1493. case 673:
  1494. case 745:
  1495. {
  1496. BitArray a = new BitArray(239);
  1497. a.Set(3, true);
  1498. return a;
  1499. }
  1500. case 668:
  1501. return set[118];
  1502. case 677:
  1503. case 678:
  1504. return set[119];
  1505. case 679:
  1506. case 687:
  1507. return set[120];
  1508. case 683:
  1509. return set[121];
  1510. case 692:
  1511. case 694:
  1512. return set[122];
  1513. case 695:
  1514. case 706:
  1515. return set[123];
  1516. case 696:
  1517. case 697:
  1518. return set[124];
  1519. case 698:
  1520. return set[125];
  1521. case 708:
  1522. {
  1523. BitArray a = new BitArray(239);
  1524. a.Set(136, true);
  1525. return a;
  1526. }
  1527. case 714:
  1528. {
  1529. BitArray a = new BitArray(239);
  1530. a.Set(140, true);
  1531. return a;
  1532. }
  1533. case 717:
  1534. case 726:
  1535. {
  1536. BitArray a = new BitArray(239);
  1537. a.Set(169, true);
  1538. return a;
  1539. }
  1540. case 731:
  1541. return set[126];
  1542. case 732:
  1543. {
  1544. BitArray a = new BitArray(239);
  1545. a.Set(160, true);
  1546. return a;
  1547. }
  1548. case 733:
  1549. {
  1550. BitArray a = new BitArray(239);
  1551. a.Set(137, true);
  1552. return a;
  1553. }
  1554. case 734:
  1555. case 735:
  1556. case 738:
  1557. case 739:
  1558. return set[127];
  1559. case 740:
  1560. case 747:
  1561. return set[128];
  1562. case 741:
  1563. return set[129];
  1564. case 746:
  1565. {
  1566. BitArray a = new BitArray(239);
  1567. a.Set(11, true);
  1568. return a;
  1569. }
  1570. case 748:
  1571. {
  1572. BitArray a = new BitArray(239);
  1573. a.Set(173, true);
  1574. return a;
  1575. }
  1576. case 749:
  1577. return set[130];
  1578. case 750:
  1579. {
  1580. BitArray a = new BitArray(239);
  1581. a.Set(67, true);
  1582. a.Set(213, true);
  1583. return a;
  1584. }
  1585. case 751:
  1586. return set[131];
  1587. default: throw new InvalidOperationException();
  1588. }
  1589. }
  1590. const bool T = true;
  1591. const bool x = false;
  1592. int currentState = 0;
  1593. readonly Stack<int> stateStack = new Stack<int>();
  1594. bool wasQualifierTokenAtStart = false;
  1595. bool nextTokenIsPotentialStartOfExpression = false;
  1596. bool readXmlIdentifier = false;
  1597. bool identifierExpected = false;
  1598. bool nextTokenIsStartOfImportsOrAccessExpression = false;
  1599. bool isMissingModifier = false;
  1600. bool isAlreadyInExpr = false;
  1601. bool wasNormalAttribute = false;
  1602. int activeArgument = 0;
  1603. List<Token> errors = new List<Token>();
  1604. public ExpressionFinder()
  1605. {
  1606. stateStack.Push(-1); // required so that we don't crash when leaving the root production
  1607. }
  1608. void Expect(int expectedKind, Token la)
  1609. {
  1610. if (la.kind != expectedKind) {
  1611. Error(la);
  1612. output.AppendLine("expected: " + expectedKind);
  1613. //Console.WriteLine("expected: " + expectedKind);
  1614. }
  1615. }
  1616. void Error(Token la)
  1617. {
  1618. output.AppendLine("not expected: " + la);
  1619. //Console.WriteLine("not expected: " + la);
  1620. errors.Add(la);
  1621. }
  1622. Token t;
  1623. public void InformToken(Token la)
  1624. {
  1625. switchlbl: switch (currentState) {
  1626. case 0: {
  1627. PushContext(Context.Global, la, t);
  1628. goto case 1;
  1629. }
  1630. case 1: {
  1631. if (la == null) { currentState = 1; break; }
  1632. if (la.kind == 173) {
  1633. stateStack.Push(1);
  1634. goto case 748;
  1635. } else {
  1636. goto case 2;
  1637. }
  1638. }
  1639. case 2: {
  1640. if (la == null) { currentState = 2; break; }
  1641. if (la.kind == 137) {
  1642. stateStack.Push(2);
  1643. goto case 733;
  1644. } else {
  1645. goto case 3;
  1646. }
  1647. }
  1648. case 3: {
  1649. if (la == null) { currentState = 3; break; }
  1650. if (la.kind == 40) {
  1651. stateStack.Push(3);
  1652. goto case 443;
  1653. } else {
  1654. goto case 4;
  1655. }
  1656. }
  1657. case 4: {
  1658. if (la == null) { currentState = 4; break; }
  1659. if (set[3].Get(la.kind)) {
  1660. stateStack.Push(4);
  1661. goto case 5;
  1662. } else {
  1663. PopContext();
  1664. currentState = stateStack.Pop();
  1665. goto switchlbl;
  1666. }
  1667. }
  1668. case 5: {
  1669. if (la == null) { currentState = 5; break; }
  1670. if (la.kind == 160) {
  1671. currentState = 729;
  1672. break;
  1673. } else {
  1674. if (set[4].Get(la.kind)) {
  1675. goto case 7;
  1676. } else {
  1677. goto case 6;
  1678. }
  1679. }
  1680. }
  1681. case 6: {
  1682. Error(la);
  1683. currentState = stateStack.Pop();
  1684. goto switchlbl;
  1685. }
  1686. case 7: {
  1687. if (la == null) { currentState = 7; break; }
  1688. if (la.kind == 40) {
  1689. stateStack.Push(7);
  1690. goto case 443;
  1691. } else {
  1692. goto case 8;
  1693. }
  1694. }
  1695. case 8: {
  1696. if (la == null) { currentState = 8; break; }
  1697. if (set[132].Get(la.kind)) {
  1698. currentState = 8;
  1699. break;
  1700. } else {
  1701. if (la.kind == 84 || la.kind == 155 || la.kind == 209) {
  1702. goto case 563;
  1703. } else {
  1704. if (la.kind == 103) {
  1705. currentState = 552;
  1706. break;
  1707. } else {
  1708. if (la.kind == 115) {
  1709. goto case 533;
  1710. } else {
  1711. if (la.kind == 142) {
  1712. goto case 9;
  1713. } else {
  1714. goto case 6;
  1715. }
  1716. }
  1717. }
  1718. }
  1719. }
  1720. }
  1721. case 9: {
  1722. PushContext(Context.TypeDeclaration, la, t);
  1723. goto case 10;
  1724. }
  1725. case 10: {
  1726. if (la == null) { currentState = 10; break; }
  1727. Expect(142, la); // "Interface"
  1728. currentState = 11;
  1729. break;
  1730. }
  1731. case 11: {
  1732. PushContext(Context.Identifier, la, t);
  1733. SetIdentifierExpected(la);
  1734. stateStack.Push(12);
  1735. goto case 205;
  1736. }
  1737. case 12: {
  1738. PopContext();
  1739. goto case 13;
  1740. }
  1741. case 13: {
  1742. if (la == null) { currentState = 13; break; }
  1743. if (la.kind == 37) {
  1744. currentState = 726;
  1745. break;
  1746. } else {
  1747. goto case 14;
  1748. }
  1749. }
  1750. case 14: {
  1751. stateStack.Push(15);
  1752. goto case 23;
  1753. }
  1754. case 15: {
  1755. isMissingModifier = true;
  1756. goto case 16;
  1757. }
  1758. case 16: {
  1759. if (la == null) { currentState = 16; break; }
  1760. if (la.kind == 140) {
  1761. currentState = 721;
  1762. break;
  1763. } else {
  1764. goto case 17;
  1765. }
  1766. }
  1767. case 17: {
  1768. isMissingModifier = true;
  1769. goto case 18;
  1770. }
  1771. case 18: {
  1772. if (la == null) { currentState = 18; break; }
  1773. if (set[10].Get(la.kind)) {
  1774. goto case 26;
  1775. } else {
  1776. isMissingModifier = false;
  1777. goto case 19;
  1778. }
  1779. }
  1780. case 19: {
  1781. if (la == null) { currentState = 19; break; }
  1782. Expect(113, la); // "End"
  1783. currentState = 20;
  1784. break;
  1785. }
  1786. case 20: {
  1787. if (la == null) { currentState = 20; break; }
  1788. Expect(142, la); // "Interface"
  1789. currentState = 21;
  1790. break;
  1791. }
  1792. case 21: {
  1793. stateStack.Push(22);
  1794. goto case 23;
  1795. }
  1796. case 22: {
  1797. PopContext();
  1798. currentState = stateStack.Pop();
  1799. goto switchlbl;
  1800. }
  1801. case 23: {
  1802. if (la != null) CurrentBlock.lastExpressionStart = la.Location;
  1803. goto case 24;
  1804. }
  1805. case 24: {
  1806. if (la == null) { currentState = 24; break; }
  1807. if (la.kind == 1) {
  1808. goto case 25;
  1809. } else {
  1810. if (la.kind == 21) {
  1811. currentState = stateStack.Pop();
  1812. break;
  1813. } else {
  1814. goto case 6;
  1815. }
  1816. }
  1817. }
  1818. case 25: {
  1819. if (la == null) { currentState = 25; break; }
  1820. currentState = stateStack.Pop();
  1821. break;
  1822. }
  1823. case 26: {
  1824. isMissingModifier = true;
  1825. goto case 27;
  1826. }
  1827. case 27: {
  1828. if (la == null) { currentState = 27; break; }
  1829. if (la.kind == 40) {
  1830. stateStack.Push(26);
  1831. goto case 443;
  1832. } else {
  1833. isMissingModifier = true;
  1834. goto case 28;
  1835. }
  1836. }
  1837. case 28: {
  1838. if (la == null) { currentState = 28; break; }
  1839. if (set[133].Get(la.kind)) {
  1840. currentState = 720;
  1841. break;
  1842. } else {
  1843. isMissingModifier = false;
  1844. goto case 29;
  1845. }
  1846. }
  1847. case 29: {
  1848. if (la == null) { currentState = 29; break; }
  1849. if (la.kind == 84 || la.kind == 155 || la.kind == 209) {
  1850. stateStack.Push(17);
  1851. goto case 563;
  1852. } else {
  1853. if (la.kind == 103) {
  1854. stateStack.Push(17);
  1855. goto case 551;
  1856. } else {
  1857. if (la.kind == 115) {
  1858. stateStack.Push(17);
  1859. goto case 533;
  1860. } else {
  1861. if (la.kind == 142) {
  1862. stateStack.Push(17);
  1863. goto case 9;
  1864. } else {
  1865. if (set[13].Get(la.kind)) {
  1866. stateStack.Push(17);
  1867. goto case 30;
  1868. } else {
  1869. Error(la);
  1870. goto case 17;
  1871. }
  1872. }
  1873. }
  1874. }
  1875. }
  1876. }
  1877. case 30: {
  1878. if (la == null) { currentState = 30; break; }
  1879. if (la.kind == 119) {
  1880. currentState = 527;
  1881. break;
  1882. } else {
  1883. if (la.kind == 186) {
  1884. currentState = 520;
  1885. break;
  1886. } else {
  1887. if (la.kind == 127 || la.kind == 210) {
  1888. currentState = 31;
  1889. break;
  1890. } else {
  1891. goto case 6;
  1892. }
  1893. }
  1894. }
  1895. }
  1896. case 31: {
  1897. PushContext(Context.Identifier, la, t);
  1898. SetIdentifierExpected(la);
  1899. goto case 32;
  1900. }
  1901. case 32: {
  1902. if (la == null) { currentState = 32; break; }
  1903. currentState = 33;
  1904. break;
  1905. }
  1906. case 33: {
  1907. PopContext();
  1908. goto case 34;
  1909. }
  1910. case 34: {
  1911. if (la == null) { currentState = 34; break; }
  1912. if (la.kind == 37) {
  1913. currentState = 496;
  1914. break;
  1915. } else {
  1916. if (la.kind == 63) {
  1917. currentState = 35;
  1918. break;
  1919. } else {
  1920. goto case 23;
  1921. }
  1922. }
  1923. }
  1924. case 35: {
  1925. PushContext(Context.Type, la, t);
  1926. stateStack.Push(36);
  1927. goto case 37;
  1928. }
  1929. case 36: {
  1930. PopContext();
  1931. goto case 23;
  1932. }
  1933. case 37: {
  1934. if (la == null) { currentState = 37; break; }
  1935. if (la.kind == 130) {
  1936. currentState = 38;
  1937. break;
  1938. } else {
  1939. if (set[6].Get(la.kind)) {
  1940. currentState = 38;
  1941. break;
  1942. } else {
  1943. if (set[134].Get(la.kind)) {
  1944. currentState = 38;
  1945. break;
  1946. } else {
  1947. if (la.kind == 33) {
  1948. currentState = 38;
  1949. break;
  1950. } else {
  1951. Error(la);
  1952. goto case 38;
  1953. }
  1954. }
  1955. }
  1956. }
  1957. }
  1958. case 38: {
  1959. if (la == null) { currentState = 38; break; }
  1960. if (la.kind == 37) {
  1961. stateStack.Push(38);
  1962. goto case 42;
  1963. } else {
  1964. goto case 39;
  1965. }
  1966. }
  1967. case 39: {
  1968. if (la == null) { currentState = 39; break; }
  1969. if (la.kind == 26) {
  1970. currentState = 40;
  1971. break;
  1972. } else {
  1973. currentState = stateStack.Pop();
  1974. goto switchlbl;
  1975. }
  1976. }
  1977. case 40: {
  1978. stateStack.Push(41);
  1979. goto case 101;
  1980. }
  1981. case 41: {
  1982. if (la == null) { currentState = 41; break; }
  1983. if (la.kind == 37) {
  1984. stateStack.Push(41);
  1985. goto case 42;
  1986. } else {
  1987. goto case 39;
  1988. }
  1989. }
  1990. case 42: {
  1991. if (la == null) { currentState = 42; break; }
  1992. Expect(37, la); // "("
  1993. currentState = 43;
  1994. break;
  1995. }
  1996. case 43: {
  1997. PushContext(Context.Expression, la, t);
  1998. nextTokenIsPotentialStartOfExpression = true;
  1999. goto case 44;
  2000. }
  2001. case 44: {
  2002. if (la == null) { currentState = 44; break; }
  2003. if (la.kind == 169) {
  2004. currentState = 491;
  2005. break;
  2006. } else {
  2007. if (set[22].Get(la.kind)) {
  2008. if (set[21].Get(la.kind)) {
  2009. stateStack.Push(45);
  2010. goto case 47;
  2011. } else {
  2012. goto case 45;
  2013. }
  2014. } else {
  2015. Error(la);
  2016. goto case 45;
  2017. }
  2018. }
  2019. }
  2020. case 45: {
  2021. PopContext();
  2022. goto case 46;
  2023. }
  2024. case 46: {
  2025. if (la == null) { currentState = 46; break; }
  2026. Expect(38, la); // ")"
  2027. currentState = stateStack.Pop();
  2028. break;
  2029. }
  2030. case 47: {
  2031. nextTokenIsPotentialStartOfExpression = true;
  2032. goto case 48;
  2033. }
  2034. case 48: {
  2035. if (la == null) { currentState = 48; break; }
  2036. if (set[23].Get(la.kind)) {
  2037. activeArgument = 0;
  2038. goto case 487;
  2039. } else {
  2040. if (la.kind == 22) {
  2041. activeArgument = 0;
  2042. goto case 49;
  2043. } else {
  2044. goto case 6;
  2045. }
  2046. }
  2047. }
  2048. case 49: {
  2049. if (la == null) { currentState = 49; break; }
  2050. Expect(22, la); // ","
  2051. currentState = 50;
  2052. break;
  2053. }
  2054. case 50: {
  2055. activeArgument++;
  2056. goto case 51;
  2057. }
  2058. case 51: {
  2059. nextTokenIsPotentialStartOfExpression = true;
  2060. goto case 52;
  2061. }
  2062. case 52: {
  2063. if (la == null) { currentState = 52; break; }
  2064. if (set[23].Get(la.kind)) {
  2065. stateStack.Push(53);
  2066. goto case 55;
  2067. } else {
  2068. goto case 53;
  2069. }
  2070. }
  2071. case 53: {
  2072. if (la == null) { currentState = 53; break; }
  2073. if (la.kind == 22) {
  2074. currentState = 54;
  2075. break;
  2076. } else {
  2077. currentState = stateStack.Pop();
  2078. goto switchlbl;
  2079. }
  2080. }
  2081. case 54: {
  2082. activeArgument++;
  2083. goto case 51;
  2084. }
  2085. case 55: {
  2086. PushContext(Context.Expression, la, t);
  2087. goto case 56;
  2088. }
  2089. case 56: {
  2090. stateStack.Push(57);
  2091. goto case 75;
  2092. }
  2093. case 57: {
  2094. if (la == null) { currentState = 57; break; }
  2095. if (set[25].Get(la.kind)) {
  2096. stateStack.Push(56);
  2097. goto case 58;
  2098. } else {
  2099. PopContext();
  2100. currentState = stateStack.Pop();
  2101. goto switchlbl;
  2102. }
  2103. }
  2104. case 58: {
  2105. if (la == null) { currentState = 58; break; }
  2106. if (la.kind == 31) {
  2107. currentState = stateStack.Pop();
  2108. break;
  2109. } else {
  2110. if (la.kind == 30) {
  2111. currentState = stateStack.Pop();
  2112. break;
  2113. } else {
  2114. if (la.kind == 34) {
  2115. currentState = stateStack.Pop();
  2116. break;
  2117. } else {
  2118. if (la.kind == 25) {
  2119. currentState = stateStack.Pop();
  2120. break;
  2121. } else {
  2122. if (la.kind == 24) {
  2123. currentState = stateStack.Pop();
  2124. break;
  2125. } else {
  2126. if (la.kind == 32) {
  2127. currentState = stateStack.Pop();
  2128. break;
  2129. } else {
  2130. if (la.kind == 154) {
  2131. goto case 74;
  2132. } else {
  2133. if (la.kind == 20) {
  2134. goto case 73;
  2135. } else {
  2136. if (la.kind == 41) {
  2137. goto case 72;
  2138. } else {
  2139. if (la.kind == 40) {
  2140. goto case 71;
  2141. } else {
  2142. if (la.kind == 39) {
  2143. currentState = 70;
  2144. break;
  2145. } else {
  2146. if (la.kind == 43) {
  2147. goto case 69;
  2148. } else {
  2149. if (la.kind == 42) {
  2150. goto case 68;
  2151. } else {
  2152. if (la.kind == 150) {
  2153. goto case 67;
  2154. } else {
  2155. if (la.kind == 23) {
  2156. currentState = stateStack.Pop();
  2157. break;
  2158. } else {
  2159. if (la.kind == 60) {
  2160. goto case 66;
  2161. } else {
  2162. if (la.kind == 61) {
  2163. goto case 65;
  2164. } else {
  2165. if (la.kind == 175) {
  2166. goto case 64;
  2167. } else {
  2168. if (la.kind == 177) {
  2169. goto case 63;
  2170. } else {
  2171. if (la.kind == 236) {
  2172. goto case 62;
  2173. } else {
  2174. if (la.kind == 44) {
  2175. currentState = stateStack.Pop();
  2176. break;
  2177. } else {
  2178. if (la.kind == 45) {
  2179. currentState = stateStack.Pop();
  2180. break;
  2181. } else {
  2182. if (la.kind == 144) {
  2183. goto case 61;
  2184. } else {
  2185. if (la.kind == 145) {
  2186. goto case 60;
  2187. } else {
  2188. if (la.kind == 47) {
  2189. currentState = stateStack.Pop();
  2190. break;
  2191. } else {
  2192. if (la.kind == 49) {
  2193. currentState = stateStack.Pop();
  2194. break;
  2195. } else {
  2196. if (la.kind == 50) {
  2197. currentState = stateStack.Pop();
  2198. break;
  2199. } else {
  2200. if (la.kind == 51) {
  2201. currentState = stateStack.Pop();
  2202. break;
  2203. } else {
  2204. if (la.kind == 46) {
  2205. currentState = stateStack.Pop();
  2206. break;
  2207. } else {
  2208. if (la.kind == 48) {
  2209. currentState = stateStack.Pop();
  2210. break;
  2211. } else {
  2212. if (la.kind == 54) {
  2213. currentState = stateStack.Pop();
  2214. break;
  2215. } else {
  2216. if (la.kind == 52) {
  2217. currentState = stateStack.Pop();
  2218. break;
  2219. } else {
  2220. if (la.kind == 53) {
  2221. currentState = stateStack.Pop();
  2222. break;
  2223. } else {
  2224. if (la.kind == 216) {
  2225. goto case 59;
  2226. } else {
  2227. if (la.kind == 55) {
  2228. currentState = stateStack.Pop();
  2229. break;
  2230. } else {
  2231. goto case 6;
  2232. }
  2233. }
  2234. }
  2235. }
  2236. }
  2237. }
  2238. }
  2239. }
  2240. }
  2241. }
  2242. }
  2243. }
  2244. }
  2245. }
  2246. }
  2247. }
  2248. }
  2249. }
  2250. }
  2251. }
  2252. }
  2253. }
  2254. }
  2255. }
  2256. }
  2257. }
  2258. }
  2259. }
  2260. }
  2261. }
  2262. }
  2263. }
  2264. }
  2265. }
  2266. }
  2267. }
  2268. case 59: {
  2269. if (la == null) { currentState = 59; break; }
  2270. currentState = stateStack.Pop();
  2271. break;
  2272. }
  2273. case 60: {
  2274. if (la == null) { currentState = 60; break; }
  2275. currentState = stateStack.Pop();
  2276. break;
  2277. }
  2278. case 61: {
  2279. if (la == null) { currentState = 61; break; }
  2280. currentState = stateStack.Pop();
  2281. break;
  2282. }
  2283. case 62: {
  2284. if (la == null) { currentState = 62; break; }
  2285. currentState = stateStack.Pop();
  2286. break;
  2287. }
  2288. case 63: {
  2289. if (la == null) { currentState = 63; break; }
  2290. currentState = stateStack.Pop();
  2291. break;
  2292. }
  2293. case 64: {
  2294. if (la == null) { currentState = 64; break; }
  2295. currentState = stateStack.Pop();
  2296. break;
  2297. }
  2298. case 65: {
  2299. if (la == null) { currentState = 65; break; }
  2300. currentState = stateStack.Pop();
  2301. break;
  2302. }
  2303. case 66: {
  2304. if (la == null) { currentState = 66; break; }
  2305. currentState = stateStack.Pop();
  2306. break;
  2307. }
  2308. case 67: {
  2309. if (la == null) { currentState = 67; break; }
  2310. currentState = stateStack.Pop();
  2311. break;
  2312. }
  2313. case 68: {
  2314. if (la == null) { currentState = 68; break; }
  2315. currentState = stateStack.Pop();
  2316. break;
  2317. }
  2318. case 69: {
  2319. if (la == null) { currentState = 69; break; }
  2320. currentState = stateStack.Pop();
  2321. break;
  2322. }
  2323. case 70: {
  2324. wasNormalAttribute = false;
  2325. currentState = stateStack.Pop();
  2326. goto switchlbl;
  2327. }
  2328. case 71: {
  2329. if (la == null) { currentState = 71; break; }
  2330. currentState = stateStack.Pop();
  2331. break;
  2332. }
  2333. case 72: {
  2334. if (la == null) { currentState = 72; break; }
  2335. currentState = stateStack.Pop();
  2336. break;
  2337. }
  2338. case 73: {
  2339. if (la == null) { currentState = 73; break; }
  2340. currentState = stateStack.Pop();
  2341. break;
  2342. }
  2343. case 74: {
  2344. if (la == null) { currentState = 74; break; }
  2345. currentState = stateStack.Pop();
  2346. break;
  2347. }
  2348. case 75: {
  2349. PushContext(Context.Expression, la, t);
  2350. goto case 76;
  2351. }
  2352. case 76: {
  2353. nextTokenIsPotentialStartOfExpression = true;
  2354. goto case 77;
  2355. }
  2356. case 77: {
  2357. if (la == null) { currentState = 77; break; }
  2358. if (set[135].Get(la.kind)) {
  2359. currentState = 76;
  2360. break;
  2361. } else {
  2362. if (set[35].Get(la.kind)) {
  2363. stateStack.Push(159);
  2364. goto case 173;
  2365. } else {
  2366. if (la.kind == 220) {
  2367. currentState = 155;
  2368. break;
  2369. } else {
  2370. if (la.kind == 162) {
  2371. stateStack.Push(78);
  2372. goto case 85;
  2373. } else {
  2374. if (la.kind == 35) {
  2375. stateStack.Push(78);
  2376. goto case 79;
  2377. } else {
  2378. Error(la);
  2379. goto case 78;
  2380. }
  2381. }
  2382. }
  2383. }
  2384. }
  2385. }
  2386. case 78: {
  2387. PopContext();
  2388. currentState = stateStack.Pop();
  2389. goto switchlbl;
  2390. }
  2391. case 79: {
  2392. if (la == null) { currentState = 79; break; }
  2393. Expect(35, la); // "{"
  2394. currentState = 80;
  2395. break;
  2396. }
  2397. case 80: {
  2398. nextTokenIsPotentialStartOfExpression = true;
  2399. goto case 81;
  2400. }
  2401. case 81: {
  2402. if (la == null) { currentState = 81; break; }
  2403. if (set[23].Get(la.kind)) {
  2404. goto case 83;
  2405. } else {
  2406. goto case 82;
  2407. }
  2408. }
  2409. case 82: {
  2410. if (la == null) { currentState = 82; break; }
  2411. Expect(36, la); // "}"
  2412. currentState = stateStack.Pop();
  2413. break;
  2414. }
  2415. case 83: {
  2416. stateStack.Push(84);
  2417. goto case 55;
  2418. }
  2419. case 84: {
  2420. if (la == null) { currentState = 84; break; }
  2421. if (la.kind == 22) {
  2422. currentState = 83;
  2423. break;
  2424. } else {
  2425. goto case 82;
  2426. }
  2427. }
  2428. case 85: {
  2429. if (la == null) { currentState = 85; break; }
  2430. Expect(162, la); // "New"
  2431. currentState = 86;
  2432. break;
  2433. }
  2434. case 86: {
  2435. PushContext(Context.ObjectCreation, la, t);
  2436. goto case 87;
  2437. }
  2438. case 87: {
  2439. if (la == null) { currentState = 87; break; }
  2440. if (set[16].Get(la.kind)) {
  2441. stateStack.Push(146);
  2442. goto case 37;
  2443. } else {
  2444. if (la.kind == 233) {
  2445. PushContext(Context.ObjectInitializer, la, t);
  2446. goto case 90;
  2447. } else {
  2448. goto case 88;
  2449. }
  2450. }
  2451. }
  2452. case 88: {
  2453. Error(la);
  2454. goto case 89;
  2455. }
  2456. case 89: {
  2457. PopContext();
  2458. currentState = stateStack.Pop();
  2459. goto switchlbl;
  2460. }
  2461. case 90: {
  2462. if (la == null) { currentState = 90; break; }
  2463. Expect(233, la); // "With"
  2464. currentState = 91;
  2465. break;
  2466. }
  2467. case 91: {
  2468. stateStack.Push(92);
  2469. goto case 93;
  2470. }
  2471. case 92: {
  2472. PopContext();
  2473. goto case 89;
  2474. }
  2475. case 93: {
  2476. if (la == null) { currentState = 93; break; }
  2477. Expect(35, la); // "{"
  2478. currentState = 94;
  2479. break;
  2480. }
  2481. case 94: {
  2482. if (la == null) { currentState = 94; break; }
  2483. if (la.kind == 26 || la.kind == 147) {
  2484. goto case 95;
  2485. } else {
  2486. goto case 82;
  2487. }
  2488. }
  2489. case 95: {
  2490. if (la == null) { currentState = 95; break; }
  2491. if (la.kind == 147) {
  2492. currentState = 96;
  2493. break;
  2494. } else {
  2495. goto case 96;
  2496. }
  2497. }
  2498. case 96: {
  2499. if (la == null) { currentState = 96; break; }
  2500. Expect(26, la); // "."
  2501. currentState = 97;
  2502. break;
  2503. }
  2504. case 97: {
  2505. stateStack.Push(98);
  2506. goto case 101;
  2507. }
  2508. case 98: {
  2509. if (la == null) { currentState = 98; break; }
  2510. Expect(20, la); // "="
  2511. currentState = 99;
  2512. break;
  2513. }
  2514. case 99: {
  2515. stateStack.Push(100);
  2516. goto case 55;
  2517. }
  2518. case 100: {
  2519. if (la == null) { currentState = 100; break; }
  2520. if (la.kind == 22) {
  2521. currentState = 95;
  2522. break;
  2523. } else {
  2524. goto case 82;
  2525. }
  2526. }
  2527. case 101: {
  2528. if (la == null) { currentState = 101; break; }
  2529. if (la.kind == 2) {
  2530. goto case 145;
  2531. } else {
  2532. if (la.kind == 56) {
  2533. currentState = stateStack.Pop();
  2534. break;
  2535. } else {
  2536. if (la.kind == 57) {
  2537. currentState = stateStack.Pop();
  2538. break;
  2539. } else {
  2540. if (la.kind == 58) {
  2541. goto case 144;
  2542. } else {
  2543. if (la.kind == 59) {
  2544. currentState = stateStack.Pop();
  2545. break;
  2546. } else {
  2547. if (la.kind == 60) {
  2548. goto case 66;
  2549. } else {
  2550. if (la.kind == 61) {
  2551. goto case 65;
  2552. } else {
  2553. if (la.kind == 62) {
  2554. goto case 143;
  2555. } else {
  2556. if (la.kind == 63) {
  2557. currentState = stateStack.Pop();
  2558. break;
  2559. } else {
  2560. if (la.kind == 64) {
  2561. goto case 142;
  2562. } else {
  2563. if (la.kind == 65) {
  2564. goto case 141;
  2565. } else {
  2566. if (la.kind == 66) {
  2567. goto case 140;
  2568. } else {
  2569. if (la.kind == 67) {
  2570. goto case 139;
  2571. } else {
  2572. if (la.kind == 68) {
  2573. currentState = stateStack.Pop();
  2574. break;
  2575. } else {
  2576. if (la.kind == 69) {
  2577. currentState = stateStack.Pop();
  2578. break;
  2579. } else {
  2580. if (la.kind == 70) {
  2581. goto case 138;
  2582. } else {
  2583. if (la.kind == 71) {
  2584. currentState = stateStack.Pop();
  2585. break;
  2586. } else {
  2587. if (la.kind == 72) {
  2588. currentState = stateStack.Pop();
  2589. break;
  2590. } else {
  2591. if (la.kind == 73) {
  2592. currentState = stateStack.Pop();
  2593. break;
  2594. } else {
  2595. if (la.kind == 74) {
  2596. currentState = stateStack.Pop();
  2597. break;
  2598. } else {
  2599. if (la.kind == 75) {
  2600. currentState = stateStack.Pop();
  2601. break;
  2602. } else {
  2603. if (la.kind == 76) {
  2604. currentState = stateStack.Pop();
  2605. break;
  2606. } else {
  2607. if (la.kind == 77) {
  2608. currentState = stateStack.Pop();
  2609. break;
  2610. } else {
  2611. if (la.kind == 78) {
  2612. currentState = stateStack.Pop();
  2613. break;
  2614. } else {
  2615. if (la.kind == 79) {
  2616. currentState = stateStack.Pop();
  2617. break;
  2618. } else {
  2619. if (la.kind == 80) {
  2620. currentState = stateStack.Pop();
  2621. break;
  2622. } else {
  2623. if (la.kind == 81) {
  2624. currentState = stateStack.Pop();