code: private static StringList parse(PageContext pc, ParserString ps, boolean doLowerCase) {
  	String id = readIdentifier(ps, doLowerCase);
  	if (id == null) return null;
  	StringList list = new StringList(id);
  	CFMLExpressionInterpreter interpreter = null;
  
  	while (true) {
  	    if (ps.forwardIfCurrent('.')) {
  		id = readIdentifier(ps, doLowerCase);
  		if (id == null) return null;
  		list.add(id);
  	    }
  	    else if (ps.forwardIfCurrent('[')) {
  		if (interpreter == null) interpreter = new CFMLExpressionInterpreter(false);
  		try {
  		    list.add(Caster.toString(interpreter.interpretPart(pc, ps)));
  		}
  		catch (PageException e) {
  		    return null;
  		}
  		if (!ps.forwardIfCurrent(']')) return null;
  		ps.removeSpace();
  	    }
  	    else break;
  	}
  	if (ps.isValidIndex()) return null;
  	list.reset();
  	return list;
      }
docs: parse a Literal variable String and return result as String List
  
  @param pc Page Context
  @param ps ParserString to read
  @return Variable Definition in a String List