finishIndexOrSlice method
Expr
finishIndexOrSlice(
- Expr object
Finishes parsing an indexing operation after the opening bracket '[' has been matched.
index ::= "" expression "" ;
Implementation
Expr finishIndexOrSlice(Expr object) {
Token bracket = previous(); // The '[' token
if (check(TokenType.COLON)) {
// [:end] or [:] slice
Expr slice = parseSlice(object, bracket, null);
return slice;
}
Expr index = expression();
if (check(TokenType.COLON)) {
// [start:end]or [start:end:step] or [start:] slice
Expr slice = parseSlice(object, bracket, index);
return slice;
}
// single index
consume(TokenType.RIGHT_BRACKET, "Expect ']' after index.");
return IndexGetExpr(object, bracket, index);
}