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 + -
显示快捷键?