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;
 }