github.com/nuvolaris/goja@v0.0.0-20230825100449-967811910c6d/ast/README.markdown (about) 1 # ast 2 -- 3 import "github.com/dop251/goja/ast" 4 5 Package ast declares types representing a JavaScript AST. 6 7 8 ### Warning 9 10 The parser and AST interfaces are still works-in-progress (particularly where 11 node types are concerned) and may change in the future. 12 13 ## Usage 14 15 #### type ArrayLiteral 16 17 ```go 18 type ArrayLiteral struct { 19 LeftBracket file.Idx 20 RightBracket file.Idx 21 Value []Expression 22 } 23 ``` 24 25 26 #### func (*ArrayLiteral) Idx0 27 28 ```go 29 func (self *ArrayLiteral) Idx0() file.Idx 30 ``` 31 32 #### func (*ArrayLiteral) Idx1 33 34 ```go 35 func (self *ArrayLiteral) Idx1() file.Idx 36 ``` 37 38 #### type AssignExpression 39 40 ```go 41 type AssignExpression struct { 42 Operator token.Token 43 Left Expression 44 Right Expression 45 } 46 ``` 47 48 49 #### func (*AssignExpression) Idx0 50 51 ```go 52 func (self *AssignExpression) Idx0() file.Idx 53 ``` 54 55 #### func (*AssignExpression) Idx1 56 57 ```go 58 func (self *AssignExpression) Idx1() file.Idx 59 ``` 60 61 #### type BadExpression 62 63 ```go 64 type BadExpression struct { 65 From file.Idx 66 To file.Idx 67 } 68 ``` 69 70 71 #### func (*BadExpression) Idx0 72 73 ```go 74 func (self *BadExpression) Idx0() file.Idx 75 ``` 76 77 #### func (*BadExpression) Idx1 78 79 ```go 80 func (self *BadExpression) Idx1() file.Idx 81 ``` 82 83 #### type BadStatement 84 85 ```go 86 type BadStatement struct { 87 From file.Idx 88 To file.Idx 89 } 90 ``` 91 92 93 #### func (*BadStatement) Idx0 94 95 ```go 96 func (self *BadStatement) Idx0() file.Idx 97 ``` 98 99 #### func (*BadStatement) Idx1 100 101 ```go 102 func (self *BadStatement) Idx1() file.Idx 103 ``` 104 105 #### type BinaryExpression 106 107 ```go 108 type BinaryExpression struct { 109 Operator token.Token 110 Left Expression 111 Right Expression 112 Comparison bool 113 } 114 ``` 115 116 117 #### func (*BinaryExpression) Idx0 118 119 ```go 120 func (self *BinaryExpression) Idx0() file.Idx 121 ``` 122 123 #### func (*BinaryExpression) Idx1 124 125 ```go 126 func (self *BinaryExpression) Idx1() file.Idx 127 ``` 128 129 #### type BlockStatement 130 131 ```go 132 type BlockStatement struct { 133 LeftBrace file.Idx 134 List []Statement 135 RightBrace file.Idx 136 } 137 ``` 138 139 140 #### func (*BlockStatement) Idx0 141 142 ```go 143 func (self *BlockStatement) Idx0() file.Idx 144 ``` 145 146 #### func (*BlockStatement) Idx1 147 148 ```go 149 func (self *BlockStatement) Idx1() file.Idx 150 ``` 151 152 #### type BooleanLiteral 153 154 ```go 155 type BooleanLiteral struct { 156 Idx file.Idx 157 Literal string 158 Value bool 159 } 160 ``` 161 162 163 #### func (*BooleanLiteral) Idx0 164 165 ```go 166 func (self *BooleanLiteral) Idx0() file.Idx 167 ``` 168 169 #### func (*BooleanLiteral) Idx1 170 171 ```go 172 func (self *BooleanLiteral) Idx1() file.Idx 173 ``` 174 175 #### type BracketExpression 176 177 ```go 178 type BracketExpression struct { 179 Left Expression 180 Member Expression 181 LeftBracket file.Idx 182 RightBracket file.Idx 183 } 184 ``` 185 186 187 #### func (*BracketExpression) Idx0 188 189 ```go 190 func (self *BracketExpression) Idx0() file.Idx 191 ``` 192 193 #### func (*BracketExpression) Idx1 194 195 ```go 196 func (self *BracketExpression) Idx1() file.Idx 197 ``` 198 199 #### type BranchStatement 200 201 ```go 202 type BranchStatement struct { 203 Idx file.Idx 204 Token token.Token 205 Label *Identifier 206 } 207 ``` 208 209 210 #### func (*BranchStatement) Idx0 211 212 ```go 213 func (self *BranchStatement) Idx0() file.Idx 214 ``` 215 216 #### func (*BranchStatement) Idx1 217 218 ```go 219 func (self *BranchStatement) Idx1() file.Idx 220 ``` 221 222 #### type CallExpression 223 224 ```go 225 type CallExpression struct { 226 Callee Expression 227 LeftParenthesis file.Idx 228 ArgumentList []Expression 229 RightParenthesis file.Idx 230 } 231 ``` 232 233 234 #### func (*CallExpression) Idx0 235 236 ```go 237 func (self *CallExpression) Idx0() file.Idx 238 ``` 239 240 #### func (*CallExpression) Idx1 241 242 ```go 243 func (self *CallExpression) Idx1() file.Idx 244 ``` 245 246 #### type CaseStatement 247 248 ```go 249 type CaseStatement struct { 250 Case file.Idx 251 Test Expression 252 Consequent []Statement 253 } 254 ``` 255 256 257 #### func (*CaseStatement) Idx0 258 259 ```go 260 func (self *CaseStatement) Idx0() file.Idx 261 ``` 262 263 #### func (*CaseStatement) Idx1 264 265 ```go 266 func (self *CaseStatement) Idx1() file.Idx 267 ``` 268 269 #### type CatchStatement 270 271 ```go 272 type CatchStatement struct { 273 Catch file.Idx 274 Parameter *Identifier 275 Body Statement 276 } 277 ``` 278 279 280 #### func (*CatchStatement) Idx0 281 282 ```go 283 func (self *CatchStatement) Idx0() file.Idx 284 ``` 285 286 #### func (*CatchStatement) Idx1 287 288 ```go 289 func (self *CatchStatement) Idx1() file.Idx 290 ``` 291 292 #### type ConditionalExpression 293 294 ```go 295 type ConditionalExpression struct { 296 Test Expression 297 Consequent Expression 298 Alternate Expression 299 } 300 ``` 301 302 303 #### func (*ConditionalExpression) Idx0 304 305 ```go 306 func (self *ConditionalExpression) Idx0() file.Idx 307 ``` 308 309 #### func (*ConditionalExpression) Idx1 310 311 ```go 312 func (self *ConditionalExpression) Idx1() file.Idx 313 ``` 314 315 #### type DebuggerStatement 316 317 ```go 318 type DebuggerStatement struct { 319 Debugger file.Idx 320 } 321 ``` 322 323 324 #### func (*DebuggerStatement) Idx0 325 326 ```go 327 func (self *DebuggerStatement) Idx0() file.Idx 328 ``` 329 330 #### func (*DebuggerStatement) Idx1 331 332 ```go 333 func (self *DebuggerStatement) Idx1() file.Idx 334 ``` 335 336 #### type Declaration 337 338 ```go 339 type Declaration interface { 340 // contains filtered or unexported methods 341 } 342 ``` 343 344 All declaration nodes implement the Declaration interface. 345 346 #### type DoWhileStatement 347 348 ```go 349 type DoWhileStatement struct { 350 Do file.Idx 351 Test Expression 352 Body Statement 353 } 354 ``` 355 356 357 #### func (*DoWhileStatement) Idx0 358 359 ```go 360 func (self *DoWhileStatement) Idx0() file.Idx 361 ``` 362 363 #### func (*DoWhileStatement) Idx1 364 365 ```go 366 func (self *DoWhileStatement) Idx1() file.Idx 367 ``` 368 369 #### type DotExpression 370 371 ```go 372 type DotExpression struct { 373 Left Expression 374 Identifier Identifier 375 } 376 ``` 377 378 379 #### func (*DotExpression) Idx0 380 381 ```go 382 func (self *DotExpression) Idx0() file.Idx 383 ``` 384 385 #### func (*DotExpression) Idx1 386 387 ```go 388 func (self *DotExpression) Idx1() file.Idx 389 ``` 390 391 #### type EmptyStatement 392 393 ```go 394 type EmptyStatement struct { 395 Semicolon file.Idx 396 } 397 ``` 398 399 400 #### func (*EmptyStatement) Idx0 401 402 ```go 403 func (self *EmptyStatement) Idx0() file.Idx 404 ``` 405 406 #### func (*EmptyStatement) Idx1 407 408 ```go 409 func (self *EmptyStatement) Idx1() file.Idx 410 ``` 411 412 #### type Expression 413 414 ```go 415 type Expression interface { 416 Node 417 // contains filtered or unexported methods 418 } 419 ``` 420 421 All expression nodes implement the Expression interface. 422 423 #### type ExpressionStatement 424 425 ```go 426 type ExpressionStatement struct { 427 Expression Expression 428 } 429 ``` 430 431 432 #### func (*ExpressionStatement) Idx0 433 434 ```go 435 func (self *ExpressionStatement) Idx0() file.Idx 436 ``` 437 438 #### func (*ExpressionStatement) Idx1 439 440 ```go 441 func (self *ExpressionStatement) Idx1() file.Idx 442 ``` 443 444 #### type ForInStatement 445 446 ```go 447 type ForInStatement struct { 448 For file.Idx 449 Into Expression 450 Source Expression 451 Body Statement 452 } 453 ``` 454 455 456 #### func (*ForInStatement) Idx0 457 458 ```go 459 func (self *ForInStatement) Idx0() file.Idx 460 ``` 461 462 #### func (*ForInStatement) Idx1 463 464 ```go 465 func (self *ForInStatement) Idx1() file.Idx 466 ``` 467 468 #### type ForStatement 469 470 ```go 471 type ForStatement struct { 472 For file.Idx 473 Initializer Expression 474 Update Expression 475 Test Expression 476 Body Statement 477 } 478 ``` 479 480 481 #### func (*ForStatement) Idx0 482 483 ```go 484 func (self *ForStatement) Idx0() file.Idx 485 ``` 486 487 #### func (*ForStatement) Idx1 488 489 ```go 490 func (self *ForStatement) Idx1() file.Idx 491 ``` 492 493 #### type FunctionDeclaration 494 495 ```go 496 type FunctionDeclaration struct { 497 Function *FunctionLiteral 498 } 499 ``` 500 501 502 #### type FunctionLiteral 503 504 ```go 505 type FunctionLiteral struct { 506 Function file.Idx 507 Name *Identifier 508 ParameterList *ParameterList 509 Body Statement 510 Source string 511 512 DeclarationList []Declaration 513 } 514 ``` 515 516 517 #### func (*FunctionLiteral) Idx0 518 519 ```go 520 func (self *FunctionLiteral) Idx0() file.Idx 521 ``` 522 523 #### func (*FunctionLiteral) Idx1 524 525 ```go 526 func (self *FunctionLiteral) Idx1() file.Idx 527 ``` 528 529 #### type Identifier 530 531 ```go 532 type Identifier struct { 533 Name string 534 Idx file.Idx 535 } 536 ``` 537 538 539 #### func (*Identifier) Idx0 540 541 ```go 542 func (self *Identifier) Idx0() file.Idx 543 ``` 544 545 #### func (*Identifier) Idx1 546 547 ```go 548 func (self *Identifier) Idx1() file.Idx 549 ``` 550 551 #### type IfStatement 552 553 ```go 554 type IfStatement struct { 555 If file.Idx 556 Test Expression 557 Consequent Statement 558 Alternate Statement 559 } 560 ``` 561 562 563 #### func (*IfStatement) Idx0 564 565 ```go 566 func (self *IfStatement) Idx0() file.Idx 567 ``` 568 569 #### func (*IfStatement) Idx1 570 571 ```go 572 func (self *IfStatement) Idx1() file.Idx 573 ``` 574 575 #### type LabelledStatement 576 577 ```go 578 type LabelledStatement struct { 579 Label *Identifier 580 Colon file.Idx 581 Statement Statement 582 } 583 ``` 584 585 586 #### func (*LabelledStatement) Idx0 587 588 ```go 589 func (self *LabelledStatement) Idx0() file.Idx 590 ``` 591 592 #### func (*LabelledStatement) Idx1 593 594 ```go 595 func (self *LabelledStatement) Idx1() file.Idx 596 ``` 597 598 #### type NewExpression 599 600 ```go 601 type NewExpression struct { 602 New file.Idx 603 Callee Expression 604 LeftParenthesis file.Idx 605 ArgumentList []Expression 606 RightParenthesis file.Idx 607 } 608 ``` 609 610 611 #### func (*NewExpression) Idx0 612 613 ```go 614 func (self *NewExpression) Idx0() file.Idx 615 ``` 616 617 #### func (*NewExpression) Idx1 618 619 ```go 620 func (self *NewExpression) Idx1() file.Idx 621 ``` 622 623 #### type Node 624 625 ```go 626 type Node interface { 627 Idx0() file.Idx // The index of the first character belonging to the node 628 Idx1() file.Idx // The index of the first character immediately after the node 629 } 630 ``` 631 632 All nodes implement the Node interface. 633 634 #### type NullLiteral 635 636 ```go 637 type NullLiteral struct { 638 Idx file.Idx 639 Literal string 640 } 641 ``` 642 643 644 #### func (*NullLiteral) Idx0 645 646 ```go 647 func (self *NullLiteral) Idx0() file.Idx 648 ``` 649 650 #### func (*NullLiteral) Idx1 651 652 ```go 653 func (self *NullLiteral) Idx1() file.Idx 654 ``` 655 656 #### type NumberLiteral 657 658 ```go 659 type NumberLiteral struct { 660 Idx file.Idx 661 Literal string 662 Value interface{} 663 } 664 ``` 665 666 667 #### func (*NumberLiteral) Idx0 668 669 ```go 670 func (self *NumberLiteral) Idx0() file.Idx 671 ``` 672 673 #### func (*NumberLiteral) Idx1 674 675 ```go 676 func (self *NumberLiteral) Idx1() file.Idx 677 ``` 678 679 #### type ObjectLiteral 680 681 ```go 682 type ObjectLiteral struct { 683 LeftBrace file.Idx 684 RightBrace file.Idx 685 Value []Property 686 } 687 ``` 688 689 690 #### func (*ObjectLiteral) Idx0 691 692 ```go 693 func (self *ObjectLiteral) Idx0() file.Idx 694 ``` 695 696 #### func (*ObjectLiteral) Idx1 697 698 ```go 699 func (self *ObjectLiteral) Idx1() file.Idx 700 ``` 701 702 #### type ParameterList 703 704 ```go 705 type ParameterList struct { 706 Opening file.Idx 707 List []*Identifier 708 Closing file.Idx 709 } 710 ``` 711 712 713 #### type Program 714 715 ```go 716 type Program struct { 717 Body []Statement 718 719 DeclarationList []Declaration 720 721 File *file.File 722 } 723 ``` 724 725 726 #### func (*Program) Idx0 727 728 ```go 729 func (self *Program) Idx0() file.Idx 730 ``` 731 732 #### func (*Program) Idx1 733 734 ```go 735 func (self *Program) Idx1() file.Idx 736 ``` 737 738 #### type Property 739 740 ```go 741 type Property struct { 742 Key string 743 Kind string 744 Value Expression 745 } 746 ``` 747 748 749 #### type RegExpLiteral 750 751 ```go 752 type RegExpLiteral struct { 753 Idx file.Idx 754 Literal string 755 Pattern string 756 Flags string 757 Value string 758 } 759 ``` 760 761 762 #### func (*RegExpLiteral) Idx0 763 764 ```go 765 func (self *RegExpLiteral) Idx0() file.Idx 766 ``` 767 768 #### func (*RegExpLiteral) Idx1 769 770 ```go 771 func (self *RegExpLiteral) Idx1() file.Idx 772 ``` 773 774 #### type ReturnStatement 775 776 ```go 777 type ReturnStatement struct { 778 Return file.Idx 779 Argument Expression 780 } 781 ``` 782 783 784 #### func (*ReturnStatement) Idx0 785 786 ```go 787 func (self *ReturnStatement) Idx0() file.Idx 788 ``` 789 790 #### func (*ReturnStatement) Idx1 791 792 ```go 793 func (self *ReturnStatement) Idx1() file.Idx 794 ``` 795 796 #### type SequenceExpression 797 798 ```go 799 type SequenceExpression struct { 800 Sequence []Expression 801 } 802 ``` 803 804 805 #### func (*SequenceExpression) Idx0 806 807 ```go 808 func (self *SequenceExpression) Idx0() file.Idx 809 ``` 810 811 #### func (*SequenceExpression) Idx1 812 813 ```go 814 func (self *SequenceExpression) Idx1() file.Idx 815 ``` 816 817 #### type Statement 818 819 ```go 820 type Statement interface { 821 Node 822 // contains filtered or unexported methods 823 } 824 ``` 825 826 All statement nodes implement the Statement interface. 827 828 #### type StringLiteral 829 830 ```go 831 type StringLiteral struct { 832 Idx file.Idx 833 Literal string 834 Value string 835 } 836 ``` 837 838 839 #### func (*StringLiteral) Idx0 840 841 ```go 842 func (self *StringLiteral) Idx0() file.Idx 843 ``` 844 845 #### func (*StringLiteral) Idx1 846 847 ```go 848 func (self *StringLiteral) Idx1() file.Idx 849 ``` 850 851 #### type SwitchStatement 852 853 ```go 854 type SwitchStatement struct { 855 Switch file.Idx 856 Discriminant Expression 857 Default int 858 Body []*CaseStatement 859 } 860 ``` 861 862 863 #### func (*SwitchStatement) Idx0 864 865 ```go 866 func (self *SwitchStatement) Idx0() file.Idx 867 ``` 868 869 #### func (*SwitchStatement) Idx1 870 871 ```go 872 func (self *SwitchStatement) Idx1() file.Idx 873 ``` 874 875 #### type ThisExpression 876 877 ```go 878 type ThisExpression struct { 879 Idx file.Idx 880 } 881 ``` 882 883 884 #### func (*ThisExpression) Idx0 885 886 ```go 887 func (self *ThisExpression) Idx0() file.Idx 888 ``` 889 890 #### func (*ThisExpression) Idx1 891 892 ```go 893 func (self *ThisExpression) Idx1() file.Idx 894 ``` 895 896 #### type ThrowStatement 897 898 ```go 899 type ThrowStatement struct { 900 Throw file.Idx 901 Argument Expression 902 } 903 ``` 904 905 906 #### func (*ThrowStatement) Idx0 907 908 ```go 909 func (self *ThrowStatement) Idx0() file.Idx 910 ``` 911 912 #### func (*ThrowStatement) Idx1 913 914 ```go 915 func (self *ThrowStatement) Idx1() file.Idx 916 ``` 917 918 #### type TryStatement 919 920 ```go 921 type TryStatement struct { 922 Try file.Idx 923 Body Statement 924 Catch *CatchStatement 925 Finally Statement 926 } 927 ``` 928 929 930 #### func (*TryStatement) Idx0 931 932 ```go 933 func (self *TryStatement) Idx0() file.Idx 934 ``` 935 936 #### func (*TryStatement) Idx1 937 938 ```go 939 func (self *TryStatement) Idx1() file.Idx 940 ``` 941 942 #### type UnaryExpression 943 944 ```go 945 type UnaryExpression struct { 946 Operator token.Token 947 Idx file.Idx // If a prefix operation 948 Operand Expression 949 Postfix bool 950 } 951 ``` 952 953 954 #### func (*UnaryExpression) Idx0 955 956 ```go 957 func (self *UnaryExpression) Idx0() file.Idx 958 ``` 959 960 #### func (*UnaryExpression) Idx1 961 962 ```go 963 func (self *UnaryExpression) Idx1() file.Idx 964 ``` 965 966 #### type VariableDeclaration 967 968 ```go 969 type VariableDeclaration struct { 970 Var file.Idx 971 List []*VariableExpression 972 } 973 ``` 974 975 976 #### type VariableExpression 977 978 ```go 979 type VariableExpression struct { 980 Name string 981 Idx file.Idx 982 Initializer Expression 983 } 984 ``` 985 986 987 #### func (*VariableExpression) Idx0 988 989 ```go 990 func (self *VariableExpression) Idx0() file.Idx 991 ``` 992 993 #### func (*VariableExpression) Idx1 994 995 ```go 996 func (self *VariableExpression) Idx1() file.Idx 997 ``` 998 999 #### type VariableStatement 1000 1001 ```go 1002 type VariableStatement struct { 1003 Var file.Idx 1004 List []Expression 1005 } 1006 ``` 1007 1008 1009 #### func (*VariableStatement) Idx0 1010 1011 ```go 1012 func (self *VariableStatement) Idx0() file.Idx 1013 ``` 1014 1015 #### func (*VariableStatement) Idx1 1016 1017 ```go 1018 func (self *VariableStatement) Idx1() file.Idx 1019 ``` 1020 1021 #### type WhileStatement 1022 1023 ```go 1024 type WhileStatement struct { 1025 While file.Idx 1026 Test Expression 1027 Body Statement 1028 } 1029 ``` 1030 1031 1032 #### func (*WhileStatement) Idx0 1033 1034 ```go 1035 func (self *WhileStatement) Idx0() file.Idx 1036 ``` 1037 1038 #### func (*WhileStatement) Idx1 1039 1040 ```go 1041 func (self *WhileStatement) Idx1() file.Idx 1042 ``` 1043 1044 #### type WithStatement 1045 1046 ```go 1047 type WithStatement struct { 1048 With file.Idx 1049 Object Expression 1050 Body Statement 1051 } 1052 ``` 1053 1054 1055 #### func (*WithStatement) Idx0 1056 1057 ```go 1058 func (self *WithStatement) Idx0() file.Idx 1059 ``` 1060 1061 #### func (*WithStatement) Idx1 1062 1063 ```go 1064 func (self *WithStatement) Idx1() file.Idx 1065 ``` 1066 1067 -- 1068 **godocdown** http://github.com/robertkrimen/godocdown