とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

Xpressive を使って #define を探し #undef を作る

#define から #undef を生成する (2) - 危ないRiSKのブログ
これの C++ 移植版です。

#include<iostream>
#include<boost/xpressive/xpressive.hpp>

void print_undef()
{
 std::string line;
 if(std::getline(std::cin, line))
 {
  print_undef();
  auto const re
   = boost::xpressive::sregex::compile("\\s*#\\s*define\\s+([A-Za-z_]+)");
  boost::xpressive::smatch match;
  if(boost::xpressive::regex_search(line, match, re))
  {
   std::cout << "#undef " << match[1].str() << std::endl;
  }
 }
}

int main()
{
 print_undef();
}

入力文字列:

#define hoge fuga
#define foo baz

実行結果:

#undef foo
#undef hoge

参照:
Chapter 29. Boost.Xpressive

Boost C++ Librariesプログラミング
稲葉 一浩
秀和システム
売り上げランキング: 65859
おすすめ度の平均: 4.0
4 よく使います。
4 boostを初めて使う方、既に使用している方どちらも持っていて損はありません