1package ast 2 3type Stmt interface { 4 PositionHolder 5 stmtMarker() 6} 7 8type StmtBase struct { 9 Node 10} 11 12func (stmt *StmtBase) stmtMarker() {} 13 14type AssignStmt struct { 15 StmtBase 16 17 Lhs []Expr 18 Rhs []Expr 19} 20 21type LocalAssignStmt struct { 22 StmtBase 23 24 Names []string 25 Exprs []Expr 26} 27 28type FuncCallStmt struct { 29 StmtBase 30 31 Expr Expr 32} 33 34type DoBlockStmt struct { 35 StmtBase 36 37 Stmts []Stmt 38} 39 40type WhileStmt struct { 41 StmtBase 42 43 Condition Expr 44 Stmts []Stmt 45} 46 47type RepeatStmt struct { 48 StmtBase 49 50 Condition Expr 51 Stmts []Stmt 52} 53 54type IfStmt struct { 55 StmtBase 56 57 Condition Expr 58 Then []Stmt 59 Else []Stmt 60} 61 62type NumberForStmt struct { 63 StmtBase 64 65 Name string 66 Init Expr 67 Limit Expr 68 Step Expr 69 Stmts []Stmt 70} 71 72type GenericForStmt struct { 73 StmtBase 74 75 Names []string 76 Exprs []Expr 77 Stmts []Stmt 78} 79 80type FuncDefStmt struct { 81 StmtBase 82 83 Name *FuncName 84 Func *FunctionExpr 85} 86 87type ReturnStmt struct { 88 StmtBase 89 90 Exprs []Expr 91} 92 93type BreakStmt struct { 94 StmtBase 95} 96