translation_unit_skipper.h 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. // Hannibal: partial C++ grammar to parse C++ type information
  2. // Copyright (c) 2005-2006 Danny Havenith
  3. //
  4. // Boost.Wave: A Standard compliant C++ preprocessor
  5. // Copyright (c) 2001-2009 Hartmut Kaiser
  6. //
  7. // http://www.boost.org/
  8. //
  9. // Distributed under the Boost Software License, Version 1.0. (See accompanying
  10. // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  11. #if !defined(HANNIBAL_TRANSLATION_UNIT_SKIPPER_H_INCLUDED)
  12. #define HANNIBAL_TRANSLATION_UNIT_SKIPPER_H_INCLUDED
  13. #include <boost/spirit/include/classic_core.hpp>
  14. #include <boost/spirit/include/classic_confix.hpp>
  15. #include <boost/wave/wave_config.hpp>
  16. #include <boost/wave/token_ids.hpp>
  17. #include <boost/wave/util/pattern_parser.hpp>
  18. ///////////////////////////////////////////////////////////////////////////////
  19. struct translation_unit_skipper
  20. : public boost::spirit::classic::grammar<translation_unit_skipper>
  21. {
  22. template <typename ScannerT>
  23. struct definition
  24. {
  25. definition(translation_unit_skipper const& /*self*/)
  26. {
  27. using namespace boost::spirit::classic;
  28. using namespace boost::wave;
  29. using boost::wave::util::pattern_p;
  30. skip
  31. = pattern_p(WhiteSpaceTokenType, TokenTypeMask)
  32. | pattern_p(EOLTokenType, TokenTypeMask)
  33. | pattern_p(EOFTokenType, TokenTypeMask)
  34. | comment_p(pattern_p(PPTokenType, TokenTypeMask),
  35. pattern_p(EOLTokenType, TokenTypeMask))
  36. ;
  37. }
  38. boost::spirit::classic::rule<ScannerT> skip;
  39. boost::spirit::classic::rule<ScannerT> const&
  40. start() const { return skip; }
  41. };
  42. };
  43. #endif // HANNIBAL_TRANSLATION_UNIT_SKIPPER_H_INCLUDED