in src/java/org/jetbrains/plugins/clojure/parser/ClojureParser.java [55:90]
private void parseExpression(PsiBuilder builder) {
IElementType token = builder.getTokenType();
if (LEFT_PAREN == token) {
parseList(builder);
} else if (LEFT_SQUARE == token) {
parseVector(builder);
} else if (LEFT_CURLY == token) {
parseMap(builder);
} else if (QUOTE == token) {
parseQuotedForm(builder);
} else if (BACKQUOTE == token) {
parseBackQuote(builder);
} else if (ParserUtils.lookAhead(builder, SHARP, LEFT_CURLY)) {
parseSet(builder);
} else if (SHARP == token) {
parseSharp(builder);
} else if (UP == token) {
parseUp(builder);
} else if (SHARPUP == token) {
parseMetadata(builder);
} else if (TILDA == token) {
parseTilda(builder);
} else if (AT == token) {
parseAt(builder);
} else if (TILDAAT == token) {
parseTildaAt(builder);
} else if (symS.contains(token)) {
parseSymbol(builder);
} else if (COLON_SYMBOL == token) {
parseKeyword(builder);
} else if (LITERALS.contains(token)) {
parseLiteral(builder);
} else {
syntaxError(builder, ClojureBundle.message("expected.left.paren.symbol.or.literal"));
}
}