code: private String identifier(boolean firstCanBeNumber) {
  	if (!cfml.isCurrentLetter() && !cfml.isCurrentSpecial()) {
  	    if (!firstCanBeNumber) return null;
  	    else if (!cfml.isCurrentDigit()) return null;
  	}
  	boolean doUpper;
  	PageSource ps = pc == null ? null : pc.getCurrentPageSource();
  	if (ps != null) doUpper = !isJson && ps.getDialect() == CFMLEngine.DIALECT_CFML && ((MappingImpl) ps.getMapping()).getDotNotationUpperCase();
  	else doUpper = !isJson && ((ConfigWebImpl) config).getDotNotationUpperCase(); // MUST .lucee should not be upper case
  
  	StringBuilder sb = new StringBuilder();
  	sb.append(doUpper ? cfml.getCurrentUpper() : cfml.getCurrent());
  	do {
  	    cfml.next();
  	    if (!(cfml.isCurrentLetter() || cfml.isCurrentDigit() || cfml.isCurrentSpecial())) {
  		break;
  	    }
  
  	    sb.append(doUpper ? cfml.getCurrentUpper() : cfml.getCurrent());
  	}
  	while (cfml.isValidIndex());
  	return sb.toString();// cfml.substringLower(start,cfml.getPos()-start);
      }
docs: Liest einen Identifier aus und gibt diesen als String zurueck. <br />
  EBNF:<br />
  <code>(letter | "_") {letter | "_"|digit};</code>
  
  @param firstCanBeNumber
  @return Identifier.