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

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

?? exprnops.c

?? clips源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
   /*******************************************************/   /*      "C" Language Integrated Production System      */   /*                                                     */   /*             CLIPS Version 6.24  06/05/06            */   /*                                                     */   /*             EXPRESSION OPERATIONS MODULE            */   /*******************************************************//*************************************************************//* Purpose: Provides utility routines for manipulating and   *//*   examining expressions.                                  *//*                                                           *//* Principal Programmer(s):                                  *//*      Gary D. Riley                                        *//*                                                           *//* Contributing Programmer(s):                               *//*      Brian L. Donnell                                     *//*                                                           *//* Revision History:                                         *//*                                                           *//*      6.24: Renamed BOOLEAN macro type to intBool.         *//*                                                           *//*************************************************************/#define _EXPRNOPS_SOURCE_#include "setup.h"#include <stdio.h>#define _STDIO_INCLUDED_#include <stdlib.h>#include <string.h>#include <ctype.h>#include "memalloc.h"#include "envrnmnt.h"#include "router.h"#include "extnfunc.h"#include "cstrnchk.h"#include "prntutil.h"#include "cstrnutl.h"#include "cstrnops.h"#include "exprnops.h"#if (! RUN_TIME)/**************************************************************//* CheckArgumentAgainstRestriction: Compares an argument to a *//*   function to the set of restrictions for that function to *//*   determine if any incompatibilities exist. If so, the     *//*   value TRUE is returned, otherwise FALSE is returned.     *//*   Restrictions checked are:                                *//*     a - external address                                   *//*     d - float                                              *//*     e - instance address, instance name, or symbol         *//*     f - float                                              *//*     g - integer, float, or symbol                          *//*     h - instance address, instance name, fact address,     *//*         integer, or symbol                                 *//*     i - integer                                            *//*     j - symbol, string, or instance name                   *//*     k - symbol or string                                   *//*     l - integer                                            *//*     m - multifield                                         *//*     n - float or integer                                   *//*     o - instance name                                      *//*     p - instance name or symbol                            *//*     q - string, symbol, or multifield                      *//*     s - string                                             *//*     u - unknown (any type allowed)                         *//*     w - symbol                                             *//*     x - instance address                                   *//*     y - fact address                                       *//*     z - fact address, integer, or symbol (*)               *//**************************************************************/globle int CheckArgumentAgainstRestriction(  void *theEnv,  struct expr *theExpression,  int theRestriction)  {   CONSTRAINT_RECORD *cr1, *cr2, *cr3;   /*=============================================*/   /* Generate a constraint record for the actual */   /* argument passed to the function.            */   /*=============================================*/   cr1 = ExpressionToConstraintRecord(theEnv,theExpression);   /*================================================*/   /* Generate a constraint record based on the type */   /* of argument expected by the function.          */   /*================================================*/   cr2 = ArgumentTypeToConstraintRecord(theEnv,theRestriction);   /*===============================================*/   /* Intersect the two constraint records and then */   /* discard them.                                 */   /*===============================================*/   cr3 = IntersectConstraints(theEnv,cr1,cr2);   RemoveConstraint(theEnv,cr1);   RemoveConstraint(theEnv,cr2);   /*====================================================*/   /* If the intersection of the two constraint records  */   /* is empty, then the argument passed to the function */   /* doesn't satisfy the restrictions for the argument. */   /*====================================================*/   if (UnmatchableConstraint(cr3))     {      RemoveConstraint(theEnv,cr3);      return(TRUE);     }   /*===================================================*/   /* The argument satisfies the function restrictions. */   /*===================================================*/   RemoveConstraint(theEnv,cr3);   return(FALSE);  }#endif /* (! RUN_TIME) *//************************************************************//* ConstantExpression: Returns TRUE if the expression *//*   is a constant, otherwise FALSE.                  *//************************************************************/globle intBool ConstantExpression(  struct expr *testPtr)  {   while (testPtr != NULL)     {      if ((testPtr->type != SYMBOL) && (testPtr->type != STRING) &&#if OBJECT_SYSTEM          (testPtr->type != INSTANCE_NAME) && (testPtr->type != INSTANCE_ADDRESS) &&#endif          (testPtr->type != INTEGER) && (testPtr->type != FLOAT))        { return(FALSE); }      testPtr = testPtr->nextArg;     }   return(TRUE);  }/************************************************//* ConstantType: Returns TRUE if the type *//*   is a constant, otherwise FALSE.      *//************************************************/globle intBool ConstantType(  int theType)  {   switch (theType)     {      case SYMBOL:      case STRING:      case INTEGER:      case FLOAT:#if OBJECT_SYSTEM      case INSTANCE_NAME:      case INSTANCE_ADDRESS:#endif        return(TRUE);     }   return(FALSE);  }/*****************************************************************************//* IdenticalExpression: Determines if two expressions are identical. Returns *//*   TRUE if the expressions are identical, otherwise FALSE is returned.     *//*****************************************************************************/globle intBool IdenticalExpression(  struct expr *firstList,  struct expr *secondList)  {   /*==============================================*/   /* Compare each argument in both expressions by */   /* following the nextArg list.                  */   /*==============================================*/   for (;        (firstList != NULL) && (secondList != NULL);        firstList = firstList->nextArg, secondList = secondList->nextArg)     {      /*=========================*/      /* Compare type and value. */      /*=========================*/      if (firstList->type != secondList->type)        { return(FALSE); }      if (firstList->value != secondList->value)        { return (FALSE); }      /*==============================*/      /* Compare the arguments lists. */      /*==============================*/      if (IdenticalExpression(firstList->argList,secondList->argList) == FALSE)        { return(FALSE); }     }   /*=====================================================*/   /* If firstList and secondList aren't both NULL, then  */   /* one of the lists contains more expressions than the */   /* other.                                              */   /*=====================================================*/   if (firstList != secondList) return(FALSE);   /*============================*/   /* Expressions are identical. */   /*============================*/   return(TRUE);  }/****************************************************//* CountArguments: Returns the number of structures *//*   stored in an expression as traversed through   *//*   the nextArg pointer but not the argList        *//*   pointer.                                       *//****************************************************/globle int CountArguments(  struct expr *testPtr)  {   int size = 0;   while (testPtr != NULL)     {      size++;      testPtr = testPtr->nextArg;     }   return(size);  }/******************************************//* CopyExpresssion: Copies an expression. *//******************************************/globle struct expr *CopyExpression(  void *theEnv,  struct expr *original)  {   struct expr *topLevel, *next, *last;   if (original == NULL) return(NULL);   topLevel = GenConstant(theEnv,original->type,original->value);   topLevel->argList = CopyExpression(theEnv,original->argList);   last = topLevel;   original = original->nextArg;   while (original != NULL)     {      next = GenConstant(theEnv,original->type,original->value);      next->argList = CopyExpression(theEnv,original->argList);      last->nextArg = next;      last = next;      original = original->nextArg;     }   return(topLevel);  }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜电影网站| 7777精品伊人久久久大香线蕉超级流畅| 日本中文字幕一区二区有限公司| 日韩精品中午字幕| 欧美三级午夜理伦三级中视频| 成人黄色一级视频| 国产美女在线精品| 麻豆91精品91久久久的内涵| 亚洲精品欧美综合四区| 中文字幕二三区不卡| 国产欧美一区二区三区网站| 精品国产乱码久久久久久久| 日韩一区二区在线观看视频播放| 色噜噜久久综合| 欧美日韩在线三区| 在线观看免费视频综合| 91麻豆精品在线观看| 韩国欧美国产1区| 日韩成人一区二区| 日本中文在线一区| 亚洲综合一区二区| 国产精品你懂的在线| 欧美激情一区二区三区全黄 | 日本成人中文字幕| 国产精品国产三级国产普通话蜜臀| 国产欧美日韩综合精品一区二区| 久久人人爽人人爽| 国产午夜一区二区三区| 中文字幕成人av| 久久综合av免费| 国产欧美日本一区视频| 国产欧美日韩另类一区| 精品国产123| 欧美一级精品在线| 欧美一区二区三区在线视频| 日韩欧美在线网站| 精品国产乱码久久久久久浪潮| 久久久亚洲欧洲日产国码αv| 久久综合九色综合久久久精品综合 | 亚洲一区二区在线免费看| 亚洲一区二区欧美日韩| 亚洲mv在线观看| 久久国产精品99久久人人澡| 国产自产v一区二区三区c| 国产成人av网站| 国内精品伊人久久久久影院对白| 国产一区二区三区最好精华液| 国产成人精品免费视频网站| 成人av网址在线| 欧美在线视频你懂得| 91精品国产黑色紧身裤美女| 91精品国产综合久久精品| 欧美精品一区在线观看| 91精品国产综合久久久蜜臀图片 | 亚洲综合免费观看高清在线观看| 一区二区三区在线视频免费| 一区av在线播放| 一二三区精品福利视频| 一区二区三区国产精华| 裸体一区二区三区| 粉嫩嫩av羞羞动漫久久久| 在线免费观看一区| 7777精品伊人久久久大香线蕉| 久久久久久久综合色一本| 亚洲女性喷水在线观看一区| 日本最新不卡在线| 韩日欧美一区二区三区| 91一区二区三区在线观看| 色猫猫国产区一区二在线视频| 一区二区欧美国产| 国产一二精品视频| 欧美午夜一区二区三区免费大片| 精品成人佐山爱一区二区| 一区二区在线观看免费视频播放| 老司机免费视频一区二区| a亚洲天堂av| 日韩欧美在线123| 亚洲黄一区二区三区| 国产一区二区视频在线播放| 欧美日韩高清一区二区不卡| 欧美精品一区二| 色综合久久久久综合99| 91猫先生在线| 国产三级精品三级在线专区| 亚洲成人av资源| 不卡的电视剧免费网站有什么| 欧美日韩久久久| 久久这里只精品最新地址| 一级做a爱片久久| 成人一区二区在线观看| 欧美成人激情免费网| 亚洲天堂网中文字| 国产精品自在欧美一区| 欧美一区二区视频网站| 一区二区三区在线播放| 成人h动漫精品| 91麻豆精品国产综合久久久久久| 一区二区三区欧美亚洲| 国产成人av影院| 日韩你懂的电影在线观看| 亚洲国产乱码最新视频| 成人精品亚洲人成在线| 久久色成人在线| 美女爽到高潮91| 日韩西西人体444www| 日产国产欧美视频一区精品| 欧美老年两性高潮| 日本美女视频一区二区| 日韩一级二级三级精品视频| 蜜臀av性久久久久蜜臀aⅴ流畅| 日韩一区二区免费在线电影| 久久不见久久见免费视频1| 日韩精品专区在线影院重磅| 国产一区二区三区在线观看免费| www一区二区| 成人sese在线| 亚洲日本va午夜在线影院| 91亚洲精品久久久蜜桃网站| 亚洲色图欧洲色图| 欧美主播一区二区三区美女| 五月天亚洲精品| 91精品国产乱码久久蜜臀| 精品一区二区三区在线播放视频| 久久麻豆一区二区| av在线不卡电影| 夜夜揉揉日日人人青青一国产精品| 欧美系列在线观看| 久久99在线观看| 国产精品人妖ts系列视频| 91麻豆视频网站| 日韩电影在线免费看| 久久夜色精品国产噜噜av| 国产91丝袜在线18| 亚洲黄色av一区| 91精品国产91久久综合桃花 | 国产福利电影一区二区三区| 中日韩av电影| 欧美猛男gaygay网站| 激情av综合网| 中文字幕一区二区三区乱码在线 | 欧美色窝79yyyycom| 日本午夜精品一区二区三区电影| 精品少妇一区二区| 久久久综合精品| 日韩视频一区二区| 国产精品美女久久久久久| 91福利精品视频| 国产老肥熟一区二区三区| 一区二区三区视频在线看| 欧美一区二区三区在线观看视频| 国产成人欧美日韩在线电影| 亚洲一区二区三区视频在线| 久久一留热品黄| 欧美天堂一区二区三区| 国产乱一区二区| 亚洲成av人片在线观看无码| 久久夜色精品国产欧美乱极品| 欧美视频一二三区| 丁香婷婷综合激情五月色| 天堂蜜桃91精品| 日韩一区欧美一区| 26uuuu精品一区二区| 欧美日韩一区二区三区在线看| 精品一区二区三区免费观看 | 高清不卡在线观看| 日韩成人午夜精品| 国产精品久久福利| 精品国精品国产尤物美女| 欧美伊人久久久久久久久影院| 高清在线观看日韩| 久久精品国产99国产精品| 亚洲一区免费视频| 成人欧美一区二区三区1314| 2019国产精品| 欧美一区二区视频免费观看| 在线观看不卡视频| 99免费精品视频| 国产精品一区二区三区网站| 视频一区二区三区入口| 亚洲中国最大av网站| 中文字幕不卡一区| 精品免费99久久| 日韩欧美一级精品久久| 欧美视频在线观看一区二区| 99精品在线免费| 成人三级在线视频| 国产精品亚洲第一区在线暖暖韩国 | 亚洲品质自拍视频| 国产精品久久久久影院| 国产午夜精品一区二区三区嫩草 | 亚洲欧洲中文日韩久久av乱码| 国产欧美一区二区在线| 日韩三级.com| 日本欧美在线观看| 亚洲一本大道在线| 精品久久国产老人久久综合| 国产99久久久国产精品潘金网站| 免费高清在线一区| 中文成人av在线| 中文一区二区完整视频在线观看|