github.com/mattn/anko@v0.1.10/ast/expr.go (about)

     1  package ast
     2  
     3  import (
     4  	"reflect"
     5  )
     6  
     7  // Expr provides all of interfaces for expression.
     8  type Expr interface {
     9  	Pos
    10  }
    11  
    12  // ExprImpl provide commonly implementations for Expr.
    13  type ExprImpl struct {
    14  	PosImpl // PosImpl provide Pos() function.
    15  }
    16  
    17  // OpExpr provide operator expression.
    18  type OpExpr struct {
    19  	ExprImpl
    20  	Op Operator
    21  }
    22  
    23  // LiteralExpr provide literal expression.
    24  type LiteralExpr struct {
    25  	ExprImpl
    26  	Literal reflect.Value
    27  }
    28  
    29  // ArrayExpr provide Array expression.
    30  type ArrayExpr struct {
    31  	ExprImpl
    32  	Exprs    []Expr
    33  	TypeData *TypeStruct
    34  }
    35  
    36  // MapExpr provide Map expression.
    37  type MapExpr struct {
    38  	ExprImpl
    39  	Keys     []Expr
    40  	Values   []Expr
    41  	TypeData *TypeStruct
    42  }
    43  
    44  // IdentExpr provide identity expression.
    45  type IdentExpr struct {
    46  	ExprImpl
    47  	Lit string
    48  }
    49  
    50  // UnaryExpr provide unary minus expression. ex: -1, ^1, ~1.
    51  type UnaryExpr struct {
    52  	ExprImpl
    53  	Operator string
    54  	Expr     Expr
    55  }
    56  
    57  // AddrExpr provide referencing address expression.
    58  type AddrExpr struct {
    59  	ExprImpl
    60  	Expr Expr
    61  }
    62  
    63  // DerefExpr provide dereferencing address expression.
    64  type DerefExpr struct {
    65  	ExprImpl
    66  	Expr Expr
    67  }
    68  
    69  // ParenExpr provide parent block expression.
    70  type ParenExpr struct {
    71  	ExprImpl
    72  	SubExpr Expr
    73  }
    74  
    75  // NilCoalescingOpExpr provide if invalid operator expression.
    76  type NilCoalescingOpExpr struct {
    77  	ExprImpl
    78  	LHS Expr
    79  	RHS Expr
    80  }
    81  
    82  // TernaryOpExpr provide ternary operator expression.
    83  type TernaryOpExpr struct {
    84  	ExprImpl
    85  	Expr Expr
    86  	LHS  Expr
    87  	RHS  Expr
    88  }
    89  
    90  // CallExpr provide calling expression.
    91  type CallExpr struct {
    92  	ExprImpl
    93  	Func     reflect.Value
    94  	Name     string
    95  	SubExprs []Expr
    96  	VarArg   bool
    97  	Go       bool
    98  }
    99  
   100  // AnonCallExpr provide anonymous calling expression. ex: func(){}().
   101  type AnonCallExpr struct {
   102  	ExprImpl
   103  	Expr     Expr
   104  	SubExprs []Expr
   105  	VarArg   bool
   106  	Go       bool
   107  }
   108  
   109  // MemberExpr provide expression to refer member.
   110  type MemberExpr struct {
   111  	ExprImpl
   112  	Expr Expr
   113  	Name string
   114  }
   115  
   116  // ItemExpr provide expression to refer Map/Array item.
   117  type ItemExpr struct {
   118  	ExprImpl
   119  	Item  Expr
   120  	Index Expr
   121  }
   122  
   123  // SliceExpr provide expression to refer slice of Array.
   124  type SliceExpr struct {
   125  	ExprImpl
   126  	Item  Expr
   127  	Begin Expr
   128  	End   Expr
   129  	Cap   Expr
   130  }
   131  
   132  // FuncExpr provide function expression.
   133  type FuncExpr struct {
   134  	ExprImpl
   135  	Name   string
   136  	Stmt   Stmt
   137  	Params []string
   138  	VarArg bool
   139  }
   140  
   141  // LetsExpr provide multiple expression of let.
   142  type LetsExpr struct {
   143  	ExprImpl
   144  	LHSS []Expr
   145  	RHSS []Expr
   146  }
   147  
   148  // ChanExpr provide chan expression.
   149  type ChanExpr struct {
   150  	ExprImpl
   151  	LHS Expr
   152  	RHS Expr
   153  }
   154  
   155  // ImportExpr provide expression to import packages.
   156  type ImportExpr struct {
   157  	ExprImpl
   158  	Name Expr
   159  }
   160  
   161  // MakeExpr provide expression to make instance.
   162  type MakeExpr struct {
   163  	ExprImpl
   164  	TypeData *TypeStruct
   165  	LenExpr  Expr
   166  	CapExpr  Expr
   167  }
   168  
   169  // MakeTypeExpr provide expression to make type.
   170  type MakeTypeExpr struct {
   171  	ExprImpl
   172  	Name string
   173  	Type Expr
   174  }
   175  
   176  // LenExpr provide expression to get length of array, map, etc.
   177  type LenExpr struct {
   178  	ExprImpl
   179  	Expr Expr
   180  }
   181  
   182  // IncludeExpr provide in expression
   183  type IncludeExpr struct {
   184  	ExprImpl
   185  	ItemExpr Expr
   186  	ListExpr Expr
   187  }