亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
成人国产视频在线观看| 国产精品丝袜91| 精品国产三级电影在线观看| 欧美电视剧在线看免费| 国产片一区二区| 一区二区三区中文字幕电影| 日本在线不卡视频| 成人不卡免费av| www.欧美色图| 91精品国产91综合久久蜜臀| 久久麻豆一区二区| 亚洲美女淫视频| 日韩成人免费电影| eeuss鲁一区二区三区| 欧美视频一区二区三区在线观看| 26uuu另类欧美| 亚洲男帅同性gay1069| 精品一区二区在线免费观看| 91高清视频在线| 国产片一区二区三区| 国产欧美一区二区精品忘忧草| 亚洲在线一区二区三区| 国产在线视视频有精品| 在线观看视频91| 4438x成人网最大色成网站| 中文字幕av一区二区三区免费看| 日韩精品免费视频人成| 色综合久久久久| 国产色产综合产在线视频| 天天av天天翘天天综合网 | 91麻豆123| 欧美精品一区二区在线播放| 一区二区三区四区激情| 国产成a人无v码亚洲福利| 日韩免费一区二区| 亚洲777理论| 色婷婷av一区二区三区软件| 亚洲国产精品精华液2区45| 久久成人av少妇免费| 成人午夜av电影| 久久久久国产一区二区三区四区| 免费人成黄页网站在线一区二区| 色婷婷久久综合| 国产日韩精品一区二区三区在线| 麻豆91在线播放| 日韩一区二区视频| 日韩精品色哟哟| 欧美一区三区二区| 亚洲成人一二三| 欧美日韩久久不卡| 亚洲va韩国va欧美va精品| 欧美主播一区二区三区| 亚洲与欧洲av电影| 在线中文字幕不卡| 亚洲一区免费在线观看| 欧美最新大片在线看| 亚洲一区二区三区影院| 欧美日韩精品福利| 免费看黄色91| 26uuu另类欧美亚洲曰本| 国产中文字幕一区| 中国色在线观看另类| 久久电影国产免费久久电影| 日韩欧美国产午夜精品| 日本午夜一本久久久综合| 欧美日韩一级视频| 国产一区二区三区视频在线播放| 中文字幕日本不卡| 欧美一区二区三区四区高清| 国产精品亚洲а∨天堂免在线| 一区二区欧美精品| 亚洲精品一区二区在线观看| 色婷婷亚洲精品| 国产一区二三区| 亚洲一区二区高清| 国产欧美日韩精品在线| 欧美日本国产视频| 99精品在线观看视频| 美女一区二区三区在线观看| 中文字幕中文字幕一区二区| 欧美大肚乱孕交hd孕妇| 色婷婷综合久久久中文字幕| 国产精品中文有码| 天堂资源在线中文精品| 1024成人网| 久久无码av三级| 91精品欧美久久久久久动漫 | 日韩精品一区二区三区四区| 一本一道综合狠狠老| 国产精品一区二区你懂的| 图片区小说区国产精品视频 | 精品国产区一区| 欧美在线观看视频在线| 成人小视频在线| 国产一区二区三区免费看| 午夜欧美电影在线观看| 亚洲女女做受ⅹxx高潮| 欧美高清在线视频| 国产欧美日韩中文久久| 欧美大胆一级视频| 日韩欧美中文字幕一区| 欧美精品一级二级三级| 91浏览器在线视频| 波多野结衣精品在线| 国产福利电影一区二区三区| 久久99热99| 免费精品视频最新在线| 亚洲国产精品久久久久秋霞影院| 亚洲欧美日韩综合aⅴ视频| 中文字幕精品一区二区精品绿巨人| 欧美成人精品3d动漫h| 欧美一区二区成人| 欧美一区二区精美| 欧美一级艳片视频免费观看| 欧美二区三区91| 欧美日韩成人一区| 欧美精品在线视频| 3751色影院一区二区三区| 欧美日韩视频在线观看一区二区三区 | 国产suv精品一区二区三区| 黄页视频在线91| 国产在线日韩欧美| 国产.精品.日韩.另类.中文.在线.播放| 欧美不卡视频一区| 色噜噜偷拍精品综合在线| 色美美综合视频| 激情图区综合网| 日本午夜一本久久久综合| 亚洲欧美日韩国产一区二区三区| 美女精品自拍一二三四| 欧美日韩一区在线观看| 国产毛片精品视频| 亚洲r级在线视频| 欧美日韩国产小视频| 久久久一区二区| 综合欧美亚洲日本| 亚洲人成小说网站色在线| 国产精品蜜臀av| 中文字幕在线不卡视频| 中文字幕乱码一区二区免费| 精品国产成人在线影院| 日韩欧美123| 国产日本欧美一区二区| 国产精品久久久久久久久晋中| 国产精品嫩草99a| 亚洲免费av高清| 亚洲一区二区精品视频| 香蕉加勒比综合久久| 精品一区二区三区免费播放 | 亚洲综合av网| 亚洲主播在线播放| 丝袜美腿一区二区三区| 精品无人码麻豆乱码1区2区 | 91精品1区2区| 成人av免费在线观看| 91视频com| 亚洲美女免费在线| 日本中文字幕不卡| 国产色婷婷亚洲99精品小说| 欧美日韩精品欧美日韩精品一 | 国产精品久久久久一区| 一区二区三区四区国产精品| 麻豆一区二区三| 99国产麻豆精品| 日韩一区二区电影| 中文字幕一区在线观看| 日韩黄色免费网站| 宅男在线国产精品| 中文字幕中文字幕一区二区| 国产精品不卡一区| 91亚洲精华国产精华精华液| 91精选在线观看| 亚洲三级电影网站| www.亚洲色图.com| 国产女人水真多18毛片18精品视频| 一区二区三区中文字幕精品精品| 91麻豆视频网站| 国产欧美视频在线观看| 国产激情一区二区三区| 国产精品拍天天在线| 成人一级黄色片| 午夜精品影院在线观看| 国产一区二区美女诱惑| 在线不卡一区二区| 亚洲欧美偷拍三级| 成人精品小蝌蚪| 2022国产精品视频| 毛片av一区二区| 777欧美精品| 亚洲一区在线看| 91久久精品一区二区三区| 中文字幕av一区二区三区| 国产精品自拍一区| 日韩免费视频线观看| 青青草国产精品亚洲专区无| 欧美福利电影网| 日韩成人精品视频| 欧美一区二区黄色| 久久www免费人成看片高清| 欧美一区二区三区白人|