subrule_tests.cpp
来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 94 行
CPP
94 行
/*============================================================================= Copyright (c) 1998-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)=============================================================================*/#include <iostream>#include <boost/detail/lightweight_test.hpp>using namespace std;#include <boost/spirit/include/classic_core.hpp>using namespace BOOST_SPIRIT_CLASSIC_NS;/////////////////////////////////////////////////////////////////////////////////// Sub Rules tests/////////////////////////////////////////////////////////////////////////////////voidsubrules_tests(){ subrule<0> start; subrule<1> a; subrule<2> b; subrule<3> c; parse_info<char const*> pi; pi = parse("abcabcacb", ( start = *(a | b | c), a = ch_p('a'), b = ch_p('b'), c = ch_p('c') ) ); BOOST_TEST(pi.hit); BOOST_TEST(pi.full); BOOST_TEST(pi.length == 9); BOOST_TEST(*pi.stop == 0); pi = parse("aaaabababaaabbb", ( start = (a | b) >> (start | b), a = ch_p('a'), b = ch_p('b') ) ); BOOST_TEST(pi.hit); BOOST_TEST(pi.full); BOOST_TEST(pi.length == 15); BOOST_TEST(*pi.stop == 0); pi = parse("aaaabababaaabba", ( start = (a | b) >> (start | b), a = ch_p('a'), b = ch_p('b') ) ); BOOST_TEST(pi.hit); BOOST_TEST(!pi.full); BOOST_TEST(pi.length == 14); pi = parse("aaaabababaaabbb", // single subrule test start = (ch_p('a') | 'b') >> (start | 'b') ); BOOST_TEST(pi.hit); BOOST_TEST(pi.full); BOOST_TEST(pi.length == 15); BOOST_TEST(*pi.stop == 0);}/////////////////////////////////////////////////////////////////////////////////// Main/////////////////////////////////////////////////////////////////////////////////intmain(){ subrules_tests(); return boost::report_errors();}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?