10621cb2eSAlp Toker //===--- RewriteTest.cpp - Rewriter playground ----------------------------===// 20621cb2eSAlp Toker // 30621cb2eSAlp Toker // The LLVM Compiler Infrastructure 40621cb2eSAlp Toker // 50621cb2eSAlp Toker // This file is distributed under the University of Illinois Open Source 60621cb2eSAlp Toker // License. See LICENSE.TXT for details. 70621cb2eSAlp Toker // 80621cb2eSAlp Toker //===----------------------------------------------------------------------===// 90621cb2eSAlp Toker // 100621cb2eSAlp Toker // This is a testbed. 110621cb2eSAlp Toker // 120621cb2eSAlp Toker //===----------------------------------------------------------------------===// 130621cb2eSAlp Toker 140621cb2eSAlp Toker #include "clang/Lex/Preprocessor.h" 150621cb2eSAlp Toker #include "clang/Rewrite/Core/TokenRewriter.h" 16*9670f847SMehdi Amini #include "clang/Rewrite/Frontend/Rewriters.h" 170621cb2eSAlp Toker #include "llvm/Support/raw_ostream.h" 180621cb2eSAlp Toker 190621cb2eSAlp Toker void clang::DoRewriteTest(Preprocessor &PP, raw_ostream *OS) { 200621cb2eSAlp Toker SourceManager &SM = PP.getSourceManager(); 210621cb2eSAlp Toker const LangOptions &LangOpts = PP.getLangOpts(); 220621cb2eSAlp Toker 230621cb2eSAlp Toker TokenRewriter Rewriter(SM.getMainFileID(), SM, LangOpts); 240621cb2eSAlp Toker 250621cb2eSAlp Toker // Throw <i> </i> tags around comments. 260621cb2eSAlp Toker for (TokenRewriter::token_iterator I = Rewriter.token_begin(), 270621cb2eSAlp Toker E = Rewriter.token_end(); I != E; ++I) { 280621cb2eSAlp Toker if (I->isNot(tok::comment)) continue; 290621cb2eSAlp Toker 300621cb2eSAlp Toker Rewriter.AddTokenBefore(I, "<i>"); 310621cb2eSAlp Toker Rewriter.AddTokenAfter(I, "</i>"); 320621cb2eSAlp Toker } 330621cb2eSAlp Toker 340621cb2eSAlp Toker 350621cb2eSAlp Toker // Print out the output. 360621cb2eSAlp Toker for (TokenRewriter::token_iterator I = Rewriter.token_begin(), 370621cb2eSAlp Toker E = Rewriter.token_end(); I != E; ++I) 380621cb2eSAlp Toker *OS << PP.getSpelling(*I); 390621cb2eSAlp Toker } 40