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

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

?? gml_parser.h

?? This software was done in part for a textbook on AI I ve written called _The Basis of AI_ (tentative
?? H
字號:
/*******************************************************************************++  LEDA 3.5+++  gml_parser.h+++  Copyright (c) 1995, 1996, 1997  by  LEDA Software GmbH+  Postfach 151101, 66041 Saarbruecken, Germany+  All rights reserved.+ *******************************************************************************/#ifndef LEDA_GML_PARSER_H#define LEDA_GML_PARSER_H//------------------------------------------------------------------- //// class gml_parser, extendible parser for the GML format             ////                                                                    //// by David Alberts (1997)                                            ////------------------------------------------------------------------- //#include<sys/types.h>#include<sys/stat.h>#include<ctype.h>#include<string.h>#include<fstream.h>#include<LEDA/basic.h>#include<LEDA/dictionary.h>#include<LEDA/sortseq.h>#include<LEDA/slist.h>#include<LEDA/stack.h>// possible types of values in GML inputenum gml_value_type { gml_int=0, gml_double=1,                      gml_string=2, gml_list=3,                      gml_none=4 };class gml_objecttree;class gml_parser;typedef char* gml_charp;inline int compare(const gml_charp& x, const gml_charp& y) { return strcmp(x,y); }class gml_object{  public:    gml_object() : the_type(gml_none), key_pos(-1), the_key(0),    parent(0), where(0) {}    ~gml_object();    char*                    get_key()    const { return the_key; }    gml_value_type           get_type()   const { return the_type; }    int                      get_int()    const { return the_int; }    double                   get_double() const { return the_double; }    char*                    get_string() const { return the_string; }    const gml_object*        get_parent() const { return parent; }  private:    union    {      int              the_int;      double           the_double;      char*            the_string;    };    slist<gml_object*> the_list;    int                key_pos;    char*              the_key;    gml_object*        parent;    slist_item         where;    gml_value_type     the_type;  public:    friend class gml_objecttree;    friend ostream& operator<<(ostream&, const gml_object&);    LEDA_MEMORY(gml_object)};class gml_objecttree{  public:    // ----- initialization ----- //    gml_objecttree()      : in_chars(0), syntax_errors(false), root_key("ROOT") {}    gml_objecttree(istream& ins)      : in_chars(0), syntax_errors(false), root_key("istream") { read(ins); }    gml_objecttree(char* filename)      : in_chars(0), syntax_errors(false), root_key(filename)      { read(filename); }    ~gml_objecttree() { delete[] in_chars; }    // ----- building the tree ----- //    bool read(istream& ins, int chunk_size = (1<<12) );      // reads from ins.    bool read(char* filename);      // reads from filename.    bool errors() { return syntax_errors; }      // last parse successful?    // ----- navigating in the tree ----- //    gml_object& get_objects() { return objects; }    gml_object* first_object();    gml_object* next_object();    gml_object* down();    gml_object* up();    gml_object* parent();    bool        last_in_list();    void line_col(int position, int& line, int& col);      // computes line and column from position in input string.    void line_col(const gml_object& gobj, int& line, int& col)      { line_col(gobj.key_pos,line,col); }      // computes line and column for gobj.    const char* get_root_key() { return root_key.cstring(); }  private:    void print_error(char* type);      // prints an error message for an error of type      // type and a comment to cerr    bool check_brackets();      // returns false, if impaired brackets in in_chars are detected.    void init_lines();    void init_tree();    bool build();      // builds the tree.    bool read_key();      // read next key word into current_key    void read_value();      // read next value into current_value    char current_char() { return in_chars[pos]; }      // returns the current character    void advance(int n=1);      // advances the current position by n characters    void skip_white();      // skips white space.    int next_white();      // returns position of next white space character in in_chars or -1    int next_quot();      // returns position of next " or -1    int closing_bracket();      // returns the position of a closing bracket for the current level or -1    char*               in_chars;        // the input as a string    int                 in_length;       // length of the input    int                 pos;             // current position in in_chars    int                 bracket_level;   // # open [    sortseq<int,int>    lines;           // aux ds for computing line and    dictionary<int,int> line_starts;     // column from position in input    bool                syntax_errors;    gml_object          objects;         // the object tree    gml_object*         current_object;    gml_object*         last_object;    gml_object*         current_context;    string              root_key;        // key of root node of object tree};typedef int gml_rule;class gml_pattern{  public:    gml_pattern() : the_key(0), the_type(gml_none), parent(0) {}    virtual ~gml_pattern();    gml_value_type get_type() const { return the_type; }    char*          get_key()  const { return the_key; }  protected:    void add_rule(gml_rule r, gml_value_type t)      { rules[t].append(r); }  private:    char*                               the_key;    gml_value_type                      the_type;    slist<gml_rule>                     rules[4];    gml_pattern*                        parent;    dictionary<gml_charp,gml_pattern*>  children;  public:    friend class gml_parser;    LEDA_MEMORY(gml_pattern)};class gml_parser{  public:    gml_parser() : parse_error(false), T(0) { reset_path(); }    gml_parser(char* filename) : parse_error(false), T(0)      { parse(filename); }    gml_parser(istream& ins) : parse_error(false), T(0)       { parse(ins); }    gml_parser(gml_objecttree& obj) : parse_error(false), T(0)      { parse(obj); }    virtual ~gml_parser() {}    void append(char* key);      // go to the pattern with key word key in the current context,      // create it, if not already present    void goback();      // remove last key word from current context, this has no effect      // at the root pattern    void reset_path() { current_pattern = &patterns; }    void make_context(const slist<char*>& cont);    char* current_key() const      { return (current_pattern ? current_pattern->get_key() : 0); }    bool parse(char* filename);    bool parse(istream& ins);    bool parse(gml_objecttree& obj);    bool errors() { return parse_error; }  protected:    void add_rule(const slist<char*>& cont, gml_rule r, gml_value_type t);    void add_rule(gml_rule r, gml_value_type t)      { current_pattern->add_rule(r,t); }    virtual void init_rules() {}      // this is called before parsing.    virtual void cleanup() {}      // this is called after parsing.    virtual bool interpret(gml_rule, const gml_object*)      { return true; }      // interpret an object.    virtual bool list_end(gml_rule, const gml_object*)      { return true; }      // is called when the list of rule r is done.    void print_error(const gml_object& gobj, char* type);  private:    bool parse();    void parse_object();    void list_end();    bool parse_error;    gml_pattern  patterns;        // the pattern tree    gml_objecttree* T;            // the object tree    gml_object*  current_object;  // current node in the object tree    gml_pattern* current_pattern; // current pattern in pattern tree  public:    LEDA_MEMORY(gml_parser)};#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91亚洲男人天堂| 成人激情视频网站| 国产人成亚洲第一网站在线播放| 高清国产一区二区三区| 亚洲欧美日韩国产综合在线| 欧美群妇大交群的观看方式| 国产一区二三区| 亚洲精品视频在线观看网站| 日韩女优av电影| 91美女片黄在线观看| 美女视频第一区二区三区免费观看网站| 久久久午夜精品| 欧美三级乱人伦电影| 国产精品综合久久| 亚洲一区二区三区三| 2020日本不卡一区二区视频| 一本久久a久久免费精品不卡| 免费成人在线播放| 亚洲美女精品一区| 欧美一区二区免费观在线| 成人av中文字幕| 奇米精品一区二区三区在线观看一| 国产欧美一区二区精品久导航| 99久久综合国产精品| 久久成人久久鬼色| 亚洲国产精品尤物yw在线观看| 久久久久国产精品厨房| 欧美猛男gaygay网站| av不卡在线播放| 国产乱子轮精品视频| 日韩精品久久久久久| 亚洲视频免费观看| 中日韩av电影| 久久久国产一区二区三区四区小说| 欧美视频日韩视频在线观看| 不卡的av在线播放| 黄色成人免费在线| 奇米影视一区二区三区| 亚洲成人综合在线| 亚洲同性同志一二三专区| 久久亚洲综合色一区二区三区| 欧美狂野另类xxxxoooo| 在线精品视频小说1| 97se亚洲国产综合自在线观| 国产激情视频一区二区在线观看 | 亚洲欧洲中文日韩久久av乱码| 日韩免费一区二区| 日韩亚洲欧美一区二区三区| 欧美精品在线观看播放| 不卡的av中国片| 成人av在线资源网站| 久久99在线观看| 日本欧洲一区二区| 爽好多水快深点欧美视频| 亚洲一区免费在线观看| 亚洲视频一区二区在线| 国产欧美日本一区视频| 91精品免费在线| 欧美一级久久久| 日韩欧美成人一区| 久久综合给合久久狠狠狠97色69| 在线不卡中文字幕| 日韩免费一区二区| 久久久久国色av免费看影院| 欧美国产日产图区| 国产精品成人一区二区三区夜夜夜 | 色综合咪咪久久| 色婷婷久久99综合精品jk白丝 | 国内精品自线一区二区三区视频| 美日韩一级片在线观看| 久久精品国产一区二区| 国产一区在线观看麻豆| 国产69精品久久777的优势| 成人动漫一区二区在线| www.性欧美| 91蝌蚪国产九色| 日本福利一区二区| 欧美日韩国产一区| 日韩精品影音先锋| 国产日产欧美一区二区三区| 欧美国产成人精品| 综合色天天鬼久久鬼色| 亚洲人成网站在线| 五月婷婷久久丁香| 国产毛片精品一区| 99这里都是精品| 欧美区一区二区三区| 精品国产区一区| 亚洲欧美综合色| 亚洲国产精品久久久久婷婷884| 日韩福利视频导航| 国产mv日韩mv欧美| 欧美色图激情小说| 久久久不卡网国产精品一区| 《视频一区视频二区| 日韩成人伦理电影在线观看| 国产精品1024| 欧美日韩精品一区二区三区四区| 日韩欧美不卡在线观看视频| 中文字幕一区二区三区蜜月| 亚洲丰满少妇videoshd| 国产mv日韩mv欧美| 欧美久久一区二区| 国产精品免费视频一区| 天天综合网天天综合色| 国产东北露脸精品视频| 欧美精品一二三| 日韩亚洲欧美在线| 国产精品亲子伦对白| 亚洲香蕉伊在人在线观| 国产精品资源在线| 欧美日韩日日骚| 久久亚洲捆绑美女| 一区二区三区波多野结衣在线观看| 天堂av在线一区| 成人开心网精品视频| 91精品国产免费| 国产目拍亚洲精品99久久精品| 亚洲一区二区三区国产| 国产成人午夜精品影院观看视频| 精品视频一区二区不卡| 亚洲国产精品二十页| 免费在线观看视频一区| 色激情天天射综合网| 国产免费成人在线视频| 精品一区二区av| 91精品久久久久久蜜臀| 亚洲欧美电影一区二区| 国产成人精品网址| 日韩一区二区不卡| 亚洲成人精品在线观看| 99re免费视频精品全部| 久久久天堂av| 久久成人久久爱| 日韩欧美成人激情| 日韩电影网1区2区| 欧美日韩国产综合一区二区| 亚洲影院理伦片| 色一情一乱一乱一91av| 中文字幕一区二区5566日韩| 国产毛片精品视频| 久久综合成人精品亚洲另类欧美| 青青草国产精品亚洲专区无| 欧美日韩三级一区| 亚洲成人午夜影院| 91美女片黄在线| 亚洲欧美日韩在线播放| 国产精品1区2区3区在线观看| 欧美大片拔萝卜| 免费一区二区视频| 欧美高清hd18日本| 亚洲 欧美综合在线网络| 在线视频观看一区| 亚洲一区电影777| 欧美视频第二页| 亚洲男人的天堂一区二区| 色综合色狠狠天天综合色| 亚洲欧洲日本在线| 99久久精品免费看国产免费软件| 久久久精品2019中文字幕之3| 国产精品一区二区不卡| 国产偷国产偷亚洲高清人白洁| 国产精品一卡二| 国产精品久久久久久久久免费桃花| 高清免费成人av| 亚洲欧洲av一区二区三区久久| 99国产精品国产精品久久| 亚洲九九爱视频| 欧美日韩一级视频| 日韩和的一区二区| 亚洲精品在线网站| 国产成人av影院| 中文字幕视频一区| 欧美亚洲高清一区| 日本欧美在线观看| 精品国产乱码91久久久久久网站| 国产·精品毛片| 一区二区三区在线观看视频| 欧美肥妇bbw| 国内不卡的二区三区中文字幕| 国产色91在线| 91在线视频18| 天天综合日日夜夜精品| 精品99999| 国模无码大尺度一区二区三区| 免费av成人在线| 色成人在线视频| 久久99国产精品尤物| 一个色妞综合视频在线观看| 精品久久国产字幕高潮| 在线观看免费成人| 懂色av一区二区三区免费看| 丝袜诱惑亚洲看片| 亚洲精品大片www| 国产日韩欧美精品一区| 欧美一区二区三区日韩| 日本国产一区二区| 成人激情免费电影网址| 国产在线国偷精品免费看| 日本一道高清亚洲日美韩|