public boolean parseStringLiteralExpression() { final PsiBuilder builder = myContext.getBuilder(); if (PyTokenTypes.STRING_NODES.contains(builder.getTokenType())) { final PsiBuilder.Marker marker = builder.mark(); while (PyTokenTypes.STRING_NODES.contains(builder.getTokenType())) { nextToken(); } marker.done(PyElementTypes.STRING_LITERAL_EXPRESSION); return true; } return false; }
public boolean parsePrimaryExpression(boolean isTargetExpression) { final IElementType firstToken = myBuilder.getTokenType(); if (firstToken == PyTokenTypes.IDENTIFIER) { if (isTargetExpression) { buildTokenElement(PyElementTypes.TARGET_EXPRESSION, myBuilder); } else { buildTokenElement(getReferenceType(), myBuilder); } return true; } else if (firstToken == PyTokenTypes.INTEGER_LITERAL) { buildTokenElement(PyElementTypes.INTEGER_LITERAL_EXPRESSION, myBuilder); return true; } else if (firstToken == PyTokenTypes.FLOAT_LITERAL) { buildTokenElement(PyElementTypes.FLOAT_LITERAL_EXPRESSION, myBuilder); return true; } else if (firstToken == PyTokenTypes.IMAGINARY_LITERAL) { buildTokenElement(PyElementTypes.IMAGINARY_LITERAL_EXPRESSION, myBuilder); return true; } else if (firstToken == PyTokenTypes.NONE_KEYWORD) { buildTokenElement(PyElementTypes.NONE_LITERAL_EXPRESSION, myBuilder); return true; } else if (firstToken == PyTokenTypes.TRUE_KEYWORD || firstToken == PyTokenTypes.FALSE_KEYWORD || firstToken == PyTokenTypes.DEBUG_KEYWORD) { buildTokenElement(PyElementTypes.BOOL_LITERAL_EXPRESSION, myBuilder); return true; } else if (PyTokenTypes.STRING_NODES.contains(firstToken)) { return parseStringLiteralExpression(); } else if (firstToken == PyTokenTypes.LPAR) { parseParenthesizedExpression(isTargetExpression); return true; } else if (firstToken == PyTokenTypes.LBRACKET) { parseListLiteralExpression(myBuilder, isTargetExpression); return true; } else if (firstToken == PyTokenTypes.LBRACE) { parseDictOrSetDisplay(); return true; } else if (firstToken == PyTokenTypes.TICK) { parseReprExpression(myBuilder); return true; } else if (parseEllipsis()) { return true; } return false; }