protected boolean parsePrimaryExpr(PsiBuilder builder) {
    final IElementType tokenType = builder.getTokenType();

    if (tokenType == XPathTokenTypes.DOLLAR) {
      parseVariable(builder);
    } else if (tokenType == XPathTokenTypes.LPAREN) {
      parseParenthesizedExpr(builder);
    } else if (tokenType == XPathTokenTypes.STRING_LITERAL) {
      parseLiteral(builder);
    } else if (tokenType == XPathTokenTypes.NUMBER) {
      parseNumber(builder);
    } else if (tokenType == XPathTokenTypes.FUNCTION_NAME || tokenType == XPathTokenTypes.EXT_PREFIX) {
      parseFunction(builder);
    } else {
      return false;
    }
    return true;
  }
protected boolean parsePrimaryExpr(PsiBuilder builder)