grammar.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 64 行

CPP
64
字号
//  Copyright (c) 2001-2008 Hartmut Kaiser// //  Distributed under 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 <boost/config/warning_disable.hpp>#include <boost/detail/lightweight_test.hpp>// include this first to make rules have placeholders (e.g. r._1)#include <boost/spirit/include/support_argument.hpp>#include <boost/spirit/include/karma_operator.hpp>#include <boost/spirit/include/karma_char.hpp>#include <boost/spirit/include/karma_string.hpp>#include <boost/spirit/include/karma_numeric.hpp>#include <boost/spirit/include/karma_nonterminal.hpp>#include <boost/spirit/include/karma_action.hpp>#include <boost/spirit/include/phoenix_core.hpp>#include <boost/spirit/include/phoenix_operator.hpp>#include <string>#include <iostream>#include "test.hpp"using namespace spirit_test;using namespace boost::spirit::karma;using namespace boost::spirit::ascii;typedef spirit_test::output_iterator<char>::type outiter_type;struct num_list : grammar<outiter_type, space_type>{    num_list() : num_list::base_type(start)    {        using boost::spirit::int_;        num1 = int_(123);        num2 = int_(456);        num3 = int_(789);        start = num1 << ',' << num2 << ',' << num3;    }    rule<outiter_type, space_type> start, num1, num2, num3;};intmain(){    { // simple grammar test        num_list nlist;        BOOST_TEST(test_delimited("123 , 456 , 789 ", nlist, space));    }    { // direct access to the rules        num_list def;        BOOST_TEST(test_delimited("123 ", def.num1, space));        BOOST_TEST(test_delimited("123 , 456 , 789 ", def.start, space));    }    return boost::report_errors();}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?