public static UnparseTranslator collectUnescapeIdentifierTranslations(ASTNode node)
      throws SemanticException {
    UnparseTranslator unparseTranslator = new UnparseTranslator(Quotation.BACKTICKS);
    unparseTranslator.enable();

    SetMultimap<Integer, SemanticNodeProcessor> astNodeToProcessor = HashMultimap.create();
    astNodeToProcessor.put(HiveParser.TOK_TABLE_OR_COL, new ColumnExprProcessor());
    astNodeToProcessor.put(HiveParser.DOT, new ColumnExprProcessor());
    NodeProcessorCtx nodeProcessorCtx = new QuotedIdExpressionContext(unparseTranslator);

    CostLessRuleDispatcher costLessRuleDispatcher = new CostLessRuleDispatcher(
        (nd, stack, procCtx, nodeOutputs) -> null, astNodeToProcessor, nodeProcessorCtx);
    SemanticGraphWalker walker = new ExpressionWalker(costLessRuleDispatcher);
    walker.startWalking(Collections.singletonList(node), null);
    return unparseTranslator;
  }
Regenerate an identifier as part of unparsing it back to SQL text.
ql/src/java/org/apache/hadoop/hive/ql/metadata/HiveUtils.java