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

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

?? sexp.h

?? 機器人足球AI設計比賽
?? H
?? 第 1 頁 / 共 2 頁
字號:
/** SFSEXP: Small, Fast S-Expression Library version 1.0Written by Matthew Sottile (matt@lanl.gov)Copyright (2004). The Regents of the University of California. This materialwas produced under U.S. Government contract W-7405-ENG-36 for Los AlamosNational Laboratory, which is operated by the University of California forthe U.S. Department of Energy. The U.S. Government has rights to use,reproduce, and distribute this software. NEITHER THE GOVERNMENT NOR THEUNIVERSITY MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LIABILITYFOR THE USE OF THIS SOFTWARE. If software is modified to produce derivativeworks, such modified software should be clearly marked, so as not to confuseit with the version available from LANL.Additionally, this program is free software; you can redistribute it and/ormodify it under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2 of the License, or (at youroption) any later version. Accordingly, this program is distributed in thehope that it will be useful, but WITHOUT ANY WARRANTY; without even theimplied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Seethe GNU General Public License for more details.LA-CC-04-094**/#ifndef __SEXP_H__#define __SEXP_H__#include <stddef.h>#include <stdio.h> /* for BUFSIZ only */#include "faststack.h"#include "cstring.h"#include "sexp_memory.h"/* doxygen documentation groups defined here *//** * \defgroup IO I/O routines *//** * \defgroup parser Parser routines *//** ** though unlikely to affect performance based on some simple tests ** run recently, this is available for people who wish to disable ** assertion paranoia.  beware: if your code has assert() used in it ** and you don't want THOSE assertions disabled, \#include <assert.h> ** after the last place sexp.h is included.  I put this here to ** avoid the annoyance of "\#ifdef .." messes around each assert() **/#ifdef _NOASSERTS_#undef assert#define assert(x) { }#endif/** * \mainpage A small and quick S-expression parsing library. * * \section intro Introduction *  * This library was created to provide s-expression parsing and manipulation * facilities to C and C++ programs.  The primary goals were speed and * efficiency - low memory impact, and the highest speed we could achieve in * parsing.  Suprisingly, no other libraries on the net were found that were * not bloated with features or involved embedding a full-fledged LISP or * Scheme interpreter into our programs.  So, this library evolved to fill * this gap.  As such, it does not guarantee that every valid LISP * expression is parseable, and many features that are not required aren't * implemented.  See Rivest's S-expression library for an example of a much * more featureful library. * * What features does this library include?  At the heart of the code is a * continuation-based parser implementing a basic parser state machine. * Continuations allow users to accumulate multiple streams of characters, * and parse each stream simultaneously.  A continuation allows the parser * to stop midstream, start working on a new expression, and return to the * first without corruption of complex state management in the users code. * No threads, no forking, nothing more than a data structure that must be * passed in and captured as data becomes available to parse.  Once an * expression has been parsed, a simple structure is returned that * represents the "abstract syntax tree" of the parsed expression.  For the * majority of users, the parser and this data structure will be all that * they will ever need to see.  For convenience reasons, other functions * such as I/O wrappers and AST traversal routines have been included, but * they are not required if users don't wish to use them. * * \section license License Information * * SFSEXP: Small, Fast S-Expression Library version 1.0 * Written by Matthew Sottile (matt@lanl.gov) * * Copyright (2004). The Regents of the University of California. This material * was produced under U.S. Government contract W-7405-ENG-36 for Los Alamos * National Laboratory, which is operated by the University of California for * the U.S. Department of Energy. The U.S. Government has rights to use, * reproduce, and distribute this software. NEITHER THE GOVERNMENT NOR THE * UNIVERSITY MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR ASSUMES ANY LIABILITY * FOR THE USE OF THIS SOFTWARE. If software is modified to produce derivative * works, such modified software should be clearly marked, so as not to confuse * it with the version available from LANL. * * Additionally, this program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or (at your * option) any later version. Accordingly, this program is distributed in the * hope that it will be useful, but WITHOUT ANY WARRANTY; without even the * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See * the GNU General Public License for more details. * * LA-CC-04-094 * *//** * \file sexp.h * * \brief API for a small, fast and portable s-expression parser library. * * Written by Matt Sottile (matt@lanl.gov), January 2002.  See LICENSE * file for licensing details. *//*==============*//* ENUMERATIONS *//*==============*//** * An element in an s-expression can be one of three types: a <i>value</i> * represents an atom with an associated text value.  A <i>list</i> * represents an s-expression, and the element contains a pointer to * the head element of the associated s-expression. */typedef enum {   /**   * An atom of some type.  See atom type (aty) field of element structure   * for details as to which atom type this is.   */  SEXP_VALUE,  /**   * A list.  This means the element points to an element representing the   * head of a list.   */  SEXP_LIST} elt_t; /** * For an element that represents a value, the value can be interpreted * as a more specific type.  A <i>basic</i> value is a simple string with * no whitespace (and therefore no quotes required).  A <i>double quote</i> * value, or <i>dquote</i>, is one that contains characters (such as * whitespace) that requires quotation marks to contain the string.  A * <i>single quote</i> value, or <i>squote</i>, represents an element that is * prefaced with a single tick-mark.  This can be either an atom or * s-expression, and the result is that the parser does not attempt to parse * the element following the tick mark.  It is simply stored as text.  This * is similar to the meaning of a tick mark in the Scheme or LISP family * of programming languages. */typedef enum {   /**   * Basic, unquoted value.   */  SEXP_BASIC,   /**   * Single quote (tick-mark) value - contains a string representing   * a non-parsed portion of the s-expression.   */  SEXP_SQUOTE,   /**   * Double-quoted string.  Similar to a basic value, but potentially   * containing white-space.   */  SEXP_DQUOTE,  /**   * Binary data.  This is used when the specialized parser is active   * and supports inlining of binary blobs of data inside an expression.   */  SEXP_BINARY} atom_t;/*============*//* STRUCTURES *//*============*//** * An s-expression is represented as a linked structure of elements, * where each element is either an <I>atom</I> or <I>list</I>.  An * atom corresponds to a string, while a list corresponds to an * s-expression.  The following grammar represents our definition of * an s-expression:<P> * * <pre> * sexpr  ::= ( sx ) * sx     ::= atom sxtail | sexpr sxtail | 'sexpr sxtail | 'atom sxtail | NULL * sxtail ::= sx | NULL * atom   ::= quoted | value * quoted ::= "ws_string" * value  ::= nws_string * </pre> * <P> * * An atom can either be a quoted string, which is a string containing * whitespace (possibly) surrounded by double quotes, or a non-whitespace * string that does not require surrounding quotes.  An element representing * an atom will have a type of <i>value</i> and data stored in the <i>val</i> * field.  An element of type <i>list</i> represents an s-expression * corresponding to <i>sexpr</i> in the grammar, and will have a pointer to * the head of the appropriate s-expression.  Details regarding these fields * and their values given with the fields themselves.  Notice that a single * quote can appear directly before an s-expression or atom, similar to the * use in LISP.   */typedef struct elt {  /**   * The element has a type that determines how the structure is used.  If   * the type is <B>SEXP_VALUE</B>, then a programmer knows that the val field   * is meaningful and contains the data associated with this element of the   * s-expression.  If the type is <B>SEXP_LIST</B>, then the list field    * contains a pointer to the s-expression element representing the head of   * the list.  For each case, the field for the opposite case contains no   * meaningful data and using them in any way is likely to cause an error.   */  elt_t ty;  /**   * If the type of the element is <B>SEXP_VALUE</B> this field will contain   * the actual data represented by this element.   */  char  *val;  /**   * Number of bytes allocated for val.   */  size_t   val_allocated;    /**   * Number of bytes used in val (<= val_allocated).   */  size_t   val_used;    /**   * If the type of the element is <B>SEXP_LIST</B>, this field will contain   * a pointer to the head element of the list.   */  struct elt *list;  /**   * The <I>next</I> field is a pointer to the next element in the current   * expression.  If this element is the last element in the s-expression,   * this field will be <I>NULL</I>.   */  struct elt *next;  /**   * For elements that represent <I>values</I>, this field will specify the   * specific type of value that it represents.  This can be used by   * functions to determine how this value should be printed (ie: how it   * should be quoted) or interpreted (ie: interpreting s-expressions that   * are prefixed with a tick-mark.).   */  atom_t aty;  /**   * For elements that represent <i>binary</I> blobs, this field will   * point to a memory location where the data resides.  The length   * of this memory blob is the next field.  char* implies byte sized   * elements.     */  char *bindata;  /**    * The length of the data pointed at by bindata in bytes.   */  size_t binlength;} sexp_t;/** * parser mode flag used by continuation to toggle special parser * behaviour. */typedef enum {  /**   * normal (LISP-style) s-expression parser behaviour.   */  PARSER_NORMAL,  /**   * treat atoms beginning with \#b\# as inlined binary data.  everything   * else is treated the same as in PARSER_NORMAL mode.   */  PARSER_INLINE_BINARY} parsermode_t;/** * A continuation is used by the parser to save and restore state between * invocations to support partial parsing of strings.  For example, if we * pass the string "(foo bar)(goo car)" to the parser, we want to be able * to retrieve each s-expression one at a time - it would be difficult to * return all s-expressions at once without knowing how many there are in * advance (this would require more memory management than we want...). * So, by using a continuation-based parser, we can call it with this string * and have it return a continuation when it has parsed the first  * s-expression.  Once we have processed the s-expression (accessible * through the <i>last_sexpr</i> field of the continuation), we can call * the parser again with the same string and continuation, and it will be * able to pick up where it left off.<P> * * We use continuations instead of a state-ful parser to allow multiple * concurrent strings to be parsed by simply maintaining a set of * continuations.  Manipulating continuations by hand is required if the * continuation-based parser is called directly.  This is <b>not * recommended</b> unless you are willing to deal with potential errors and * are willing to learn exactly how the continuation relates to the * internals of the parser.  A simpler approach is to use either the * <i>parse_sexp</i> function that simply returns an s-expression without * exposing the continuations, or the <i>iparse_sexp</i> function that * allows iteratively popping one s-expression at a time from a string * containing one or more s-expressions.  Refer to the documentation for * each parsing function for further details on behavior and usage.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人av一区二区三区在线 | 久久综合九色综合欧美就去吻| 国产一区二区福利| 亚洲精品综合在线| 久久婷婷久久一区二区三区| 色噜噜狠狠一区二区三区果冻| 久久不见久久见中文字幕免费| 亚洲综合一区二区三区| 26uuu精品一区二区| 91麻豆精品国产| 色视频成人在线观看免| 国产精品一区2区| 日本91福利区| 亚洲一区二区综合| 中文字幕在线一区免费| 26uuu精品一区二区三区四区在线| 欧美日韩精品一区二区三区蜜桃 | 亚洲午夜在线视频| 中文乱码免费一区二区| 精品福利视频一区二区三区| 欧美日本在线视频| 欧美亚洲动漫精品| 色伊人久久综合中文字幕| 国产成人免费视频网站高清观看视频 | 日韩不卡手机在线v区| 亚洲色图一区二区三区| 国产精品午夜久久| 久久久91精品国产一区二区三区| 日韩精品在线一区二区| 欧美老人xxxx18| 欧美亚洲另类激情小说| 日本大香伊一区二区三区| 99久久精品国产导航| av电影在线观看不卡| 国产91丝袜在线观看| 国产精品中文字幕日韩精品| 激情丁香综合五月| 国产一区二区调教| 国产精品亚洲一区二区三区妖精 | 日本在线不卡一区| 视频一区二区不卡| 午夜欧美电影在线观看| 爽爽淫人综合网网站| 日韩国产欧美三级| 美腿丝袜在线亚洲一区| 久久99精品久久久久婷婷| 久久草av在线| 国产精品 欧美精品| 成人在线综合网| 99久久99久久免费精品蜜臀| 色噜噜狠狠成人中文综合| 色美美综合视频| 欧美老女人在线| 精品国产1区二区| 国产精品人成在线观看免费| 综合网在线视频| 亚洲一级二级在线| 免费看黄色91| 懂色av一区二区三区蜜臀 | 717成人午夜免费福利电影| 7777精品伊人久久久大香线蕉最新版| 欧美日韩国产综合一区二区| 日韩亚洲国产中文字幕欧美| 欧美xxx久久| 日本一区二区三区在线观看| 国产精品久久久久7777按摩| 亚洲女同一区二区| 日韩精品高清不卡| 国产精品亚洲一区二区三区在线| 成人aa视频在线观看| 欧美日韩五月天| 久久嫩草精品久久久精品| 亚洲欧洲av色图| 日韩精品一区第一页| 国产麻豆精品视频| 色一情一乱一乱一91av| 欧美一区二区三区思思人| 久久精品夜色噜噜亚洲aⅴ| 亚洲男人都懂的| 日本欧美在线看| youjizz国产精品| 欧美日韩精品欧美日韩精品| 26uuu国产在线精品一区二区| 国产精品激情偷乱一区二区∴| 亚洲第一在线综合网站| 精品亚洲porn| 色狠狠色狠狠综合| 久久久久久夜精品精品免费| 亚洲制服丝袜av| 国产九色精品成人porny| 欧美丝袜丝nylons| 国产日韩综合av| 天天亚洲美女在线视频| 成人av免费观看| 日韩午夜电影在线观看| 亚洲精品亚洲人成人网| 精品一区二区三区影院在线午夜| 91亚洲大成网污www| 日韩一区二区三区四区五区六区| 亚洲精品你懂的| 国产一区二区导航在线播放| 欧美视频一区二区三区| 国产欧美日韩综合| 日本成人在线看| 91福利精品视频| 国产精品免费久久| 国产成人在线视频网址| 欧美sm美女调教| 偷拍一区二区三区四区| 一本一道久久a久久精品| 中国av一区二区三区| 激情五月婷婷综合网| 538prom精品视频线放| 亚洲嫩草精品久久| 972aa.com艺术欧美| 国产欧美精品在线观看| 毛片av一区二区| 欧美一级一级性生活免费录像| 亚洲一区二区av在线| 91视频观看视频| 国产精品久久久久影院老司| 另类专区欧美蜜桃臀第一页| 一本大道久久a久久综合婷婷| 久久九九国产精品| 国产成人夜色高潮福利影视| 欧美一级高清片在线观看| 最好看的中文字幕久久| 国产自产高清不卡| 欧美日韩高清一区二区不卡 | 久久久亚洲综合| 亚洲欧洲制服丝袜| 91女神在线视频| 中文字幕一区二区三区在线观看| 久久97超碰国产精品超碰| 欧美日韩美女一区二区| 国产精品美女久久久久av爽李琼| 国产一区二区三区高清播放| 欧美一区二区福利视频| 五月天丁香久久| 欧美日韩视频专区在线播放| 国产精品欧美久久久久无广告 | 9色porny自拍视频一区二区| 亚洲精品在线电影| 久久精品国产亚洲一区二区三区| 欧美乱妇一区二区三区不卡视频| 亚洲综合区在线| 91黄色免费版| 亚洲综合色噜噜狠狠| 在线观看一区二区视频| 亚洲综合在线视频| 在线视频综合导航| 亚洲色图视频网站| 欧美人xxxx| 蜜臂av日日欢夜夜爽一区| 91精品国产乱码久久蜜臀| 视频一区国产视频| 精品国产乱码久久久久久久久 | 91日韩在线专区| 亚洲码国产岛国毛片在线| 91在线国产福利| 亚洲精品videosex极品| 欧美吻胸吃奶大尺度电影| 蜜桃av一区二区三区| 日韩女优电影在线观看| 国产一本一道久久香蕉| 欧美激情一区不卡| 丰满放荡岳乱妇91ww| 亚洲另类春色国产| 欧美日韩国产片| 麻豆精品蜜桃视频网站| 精品处破学生在线二十三| 国产成人99久久亚洲综合精品| 亚洲欧洲国产日韩| 欧美日韩国产另类不卡| 精品影院一区二区久久久| 国产女同互慰高潮91漫画| 91在线观看一区二区| 香蕉成人伊视频在线观看| 日韩一区二区三区高清免费看看 | 国产麻豆精品theporn| 中文字幕一区二区三区av| 欧美日韩一卡二卡三卡| 国产精品一区专区| 综合电影一区二区三区| 欧美日韩高清影院| 国产精品一品二品| 国产精品家庭影院| 91精品久久久久久久91蜜桃| 狠狠色狠狠色综合| 亚洲卡通欧美制服中文| 99视频一区二区| 美女视频黄久久| 中文字幕中文字幕在线一区| 欧美人动与zoxxxx乱| 国产精品小仙女| 亚洲欧美国产高清| 日韩亚洲欧美成人一区| youjizz国产精品| 美女视频免费一区| 亚洲男同性恋视频|