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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? prcdrpsr.c

?? clips源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
   /*******************************************************/   /*      "C" Language Integrated Production System      */   /*                                                     */   /*             CLIPS Version 6.24  06/05/06            */   /*                                                     */   /*          PROCEDURAL FUNCTIONS PARSER MODULE         */   /*******************************************************//*************************************************************//* Purpose:                                                  *//*                                                           *//* Principal Programmer(s):                                  *//*      Gary D. Riley                                        *//*      Brian L. Donnell                                     *//*                                                           *//* Contributing Programmer(s):                               *//*                                                           *//* Revision History:                                         *//*      6.23: Changed name of variable exp to theExp         *//*            because of Unix compiler warnings of shadowed  *//*            definitions.                                   *//*                                                           *//*      6.24: Renamed BOOLEAN macro type to intBool.         *//*                                                           *//*************************************************************/#define _PRCDRPSR_SOURCE_#include <stdio.h>#define _STDIO_INCLUDED_#include "setup.h"#include "argacces.h"#include "constrnt.h"#include "cstrnchk.h"#include "cstrnops.h"#include "cstrnutl.h"#include "envrnmnt.h"#include "exprnpsr.h"#include "memalloc.h"#include "modulutl.h"#include "multifld.h"#include "router.h"#include "scanner.h"#include "utility.h"#include "prcdrpsr.h"#if DEFGLOBAL_CONSTRUCT#include "globldef.h"#include "globlpsr.h"#endif#if ! RUN_TIME#define PRCDRPSR_DATA 12struct procedureParserData  {    struct BindInfo *ListOfParsedBindNames;  };#define ProcedureParserData(theEnv) ((struct procedureParserData *) GetEnvironmentData(theEnv,PRCDRPSR_DATA))#endif/***************************************//* LOCAL INTERNAL FUNCTION DEFINITIONS *//***************************************/#if (! RUN_TIME) && (! BLOAD_ONLY)   static struct expr            *WhileParse(void *,struct expr *,char *);   static struct expr            *LoopForCountParse(void *,struct expr *,char *);   static void                    ReplaceLoopCountVars(void *,SYMBOL_HN *,EXPRESSION *,int);   static struct expr            *IfParse(void *,struct expr *,char *);   static struct expr            *PrognParse(void *,struct expr *,char *);   static struct expr            *BindParse(void *,struct expr *,char *);   static int                     AddBindName(void *,struct symbolHashNode *,CONSTRAINT_RECORD *);   static struct expr            *ReturnParse(void *,struct expr *,char *);   static struct expr            *BreakParse(void *,struct expr *,char *);   static struct expr            *SwitchParse(void *,struct expr *,char *);   static void                    DeallocateProceduralFunctionData(void *);#endif#if ! RUN_TIME/*******************************************//* ProceduralFunctionParsers        *//*******************************************/globle void ProceduralFunctionParsers(  void *theEnv)  {   AllocateEnvironmentData(theEnv,PRCDRPSR_DATA,sizeof(struct procedureParserData),DeallocateProceduralFunctionData);#if (! BLOAD_ONLY)   AddFunctionParser(theEnv,"bind",BindParse);   AddFunctionParser(theEnv,"progn",PrognParse);   AddFunctionParser(theEnv,"if",IfParse);   AddFunctionParser(theEnv,"while",WhileParse);   AddFunctionParser(theEnv,"loop-for-count",LoopForCountParse);   AddFunctionParser(theEnv,"return",ReturnParse);   AddFunctionParser(theEnv,"break",BreakParse);   AddFunctionParser(theEnv,"switch",SwitchParse);#endif  }/*************************************************************//* DeallocateProceduralFunctionData: Deallocates environment *//*    data for procedural functions.                         *//*************************************************************/static void DeallocateProceduralFunctionData(  void *theEnv)  {    struct BindInfo *temp_bind;   while (ProcedureParserData(theEnv)->ListOfParsedBindNames != NULL)     {      temp_bind = ProcedureParserData(theEnv)->ListOfParsedBindNames->next;      rtn_struct(theEnv,BindInfo,ProcedureParserData(theEnv)->ListOfParsedBindNames);      ProcedureParserData(theEnv)->ListOfParsedBindNames = temp_bind;     }  }/********************************************************//* GetParsedBindNames:                                      *//********************************************************/globle struct BindInfo *GetParsedBindNames(  void *theEnv)  {   return(ProcedureParserData(theEnv)->ListOfParsedBindNames);  }/********************************************************//* SetParsedBindNames:                                      *//********************************************************/globle void SetParsedBindNames(  void *theEnv,  struct BindInfo *newValue)  {   ProcedureParserData(theEnv)->ListOfParsedBindNames = newValue;  }/********************************************************//* ClearParsedBindNames:                                     *//********************************************************/globle void ClearParsedBindNames(  void *theEnv)  {   struct BindInfo *temp_bind;   while (ProcedureParserData(theEnv)->ListOfParsedBindNames != NULL)     {      temp_bind = ProcedureParserData(theEnv)->ListOfParsedBindNames->next;      RemoveConstraint(theEnv,ProcedureParserData(theEnv)->ListOfParsedBindNames->constraints);      rtn_struct(theEnv,BindInfo,ProcedureParserData(theEnv)->ListOfParsedBindNames);      ProcedureParserData(theEnv)->ListOfParsedBindNames = temp_bind;     }  }/********************************************************//* ParsedBindNamesEmpty:                                     *//********************************************************/globle intBool ParsedBindNamesEmpty(  void *theEnv)  {   if (ProcedureParserData(theEnv)->ListOfParsedBindNames != NULL) return(FALSE);   return(TRUE);  }#if (! BLOAD_ONLY)/*********************************************************//* WhileParse: purpose is to parse the while statement.  *//*   The parse of the statement is the return value.     *//*   Syntax: (while <expression> do <action>+)           *//*********************************************************/static struct expr *WhileParse(  void *theEnv,  struct expr *parse,  char *infile)  {   struct token theToken;   int read_first_paren;   /*===============================*/   /* Process the while expression. */   /*===============================*/   SavePPBuffer(theEnv," ");   parse->argList = ParseAtomOrExpression(theEnv,infile,NULL);   if (parse->argList == NULL)     {      ReturnExpression(theEnv,parse);      return(NULL);     }   /*====================================*/   /* Process the do keyword if present. */   /*====================================*/   GetToken(theEnv,infile,&theToken);   if ((theToken.type == SYMBOL) && (strcmp(ValueToString(theToken.value),"do") == 0))     {      read_first_paren = TRUE;      PPBackup(theEnv);      SavePPBuffer(theEnv," ");      SavePPBuffer(theEnv,theToken.printForm);      IncrementIndentDepth(theEnv,3);      PPCRAndIndent(theEnv);     }   else if (theToken.type == LPAREN)     {      read_first_paren = FALSE;      PPBackup(theEnv);      IncrementIndentDepth(theEnv,3);      PPCRAndIndent(theEnv);      SavePPBuffer(theEnv,theToken.printForm);     }   else     {      SyntaxErrorMessage(theEnv,"while function");      ReturnExpression(theEnv,parse);      return(NULL);     }   /*============================*/   /* Process the while actions. */   /*============================*/   if (ExpressionData(theEnv)->svContexts->rtn == TRUE)     ExpressionData(theEnv)->ReturnContext = TRUE;   ExpressionData(theEnv)->BreakContext = TRUE;   parse->argList->nextArg = GroupActions(theEnv,infile,&theToken,read_first_paren,NULL,FALSE);   if (parse->argList->nextArg == NULL)     {      ReturnExpression(theEnv,parse);      return(NULL);     }   PPBackup(theEnv);   PPBackup(theEnv);   SavePPBuffer(theEnv,theToken.printForm);   /*=======================================================*/   /* Check for the closing right parenthesis of the while. */   /*=======================================================*/   if (theToken.type != RPAREN)     {      SyntaxErrorMessage(theEnv,"while function");      ReturnExpression(theEnv,parse);      return(NULL);     }   DecrementIndentDepth(theEnv,3);   return(parse);  }/******************************************************************************************//* LoopForCountParse: purpose is to parse the loop-for-count statement.                   *//*   The parse of the statement is the return value.                                      *//*   Syntax: (loop-for-count <range> [do] <action>+)                                      *//*           <range> ::= (<sf-var> [<start-integer-expression>] <end-integer-expression>) *//******************************************************************************************/static struct expr *LoopForCountParse(  void *theEnv,  struct expr *parse,  char *infile)  {   struct token theToken;   SYMBOL_HN *loopVar = NULL;   EXPRESSION *tmpexp;   int read_first_paren;   struct BindInfo *oldBindList,*newBindList,*prev;   /*======================================*/   /* Process the loop counter expression. */   /*======================================*/   SavePPBuffer(theEnv," ");   GetToken(theEnv,infile,&theToken);   /* ==========================================      Simple form: loop-for-count <end> [do] ...      ========================================== */   if (theToken.type != LPAREN)     {      parse->argList = GenConstant(theEnv,INTEGER,EnvAddLong(theEnv,1LL));      parse->argList->nextArg = ParseAtomOrExpression(theEnv,infile,&theToken);      if (parse->argList->nextArg == NULL)        {         ReturnExpression(theEnv,parse);         return(NULL);        }     }   else     {      GetToken(theEnv,infile,&theToken);      if (theToken.type != SF_VARIABLE)        {         if (theToken.type != SYMBOL)           goto LoopForCountParseError;         parse->argList = GenConstant(theEnv,INTEGER,EnvAddLong(theEnv,1LL));         parse->argList->nextArg = Function2Parse(theEnv,infile,ValueToString(theToken.value));         if (parse->argList->nextArg == NULL)           {            ReturnExpression(theEnv,parse);            return(NULL);           }        }      /* =============================================================         Complex form: loop-for-count (<var> [<start>] <end>) [do] ...         ============================================================= */      else        {         loopVar = (SYMBOL_HN *) theToken.value;         SavePPBuffer(theEnv," ");         parse->argList = ParseAtomOrExpression(theEnv,infile,NULL);         if (parse->argList == NULL)           {            ReturnExpression(theEnv,parse);            return(NULL);           }         if (CheckArgumentAgainstRestriction(theEnv,parse->argList,(int) 'i'))           goto LoopForCountParseError;         SavePPBuffer(theEnv," ");         GetToken(theEnv,infile,&theToken);         if (theToken.type == RPAREN)           {            PPBackup(theEnv);            PPBackup(theEnv);            SavePPBuffer(theEnv,theToken.printForm);            tmpexp = GenConstant(theEnv,INTEGER,EnvAddLong(theEnv,1LL));            tmpexp->nextArg = parse->argList;            parse->argList = tmpexp;           }         else          {            parse->argList->nextArg = ParseAtomOrExpression(theEnv,infile,&theToken);            if (parse->argList->nextArg == NULL)              {               ReturnExpression(theEnv,parse);               return(NULL);              }            GetToken(theEnv,infile,&theToken);            if (theToken.type != RPAREN)              goto LoopForCountParseError;           }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区成人在线视频| 在线播放中文一区| 国产肉丝袜一区二区| 精品一区二区在线视频| 久久久亚洲国产美女国产盗摄 | 日本美女一区二区三区视频| 欧美视频一二三区| 理论片日本一区| 欧美国产激情一区二区三区蜜月| 成人午夜免费视频| 一区二区三区欧美| 56国语精品自产拍在线观看| 精品一二三四区| 国产精品美女一区二区| 色菇凉天天综合网| 蜜臀99久久精品久久久久久软件| 国产欧美综合色| 在线区一区二视频| 麻豆国产精品视频| 日韩一区有码在线| 91精品国产综合久久香蕉麻豆 | 大陆成人av片| 亚洲一区二区三区中文字幕在线 | 精品久久久久久久久久久久久久久 | 欧美日本在线观看| 国产精品综合网| 亚洲自拍与偷拍| 国产无遮挡一区二区三区毛片日本| 92精品国产成人观看免费| 污片在线观看一区二区| 国产亚洲精品aa| 欧美高清www午色夜在线视频| 国产一区二区不卡| 亚洲一级电影视频| 日本一区二区免费在线| 欧美三级韩国三级日本三斤| 国产精品一区二区久激情瑜伽| 亚洲一区视频在线| 日本一区二区三区久久久久久久久不| 欧美性生活一区| 成人的网站免费观看| 日韩电影免费在线| 成人欧美一区二区三区黑人麻豆 | 成人一区二区三区在线观看| 亚洲线精品一区二区三区| 久久久.com| 91精品国产91久久久久久最新毛片| 成人av在线播放网站| 黄色日韩网站视频| 视频一区欧美日韩| 亚洲一区二区三区四区五区黄 | 91在线视频18| 国产一区二区免费看| 日本欧美一区二区三区乱码| 自拍偷拍亚洲激情| 国产精品丝袜在线| 久久色在线视频| 日韩欧美成人激情| 欧美一区二区大片| 欧美日韩视频一区二区| 色欧美日韩亚洲| 99精品久久99久久久久| 成人高清免费在线播放| 国产精品18久久久久久vr| 久久se精品一区二区| 视频一区二区欧美| 天天影视网天天综合色在线播放| 亚洲一区二区三区国产| 一区二区三区在线观看欧美| 欧美激情在线看| 国产精品美女久久久久久2018 | 国产麻豆视频精品| 激情成人综合网| 国产在线看一区| 国产精品一区二区在线观看网站| 青青草国产精品97视觉盛宴 | 精品国产91九色蝌蚪| 日韩欧美国产一区二区三区| 这里只有精品99re| 日韩欧美亚洲国产另类| 精品日韩一区二区三区免费视频| 日韩免费视频一区| 久久久久久久久99精品| 国产日韩一级二级三级| 国产日韩欧美a| 日韩美女视频19| 亚洲精品国产视频| 婷婷综合五月天| 免播放器亚洲一区| 国产在线精品国自产拍免费| 国产精品系列在线播放| 成人激情黄色小说| 色综合中文字幕国产| 在线国产电影不卡| 欧美精品乱码久久久久久| 日韩视频在线永久播放| 国产无一区二区| 亚洲精品自拍动漫在线| 亚洲成人在线网站| 看电视剧不卡顿的网站| 成人免费三级在线| 欧美视频一二三区| 久久亚洲一区二区三区明星换脸| 中文字幕免费不卡在线| 亚洲宅男天堂在线观看无病毒| 亚洲18影院在线观看| 国产一区二区三区在线看麻豆| 波多野洁衣一区| 欧美情侣在线播放| 国产精品久久久久永久免费观看 | 精品免费99久久| 国产精品不卡在线观看| 午夜伊人狠狠久久| 成人综合婷婷国产精品久久免费| 日本道免费精品一区二区三区| 777午夜精品免费视频| 国产人久久人人人人爽| 夜夜嗨av一区二区三区四季av| 麻豆专区一区二区三区四区五区| 国产成人综合精品三级| 精品视频1区2区| 欧美韩国日本综合| 肉丝袜脚交视频一区二区| 国产成人精品网址| 欧美一区二区三区视频在线观看| 国产精品天天摸av网| 日韩成人精品视频| 91片黄在线观看| 久久亚洲私人国产精品va媚药| 亚洲国产成人高清精品| 国产suv精品一区二区三区| 欧美精品电影在线播放| 亚洲欧洲另类国产综合| 国产一区久久久| 欧美日韩高清影院| 亚洲激情中文1区| 国产乱人伦偷精品视频不卡 | 韩日av一区二区| 欧美性猛交xxxx黑人交| 中文字幕在线视频一区| 国产美女视频一区| 欧美久久久久久久久| 亚洲天堂av一区| 成人永久aaa| 久久精品水蜜桃av综合天堂| 日韩主播视频在线| 欧美性生交片4| 亚洲精品国产一区二区三区四区在线| 成人久久视频在线观看| 久久久久一区二区三区四区| 日本va欧美va瓶| 91麻豆精品久久久久蜜臀| 性做久久久久久免费观看| 成人久久视频在线观看| 国产午夜久久久久| 国产一区二区三区四区五区入口| 91麻豆精品国产| 五月综合激情婷婷六月色窝| 色一情一伦一子一伦一区| 综合久久国产九一剧情麻豆| 99视频国产精品| 国产精品久久久久久福利一牛影视 | 另类的小说在线视频另类成人小视频在线| 欧美综合欧美视频| 亚洲永久免费视频| 欧美在线一二三四区| 亚洲欧美另类久久久精品| 99riav久久精品riav| 亚洲欧美另类图片小说| 91国偷自产一区二区三区观看| 亚洲免费观看高清完整版在线| 91在线播放网址| 一区二区三区蜜桃网| 欧美精选一区二区| 久久精品999| 欧美激情一区三区| www.日韩精品| 亚洲精品久久久久久国产精华液 | 欧美一区二区日韩一区二区| 性欧美大战久久久久久久久| 91精品国产高清一区二区三区| 玖玖九九国产精品| 中文字幕av一区 二区| 91在线视频免费91| 午夜精品免费在线| 精品欧美黑人一区二区三区| 国产大片一区二区| 亚洲精品乱码久久久久| 欧美肥妇free| 国产成人av一区二区三区在线 | 亚洲最快最全在线视频| 欧美老年两性高潮| 国产精品456露脸| 亚洲欧美激情一区二区| 9191精品国产综合久久久久久 | 中文字幕一区二区不卡| 欧美系列亚洲系列| 国产一区二区不卡在线| 亚洲欧美另类久久久精品2019| 91精品国产综合久久国产大片|