brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.3 KiB · 75db27e Raw
38 lines · cpp
1//===--- RewriteTest.cpp - Rewriter playground ----------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// This is a testbed.10//11//===----------------------------------------------------------------------===//12 13#include "clang/Lex/Preprocessor.h"14#include "clang/Rewrite/Core/TokenRewriter.h"15#include "clang/Rewrite/Frontend/Rewriters.h"16 17void clang::DoRewriteTest(Preprocessor &PP, raw_ostream *OS) {18  SourceManager &SM = PP.getSourceManager();19  const LangOptions &LangOpts = PP.getLangOpts();20 21  TokenRewriter Rewriter(SM.getMainFileID(), SM, LangOpts);22 23  // Throw <i> </i> tags around comments.24  for (TokenRewriter::token_iterator I = Rewriter.token_begin(),25       E = Rewriter.token_end(); I != E; ++I) {26    if (I->isNot(tok::comment)) continue;27 28    Rewriter.AddTokenBefore(I, "<i>");29    Rewriter.AddTokenAfter(I, "</i>");30  }31 32 33  // Print out the output.34  for (TokenRewriter::token_iterator I = Rewriter.token_begin(),35       E = Rewriter.token_end(); I != E; ++I)36    *OS << PP.getSpelling(*I);37}38