private List<Token> eatDottedName(XDDSLMessages error) {
		List<Token> result = new ArrayList<Token>(3);
		Token name = nextToken();
		if (!name.isKind(TokenKind.IDENTIFIER)) {
			raiseException(name.startpos, error, name.data != null ? name.data
					: new String(name.getKind().tokenChars));
		}
		result.add(name);
		while (peekToken(TokenKind.DOT)) {
			if (!isNextTokenAdjacent()) {
				raiseException(peekToken().startpos, XDDSLMessages.NO_WHITESPACE_IN_DOTTED_NAME);
			}
			result.add(nextToken()); // consume dot
			if (peekToken(TokenKind.IDENTIFIER) && !isNextTokenAdjacent()) {
				raiseException(peekToken().startpos, XDDSLMessages.NO_WHITESPACE_IN_DOTTED_NAME);
			}
			result.add(eatToken(TokenKind.IDENTIFIER));
		}
		return result;
	}
Consumes and returns (identifier [DOT identifier]*) as long as they're adjacent.

@param error the kind of error to report if input is ill-formed
spring-xd-dirt/src/main/java/org/springframework/xd/dirt/stream/dsl/StreamConfigParser.java