modernc.org/cc@v1.0.1/v2/scanner.go (about) 1 // Code generated by golex. DO NOT EDIT. 2 3 // Copyright 2017 The CC Authors. All rights reserved. 4 // Use of this source code is governed by a BSD-style 5 // license that can be found in the LICENSE file. 6 7 // Based on [0], 6.4. 8 // 9 // [0]: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf 10 11 package cc 12 13 import ( 14 "fmt" 15 16 "modernc.org/golex/lex" 17 ) 18 19 const ( 20 _ = iota 21 scCOMMENT // [`/*`, `*/`] 22 ) 23 24 func (l *lexer) scan() (r int) { 25 c := l.Enter() 26 27 yystate0: 28 yyrule := -1 29 _ = yyrule 30 c = l.Rule0() 31 32 switch yyt := l.sc; yyt { 33 default: 34 panic(fmt.Errorf(`invalid start condition %d`, yyt)) 35 case 0: // start condition: INITIAL 36 goto yystart1 37 case 1: // start condition: COMMENT 38 goto yystart123 39 } 40 41 goto yystate0 // silence unused label error 42 goto yyAction // silence unused label error 43 yyAction: 44 switch yyrule { 45 case 1: 46 goto yyrule1 47 case 2: 48 goto yyrule2 49 case 3: 50 goto yyrule3 51 case 4: 52 goto yyrule4 53 case 5: 54 goto yyrule5 55 case 6: 56 goto yyrule6 57 case 7: 58 goto yyrule7 59 case 8: 60 goto yyrule8 61 case 9: 62 goto yyrule9 63 case 10: 64 goto yyrule10 65 case 11: 66 goto yyrule11 67 case 12: 68 goto yyrule12 69 case 13: 70 goto yyrule13 71 case 14: 72 goto yyrule14 73 case 15: 74 goto yyrule15 75 case 16: 76 goto yyrule16 77 case 17: 78 goto yyrule17 79 case 18: 80 goto yyrule18 81 case 19: 82 goto yyrule19 83 case 20: 84 goto yyrule20 85 case 21: 86 goto yyrule21 87 case 22: 88 goto yyrule22 89 case 23: 90 goto yyrule23 91 case 24: 92 goto yyrule24 93 case 25: 94 goto yyrule25 95 case 26: 96 goto yyrule26 97 case 27: 98 goto yyrule27 99 case 28: 100 goto yyrule28 101 case 29: 102 goto yyrule29 103 case 30: 104 goto yyrule30 105 case 31: 106 goto yyrule31 107 case 32: 108 goto yyrule32 109 case 33: 110 goto yyrule33 111 case 34: 112 goto yyrule34 113 case 35: 114 goto yyrule35 115 case 36: 116 goto yyrule36 117 case 37: 118 goto yyrule37 119 case 38: 120 goto yyrule38 121 case 39: 122 goto yyrule39 123 case 40: 124 goto yyrule40 125 case 41: 126 goto yyrule41 127 case 42: 128 goto yyrule42 129 case 43: 130 goto yyrule43 131 } 132 goto yystate1 // silence unused label error 133 yystate1: 134 c = l.Next() 135 yystart1: 136 switch { 137 default: 138 goto yyabort 139 case c == '!': 140 goto yystate3 141 case c == '"': 142 goto yystate5 143 case c == '#': 144 goto yystate16 145 case c == '%': 146 goto yystate20 147 case c == '&': 148 goto yystate27 149 case c == '*': 150 goto yystate42 151 case c == '+': 152 goto yystate44 153 case c == '-': 154 goto yystate47 155 case c == '.': 156 goto yystate51 157 case c == '/': 158 goto yystate65 159 case c == ':': 160 goto yystate69 161 case c == '<': 162 goto yystate71 163 case c == '=': 164 goto yystate77 165 case c == '>': 166 goto yystate79 167 case c == 'L': 168 goto yystate93 169 case c == '\'': 170 goto yystate30 171 case c == '\\': 172 goto yystate84 173 case c == '\t' || c == '\v' || c == '\f' || c == ' ': 174 goto yystate2 175 case c == '\u0080': 176 goto yystate122 177 case c == '^': 178 goto yystate117 179 case c == '|': 180 goto yystate119 181 case c >= '0' && c <= '9': 182 goto yystate54 183 case c >= 'A' && c <= 'K' || c >= 'M' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c == '\u0084': 184 goto yystate83 185 } 186 187 yystate2: 188 c = l.Next() 189 yyrule = 1 190 l.Mark() 191 switch { 192 default: 193 goto yyrule1 194 case c == '\t' || c == '\v' || c == '\f' || c == ' ': 195 goto yystate2 196 } 197 198 yystate3: 199 c = l.Next() 200 switch { 201 default: 202 goto yyabort 203 case c == '=': 204 goto yystate4 205 } 206 207 yystate4: 208 c = l.Next() 209 yyrule = 7 210 l.Mark() 211 goto yyrule7 212 213 yystate5: 214 c = l.Next() 215 switch { 216 default: 217 goto yyabort 218 case c == '"': 219 goto yystate6 220 case c == '\\': 221 goto yystate7 222 case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '!' || c >= '#' && c <= '[' || c >= ']' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ': 223 goto yystate5 224 } 225 226 yystate6: 227 c = l.Next() 228 yyrule = 43 229 l.Mark() 230 goto yyrule43 231 232 yystate7: 233 c = l.Next() 234 switch { 235 default: 236 goto yyabort 237 case c == '"' || c == '\'' || c >= '0' && c <= '7' || c == '?' || c == '\\' || c == 'a' || c == 'b' || c == 'f' || c == 'n' || c == 'r' || c == 't' || c == 'v': 238 goto yystate5 239 case c == 'U': 240 goto yystate8 241 case c == 'u': 242 goto yystate12 243 case c == 'x': 244 goto yystate15 245 } 246 247 yystate8: 248 c = l.Next() 249 switch { 250 default: 251 goto yyabort 252 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 253 goto yystate9 254 } 255 256 yystate9: 257 c = l.Next() 258 switch { 259 default: 260 goto yyabort 261 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 262 goto yystate10 263 } 264 265 yystate10: 266 c = l.Next() 267 switch { 268 default: 269 goto yyabort 270 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 271 goto yystate11 272 } 273 274 yystate11: 275 c = l.Next() 276 switch { 277 default: 278 goto yyabort 279 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 280 goto yystate12 281 } 282 283 yystate12: 284 c = l.Next() 285 switch { 286 default: 287 goto yyabort 288 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 289 goto yystate13 290 } 291 292 yystate13: 293 c = l.Next() 294 switch { 295 default: 296 goto yyabort 297 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 298 goto yystate14 299 } 300 301 yystate14: 302 c = l.Next() 303 switch { 304 default: 305 goto yyabort 306 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 307 goto yystate15 308 } 309 310 yystate15: 311 c = l.Next() 312 switch { 313 default: 314 goto yyabort 315 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 316 goto yystate5 317 } 318 319 yystate16: 320 c = l.Next() 321 switch { 322 default: 323 goto yyabort 324 case c == '#': 325 goto yystate17 326 case c == '%': 327 goto yystate18 328 } 329 330 yystate17: 331 c = l.Next() 332 yyrule = 34 333 l.Mark() 334 goto yyrule34 335 336 yystate18: 337 c = l.Next() 338 switch { 339 default: 340 goto yyabort 341 case c == ':': 342 goto yystate19 343 } 344 345 yystate19: 346 c = l.Next() 347 yyrule = 35 348 l.Mark() 349 goto yyrule35 350 351 yystate20: 352 c = l.Next() 353 switch { 354 default: 355 goto yyabort 356 case c == ':': 357 goto yystate21 358 case c == '=': 359 goto yystate25 360 case c == '>': 361 goto yystate26 362 } 363 364 yystate21: 365 c = l.Next() 366 yyrule = 8 367 l.Mark() 368 switch { 369 default: 370 goto yyrule8 371 case c == '#': 372 goto yystate22 373 case c == '%': 374 goto yystate23 375 } 376 377 yystate22: 378 c = l.Next() 379 yyrule = 36 380 l.Mark() 381 goto yyrule36 382 383 yystate23: 384 c = l.Next() 385 switch { 386 default: 387 goto yyabort 388 case c == ':': 389 goto yystate24 390 } 391 392 yystate24: 393 c = l.Next() 394 yyrule = 37 395 l.Mark() 396 goto yyrule37 397 398 yystate25: 399 c = l.Next() 400 yyrule = 9 401 l.Mark() 402 goto yyrule9 403 404 yystate26: 405 c = l.Next() 406 yyrule = 10 407 l.Mark() 408 goto yyrule10 409 410 yystate27: 411 c = l.Next() 412 switch { 413 default: 414 goto yyabort 415 case c == '&': 416 goto yystate28 417 case c == '=': 418 goto yystate29 419 } 420 421 yystate28: 422 c = l.Next() 423 yyrule = 11 424 l.Mark() 425 goto yyrule11 426 427 yystate29: 428 c = l.Next() 429 yyrule = 12 430 l.Mark() 431 goto yyrule12 432 433 yystate30: 434 c = l.Next() 435 switch { 436 default: 437 goto yyabort 438 case c == '\\': 439 goto yystate33 440 case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '&' || c >= '(' && c <= '[' || c >= ']' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ': 441 goto yystate31 442 } 443 444 yystate31: 445 c = l.Next() 446 switch { 447 default: 448 goto yyabort 449 case c == '\'': 450 goto yystate32 451 case c == '\\': 452 goto yystate33 453 case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '&' || c >= '(' && c <= '[' || c >= ']' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ': 454 goto yystate31 455 } 456 457 yystate32: 458 c = l.Next() 459 yyrule = 40 460 l.Mark() 461 goto yyrule40 462 463 yystate33: 464 c = l.Next() 465 switch { 466 default: 467 goto yyabort 468 case c == '"' || c == '\'' || c >= '0' && c <= '7' || c == '?' || c == '\\' || c == 'a' || c == 'b' || c == 'f' || c == 'n' || c == 'r' || c == 't' || c == 'v': 469 goto yystate31 470 case c == 'U': 471 goto yystate34 472 case c == 'u': 473 goto yystate38 474 case c == 'x': 475 goto yystate41 476 } 477 478 yystate34: 479 c = l.Next() 480 switch { 481 default: 482 goto yyabort 483 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 484 goto yystate35 485 } 486 487 yystate35: 488 c = l.Next() 489 switch { 490 default: 491 goto yyabort 492 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 493 goto yystate36 494 } 495 496 yystate36: 497 c = l.Next() 498 switch { 499 default: 500 goto yyabort 501 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 502 goto yystate37 503 } 504 505 yystate37: 506 c = l.Next() 507 switch { 508 default: 509 goto yyabort 510 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 511 goto yystate38 512 } 513 514 yystate38: 515 c = l.Next() 516 switch { 517 default: 518 goto yyabort 519 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 520 goto yystate39 521 } 522 523 yystate39: 524 c = l.Next() 525 switch { 526 default: 527 goto yyabort 528 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 529 goto yystate40 530 } 531 532 yystate40: 533 c = l.Next() 534 switch { 535 default: 536 goto yyabort 537 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 538 goto yystate41 539 } 540 541 yystate41: 542 c = l.Next() 543 switch { 544 default: 545 goto yyabort 546 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 547 goto yystate31 548 } 549 550 yystate42: 551 c = l.Next() 552 switch { 553 default: 554 goto yyabort 555 case c == '=': 556 goto yystate43 557 } 558 559 yystate43: 560 c = l.Next() 561 yyrule = 13 562 l.Mark() 563 goto yyrule13 564 565 yystate44: 566 c = l.Next() 567 switch { 568 default: 569 goto yyabort 570 case c == '+': 571 goto yystate45 572 case c == '=': 573 goto yystate46 574 } 575 576 yystate45: 577 c = l.Next() 578 yyrule = 14 579 l.Mark() 580 goto yyrule14 581 582 yystate46: 583 c = l.Next() 584 yyrule = 15 585 l.Mark() 586 goto yyrule15 587 588 yystate47: 589 c = l.Next() 590 switch { 591 default: 592 goto yyabort 593 case c == '-': 594 goto yystate48 595 case c == '=': 596 goto yystate49 597 case c == '>': 598 goto yystate50 599 } 600 601 yystate48: 602 c = l.Next() 603 yyrule = 16 604 l.Mark() 605 goto yyrule16 606 607 yystate49: 608 c = l.Next() 609 yyrule = 17 610 l.Mark() 611 goto yyrule17 612 613 yystate50: 614 c = l.Next() 615 yyrule = 18 616 l.Mark() 617 goto yyrule18 618 619 yystate51: 620 c = l.Next() 621 switch { 622 default: 623 goto yyabort 624 case c == '.': 625 goto yystate52 626 case c >= '0' && c <= '9': 627 goto yystate54 628 } 629 630 yystate52: 631 c = l.Next() 632 switch { 633 default: 634 goto yyabort 635 case c == '.': 636 goto yystate53 637 } 638 639 yystate53: 640 c = l.Next() 641 yyrule = 19 642 l.Mark() 643 goto yyrule19 644 645 yystate54: 646 c = l.Next() 647 yyrule = 42 648 l.Mark() 649 switch { 650 default: 651 goto yyrule42 652 case c == '.' || c >= '0' && c <= '9' || c >= 'A' && c <= 'D' || c >= 'F' && c <= 'O' || c >= 'Q' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'd' || c >= 'f' && c <= 'o' || c >= 'q' && c <= 'z' || c == '\u0084': 653 goto yystate54 654 case c == 'E' || c == 'P' || c == 'e' || c == 'p': 655 goto yystate55 656 case c == '\\': 657 goto yystate56 658 } 659 660 yystate55: 661 c = l.Next() 662 yyrule = 42 663 l.Mark() 664 switch { 665 default: 666 goto yyrule42 667 case c == '+' || c == '-' || c == '.' || c >= '0' && c <= '9' || c >= 'A' && c <= 'D' || c >= 'F' && c <= 'O' || c >= 'Q' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'd' || c >= 'f' && c <= 'o' || c >= 'q' && c <= 'z' || c == '\u0084': 668 goto yystate54 669 case c == 'E' || c == 'P' || c == 'e' || c == 'p': 670 goto yystate55 671 case c == '\\': 672 goto yystate56 673 } 674 675 yystate56: 676 c = l.Next() 677 switch { 678 default: 679 goto yyabort 680 case c == 'U': 681 goto yystate57 682 case c == 'u': 683 goto yystate61 684 } 685 686 yystate57: 687 c = l.Next() 688 switch { 689 default: 690 goto yyabort 691 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 692 goto yystate58 693 } 694 695 yystate58: 696 c = l.Next() 697 switch { 698 default: 699 goto yyabort 700 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 701 goto yystate59 702 } 703 704 yystate59: 705 c = l.Next() 706 switch { 707 default: 708 goto yyabort 709 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 710 goto yystate60 711 } 712 713 yystate60: 714 c = l.Next() 715 switch { 716 default: 717 goto yyabort 718 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 719 goto yystate61 720 } 721 722 yystate61: 723 c = l.Next() 724 switch { 725 default: 726 goto yyabort 727 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 728 goto yystate62 729 } 730 731 yystate62: 732 c = l.Next() 733 switch { 734 default: 735 goto yyabort 736 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 737 goto yystate63 738 } 739 740 yystate63: 741 c = l.Next() 742 switch { 743 default: 744 goto yyabort 745 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 746 goto yystate64 747 } 748 749 yystate64: 750 c = l.Next() 751 switch { 752 default: 753 goto yyabort 754 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 755 goto yystate54 756 } 757 758 yystate65: 759 c = l.Next() 760 switch { 761 default: 762 goto yyabort 763 case c == '*': 764 goto yystate66 765 case c == '/': 766 goto yystate67 767 case c == '=': 768 goto yystate68 769 } 770 771 yystate66: 772 c = l.Next() 773 yyrule = 3 774 l.Mark() 775 goto yyrule3 776 777 yystate67: 778 c = l.Next() 779 yyrule = 2 780 l.Mark() 781 switch { 782 default: 783 goto yyrule2 784 case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ': 785 goto yystate67 786 } 787 788 yystate68: 789 c = l.Next() 790 yyrule = 20 791 l.Mark() 792 goto yyrule20 793 794 yystate69: 795 c = l.Next() 796 switch { 797 default: 798 goto yyabort 799 case c == '>': 800 goto yystate70 801 } 802 803 yystate70: 804 c = l.Next() 805 yyrule = 21 806 l.Mark() 807 goto yyrule21 808 809 yystate71: 810 c = l.Next() 811 switch { 812 default: 813 goto yyabort 814 case c == '%': 815 goto yystate72 816 case c == ':': 817 goto yystate73 818 case c == '<': 819 goto yystate74 820 case c == '=': 821 goto yystate76 822 } 823 824 yystate72: 825 c = l.Next() 826 yyrule = 22 827 l.Mark() 828 goto yyrule22 829 830 yystate73: 831 c = l.Next() 832 yyrule = 23 833 l.Mark() 834 goto yyrule23 835 836 yystate74: 837 c = l.Next() 838 yyrule = 24 839 l.Mark() 840 switch { 841 default: 842 goto yyrule24 843 case c == '=': 844 goto yystate75 845 } 846 847 yystate75: 848 c = l.Next() 849 yyrule = 25 850 l.Mark() 851 goto yyrule25 852 853 yystate76: 854 c = l.Next() 855 yyrule = 26 856 l.Mark() 857 goto yyrule26 858 859 yystate77: 860 c = l.Next() 861 switch { 862 default: 863 goto yyabort 864 case c == '=': 865 goto yystate78 866 } 867 868 yystate78: 869 c = l.Next() 870 yyrule = 27 871 l.Mark() 872 goto yyrule27 873 874 yystate79: 875 c = l.Next() 876 switch { 877 default: 878 goto yyabort 879 case c == '=': 880 goto yystate80 881 case c == '>': 882 goto yystate81 883 } 884 885 yystate80: 886 c = l.Next() 887 yyrule = 28 888 l.Mark() 889 goto yyrule28 890 891 yystate81: 892 c = l.Next() 893 yyrule = 29 894 l.Mark() 895 switch { 896 default: 897 goto yyrule29 898 case c == '=': 899 goto yystate82 900 } 901 902 yystate82: 903 c = l.Next() 904 yyrule = 30 905 l.Mark() 906 goto yyrule30 907 908 yystate83: 909 c = l.Next() 910 yyrule = 41 911 l.Mark() 912 switch { 913 default: 914 goto yyrule41 915 case c == '$' || c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c == '\u0083' || c == '\u0084': 916 goto yystate83 917 case c == '\\': 918 goto yystate84 919 } 920 921 yystate84: 922 c = l.Next() 923 switch { 924 default: 925 goto yyabort 926 case c == 'U': 927 goto yystate85 928 case c == 'u': 929 goto yystate89 930 } 931 932 yystate85: 933 c = l.Next() 934 switch { 935 default: 936 goto yyabort 937 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 938 goto yystate86 939 } 940 941 yystate86: 942 c = l.Next() 943 switch { 944 default: 945 goto yyabort 946 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 947 goto yystate87 948 } 949 950 yystate87: 951 c = l.Next() 952 switch { 953 default: 954 goto yyabort 955 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 956 goto yystate88 957 } 958 959 yystate88: 960 c = l.Next() 961 switch { 962 default: 963 goto yyabort 964 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 965 goto yystate89 966 } 967 968 yystate89: 969 c = l.Next() 970 switch { 971 default: 972 goto yyabort 973 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 974 goto yystate90 975 } 976 977 yystate90: 978 c = l.Next() 979 switch { 980 default: 981 goto yyabort 982 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 983 goto yystate91 984 } 985 986 yystate91: 987 c = l.Next() 988 switch { 989 default: 990 goto yyabort 991 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 992 goto yystate92 993 } 994 995 yystate92: 996 c = l.Next() 997 switch { 998 default: 999 goto yyabort 1000 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 1001 goto yystate83 1002 } 1003 1004 yystate93: 1005 c = l.Next() 1006 yyrule = 41 1007 l.Mark() 1008 switch { 1009 default: 1010 goto yyrule41 1011 case c == '"': 1012 goto yystate94 1013 case c == '$' || c >= '0' && c <= '9' || c >= 'A' && c <= 'Z' || c == '_' || c >= 'a' && c <= 'z' || c == '\u0083' || c == '\u0084': 1014 goto yystate83 1015 case c == '\'': 1016 goto yystate105 1017 case c == '\\': 1018 goto yystate84 1019 } 1020 1021 yystate94: 1022 c = l.Next() 1023 switch { 1024 default: 1025 goto yyabort 1026 case c == '"': 1027 goto yystate95 1028 case c == '\\': 1029 goto yystate96 1030 case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '!' || c >= '#' && c <= '[' || c >= ']' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ': 1031 goto yystate94 1032 } 1033 1034 yystate95: 1035 c = l.Next() 1036 yyrule = 39 1037 l.Mark() 1038 goto yyrule39 1039 1040 yystate96: 1041 c = l.Next() 1042 switch { 1043 default: 1044 goto yyabort 1045 case c == '"' || c == '\'' || c >= '0' && c <= '7' || c == '?' || c == '\\' || c == 'a' || c == 'b' || c == 'f' || c == 'n' || c == 'r' || c == 't' || c == 'v': 1046 goto yystate94 1047 case c == 'U': 1048 goto yystate97 1049 case c == 'u': 1050 goto yystate101 1051 case c == 'x': 1052 goto yystate104 1053 } 1054 1055 yystate97: 1056 c = l.Next() 1057 switch { 1058 default: 1059 goto yyabort 1060 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 1061 goto yystate98 1062 } 1063 1064 yystate98: 1065 c = l.Next() 1066 switch { 1067 default: 1068 goto yyabort 1069 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 1070 goto yystate99 1071 } 1072 1073 yystate99: 1074 c = l.Next() 1075 switch { 1076 default: 1077 goto yyabort 1078 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 1079 goto yystate100 1080 } 1081 1082 yystate100: 1083 c = l.Next() 1084 switch { 1085 default: 1086 goto yyabort 1087 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 1088 goto yystate101 1089 } 1090 1091 yystate101: 1092 c = l.Next() 1093 switch { 1094 default: 1095 goto yyabort 1096 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 1097 goto yystate102 1098 } 1099 1100 yystate102: 1101 c = l.Next() 1102 switch { 1103 default: 1104 goto yyabort 1105 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 1106 goto yystate103 1107 } 1108 1109 yystate103: 1110 c = l.Next() 1111 switch { 1112 default: 1113 goto yyabort 1114 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 1115 goto yystate104 1116 } 1117 1118 yystate104: 1119 c = l.Next() 1120 switch { 1121 default: 1122 goto yyabort 1123 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 1124 goto yystate94 1125 } 1126 1127 yystate105: 1128 c = l.Next() 1129 switch { 1130 default: 1131 goto yyabort 1132 case c == '\\': 1133 goto yystate108 1134 case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '&' || c >= '(' && c <= '[' || c >= ']' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ': 1135 goto yystate106 1136 } 1137 1138 yystate106: 1139 c = l.Next() 1140 switch { 1141 default: 1142 goto yyabort 1143 case c == '\'': 1144 goto yystate107 1145 case c == '\\': 1146 goto yystate108 1147 case c >= '\x01' && c <= '\t' || c >= '\v' && c <= '&' || c >= '(' && c <= '[' || c >= ']' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ': 1148 goto yystate106 1149 } 1150 1151 yystate107: 1152 c = l.Next() 1153 yyrule = 38 1154 l.Mark() 1155 goto yyrule38 1156 1157 yystate108: 1158 c = l.Next() 1159 switch { 1160 default: 1161 goto yyabort 1162 case c == '"' || c == '\'' || c >= '0' && c <= '7' || c == '?' || c == '\\' || c == 'a' || c == 'b' || c == 'f' || c == 'n' || c == 'r' || c == 't' || c == 'v': 1163 goto yystate106 1164 case c == 'U': 1165 goto yystate109 1166 case c == 'u': 1167 goto yystate113 1168 case c == 'x': 1169 goto yystate116 1170 } 1171 1172 yystate109: 1173 c = l.Next() 1174 switch { 1175 default: 1176 goto yyabort 1177 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 1178 goto yystate110 1179 } 1180 1181 yystate110: 1182 c = l.Next() 1183 switch { 1184 default: 1185 goto yyabort 1186 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 1187 goto yystate111 1188 } 1189 1190 yystate111: 1191 c = l.Next() 1192 switch { 1193 default: 1194 goto yyabort 1195 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 1196 goto yystate112 1197 } 1198 1199 yystate112: 1200 c = l.Next() 1201 switch { 1202 default: 1203 goto yyabort 1204 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 1205 goto yystate113 1206 } 1207 1208 yystate113: 1209 c = l.Next() 1210 switch { 1211 default: 1212 goto yyabort 1213 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 1214 goto yystate114 1215 } 1216 1217 yystate114: 1218 c = l.Next() 1219 switch { 1220 default: 1221 goto yyabort 1222 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 1223 goto yystate115 1224 } 1225 1226 yystate115: 1227 c = l.Next() 1228 switch { 1229 default: 1230 goto yyabort 1231 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 1232 goto yystate116 1233 } 1234 1235 yystate116: 1236 c = l.Next() 1237 switch { 1238 default: 1239 goto yyabort 1240 case c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a' && c <= 'f': 1241 goto yystate106 1242 } 1243 1244 yystate117: 1245 c = l.Next() 1246 switch { 1247 default: 1248 goto yyabort 1249 case c == '=': 1250 goto yystate118 1251 } 1252 1253 yystate118: 1254 c = l.Next() 1255 yyrule = 31 1256 l.Mark() 1257 goto yyrule31 1258 1259 yystate119: 1260 c = l.Next() 1261 switch { 1262 default: 1263 goto yyabort 1264 case c == '=': 1265 goto yystate120 1266 case c == '|': 1267 goto yystate121 1268 } 1269 1270 yystate120: 1271 c = l.Next() 1272 yyrule = 32 1273 l.Mark() 1274 goto yyrule32 1275 1276 yystate121: 1277 c = l.Next() 1278 yyrule = 33 1279 l.Mark() 1280 goto yyrule33 1281 1282 yystate122: 1283 c = l.Next() 1284 yyrule = 6 1285 l.Mark() 1286 goto yyrule6 1287 1288 goto yystate123 // silence unused label error 1289 yystate123: 1290 c = l.Next() 1291 yystart123: 1292 switch { 1293 default: 1294 goto yyabort 1295 case c == '*': 1296 goto yystate125 1297 case c == '\u0080': 1298 goto yystate127 1299 case c >= '\x01' && c <= ')' || c >= '+' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ': 1300 goto yystate124 1301 } 1302 1303 yystate124: 1304 c = l.Next() 1305 switch { 1306 default: 1307 goto yyabort 1308 case c == '*': 1309 goto yystate125 1310 case c >= '\x01' && c <= ')' || c >= '+' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ': 1311 goto yystate124 1312 } 1313 1314 yystate125: 1315 c = l.Next() 1316 switch { 1317 default: 1318 goto yyabort 1319 case c == '*': 1320 goto yystate125 1321 case c == '/': 1322 goto yystate126 1323 case c >= '\x01' && c <= ')' || c >= '+' && c <= '.' || c >= '0' && c <= '\u007f' || c >= '\u0081' && c <= 'ÿ': 1324 goto yystate124 1325 } 1326 1327 yystate126: 1328 c = l.Next() 1329 yyrule = 4 1330 l.Mark() 1331 goto yyrule4 1332 1333 yystate127: 1334 c = l.Next() 1335 yyrule = 5 1336 l.Mark() 1337 goto yyrule5 1338 1339 yyrule1: // [ \t\f\v]+ 1340 { 1341 return ' ' 1342 } 1343 yyrule2: // "//"[^\x80\n]* 1344 { 1345 l.comment(false) 1346 return ' ' 1347 } 1348 yyrule3: // "/*" 1349 { 1350 l.commentPos0 = l.First.Pos() 1351 l.sc = scCOMMENT 1352 goto yystate0 1353 } 1354 yyrule4: // {comment-close} 1355 { 1356 l.sc = scINITIAL 1357 l.First = lex.NewChar(l.commentPos0, l.First.Rune) 1358 l.comment(true) 1359 return ' ' 1360 } 1361 yyrule5: // {eof} 1362 { 1363 l.errPos(l.commentPos0, "unterminated comment") 1364 l.sc = scINITIAL 1365 return rune2class(lex.RuneEOF) 1366 } 1367 yyrule6: // {eof} 1368 { 1369 return rune2class(lex.RuneEOF) 1370 } 1371 yyrule7: // "!=" 1372 { 1373 return NEQ 1374 } 1375 yyrule8: // "%:" 1376 { 1377 return '#' 1378 } 1379 yyrule9: // "%=" 1380 { 1381 return MODASSIGN 1382 } 1383 yyrule10: // "%>" 1384 { 1385 return '}' 1386 } 1387 yyrule11: // "&&" 1388 { 1389 return ANDAND 1390 } 1391 yyrule12: // "&=" 1392 { 1393 return ANDASSIGN 1394 } 1395 yyrule13: // "*=" 1396 { 1397 return MULASSIGN 1398 } 1399 yyrule14: // "++" 1400 { 1401 return INC 1402 } 1403 yyrule15: // "+=" 1404 { 1405 return ADDASSIGN 1406 } 1407 yyrule16: // "--" 1408 { 1409 return DEC 1410 } 1411 yyrule17: // "-=" 1412 { 1413 return SUBASSIGN 1414 } 1415 yyrule18: // "->" 1416 { 1417 return ARROW 1418 } 1419 yyrule19: // "..." 1420 { 1421 return DDD 1422 } 1423 yyrule20: // "/=" 1424 { 1425 return DIVASSIGN 1426 } 1427 yyrule21: // ":>" 1428 { 1429 return ']' 1430 } 1431 yyrule22: // "<%" 1432 { 1433 return '{' 1434 } 1435 yyrule23: // "<:" 1436 { 1437 return '[' 1438 } 1439 yyrule24: // "<<" 1440 { 1441 return LSH 1442 } 1443 yyrule25: // "<<=" 1444 { 1445 return LSHASSIGN 1446 } 1447 yyrule26: // "<=" 1448 { 1449 return LEQ 1450 } 1451 yyrule27: // "==" 1452 { 1453 return EQ 1454 } 1455 yyrule28: // ">=" 1456 { 1457 return GEQ 1458 } 1459 yyrule29: // ">>" 1460 { 1461 return RSH 1462 } 1463 yyrule30: // ">>=" 1464 { 1465 return RSHASSIGN 1466 } 1467 yyrule31: // "^=" 1468 { 1469 return XORASSIGN 1470 } 1471 yyrule32: // "|=" 1472 { 1473 return ORASSIGN 1474 } 1475 yyrule33: // "||" 1476 { 1477 return OROR 1478 } 1479 yyrule34: // "##" 1480 yyrule35: // "#%:" 1481 yyrule36: // "%:#" 1482 yyrule37: // "%:%:" 1483 { 1484 return PPPASTE 1485 } 1486 yyrule38: // L{character-constant} 1487 { 1488 return LONGCHARCONST 1489 } 1490 yyrule39: // L{string-literal} 1491 { 1492 return LONGSTRINGLITERAL 1493 } 1494 yyrule40: // {character-constant} 1495 { 1496 return CHARCONST 1497 } 1498 yyrule41: // {identifier} 1499 { 1500 return IDENTIFIER 1501 } 1502 yyrule42: // {pp-number} 1503 { 1504 return PPNUMBER 1505 } 1506 yyrule43: // {string-literal} 1507 { 1508 return STRINGLITERAL 1509 } 1510 panic("unreachable") 1511 1512 goto yyabort // silence unused label error 1513 1514 yyabort: // no lexem recognized 1515 if c, ok := l.Abort(); ok { 1516 return c 1517 } 1518 1519 goto yyAction 1520 }