private void Read() { var constantExpression = new StringBuilder(); char character; while (reader.ReadNext(out character)) { switch (character) { case '\\': constantExpression.Append(ReadEscapedCharacter()); break; case '[': visitor.VisitConstant(constantExpression.ToString()); constantExpression.Clear(); visitor.VisitRange(ReadRange()); break; default: constantExpression.Append(character); break; } } if (constantExpression.Length > 0) { visitor.VisitConstant(constantExpression.ToString()); } }
private void ReadMemberName() { var memberName = new StringBuilder(); char character; while (reader.ReadNext(out character)) { if (character == '.' || character == '[') { if (memberName.Length > 0) { visitor.VisitMember(memberName.ToString()); memberName.Clear(); } if (character == '[') { ReadDictionaryStyleMember(); } } else { if (!IsAlphaNumeric(character)) { throw UnexpectedCharacter(); } memberName.Append(character); } } if (memberName.Length > 0) { visitor.VisitMember(memberName.ToString()); } }