lazy.hpp

来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 67 行

HPP
67
字号
/*=============================================================================    Copyright (c) 2003 Joel de Guzman    Copyright (c) 2003 Vaclav Vesely    http://spirit.sourceforge.net/  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)=============================================================================*/#ifndef BOOST_SPIRIT_LAZY_HPP#define BOOST_SPIRIT_LAZY_HPP////////////////////////////////////////////////////////////////////////////////#include <boost/spirit/home/classic/namespace.hpp>#include <boost/spirit/home/classic/core/parser.hpp>#include <boost/spirit/home/classic/phoenix/actor.hpp>////////////////////////////////////////////////////////////////////////////////namespace boost { namespace spirit {BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN    ////////////////////////////////////////////////////////////////////////////    //    // lazy_parser, holds phoenix actor which returns a spirit parser.    //    ////////////////////////////////////////////////////////////////////////////    template<class ActorT>    struct lazy_parser : parser<lazy_parser<ActorT> >    {        typedef lazy_parser<ActorT> self_t;        typedef typename phoenix::actor_result<            ActorT, phoenix::tuple<> >::plain_type actor_result_t;        template<typename ScannerT>        struct result        {            typedef typename                parser_result<actor_result_t, ScannerT>::type            type;        };        lazy_parser(ActorT const& actor_)        : actor(actor_) {}        template<typename ScannerT>        typename parser_result<self_t, ScannerT>::type        parse(ScannerT const& scan) const        { return actor().parse(scan); }        ActorT actor;    };    //////////////////////////////    // lazy_p, returns lazy_parser    // Usage: lazy_p(actor)    template<class ActorT>    lazy_parser<ActorT> lazy_p(ActorT const& actor)    { return lazy_parser<ActorT>(actor); }BOOST_SPIRIT_CLASSIC_NAMESPACE_END}} // namespace BOOST_SPIRIT_CLASSIC_NS#endif // BOOST_SPIRIT_LAZY_HPP

⌨️ 快捷键说明

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