z_mirror/luapls
git clone https://git.raiguard.me/z_mirror/luapls
1373e5d
main
1package ast 2 3import ( 4"github.com/raiguard/luapls/lua/token" 5) 6 7type Expression interface { 8Node 9expressionNode () 10} 11 12type FunctionCall struct { 13Name Expression 14LeftParen * Unit // Optional 15Args Punctuated [Expression ] 16RightParen * Unit // Optional 17} 18 19func (fc * FunctionCall )expressionNode () {} 20func (fc * FunctionCall )statementNode () {} 21func (fc * FunctionCall )Pos () token.Pos { 22return fc .Name .Pos () 23} 24func (fc * FunctionCall )End () token.Pos { 25if fc .RightParen != nil { 26return fc .RightParen .End () 27 } 28if len (fc .Args .Pairs )> 0 { 29return fc .Args .Pairs [len (fc .Args .Pairs )- 1 ].End () 30 } 31if fc .LeftParen != nil { 32return fc .LeftParen .End () 33 } 34return fc .Name .End () 35} 36 37type FunctionExpression struct { 38FuncTok Unit 39LeftParen Unit 40Params Punctuated [* Identifier ] 41Vararg * Unit 42RightParen Unit 43Body Block 44EndUnit Unit 45} 46 47func (fe * FunctionExpression )expressionNode () {} 48func (fe * FunctionExpression )Pos () token.Pos { 49return fe .FuncTok .Pos () 50} 51func (fe * FunctionExpression )End () token.Pos { 52return fe .EndUnit .End () 53} 54 55type IndexExpression struct { 56Prefix Expression 57LeftIndexer Unit 58Inner Expression 59RightIndexer * Unit 60} 61 62func (ie * IndexExpression )expressionNode () {} 63func (ie * IndexExpression )Pos () token.Pos { 64return ie .Prefix .Pos () 65} 66func (ie * IndexExpression )End () token.Pos { 67if ie .RightIndexer != nil { 68return ie .RightIndexer .End () 69 } 70return ie .Inner .End () 71} 72 73type InfixExpression struct { 74Left Expression 75Operator Unit 76Right Expression 77} 78 79func (be * InfixExpression )expressionNode () {} 80func (be * InfixExpression )Pos () token.Pos { 81return be .Left .Pos () 82} 83func (be * InfixExpression )End () token.Pos { 84return be .Right .End () 85} 86 87type PrefixExpression struct { 88Operator Unit 89Right Expression 90} 91 92func (pe * PrefixExpression )expressionNode () {} 93func (pe * PrefixExpression )Pos () token.Pos { 94return pe .Operator .Pos () 95} 96func (pe * PrefixExpression )End () token.Pos { 97return pe .Right .End () 98} 99 100// Literals (also expressions) 101 102type BooleanLiteral Unit 103 104func (bl * BooleanLiteral )expressionNode () {} 105func (bl * BooleanLiteral )Pos () token.Pos { 106return bl .Token .Pos 107} 108func (bl * BooleanLiteral )End () token.Pos { 109return bl .Token .End () 110} 111func (bl * BooleanLiteral )leaf () {} 112 113type Identifier Unit 114 115func (i * Identifier )expressionNode () {} 116func (i * Identifier )Pos () token.Pos { 117return i .Token .Pos 118} 119func (i * Identifier )End () token.Pos { 120return i .Token .End () 121} 122func (i * Identifier )leaf () {} 123 124type NilLiteral Unit 125 126func (i * NilLiteral )expressionNode () {} 127func (i * NilLiteral )Pos () token.Pos { 128return i .Token .Pos 129} 130func (i * NilLiteral )End () token.Pos { 131return i .Token .End () 132} 133func (n * NilLiteral )leaf () {} 134 135type NumberLiteral Unit 136 137func (nl * NumberLiteral )expressionNode () {} 138func (nl * NumberLiteral )Pos () token.Pos { 139return nl .Token .Pos 140} 141func (nl * NumberLiteral )End () token.Pos { 142return nl .Token .End () 143} 144func (nl * NumberLiteral )leaf () {} 145 146type StringLiteral Unit 147 148func (sl * StringLiteral )expressionNode () {} 149func (sl * StringLiteral )Pos () token.Pos { 150return sl .Token .Pos 151} 152func (sl * StringLiteral )End () token.Pos { 153return sl .Token .End () 154} 155func (sl * StringLiteral )leaf () {} 156 157type TableLiteral struct { 158LeftBrace Unit 159Fields Punctuated [TableField ] 160RightBrace Unit 161} 162 163func (tl * TableLiteral )expressionNode () {} 164func (tl * TableLiteral )Pos () token.Pos { 165return tl .LeftBrace .Pos () 166} 167func (tl * TableLiteral )End () token.Pos { 168return tl .RightBrace .End () 169} 170 171type Vararg Unit 172 173func (va * Vararg )expressionNode () {} 174func (va * Vararg )Pos () token.Pos { 175return va .Token .Pos 176} 177func (va * Vararg )End () token.Pos { 178return va .Token .End () 179} 180func (va * Vararg )leaf () {}