public Slice subscript()
{
Exp start = null;
Exp end = null;
Exp slice = null;
int lexPos = lexer.LineNumber;
if (!Peek(TokenType.COLON))
{
start = test();
}
if (PeekAndDiscard(TokenType.COLON))
{
if (!Peek(TokenType.COLON, TokenType.RBRACKET))
{
end = test();
}
if (Peek(TokenType.COLON))
{
slice = sliceop();
}
}
//$REVIEW: fix this [2:]
return new Slice(start, end, slice,
filename,
lexPos,
lexer.LineNumber); //$BUG: should be position, not line number.
}