亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? symbols.hpp

?? 著名的Parser庫Spirit在VC6上的Port
?? HPP
?? 第 1 頁 / 共 2 頁
字號:
/*=============================================================================
    Symbol Tables

    Spirit V1.3.1
    Copyright (c) 2001, Joel de Guzman

    This software is provided 'as-is', without any express or implied
    warranty. In no event will the copyright holder be held liable for
    any damages arising from the use of this software.

    Permission is granted to anyone to use this software for any purpose,
    including commercial applications, and to alter it and redistribute
    it freely, subject to the following restrictions:

    1.  The origin of this software must not be misrepresented; you must
        not claim that you wrote the original software. If you use this
        software in a product, an acknowledgment in the product documentation
        would be appreciated but is not required.

    2.  Altered source versions must be plainly marked as such, and must
        not be misrepresented as being the original software.

    3.  This notice may not be removed or altered from any source
        distribution.

    Acknowledgements:

        Special thanks to Dan Nuffer, John (EBo) David, Chris Uzdavinis,
        and Doug Gregor. These people are most instrumental in steering
        Spirit in the right direction.

        Special thanks also to people who have contributed to the code base
        and sample code, ported Spirit to various platforms and compilers,
        gave suggestions, reported and provided bug fixes. Alexander
        Hirner, Andy Elvey, Bogdan Kushnir, Brett Calcott, Bruce Florman,
        Changzhe Han, Colin McPhail, Hakki Dogusan, Jan Bares, Joseph
        Smith, Martijn W. van der Lee, Raghavendra Satish, Remi Delcos, Tom
        Spilman, Vladimir Prus, W. Scott Dillman, David A. Greene, Bob
        Bailey, Hartmut Kaiser.

        Finally special thanks also to people who gave feedback and
        valuable comments, particularly members of Spirit's Source Forge
        mailing list and boost.org.

    URL: http://spirit.sourceforge.net/

=============================================================================*/
#ifndef SPIRIT_SYMBOLS_HPP
#define SPIRIT_SYMBOLS_HPP

///////////////////////////////////////////////////////////////////////////////

#include "boost/spirit/MSVC/parser.hpp"
#include <memory>

///////////////////////////////////////////////////////////////////////////////
namespace spirit {

///////////////////////////////////////////////////////////////////////////////
//  Forward Declarations

template <typename CharT, typename T> class tst;
template <typename T> class symbol_match;
template <typename MatchTraitsT, typename T> class ast_symbol_match;
template <typename T, typename SetT> class symbol_inserter;
template <typename ParserT, typename ActionT> class symbol_action;
///////////////////////////////////////////////////////////////////////////////
//
//  tst class
//
//      Ternary Search Tree implementation. This is the default
//      implementation for string sets. The data structure is faster
//      than hashing for many typical search problems especially when
//      the search interface is iterator based. Searching for a string
//      of length k in a ternary search tree with n strings will require
//      at most O(log n+k) character comparisons. TSTs are many times
//      faster than hash tables for unsuccessful searches since
//      mismatches are discovered earlier after examining only a few
//      characters. Hash tables always examine an entire key when
//      searching.
//
//      For details see http://www.cs.princeton.edu/~rs/strings/.
//
///////////////////////////////////////////////////////////////////////////////
template <typename T, typename CharT>
class tst {

public:

    struct search_info {

        T*          data;
        unsigned    length;
    };

    tst();
    tst(tst const& other);
    ~tst();

    tst&
    operator=(tst const& other);

    template <typename IteratorT>
    T*
    add(IteratorT first, IteratorT const& last, T const& data)
    {
        if (first == last)
            return 0;
    
        node**  np = &root;
        CharT   ch = *first;
    
        while (true)
        {
            if (*np == 0 || ch == 0)
            {
                node* right = 0;
                if (np != 0)
                    right = *np;
                *np = new node(ch);
                if (right)
                    (**np).right = right;
            }
    
            if (ch < (**np).value)
            {
                np = &(**np).left;
            }
            else
            {
                if (ch == (**np).value)
                {
                    if (ch == 0)
                    {
                        if ((**np).middle.data == 0)
                        {
                            (**np).middle.data = new T(data);
                            return (**np).middle.data;
                        }
                        else
                        {
                            //  re-addition is disallowed
                            return 0;
                        }
                   }
                    ++first;
                    ch = (first == last) ? 0 : *first;
                    np = &(**np).middle.link;
                }
                else
                {
                    np = &(**np).right;
                }
            }
        }
    }


    template <typename IteratorT>
    search_info
        find(IteratorT& first, IteratorT const& last) const
    {
        node*       np = root;
        CharT       ch = *first;
        IteratorT   save = first;
        search_info result = { 0, 0 };
    
        while (np)
        {
            if (ch < np->value)
            {
                if (np->value == 0)
                    result.data = np->middle.data;
                np = np->left;
            }
            else
            {
                if (ch == np->value)
                {
                    if (first == last)
                    {
                        result.data = np->middle.data;
                        break;
                    }
                    ch = *(++first);
                    np = np->middle.link;
                    ++result.length;
                }
                else
                {
                    if (np->value == 0)
                        result.data = np->middle.data;
                    np = np->right;
                }
            }
        }
    
        if (result.data == 0)
            first = save;
        return result;
    }

private:

    struct node
    {
       node(CharT value_)
       :  value(value_),
         left(0),
         right(0)
       {
           middle.link = 0;
       }

       //////////////////////////////////
      ~node()
      {
        delete left;
        delete right;
        if (value)
            delete middle.link;
        else
            delete middle.data;
      }


       node*
       clone() const
       {
         std::auto_ptr<node> copy(new node(value));

         if (left)
             copy->left = left->clone();
         if (right)
            copy->right = right->clone();
         if (value && middle.link)
            copy->middle.link = middle.link->clone();
         else
             copy->middle.data = new T(*middle.data);

         return copy.release();
       }


      union center {

          node*   link;
          T*      data;
       };

       CharT   value;
       node*   left;
       center  middle;
       node*   right;
     };
  

    node* root;
};


///////////////////////////////////////////////////////////////////////////////
//
//  symbols class

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲自拍欧美精品| 97久久精品人人爽人人爽蜜臀| 日韩免费高清视频| 成人午夜激情视频| 免费高清视频精品| 国产精品1024久久| 亚洲精品一区二区三区蜜桃下载| 不卡av电影在线播放| 久久91精品久久久久久秒播| 亚洲欧美日韩国产成人精品影院| 精品福利视频一区二区三区| 欧美三级中文字幕| 久久精品久久综合| 樱桃国产成人精品视频| 国产女主播一区| 欧美va在线播放| 欧美色倩网站大全免费| 91亚洲午夜精品久久久久久| 国产ts人妖一区二区| 国产一区二区精品久久91| 日韩av电影免费观看高清完整版 | 中文字幕av一区二区三区高| 欧美高清视频www夜色资源网| 91免费版在线看| 不卡在线视频中文字幕| 国产福利不卡视频| 粗大黑人巨茎大战欧美成人| 国产成人在线网站| 亚洲一区二区欧美激情| 亚洲成a人片在线观看中文| 亚洲一二三四区| 欧洲精品一区二区三区在线观看| 久久99国产精品免费网站| 丝袜亚洲另类丝袜在线| 婷婷久久综合九色综合伊人色| 亚洲伊人伊色伊影伊综合网| 亚洲男人的天堂一区二区| 成人欧美一区二区三区| 国产精品网曝门| 国产精品免费视频一区| 国产精品久久久久久久久搜平片| 久久亚洲精华国产精华液| 久久免费午夜影院| 国产精品成人免费精品自在线观看| 国产亚洲欧美日韩日本| 久久久久久久久久久电影| 欧美日韩不卡一区二区| 欧美电视剧在线观看完整版| 久久日韩粉嫩一区二区三区| 一区二区中文视频| 蜜桃久久av一区| 国产白丝网站精品污在线入口| voyeur盗摄精品| 欧美理论在线播放| 欧美精品一区二区久久婷婷| 日韩一区中文字幕| 蜜臀av性久久久久蜜臀aⅴ| 国产精品夜夜嗨| 欧美在线视频你懂得| 欧美一区二区黄色| 亚洲视频你懂的| 美女视频免费一区| 91论坛在线播放| 精品剧情v国产在线观看在线| 国产欧美一区二区精品性色| 亚洲综合成人在线视频| av一区二区三区| 欧美在线一区二区三区| 欧美成人猛片aaaaaaa| 日韩一区在线免费观看| 奇米一区二区三区| 一本到高清视频免费精品| 欧美一区二区视频观看视频| 亚洲欧洲av在线| 久久99国产精品久久| 欧美伊人久久大香线蕉综合69| 精品福利一区二区三区免费视频| 夜夜嗨av一区二区三区网页| 亚洲chinese男男1069| 91小视频在线观看| 欧美成人免费网站| 亚洲亚洲精品在线观看| 国产成人aaa| 欧美高清一级片在线| 亚洲美女区一区| 成人性色生活片免费看爆迷你毛片| 欧美一区二区三区免费在线看| 亚洲激情六月丁香| 99国产一区二区三精品乱码| 日韩欧美一级片| 欧美aaaaa成人免费观看视频| 日本久久电影网| 1024精品合集| 国产一区在线视频| 欧美日韩国产一级二级| 一区二区在线观看免费视频播放 | 成人永久免费视频| 久久久久久久久久电影| 精品中文av资源站在线观看| 91精品国产色综合久久不卡电影| 一区二区三区91| 色狠狠色狠狠综合| 亚洲综合一区二区三区| 91国内精品野花午夜精品| 亚洲欧美激情小说另类| 欧美亚洲综合另类| 午夜电影一区二区三区| 日韩一区和二区| 久久国产精品露脸对白| 久久久精品黄色| 国产v日产∨综合v精品视频| 亚洲国产精品国自产拍av| 成人看片黄a免费看在线| 欧美国产一区二区在线观看| 免费观看在线综合| 日韩欧美三级在线| 国产一区免费电影| 最新日韩在线视频| 欧美日韩精品是欧美日韩精品| 日本中文字幕不卡| 久久综合久久综合亚洲| 国产成人午夜视频| 亚洲欧美国产77777| 666欧美在线视频| 国产在线精品一区二区不卡了 | 91亚洲精品一区二区乱码| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 亚洲一区二三区| 69久久99精品久久久久婷婷| 国产麻豆精品视频| 亚洲激情图片qvod| 91精品婷婷国产综合久久| 国产在线看一区| 国产精品久久久一本精品| 91在线porny国产在线看| 亚洲第一福利一区| 国产欧美va欧美不卡在线| 在线精品视频一区二区三四| 国产精品久久久久毛片软件| 成人精品gif动图一区| 亚洲一区二区欧美| 日韩欧美一区二区三区在线| 成人丝袜高跟foot| 五月天激情综合| 国产精品视频第一区| 欧美高清激情brazzers| 成人免费av在线| 麻豆91精品91久久久的内涵| 自拍偷拍国产精品| 日韩一区二区三区在线| 色偷偷成人一区二区三区91| 久久66热re国产| 亚洲精品大片www| 精品欧美乱码久久久久久1区2区| 色婷婷久久久亚洲一区二区三区 | 日韩视频在线一区二区| 91丝袜呻吟高潮美腿白嫩在线观看| 亚洲国产综合视频在线观看| 国产精品情趣视频| 精品国产百合女同互慰| 欧美一区二区三区喷汁尤物| 色综合久久久久| 岛国精品在线播放| 国产精品69毛片高清亚洲| 久久成人久久爱| 久久99久久精品| 国产女人水真多18毛片18精品视频| 欧美三级日本三级少妇99| 国产黄色精品网站| 国产乱一区二区| 激情深爱一区二区| 久久99精品久久久| 久久成人麻豆午夜电影| 麻豆国产精品视频| 麻豆极品一区二区三区| 蜜臀av国产精品久久久久| 日本中文一区二区三区| 亚洲第一在线综合网站| 男人的j进女人的j一区| 国产精品亚洲成人| 色视频欧美一区二区三区| 欧美丰满美乳xxx高潮www| 久久影院午夜论| 一区二区三区四区高清精品免费观看| 亚洲成人av一区| 国产在线播放一区| 色999日韩国产欧美一区二区| 欧美乱妇15p| 国产精品久久看| 日本成人在线视频网站| 波多野洁衣一区| 91精品国产综合久久国产大片| 亚洲女同女同女同女同女同69| 欧美一区二区三区性视频| 精品区一区二区| 亚洲欧洲精品一区二区三区| 日韩高清在线一区| www.亚洲激情.com| 精品国产乱码久久久久久图片 | 欧美一级二级三级蜜桃|