private ParseNode parseRangeExpression() { ParseNode result = parseRangeable(); boolean hasRange = false; while (look == ':') { int pos = _pointer; GetChar(); ParseNode nextPart = parseRangeable(); // Note - no range simplification here. An expr like "A1:B2:C3:D4:E5" should be // grouped into area ref pairs like: "(A1:B2):(C3:D4):E5" // Furthermore, Excel doesn't seem to simplify // expressions like "Sheet1!A1:Sheet1:B2" into "Sheet1!A1:B2" checkValidRangeOperand("LHS", pos, result); checkValidRangeOperand("RHS", pos, nextPart); ParseNode[] children = { result, nextPart, }; result = new ParseNode(RangePtg.instance, children); hasRange = true; } if (hasRange) { return augmentWithMemPtg(result); } return result; }