1{ 2 "name": "nix", 3 "word": "identifier", 4 "rules": { 5 "source_expression": { 6 "type": "FIELD", 7 "name": "expression", 8 "content": { 9 "type": "SYMBOL", 10 "name": "_expression" 11 } 12 }, 13 "_expression": { 14 "type": "SYMBOL", 15 "name": "_expr_function" 16 }, 17 "identifier": { 18 "type": "PATTERN", 19 "value": "[a-zA-Z_][a-zA-Z0-9_\\'\\-]*" 20 }, 21 "integer": { 22 "type": "PATTERN", 23 "value": "[0-9]+" 24 }, 25 "float": { 26 "type": "PATTERN", 27 "value": "(([1-9][0-9]*\\.[0-9]*)|(0?\\.[0-9]+))([Ee][+-]?[0-9]+)?" 28 }, 29 "path": { 30 "type": "PATTERN", 31 "value": "[a-zA-Z0-9\\._\\-\\+]*(\\/[a-zA-Z0-9\\._\\-\\+]+)+\\/?" 32 }, 33 "hpath": { 34 "type": "PATTERN", 35 "value": "\\~(\\/[a-zA-Z0-9\\._\\-\\+]+)+\\/?" 36 }, 37 "spath": { 38 "type": "PATTERN", 39 "value": "<[a-zA-Z0-9\\._\\-\\+]+(\\/[a-zA-Z0-9\\._\\-\\+]+)*>" 40 }, 41 "uri": { 42 "type": "PATTERN", 43 "value": "[a-zA-Z][a-zA-Z0-9\\+\\-\\.]*:[a-zA-Z0-9%\\/\\?:@\\&=\\+\\$,\\-_\\.\\!\\~\\*\\']+" 44 }, 45 "_expr_function": { 46 "type": "CHOICE", 47 "members": [ 48 { 49 "type": "SYMBOL", 50 "name": "function" 51 }, 52 { 53 "type": "SYMBOL", 54 "name": "assert" 55 }, 56 { 57 "type": "SYMBOL", 58 "name": "with" 59 }, 60 { 61 "type": "SYMBOL", 62 "name": "let" 63 }, 64 { 65 "type": "SYMBOL", 66 "name": "_expr_if" 67 } 68 ] 69 }, 70 "function": { 71 "type": "CHOICE", 72 "members": [ 73 { 74 "type": "SEQ", 75 "members": [ 76 { 77 "type": "FIELD", 78 "name": "universal", 79 "content": { 80 "type": "SYMBOL", 81 "name": "identifier" 82 } 83 }, 84 { 85 "type": "STRING", 86 "value": ":" 87 }, 88 { 89 "type": "FIELD", 90 "name": "body", 91 "content": { 92 "type": "SYMBOL", 93 "name": "_expr_function" 94 } 95 } 96 ] 97 }, 98 { 99 "type": "SEQ", 100 "members": [ 101 { 102 "type": "FIELD", 103 "name": "formals", 104 "content": { 105 "type": "SYMBOL", 106 "name": "formals" 107 } 108 }, 109 { 110 "type": "STRING", 111 "value": ":" 112 }, 113 { 114 "type": "FIELD", 115 "name": "body", 116 "content": { 117 "type": "SYMBOL", 118 "name": "_expr_function" 119 } 120 } 121 ] 122 }, 123 { 124 "type": "SEQ", 125 "members": [ 126 { 127 "type": "FIELD", 128 "name": "formals", 129 "content": { 130 "type": "SYMBOL", 131 "name": "formals" 132 } 133 }, 134 { 135 "type": "STRING", 136 "value": "@" 137 }, 138 { 139 "type": "FIELD", 140 "name": "universal", 141 "content": { 142 "type": "SYMBOL", 143 "name": "identifier" 144 } 145 }, 146 { 147 "type": "STRING", 148 "value": ":" 149 }, 150 { 151 "type": "FIELD", 152 "name": "body", 153 "content": { 154 "type": "SYMBOL", 155 "name": "_expr_function" 156 } 157 } 158 ] 159 }, 160 { 161 "type": "SEQ", 162 "members": [ 163 { 164 "type": "FIELD", 165 "name": "universal", 166 "content": { 167 "type": "SYMBOL", 168 "name": "identifier" 169 } 170 }, 171 { 172 "type": "STRING", 173 "value": "@" 174 }, 175 { 176 "type": "FIELD", 177 "name": "formals", 178 "content": { 179 "type": "SYMBOL", 180 "name": "formals" 181 } 182 }, 183 { 184 "type": "STRING", 185 "value": ":" 186 }, 187 { 188 "type": "FIELD", 189 "name": "body", 190 "content": { 191 "type": "SYMBOL", 192 "name": "_expr_function" 193 } 194 } 195 ] 196 } 197 ] 198 }, 199 "formals": { 200 "type": "CHOICE", 201 "members": [ 202 { 203 "type": "SEQ", 204 "members": [ 205 { 206 "type": "STRING", 207 "value": "{" 208 }, 209 { 210 "type": "STRING", 211 "value": "}" 212 } 213 ] 214 }, 215 { 216 "type": "SEQ", 217 "members": [ 218 { 219 "type": "STRING", 220 "value": "{" 221 }, 222 { 223 "type": "SEQ", 224 "members": [ 225 { 226 "type": "FIELD", 227 "name": "formal", 228 "content": { 229 "type": "SYMBOL", 230 "name": "formal" 231 } 232 }, 233 { 234 "type": "REPEAT", 235 "content": { 236 "type": "SEQ", 237 "members": [ 238 { 239 "type": "STRING", 240 "value": "," 241 }, 242 { 243 "type": "FIELD", 244 "name": "formal", 245 "content": { 246 "type": "SYMBOL", 247 "name": "formal" 248 } 249 } 250 ] 251 } 252 } 253 ] 254 }, 255 { 256 "type": "STRING", 257 "value": "}" 258 } 259 ] 260 }, 261 { 262 "type": "SEQ", 263 "members": [ 264 { 265 "type": "STRING", 266 "value": "{" 267 }, 268 { 269 "type": "SEQ", 270 "members": [ 271 { 272 "type": "FIELD", 273 "name": "formal", 274 "content": { 275 "type": "SYMBOL", 276 "name": "formal" 277 } 278 }, 279 { 280 "type": "REPEAT", 281 "content": { 282 "type": "SEQ", 283 "members": [ 284 { 285 "type": "STRING", 286 "value": "," 287 }, 288 { 289 "type": "FIELD", 290 "name": "formal", 291 "content": { 292 "type": "SYMBOL", 293 "name": "formal" 294 } 295 } 296 ] 297 } 298 } 299 ] 300 }, 301 { 302 "type": "STRING", 303 "value": "," 304 }, 305 { 306 "type": "FIELD", 307 "name": "ellipses", 308 "content": { 309 "type": "SYMBOL", 310 "name": "ellipses" 311 } 312 }, 313 { 314 "type": "STRING", 315 "value": "}" 316 } 317 ] 318 }, 319 { 320 "type": "SEQ", 321 "members": [ 322 { 323 "type": "STRING", 324 "value": "{" 325 }, 326 { 327 "type": "FIELD", 328 "name": "ellipses", 329 "content": { 330 "type": "SYMBOL", 331 "name": "ellipses" 332 } 333 }, 334 { 335 "type": "STRING", 336 "value": "}" 337 } 338 ] 339 } 340 ] 341 }, 342 "formal": { 343 "type": "SEQ", 344 "members": [ 345 { 346 "type": "FIELD", 347 "name": "name", 348 "content": { 349 "type": "SYMBOL", 350 "name": "identifier" 351 } 352 }, 353 { 354 "type": "CHOICE", 355 "members": [ 356 { 357 "type": "SEQ", 358 "members": [ 359 { 360 "type": "STRING", 361 "value": "?" 362 }, 363 { 364 "type": "FIELD", 365 "name": "default", 366 "content": { 367 "type": "SYMBOL", 368 "name": "_expression" 369 } 370 } 371 ] 372 }, 373 { 374 "type": "BLANK" 375 } 376 ] 377 } 378 ] 379 }, 380 "ellipses": { 381 "type": "STRING", 382 "value": "..." 383 }, 384 "assert": { 385 "type": "SEQ", 386 "members": [ 387 { 388 "type": "STRING", 389 "value": "assert" 390 }, 391 { 392 "type": "FIELD", 393 "name": "condition", 394 "content": { 395 "type": "SYMBOL", 396 "name": "_expression" 397 } 398 }, 399 { 400 "type": "STRING", 401 "value": ";" 402 }, 403 { 404 "type": "FIELD", 405 "name": "body", 406 "content": { 407 "type": "SYMBOL", 408 "name": "_expr_function" 409 } 410 } 411 ] 412 }, 413 "with": { 414 "type": "SEQ", 415 "members": [ 416 { 417 "type": "STRING", 418 "value": "with" 419 }, 420 { 421 "type": "FIELD", 422 "name": "environment", 423 "content": { 424 "type": "SYMBOL", 425 "name": "_expression" 426 } 427 }, 428 { 429 "type": "STRING", 430 "value": ";" 431 }, 432 { 433 "type": "FIELD", 434 "name": "body", 435 "content": { 436 "type": "SYMBOL", 437 "name": "_expr_function" 438 } 439 } 440 ] 441 }, 442 "let": { 443 "type": "SEQ", 444 "members": [ 445 { 446 "type": "STRING", 447 "value": "let" 448 }, 449 { 450 "type": "CHOICE", 451 "members": [ 452 { 453 "type": "SYMBOL", 454 "name": "_binds" 455 }, 456 { 457 "type": "BLANK" 458 } 459 ] 460 }, 461 { 462 "type": "STRING", 463 "value": "in" 464 }, 465 { 466 "type": "FIELD", 467 "name": "body", 468 "content": { 469 "type": "SYMBOL", 470 "name": "_expr_function" 471 } 472 } 473 ] 474 }, 475 "_expr_if": { 476 "type": "CHOICE", 477 "members": [ 478 { 479 "type": "SYMBOL", 480 "name": "if" 481 }, 482 { 483 "type": "SYMBOL", 484 "name": "_expr_op" 485 } 486 ] 487 }, 488 "if": { 489 "type": "SEQ", 490 "members": [ 491 { 492 "type": "STRING", 493 "value": "if" 494 }, 495 { 496 "type": "FIELD", 497 "name": "condition", 498 "content": { 499 "type": "SYMBOL", 500 "name": "_expression" 501 } 502 }, 503 { 504 "type": "STRING", 505 "value": "then" 506 }, 507 { 508 "type": "FIELD", 509 "name": "consequence", 510 "content": { 511 "type": "SYMBOL", 512 "name": "_expression" 513 } 514 }, 515 { 516 "type": "STRING", 517 "value": "else" 518 }, 519 { 520 "type": "FIELD", 521 "name": "alternative", 522 "content": { 523 "type": "SYMBOL", 524 "name": "_expression" 525 } 526 } 527 ] 528 }, 529 "_expr_op": { 530 "type": "CHOICE", 531 "members": [ 532 { 533 "type": "SYMBOL", 534 "name": "unary" 535 }, 536 { 537 "type": "SYMBOL", 538 "name": "binary" 539 }, 540 { 541 "type": "SYMBOL", 542 "name": "_expr_app" 543 } 544 ] 545 }, 546 "unary": { 547 "type": "CHOICE", 548 "members": [ 549 { 550 "type": "PREC", 551 "value": 7, 552 "content": { 553 "type": "SEQ", 554 "members": [ 555 { 556 "type": "FIELD", 557 "name": "operator", 558 "content": { 559 "type": "STRING", 560 "value": "!" 561 } 562 }, 563 { 564 "type": "FIELD", 565 "name": "argument", 566 "content": { 567 "type": "SYMBOL", 568 "name": "_expr_op" 569 } 570 } 571 ] 572 } 573 }, 574 { 575 "type": "PREC", 576 "value": 12, 577 "content": { 578 "type": "SEQ", 579 "members": [ 580 { 581 "type": "FIELD", 582 "name": "operator", 583 "content": { 584 "type": "STRING", 585 "value": "-" 586 } 587 }, 588 { 589 "type": "FIELD", 590 "name": "argument", 591 "content": { 592 "type": "SYMBOL", 593 "name": "_expr_op" 594 } 595 } 596 ] 597 } 598 } 599 ] 600 }, 601 "binary": { 602 "type": "CHOICE", 603 "members": [ 604 { 605 "type": "PREC_LEFT", 606 "value": 4, 607 "content": { 608 "type": "SEQ", 609 "members": [ 610 { 611 "type": "FIELD", 612 "name": "left", 613 "content": { 614 "type": "SYMBOL", 615 "name": "_expr_op" 616 } 617 }, 618 { 619 "type": "FIELD", 620 "name": "operator", 621 "content": { 622 "type": "STRING", 623 "value": "==" 624 } 625 }, 626 { 627 "type": "FIELD", 628 "name": "right", 629 "content": { 630 "type": "SYMBOL", 631 "name": "_expr_op" 632 } 633 } 634 ] 635 } 636 }, 637 { 638 "type": "PREC_LEFT", 639 "value": 4, 640 "content": { 641 "type": "SEQ", 642 "members": [ 643 { 644 "type": "FIELD", 645 "name": "left", 646 "content": { 647 "type": "SYMBOL", 648 "name": "_expr_op" 649 } 650 }, 651 { 652 "type": "FIELD", 653 "name": "operator", 654 "content": { 655 "type": "STRING", 656 "value": "!=" 657 } 658 }, 659 { 660 "type": "FIELD", 661 "name": "right", 662 "content": { 663 "type": "SYMBOL", 664 "name": "_expr_op" 665 } 666 } 667 ] 668 } 669 }, 670 { 671 "type": "PREC_LEFT", 672 "value": 5, 673 "content": { 674 "type": "SEQ", 675 "members": [ 676 { 677 "type": "FIELD", 678 "name": "left", 679 "content": { 680 "type": "SYMBOL", 681 "name": "_expr_op" 682 } 683 }, 684 { 685 "type": "FIELD", 686 "name": "operator", 687 "content": { 688 "type": "STRING", 689 "value": "<" 690 } 691 }, 692 { 693 "type": "FIELD", 694 "name": "right", 695 "content": { 696 "type": "SYMBOL", 697 "name": "_expr_op" 698 } 699 } 700 ] 701 } 702 }, 703 { 704 "type": "PREC_LEFT", 705 "value": 5, 706 "content": { 707 "type": "SEQ", 708 "members": [ 709 { 710 "type": "FIELD", 711 "name": "left", 712 "content": { 713 "type": "SYMBOL", 714 "name": "_expr_op" 715 } 716 }, 717 { 718 "type": "FIELD", 719 "name": "operator", 720 "content": { 721 "type": "STRING", 722 "value": "<=" 723 } 724 }, 725 { 726 "type": "FIELD", 727 "name": "right", 728 "content": { 729 "type": "SYMBOL", 730 "name": "_expr_op" 731 } 732 } 733 ] 734 } 735 }, 736 { 737 "type": "PREC_LEFT", 738 "value": 5, 739 "content": { 740 "type": "SEQ", 741 "members": [ 742 { 743 "type": "FIELD", 744 "name": "left", 745 "content": { 746 "type": "SYMBOL", 747 "name": "_expr_op" 748 } 749 }, 750 { 751 "type": "FIELD", 752 "name": "operator", 753 "content": { 754 "type": "STRING", 755 "value": ">" 756 } 757 }, 758 { 759 "type": "FIELD", 760 "name": "right", 761 "content": { 762 "type": "SYMBOL", 763 "name": "_expr_op" 764 } 765 } 766 ] 767 } 768 }, 769 { 770 "type": "PREC_LEFT", 771 "value": 5, 772 "content": { 773 "type": "SEQ", 774 "members": [ 775 { 776 "type": "FIELD", 777 "name": "left", 778 "content": { 779 "type": "SYMBOL", 780 "name": "_expr_op" 781 } 782 }, 783 { 784 "type": "FIELD", 785 "name": "operator", 786 "content": { 787 "type": "STRING", 788 "value": ">=" 789 } 790 }, 791 { 792 "type": "FIELD", 793 "name": "right", 794 "content": { 795 "type": "SYMBOL", 796 "name": "_expr_op" 797 } 798 } 799 ] 800 } 801 }, 802 { 803 "type": "PREC_LEFT", 804 "value": 3, 805 "content": { 806 "type": "SEQ", 807 "members": [ 808 { 809 "type": "FIELD", 810 "name": "left", 811 "content": { 812 "type": "SYMBOL", 813 "name": "_expr_op" 814 } 815 }, 816 { 817 "type": "FIELD", 818 "name": "operator", 819 "content": { 820 "type": "STRING", 821 "value": "&&" 822 } 823 }, 824 { 825 "type": "FIELD", 826 "name": "right", 827 "content": { 828 "type": "SYMBOL", 829 "name": "_expr_op" 830 } 831 } 832 ] 833 } 834 }, 835 { 836 "type": "PREC_LEFT", 837 "value": 2, 838 "content": { 839 "type": "SEQ", 840 "members": [ 841 { 842 "type": "FIELD", 843 "name": "left", 844 "content": { 845 "type": "SYMBOL", 846 "name": "_expr_op" 847 } 848 }, 849 { 850 "type": "FIELD", 851 "name": "operator", 852 "content": { 853 "type": "STRING", 854 "value": "||" 855 } 856 }, 857 { 858 "type": "FIELD", 859 "name": "right", 860 "content": { 861 "type": "SYMBOL", 862 "name": "_expr_op" 863 } 864 } 865 ] 866 } 867 }, 868 { 869 "type": "PREC_LEFT", 870 "value": 11, 871 "content": { 872 "type": "SEQ", 873 "members": [ 874 { 875 "type": "FIELD", 876 "name": "left", 877 "content": { 878 "type": "SYMBOL", 879 "name": "_expr_op" 880 } 881 }, 882 { 883 "type": "FIELD", 884 "name": "operator", 885 "content": { 886 "type": "STRING", 887 "value": "?" 888 } 889 }, 890 { 891 "type": "FIELD", 892 "name": "right", 893 "content": { 894 "type": "SYMBOL", 895 "name": "_expr_op" 896 } 897 } 898 ] 899 } 900 }, 901 { 902 "type": "PREC_LEFT", 903 "value": 8, 904 "content": { 905 "type": "SEQ", 906 "members": [ 907 { 908 "type": "FIELD", 909 "name": "left", 910 "content": { 911 "type": "SYMBOL", 912 "name": "_expr_op" 913 } 914 }, 915 { 916 "type": "FIELD", 917 "name": "operator", 918 "content": { 919 "type": "STRING", 920 "value": "+" 921 } 922 }, 923 { 924 "type": "FIELD", 925 "name": "right", 926 "content": { 927 "type": "SYMBOL", 928 "name": "_expr_op" 929 } 930 } 931 ] 932 } 933 }, 934 { 935 "type": "PREC_LEFT", 936 "value": 8, 937 "content": { 938 "type": "SEQ", 939 "members": [ 940 { 941 "type": "FIELD", 942 "name": "left", 943 "content": { 944 "type": "SYMBOL", 945 "name": "_expr_op" 946 } 947 }, 948 { 949 "type": "FIELD", 950 "name": "operator", 951 "content": { 952 "type": "STRING", 953 "value": "-" 954 } 955 }, 956 { 957 "type": "FIELD", 958 "name": "right", 959 "content": { 960 "type": "SYMBOL", 961 "name": "_expr_op" 962 } 963 } 964 ] 965 } 966 }, 967 { 968 "type": "PREC_LEFT", 969 "value": 9, 970 "content": { 971 "type": "SEQ", 972 "members": [ 973 { 974 "type": "FIELD", 975 "name": "left", 976 "content": { 977 "type": "SYMBOL", 978 "name": "_expr_op" 979 } 980 }, 981 { 982 "type": "FIELD", 983 "name": "operator", 984 "content": { 985 "type": "STRING", 986 "value": "*" 987 } 988 }, 989 { 990 "type": "FIELD", 991 "name": "right", 992 "content": { 993 "type": "SYMBOL", 994 "name": "_expr_op" 995 } 996 } 997 ] 998 } 999 }, 1000 { 1001 "type": "PREC_LEFT", 1002 "value": 9, 1003 "content": { 1004 "type": "SEQ", 1005 "members": [ 1006 { 1007 "type": "FIELD", 1008 "name": "left", 1009 "content": { 1010 "type": "SYMBOL", 1011 "name": "_expr_op" 1012 } 1013 }, 1014 { 1015 "type": "FIELD", 1016 "name": "operator", 1017 "content": { 1018 "type": "STRING", 1019 "value": "/" 1020 } 1021 }, 1022 { 1023 "type": "FIELD", 1024 "name": "right", 1025 "content": { 1026 "type": "SYMBOL", 1027 "name": "_expr_op" 1028 } 1029 } 1030 ] 1031 } 1032 }, 1033 { 1034 "type": "PREC_RIGHT", 1035 "value": 1, 1036 "content": { 1037 "type": "SEQ", 1038 "members": [ 1039 { 1040 "type": "FIELD", 1041 "name": "left", 1042 "content": { 1043 "type": "SYMBOL", 1044 "name": "_expr_op" 1045 } 1046 }, 1047 { 1048 "type": "FIELD", 1049 "name": "operator", 1050 "content": { 1051 "type": "STRING", 1052 "value": "->" 1053 } 1054 }, 1055 { 1056 "type": "FIELD", 1057 "name": "right", 1058 "content": { 1059 "type": "SYMBOL", 1060 "name": "_expr_op" 1061 } 1062 } 1063 ] 1064 } 1065 }, 1066 { 1067 "type": "PREC_RIGHT", 1068 "value": 6, 1069 "content": { 1070 "type": "SEQ", 1071 "members": [ 1072 { 1073 "type": "FIELD", 1074 "name": "left", 1075 "content": { 1076 "type": "SYMBOL", 1077 "name": "_expr_op" 1078 } 1079 }, 1080 { 1081 "type": "FIELD", 1082 "name": "operator", 1083 "content": { 1084 "type": "STRING", 1085 "value": "//" 1086 } 1087 }, 1088 { 1089 "type": "FIELD", 1090 "name": "right", 1091 "content": { 1092 "type": "SYMBOL", 1093 "name": "_expr_op" 1094 } 1095 } 1096 ] 1097 } 1098 }, 1099 { 1100 "type": "PREC_RIGHT", 1101 "value": 10, 1102 "content": { 1103 "type": "SEQ", 1104 "members": [ 1105 { 1106 "type": "FIELD", 1107 "name": "left", 1108 "content": { 1109 "type": "SYMBOL", 1110 "name": "_expr_op" 1111 } 1112 }, 1113 { 1114 "type": "FIELD", 1115 "name": "operator", 1116 "content": { 1117 "type": "STRING", 1118 "value": "++" 1119 } 1120 }, 1121 { 1122 "type": "FIELD", 1123 "name": "right", 1124 "content": { 1125 "type": "SYMBOL", 1126 "name": "_expr_op" 1127 } 1128 } 1129 ] 1130 } 1131 } 1132 ] 1133 }, 1134 "_expr_app": { 1135 "type": "CHOICE", 1136 "members": [ 1137 { 1138 "type": "SYMBOL", 1139 "name": "app" 1140 }, 1141 { 1142 "type": "SYMBOL", 1143 "name": "_expr_select" 1144 } 1145 ] 1146 }, 1147 "app": { 1148 "type": "SEQ", 1149 "members": [ 1150 { 1151 "type": "FIELD", 1152 "name": "function", 1153 "content": { 1154 "type": "SYMBOL", 1155 "name": "_expr_app" 1156 } 1157 }, 1158 { 1159 "type": "FIELD", 1160 "name": "argument", 1161 "content": { 1162 "type": "SYMBOL", 1163 "name": "_expr_select" 1164 } 1165 } 1166 ] 1167 }, 1168 "_expr_select": { 1169 "type": "CHOICE", 1170 "members": [ 1171 { 1172 "type": "SYMBOL", 1173 "name": "select" 1174 }, 1175 { 1176 "type": "SYMBOL", 1177 "name": "_expr_simple" 1178 } 1179 ] 1180 }, 1181 "select": { 1182 "type": "CHOICE", 1183 "members": [ 1184 { 1185 "type": "SEQ", 1186 "members": [ 1187 { 1188 "type": "FIELD", 1189 "name": "expression", 1190 "content": { 1191 "type": "SYMBOL", 1192 "name": "_expr_simple" 1193 } 1194 }, 1195 { 1196 "type": "STRING", 1197 "value": "." 1198 }, 1199 { 1200 "type": "FIELD", 1201 "name": "attrpath", 1202 "content": { 1203 "type": "SYMBOL", 1204 "name": "attrpath" 1205 } 1206 } 1207 ] 1208 }, 1209 { 1210 "type": "SEQ", 1211 "members": [ 1212 { 1213 "type": "FIELD", 1214 "name": "expression", 1215 "content": { 1216 "type": "SYMBOL", 1217 "name": "_expr_simple" 1218 } 1219 }, 1220 { 1221 "type": "STRING", 1222 "value": "." 1223 }, 1224 { 1225 "type": "FIELD", 1226 "name": "attrpath", 1227 "content": { 1228 "type": "SYMBOL", 1229 "name": "attrpath" 1230 } 1231 }, 1232 { 1233 "type": "STRING", 1234 "value": "or" 1235 }, 1236 { 1237 "type": "FIELD", 1238 "name": "default", 1239 "content": { 1240 "type": "SYMBOL", 1241 "name": "_expr_select" 1242 } 1243 } 1244 ] 1245 } 1246 ] 1247 }, 1248 "_expr_simple": { 1249 "type": "CHOICE", 1250 "members": [ 1251 { 1252 "type": "SYMBOL", 1253 "name": "identifier" 1254 }, 1255 { 1256 "type": "SYMBOL", 1257 "name": "integer" 1258 }, 1259 { 1260 "type": "SYMBOL", 1261 "name": "float" 1262 }, 1263 { 1264 "type": "SYMBOL", 1265 "name": "string" 1266 }, 1267 { 1268 "type": "SYMBOL", 1269 "name": "indented_string" 1270 }, 1271 { 1272 "type": "SYMBOL", 1273 "name": "path" 1274 }, 1275 { 1276 "type": "SYMBOL", 1277 "name": "hpath" 1278 }, 1279 { 1280 "type": "SYMBOL", 1281 "name": "spath" 1282 }, 1283 { 1284 "type": "SYMBOL", 1285 "name": "uri" 1286 }, 1287 { 1288 "type": "SYMBOL", 1289 "name": "parenthesized" 1290 }, 1291 { 1292 "type": "SYMBOL", 1293 "name": "attrset" 1294 }, 1295 { 1296 "type": "SYMBOL", 1297 "name": "let_attrset" 1298 }, 1299 { 1300 "type": "SYMBOL", 1301 "name": "rec_attrset" 1302 }, 1303 { 1304 "type": "SYMBOL", 1305 "name": "list" 1306 } 1307 ] 1308 }, 1309 "parenthesized": { 1310 "type": "SEQ", 1311 "members": [ 1312 { 1313 "type": "STRING", 1314 "value": "(" 1315 }, 1316 { 1317 "type": "FIELD", 1318 "name": "expression", 1319 "content": { 1320 "type": "SYMBOL", 1321 "name": "_expression" 1322 } 1323 }, 1324 { 1325 "type": "STRING", 1326 "value": ")" 1327 } 1328 ] 1329 }, 1330 "attrset": { 1331 "type": "SEQ", 1332 "members": [ 1333 { 1334 "type": "STRING", 1335 "value": "{" 1336 }, 1337 { 1338 "type": "CHOICE", 1339 "members": [ 1340 { 1341 "type": "SYMBOL", 1342 "name": "_binds" 1343 }, 1344 { 1345 "type": "BLANK" 1346 } 1347 ] 1348 }, 1349 { 1350 "type": "STRING", 1351 "value": "}" 1352 } 1353 ] 1354 }, 1355 "let_attrset": { 1356 "type": "SEQ", 1357 "members": [ 1358 { 1359 "type": "STRING", 1360 "value": "let" 1361 }, 1362 { 1363 "type": "STRING", 1364 "value": "{" 1365 }, 1366 { 1367 "type": "CHOICE", 1368 "members": [ 1369 { 1370 "type": "SYMBOL", 1371 "name": "_binds" 1372 }, 1373 { 1374 "type": "BLANK" 1375 } 1376 ] 1377 }, 1378 { 1379 "type": "STRING", 1380 "value": "}" 1381 } 1382 ] 1383 }, 1384 "rec_attrset": { 1385 "type": "SEQ", 1386 "members": [ 1387 { 1388 "type": "STRING", 1389 "value": "rec" 1390 }, 1391 { 1392 "type": "STRING", 1393 "value": "{" 1394 }, 1395 { 1396 "type": "CHOICE", 1397 "members": [ 1398 { 1399 "type": "SYMBOL", 1400 "name": "_binds" 1401 }, 1402 { 1403 "type": "BLANK" 1404 } 1405 ] 1406 }, 1407 { 1408 "type": "STRING", 1409 "value": "}" 1410 } 1411 ] 1412 }, 1413 "string": { 1414 "type": "SEQ", 1415 "members": [ 1416 { 1417 "type": "STRING", 1418 "value": "\"" 1419 }, 1420 { 1421 "type": "CHOICE", 1422 "members": [ 1423 { 1424 "type": "SYMBOL", 1425 "name": "_string_parts" 1426 }, 1427 { 1428 "type": "BLANK" 1429 } 1430 ] 1431 }, 1432 { 1433 "type": "STRING", 1434 "value": "\"" 1435 } 1436 ] 1437 }, 1438 "indented_string": { 1439 "type": "SEQ", 1440 "members": [ 1441 { 1442 "type": "STRING", 1443 "value": "''" 1444 }, 1445 { 1446 "type": "CHOICE", 1447 "members": [ 1448 { 1449 "type": "SYMBOL", 1450 "name": "_ind_string_parts" 1451 }, 1452 { 1453 "type": "BLANK" 1454 } 1455 ] 1456 }, 1457 { 1458 "type": "STRING", 1459 "value": "''" 1460 } 1461 ] 1462 }, 1463 "_string_parts": { 1464 "type": "REPEAT1", 1465 "content": { 1466 "type": "CHOICE", 1467 "members": [ 1468 { 1469 "type": "SYMBOL", 1470 "name": "_str_content" 1471 }, 1472 { 1473 "type": "SYMBOL", 1474 "name": "interpolation" 1475 }, 1476 { 1477 "type": "SYMBOL", 1478 "name": "escape_sequence" 1479 } 1480 ] 1481 } 1482 }, 1483 "_ind_string_parts": { 1484 "type": "REPEAT1", 1485 "content": { 1486 "type": "CHOICE", 1487 "members": [ 1488 { 1489 "type": "SYMBOL", 1490 "name": "_ind_str_content" 1491 }, 1492 { 1493 "type": "SYMBOL", 1494 "name": "interpolation" 1495 }, 1496 { 1497 "type": "ALIAS", 1498 "content": { 1499 "type": "SYMBOL", 1500 "name": "ind_escape_sequence" 1501 }, 1502 "named": true, 1503 "value": "escape_sequence" 1504 } 1505 ] 1506 } 1507 }, 1508 "_binds": { 1509 "type": "REPEAT1", 1510 "content": { 1511 "type": "FIELD", 1512 "name": "bind", 1513 "content": { 1514 "type": "CHOICE", 1515 "members": [ 1516 { 1517 "type": "SYMBOL", 1518 "name": "bind" 1519 }, 1520 { 1521 "type": "SYMBOL", 1522 "name": "inherit" 1523 }, 1524 { 1525 "type": "SYMBOL", 1526 "name": "inherit_from" 1527 } 1528 ] 1529 } 1530 } 1531 }, 1532 "bind": { 1533 "type": "SEQ", 1534 "members": [ 1535 { 1536 "type": "FIELD", 1537 "name": "attrpath", 1538 "content": { 1539 "type": "SYMBOL", 1540 "name": "attrpath" 1541 } 1542 }, 1543 { 1544 "type": "STRING", 1545 "value": "=" 1546 }, 1547 { 1548 "type": "FIELD", 1549 "name": "expression", 1550 "content": { 1551 "type": "SYMBOL", 1552 "name": "_expression" 1553 } 1554 }, 1555 { 1556 "type": "STRING", 1557 "value": ";" 1558 } 1559 ] 1560 }, 1561 "inherit": { 1562 "type": "SEQ", 1563 "members": [ 1564 { 1565 "type": "STRING", 1566 "value": "inherit" 1567 }, 1568 { 1569 "type": "FIELD", 1570 "name": "attrs", 1571 "content": { 1572 "type": "SYMBOL", 1573 "name": "attrs_inherited" 1574 } 1575 }, 1576 { 1577 "type": "STRING", 1578 "value": ";" 1579 } 1580 ] 1581 }, 1582 "inherit_from": { 1583 "type": "SEQ", 1584 "members": [ 1585 { 1586 "type": "STRING", 1587 "value": "inherit" 1588 }, 1589 { 1590 "type": "STRING", 1591 "value": "(" 1592 }, 1593 { 1594 "type": "FIELD", 1595 "name": "expression", 1596 "content": { 1597 "type": "SYMBOL", 1598 "name": "_expression" 1599 } 1600 }, 1601 { 1602 "type": "STRING", 1603 "value": ")" 1604 }, 1605 { 1606 "type": "FIELD", 1607 "name": "attrs", 1608 "content": { 1609 "type": "SYMBOL", 1610 "name": "attrs_inherited_from" 1611 } 1612 }, 1613 { 1614 "type": "STRING", 1615 "value": ";" 1616 } 1617 ] 1618 }, 1619 "attrpath": { 1620 "type": "SEQ", 1621 "members": [ 1622 { 1623 "type": "FIELD", 1624 "name": "attr", 1625 "content": { 1626 "type": "CHOICE", 1627 "members": [ 1628 { 1629 "type": "ALIAS", 1630 "content": { 1631 "type": "SYMBOL", 1632 "name": "identifier" 1633 }, 1634 "named": true, 1635 "value": "attr_identifier" 1636 }, 1637 { 1638 "type": "SYMBOL", 1639 "name": "string" 1640 }, 1641 { 1642 "type": "SYMBOL", 1643 "name": "interpolation" 1644 } 1645 ] 1646 } 1647 }, 1648 { 1649 "type": "REPEAT", 1650 "content": { 1651 "type": "SEQ", 1652 "members": [ 1653 { 1654 "type": "STRING", 1655 "value": "." 1656 }, 1657 { 1658 "type": "FIELD", 1659 "name": "attr", 1660 "content": { 1661 "type": "CHOICE", 1662 "members": [ 1663 { 1664 "type": "ALIAS", 1665 "content": { 1666 "type": "SYMBOL", 1667 "name": "identifier" 1668 }, 1669 "named": true, 1670 "value": "attr_identifier" 1671 }, 1672 { 1673 "type": "SYMBOL", 1674 "name": "string" 1675 }, 1676 { 1677 "type": "SYMBOL", 1678 "name": "interpolation" 1679 } 1680 ] 1681 } 1682 } 1683 ] 1684 } 1685 } 1686 ] 1687 }, 1688 "attrs_inherited": { 1689 "type": "REPEAT1", 1690 "content": { 1691 "type": "FIELD", 1692 "name": "attr", 1693 "content": { 1694 "type": "CHOICE", 1695 "members": [ 1696 { 1697 "type": "SYMBOL", 1698 "name": "identifier" 1699 }, 1700 { 1701 "type": "SYMBOL", 1702 "name": "string" 1703 }, 1704 { 1705 "type": "SYMBOL", 1706 "name": "interpolation" 1707 } 1708 ] 1709 } 1710 } 1711 }, 1712 "attrs_inherited_from": { 1713 "type": "REPEAT1", 1714 "content": { 1715 "type": "FIELD", 1716 "name": "attr", 1717 "content": { 1718 "type": "CHOICE", 1719 "members": [ 1720 { 1721 "type": "ALIAS", 1722 "content": { 1723 "type": "SYMBOL", 1724 "name": "identifier" 1725 }, 1726 "named": true, 1727 "value": "attr_identifier" 1728 }, 1729 { 1730 "type": "SYMBOL", 1731 "name": "string" 1732 }, 1733 { 1734 "type": "SYMBOL", 1735 "name": "interpolation" 1736 } 1737 ] 1738 } 1739 } 1740 }, 1741 "interpolation": { 1742 "type": "SEQ", 1743 "members": [ 1744 { 1745 "type": "STRING", 1746 "value": "${" 1747 }, 1748 { 1749 "type": "FIELD", 1750 "name": "expression", 1751 "content": { 1752 "type": "SYMBOL", 1753 "name": "_expression" 1754 } 1755 }, 1756 { 1757 "type": "STRING", 1758 "value": "}" 1759 } 1760 ] 1761 }, 1762 "list": { 1763 "type": "SEQ", 1764 "members": [ 1765 { 1766 "type": "STRING", 1767 "value": "[" 1768 }, 1769 { 1770 "type": "REPEAT", 1771 "content": { 1772 "type": "FIELD", 1773 "name": "element", 1774 "content": { 1775 "type": "SYMBOL", 1776 "name": "_expr_select" 1777 } 1778 } 1779 }, 1780 { 1781 "type": "STRING", 1782 "value": "]" 1783 } 1784 ] 1785 }, 1786 "comment": { 1787 "type": "TOKEN", 1788 "content": { 1789 "type": "CHOICE", 1790 "members": [ 1791 { 1792 "type": "SEQ", 1793 "members": [ 1794 { 1795 "type": "STRING", 1796 "value": "#" 1797 }, 1798 { 1799 "type": "PATTERN", 1800 "value": ".*" 1801 } 1802 ] 1803 }, 1804 { 1805 "type": "SEQ", 1806 "members": [ 1807 { 1808 "type": "STRING", 1809 "value": "/*" 1810 }, 1811 { 1812 "type": "REPEAT", 1813 "content": { 1814 "type": "CHOICE", 1815 "members": [ 1816 { 1817 "type": "PATTERN", 1818 "value": "[^*]" 1819 }, 1820 { 1821 "type": "PATTERN", 1822 "value": "\\*[^/]" 1823 } 1824 ] 1825 } 1826 }, 1827 { 1828 "type": "STRING", 1829 "value": "*/" 1830 } 1831 ] 1832 } 1833 ] 1834 } 1835 } 1836 }, 1837 "extras": [ 1838 { 1839 "type": "PATTERN", 1840 "value": "\\s" 1841 }, 1842 { 1843 "type": "SYMBOL", 1844 "name": "comment" 1845 } 1846 ], 1847 "conflicts": [], 1848 "precedences": [], 1849 "externals": [ 1850 { 1851 "type": "SYMBOL", 1852 "name": "_str_content" 1853 }, 1854 { 1855 "type": "SYMBOL", 1856 "name": "_ind_str_content" 1857 }, 1858 { 1859 "type": "SYMBOL", 1860 "name": "escape_sequence" 1861 }, 1862 { 1863 "type": "SYMBOL", 1864 "name": "ind_escape_sequence" 1865 } 1866 ], 1867 "inline": [], 1868 "supertypes": [ 1869 "_expression" 1870 ] 1871} 1872 1873