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

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

?? scanner.c

?? clips源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
   /*******************************************************/   /*      "C" Language Integrated Production System      */   /*                                                     */   /*             CLIPS Version 6.20  01/31/02            */   /*                                                     */   /*                    SCANNER MODULE                   */   /*******************************************************//*************************************************************//* Purpose: Routines for scanning lexical tokens from an     *//*   input source.                                           *//*                                                           *//* Principal Programmer(s):                                  *//*      Gary D. Riley                                        *//*                                                           *//* Contributing Programmer(s):                               *//*      Chris Culbert                                        *//*      Brian Donnell                                        *//*                                                           *//* Revision History:                                         *//*                                                           *//*************************************************************/#define _SCANNER_SOURCE_#include <ctype.h>#include <stdio.h>#define _STDIO_INCLUDED_#include <string.h>#include <limits.h>#include "setup.h"#include "constant.h"#include "envrnmnt.h"#include "router.h"#include "symbol.h"#include "utility.h"#include "memalloc.h"#include "scanner.h"#include <stdlib.h>/***************************************//* LOCAL INTERNAL FUNCTION DEFINITIONS *//***************************************/   static void                   *ScanSymbol(void *,char *,int,unsigned short *);   static void                   *ScanString(void *,char *);   static void                    ScanNumber(void *,char *,struct token *);   static void                    DeallocateScannerData(void *);/************************************************//* InitializeScannerData: Allocates environment *//*    data for scanner routines.                *//************************************************/globle void InitializeScannerData(  void *theEnv)  {   AllocateEnvironmentData(theEnv,SCANNER_DATA,sizeof(struct scannerData),DeallocateScannerData);  }  /**************************************************//* DeallocateScannerData: Deallocates environment *//*    data for scanner routines.                  *//**************************************************/static void DeallocateScannerData(  void *theEnv)  {   if (ScannerData(theEnv)->GlobalMax !=  0)     { genfree(theEnv,ScannerData(theEnv)->GlobalString,ScannerData(theEnv)->GlobalMax); }  }/***********************************************************************//* GetToken: Reads next token from the input stream. The pointer to    *//*   the token data structure passed as an argument is set to contain  *//*   the type of token (e.g., symbol, string, integer, etc.), the data *//*   value for the token (i.e., a symbol table location if it is a     *//*   symbol or string, an integer table location if it is an integer), *//*   and the pretty print representation.                              *//***********************************************************************/globle void GetToken( void *theEnv, char *logicalName, struct token *theToken) {   int inchar;   unsigned short type;   /*=======================================*/   /* Set Unknown default values for token. */   /*=======================================*/   theToken->type = UNKNOWN_VALUE;   theToken->value = NULL;   theToken->printForm = "unknown";   ScannerData(theEnv)->GlobalPos = 0;   ScannerData(theEnv)->GlobalMax = 0;   /*==============================================*/   /* Remove all white space before processing the */   /* GetToken() request.                          */   /*==============================================*/   inchar = EnvGetcRouter(theEnv,logicalName);   while ((inchar == ' ') || (inchar == '\n') || (inchar == '\f') ||          (inchar == '\r') || (inchar == ';') || (inchar == '\t'))     {      /*=======================*/      /* Remove comment lines. */      /*=======================*/      if (inchar == ';')        {         inchar = EnvGetcRouter(theEnv,logicalName);         while ((inchar != '\n') && (inchar != '\r') && (inchar != EOF) )           { inchar = EnvGetcRouter(theEnv,logicalName); }        }      inchar = EnvGetcRouter(theEnv,logicalName);     }   /*==========================*/   /* Process Symbolic Tokens. */   /*==========================*/   if (isalpha(inchar))     {      theToken->type = SYMBOL;      EnvUngetcRouter(theEnv,inchar,logicalName);      theToken->value = (void *) ScanSymbol(theEnv,logicalName,0,&type);      theToken->printForm = ValueToString(theToken->value);     }   /*===============================================*/   /* Process Number Tokens beginning with a digit. */   /*===============================================*/   else if (isdigit(inchar))     {      EnvUngetcRouter(theEnv,inchar,logicalName);      ScanNumber(theEnv,logicalName,theToken);     }   else switch (inchar)     {      /*========================*/      /* Process String Tokens. */      /*========================*/      case '"':         theToken->value = (void *) ScanString(theEnv,logicalName);         theToken->type = STRING;         theToken->printForm = StringPrintForm(theEnv,ValueToString(theToken->value));         break;      /*=======================================*/      /* Process Tokens that might be numbers. */      /*=======================================*/      case '-':      case '.':      case '+':         EnvUngetcRouter(theEnv,inchar,logicalName);         ScanNumber(theEnv,logicalName,theToken);         break;      /*===================================*/      /* Process ? and ?<variable> Tokens. */      /*===================================*/       case '?':          inchar = EnvGetcRouter(theEnv,logicalName);          if (isalpha(inchar)#if DEFGLOBAL_CONSTRUCT              || (inchar == '*'))#else              )#endif            {             EnvUngetcRouter(theEnv,inchar,logicalName);             theToken->value = (void *) ScanSymbol(theEnv,logicalName,0,&type);             theToken->type = SF_VARIABLE;#if DEFGLOBAL_CONSTRUCT             if ((ValueToString(theToken->value)[0] == '*') &&                 (((int) strlen(ValueToString(theToken->value))) > 1) &&                 (ValueToString(theToken->value)[strlen(ValueToString(theToken->value)) - 1] == '*'))               {                size_t count;                theToken->type = GBL_VARIABLE;                theToken->printForm = AppendStrings(theEnv,"?",ValueToString(theToken->value));                count = strlen(ScannerData(theEnv)->GlobalString);                ScannerData(theEnv)->GlobalString[count-1] = EOS;                theToken->value = EnvAddSymbol(theEnv,ScannerData(theEnv)->GlobalString+1);                ScannerData(theEnv)->GlobalString[count-1] = (char) inchar;               }             else#endif             theToken->printForm = AppendStrings(theEnv,"?",ValueToString(theToken->value));            }          else            {             theToken->type = SF_WILDCARD;             theToken->value = (void *) EnvAddSymbol(theEnv,"?");             EnvUngetcRouter(theEnv,inchar,logicalName);             theToken->printForm = "?";            }          break;      /*=====================================*/      /* Process $? and $?<variable> Tokens. */      /*=====================================*/      case '$':         if ((inchar = EnvGetcRouter(theEnv,logicalName)) == '?')           {            inchar = EnvGetcRouter(theEnv,logicalName);            if (isalpha(inchar)#if DEFGLOBAL_CONSTRUCT                 || (inchar == '*'))#else                 )#endif              {               EnvUngetcRouter(theEnv,inchar,logicalName);               theToken->value = (void *) ScanSymbol(theEnv,logicalName,0,&type);               theToken->type = MF_VARIABLE;#if DEFGLOBAL_CONSTRUCT             if ((ValueToString(theToken->value)[0] == '*') &&                 ((int) (strlen(ValueToString(theToken->value))) > 1) &&                 (ValueToString(theToken->value)[strlen(ValueToString(theToken->value)) - 1] == '*'))               {                size_t count;                theToken->type = MF_GBL_VARIABLE;                theToken->printForm = AppendStrings(theEnv,"$?",ValueToString(theToken->value));                count = strlen(ScannerData(theEnv)->GlobalString);                ScannerData(theEnv)->GlobalString[count-1] = EOS;                theToken->value = EnvAddSymbol(theEnv,ScannerData(theEnv)->GlobalString+1);                ScannerData(theEnv)->GlobalString[count-1] = (char) inchar;               }             else#endif               theToken->printForm = AppendStrings(theEnv,"$?",ValueToString(theToken->value));              }            else              {               theToken->type = MF_WILDCARD;               theToken->value = (void *) EnvAddSymbol(theEnv,"$?");               theToken->printForm = "$?";               EnvUngetcRouter(theEnv,inchar,logicalName);              }           }         else           {            theToken->type = SYMBOL;            ScannerData(theEnv)->GlobalString = ExpandStringWithChar(theEnv,'$',ScannerData(theEnv)->GlobalString,&ScannerData(theEnv)->GlobalPos,&ScannerData(theEnv)->GlobalMax,ScannerData(theEnv)->GlobalMax+80);            EnvUngetcRouter(theEnv,inchar,logicalName);            theToken->value = (void *) ScanSymbol(theEnv,logicalName,1,&type);            theToken->printForm = ValueToString(theToken->value);           }         break;      /*============================*/      /* Symbols beginning with '<' */      /*============================*/      case '<':         theToken->type = SYMBOL;         ScannerData(theEnv)->GlobalString = ExpandStringWithChar(theEnv,'<',ScannerData(theEnv)->GlobalString,&ScannerData(theEnv)->GlobalPos,&ScannerData(theEnv)->GlobalMax,ScannerData(theEnv)->GlobalMax+80);         theToken->value = (void *) ScanSymbol(theEnv,logicalName,1,&type);         theToken->printForm = ValueToString(theToken->value);         break;      /*=============================================*/      /* Process "(", ")", "~", "|", and "&" Tokens. */      /*=============================================*/      case '(':         theToken->type = LPAREN;         theToken->value = (void *) EnvAddSymbol(theEnv,"(");         theToken->printForm = "(";         break;      case ')':         theToken->type= RPAREN;         theToken->value = (void *) EnvAddSymbol(theEnv,")");         theToken->printForm = ")";         break;      case '~':         theToken->type = NOT_CONSTRAINT;         theToken->value = (void *) EnvAddSymbol(theEnv,"~");         theToken->printForm = "~";         break;      case '|':         theToken->type = OR_CONSTRAINT;         theToken->value = (void *) EnvAddSymbol(theEnv,"|");         theToken->printForm = "|";         break;      case '&':         theToken->type =  AND_CONSTRAINT;         theToken->value = (void *) EnvAddSymbol(theEnv,"&");         theToken->printForm = "&";         break;      /*============================*/      /* Process End-of-File Token. */      /*============================*/      case EOF:      case 0:      case 3:         theToken->type = STOP;         theToken->value = (void *) EnvAddSymbol(theEnv,"stop");         theToken->printForm = "";         break;      /*=======================*/      /* Process Other Tokens. */      /*=======================*/      default:         if (isprint(inchar))           {            EnvUngetcRouter(theEnv,inchar,logicalName);            theToken->value = (void *) ScanSymbol(theEnv,logicalName,0,&type);            theToken->type = type;            theToken->printForm = ValueToString(theToken->value);           }         else           { theToken->printForm = "<<<unprintable character>>>"; }         break;     }   /*===============================================*/   /* Put the new token in the pretty print buffer. */   /*===============================================*/#if (! RUN_TIME) && (! BLOAD_ONLY)   if (theToken->type == INSTANCE_NAME)     {      SavePPBuffer(theEnv,"[");      SavePPBuffer(theEnv,theToken->printForm);      SavePPBuffer(theEnv,"]");     }   else     { SavePPBuffer(theEnv,theToken->printForm); }#endif   /*=========================================================*/   /* Return the temporary memory used in scanning the token. */   /*=========================================================*/   if (ScannerData(theEnv)->GlobalString != NULL)     {      rm(theEnv,ScannerData(theEnv)->GlobalString,ScannerData(theEnv)->GlobalMax);      ScannerData(theEnv)->GlobalString = NULL;      ScannerData(theEnv)->GlobalMax = 0;      ScannerData(theEnv)->GlobalPos = 0;     }   return;  }/*************************************//* ScanSymbol: Scans a symbol token. *//*************************************/static void *ScanSymbol(  void *theEnv,  char *logicalName,  int count,  unsigned short *type)  {   int inchar;#if OBJECT_SYSTEM   void *symbol;#endif   /*=====================================*/   /* Scan characters and add them to the */   /* symbol until a delimiter is found.  */   /*=====================================*/   inchar = EnvGetcRouter(theEnv,logicalName);   while ( (inchar != '<') && (inchar != '"') &&           (inchar != '(') && (inchar != ')') &&           (inchar != '&') && (inchar != '|') && (inchar != '~') &&           (inchar != ' ') && (inchar != ';') &&           isprint(inchar) )     {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕中文字幕一区二区| 国产精品一区二区视频| 成人免费va视频| 91福利社在线观看| 亚洲成人高清在线| 菠萝蜜视频在线观看一区| 26uuu亚洲| 精品亚洲成a人在线观看| 欧美一区二区三区视频免费| 日韩综合小视频| 欧美日韩小视频| 日日嗨av一区二区三区四区| 免费日本视频一区| 久久久99久久| 色综合久久中文字幕| 中文字幕欧美一| 婷婷久久综合九色综合绿巨人 | 九九热在线视频观看这里只有精品| 亚洲精品欧美综合四区| 亚洲欧美一区二区久久| 欧美大片拔萝卜| 国产精品久久久久久久蜜臀 | 中文字幕在线观看一区| 亚洲黄色小说网站| 久久99国产乱子伦精品免费| 在线观看欧美日本| jvid福利写真一区二区三区| 欧美午夜理伦三级在线观看| 99久久国产综合精品麻豆| 精品国产乱码久久久久久免费 | 久久女同精品一区二区| 亚洲黄色尤物视频| 欧美最猛黑人xxxxx猛交| 亚洲成人免费观看| 欧美日韩亚洲另类| 五月天亚洲婷婷| 国产精品丝袜黑色高跟| 欧美在线小视频| 久久99热国产| 樱桃视频在线观看一区| 制服丝袜亚洲播放| 奇米四色…亚洲| 亚洲精品成人悠悠色影视| 337p亚洲精品色噜噜噜| 国产91在线看| 一级做a爱片久久| 欧美一三区三区四区免费在线看 | 亚洲国产精品av| 欧美这里有精品| 韩国欧美国产1区| 悠悠色在线精品| 国产亚洲精品资源在线26u| 色综合久久88色综合天天6| 麻豆国产一区二区| 日韩一区在线看| 欧美成人在线直播| 色琪琪一区二区三区亚洲区| 国产在线精品国自产拍免费| 尤物在线观看一区| 精品国产自在久精品国产| 色94色欧美sute亚洲线路一ni| 久久国产夜色精品鲁鲁99| 亚洲精品自拍动漫在线| 26uuu亚洲婷婷狠狠天堂| 欧美视频第二页| 美国三级日本三级久久99| 亚洲卡通欧美制服中文| 久久久精品日韩欧美| 91麻豆精品国产| 一本色道久久综合狠狠躁的推荐| 国产尤物一区二区| 五月综合激情婷婷六月色窝| 中文字幕中文字幕一区| 久久久久久久久蜜桃| 在线视频一区二区三| 国内精品视频一区二区三区八戒 | 国产精品成人在线观看| 精品国产乱码久久久久久影片| 欧美日韩国产高清一区二区三区| 在线观看亚洲专区| 国产不卡视频一区二区三区| 免费在线看成人av| 日本麻豆一区二区三区视频| 亚洲一区二区三区视频在线| 亚洲自拍偷拍综合| 亚洲欧美日韩在线不卡| 国产亚洲美州欧州综合国| 中文字幕 久热精品 视频在线| 久久女同精品一区二区| 国产女主播一区| 中文字幕av不卡| 亚洲黄色片在线观看| 亚洲天堂成人网| 亚洲午夜精品在线| 夜夜嗨av一区二区三区| 亚洲精选视频在线| 日韩电影一区二区三区四区| 日韩电影一区二区三区四区| 国内外成人在线| 国产成人亚洲综合a∨猫咪| 成人性色生活片免费看爆迷你毛片| 国产白丝网站精品污在线入口| 日韩精品每日更新| 精品系列免费在线观看| 国产原创一区二区| 成人激情免费电影网址| 国产91高潮流白浆在线麻豆| 欧洲一区在线电影| 欧美色综合久久| 日韩欧美成人一区| 91精品国产综合久久久蜜臀粉嫩 | 国产不卡在线一区| 在线亚洲欧美专区二区| 欧美精品一卡两卡| 久久日韩精品一区二区五区| 国产人久久人人人人爽| 亚洲一区二区三区在线看 | 亚洲日穴在线视频| 日韩精品一二三四| 国产成人亚洲综合a∨婷婷| 精品1区2区3区| 精品免费日韩av| 一区二区三区国产精华| 丝袜美腿亚洲色图| av电影在线观看一区| 91 com成人网| 亚洲视频每日更新| 日本成人在线一区| 91影院在线免费观看| 这里只有精品电影| 一区二区三区精品视频| 精品一区二区三区日韩| 欧美视频一区二区| 久久久精品欧美丰满| 香蕉av福利精品导航| 高清不卡在线观看av| 日韩小视频在线观看专区| 亚洲欧洲成人精品av97| 午夜国产精品一区| 99久久综合精品| 精品国产一区二区三区av性色| 亚洲乱码国产乱码精品精的特点 | 精品福利视频一区二区三区| 国产精品麻豆视频| 国产一区视频在线看| 欧美在线观看你懂的| 国产精品丝袜久久久久久app| 日本一区中文字幕| 欧美性极品少妇| 中文字幕一区二区日韩精品绯色| 国产做a爰片久久毛片| 欧美色区777第一页| 亚洲激情av在线| 国产成人精品亚洲日本在线桃色| 日韩精品中文字幕在线不卡尤物| 亚洲精品写真福利| 国产成人精品亚洲午夜麻豆| 日韩欧美国产午夜精品| ●精品国产综合乱码久久久久| 国产精品一级黄| 91精品国产手机| 日本欧美肥老太交大片| 欧美婷婷六月丁香综合色| 亚洲你懂的在线视频| 国产成人精品免费视频网站| 久久婷婷一区二区三区| 久久精品国产99| 日韩精品最新网址| 日韩精品一区第一页| 日韩一级二级三级| 奇米一区二区三区av| 日韩一区二区免费在线电影| 日韩极品在线观看| 精品卡一卡二卡三卡四在线| 免费一级欧美片在线观看| 91麻豆精品国产91久久久资源速度 | 亚洲国产精品av| 国产成人av电影在线观看| 欧美一区二区网站| 人禽交欧美网站| 日韩一区二区三区视频在线观看| 免费成人av在线播放| 欧美一区二区三区在线看| 日本视频一区二区三区| 7777女厕盗摄久久久| 日本v片在线高清不卡在线观看| 国产午夜一区二区三区| 国产成人一级电影| 日韩欧美在线不卡| 久久66热偷产精品| 日韩午夜激情av| 久久9热精品视频| 中文字幕在线不卡国产视频| 91丝袜国产在线播放| 天天综合天天综合色| 日韩欧美一区二区视频| 国产99久久久久久免费看农村| 国产精品欧美经典| 欧美精品在线观看播放| 久久99蜜桃精品|