multiple_scanners.cpp
来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 53 行
CPP
53 行
/*============================================================================= Copyright (c) 2002-2003 Joel de Guzman http://spirit.sourceforge.net/ Use, modification and distribution is subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)=============================================================================*/// *** See the section "Rule With Multiple Scanners" in// *** chapter "Techniques" of the Spirit documentation// *** for information regarding this snippet#define BOOST_SPIRIT_RULE_SCANNERTYPE_LIMIT 3#include <iostream>#include <boost/spirit/include/classic_core.hpp>using namespace BOOST_SPIRIT_CLASSIC_NS;struct my_grammar : grammar<my_grammar>{ template <typename ScannerT> struct definition { definition(my_grammar const& self) { r = lower_p; rr = +(lexeme_d[r] >> as_lower_d[r] >> r); } typedef scanner_list< ScannerT , typename lexeme_scanner<ScannerT>::type , typename as_lower_scanner<ScannerT>::type > scanners; rule<scanners> r; rule<ScannerT> rr; rule<ScannerT> const& start() const { return rr; } };};intmain(){ my_grammar g; bool success = parse("abcdef aBc d e f aBc d E f", g, space_p).full; assert(success); std::cout << "SUCCESS!!!\n"; return 0;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?