⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 leaf_node.hpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 HPP
字号:
// leaf_node.hpp// Copyright (c) 2007 Ben Hanson (http://www.benhanson.net/)//// Distributed under the Boost Software License, Version 1.0. (See accompanying// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)#ifndef BOOST_LEXER_LEAF_NODE_HPP#define BOOST_LEXER_LEAF_NODE_HPP#include "../../consts.hpp" // null_token#include "node.hpp"#include "../../size_t.hpp"namespace boost{namespace lexer{namespace detail{class leaf_node : public node{public:    leaf_node (const std::size_t token_, const bool greedy_) :        node (token_ == null_token),        _token (token_),        _set_greedy (!greedy_),        _greedy (greedy_)    {        if (!_nullable)        {            _firstpos.push_back (this);            _lastpos.push_back (this);        }    }    virtual ~leaf_node ()    {    }    virtual void append_followpos (const node_vector &followpos_)    {        for (node_vector::const_iterator iter_ = followpos_.begin (),            end_ = followpos_.end (); iter_ != end_; ++iter_)        {            _followpos.push_back (*iter_);        }    }    virtual type what_type () const    {        return LEAF;    }    virtual bool traverse (const_node_stack &/*node_stack_*/,        bool_stack &/*perform_op_stack_*/) const    {        return false;    }    virtual std::size_t token () const    {        return _token;    }    virtual void greedy (const bool greedy_)    {        if (!_set_greedy)        {            _greedy = greedy_;            _set_greedy = true;        }    }    virtual bool greedy () const    {        return _greedy;    }    virtual const node_vector &followpos () const    {        return _followpos;    }    virtual node_vector &followpos ()    {        return _followpos;    }private:    std::size_t _token;    bool _set_greedy;    bool _greedy;    node_vector _followpos;    virtual void copy_node (node_ptr_vector &node_ptr_vector_,        node_stack &new_node_stack_, bool_stack &/*perform_op_stack_*/,        bool &/*down_*/) const    {        node_ptr_vector_->push_back (0);        node_ptr_vector_->back () = new leaf_node (_token, _greedy);        new_node_stack_.push (node_ptr_vector_->back ());    }};}}}#endif

⌨️ 快捷键说明

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