MCPcopy Create free account
hub / github.com/jmespath/go-jmespath / parseSliceExpression

Method parseSliceExpression

parser.go:182–210  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

180}
181
182func (p *Parser) parseSliceExpression() (ASTNode, error) {
183 parts := []*int{nil, nil, nil}
184 index := 0
185 current := p.current()
186 for current != tRbracket && index < 3 {
187 if current == tColon {
188 index++
189 p.advance()
190 } else if current == tNumber {
191 parsedInt, err := strconv.Atoi(p.lookaheadToken(0).value)
192 if err != nil {
193 return ASTNode{}, err
194 }
195 parts[index] = &parsedInt
196 p.advance()
197 } else {
198 return ASTNode{}, p.syntaxError(
199 "Expected tColon or tNumber" + ", received: " + p.current().String())
200 }
201 current = p.current()
202 }
203 if err := p.match(tRbracket); err != nil {
204 return ASTNode{}, err
205 }
206 return ASTNode{
207 nodeType: ASTSlice,
208 value: parts,
209 }, nil
210}
211
212func (p *Parser) match(tokenType tokType) error {
213 if p.current() == tokenType {

Callers 1

parseIndexExpressionMethod · 0.95

Calls 6

currentMethod · 0.95
advanceMethod · 0.95
lookaheadTokenMethod · 0.95
syntaxErrorMethod · 0.95
matchMethod · 0.95
StringMethod · 0.45

Tested by

no test coverage detected