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

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

?? rulecstr.c

?? clips源代碼
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
   /*******************************************************/   /*      "C" Language Integrated Production System      */   /*                                                     */   /*             CLIPS Version 6.24  06/05/06            */   /*                                                     */   /*              RULE CONSTRAINTS MODULE                */   /*******************************************************//*************************************************************//* Purpose: Provides routines for detecting constraint       *//*   conflicts in the LHS and RHS of rules.                  *//*                                                           *//* Principal Programmer(s):                                  *//*      Gary D. Riley                                        *//*                                                           *//* Contributing Programmer(s):                               *//*                                                           *//* Revision History:                                         *//*                                                           *//*      6.24: Renamed BOOLEAN macro type to intBool.         *//*                                                           *//*************************************************************/#define _RULECSTR_SOURCE_#include "setup.h"#if (! RUN_TIME) && (! BLOAD_ONLY) && DEFRULE_CONSTRUCT#include <stdio.h>#define _STDIO_INCLUDED_#include "analysis.h"#include "cstrnchk.h"#include "cstrnops.h"#include "cstrnutl.h"#include "envrnmnt.h"#include "extnfunc.h"#include "prcdrpsr.h"#include "reorder.h"#include "router.h"#include "rulepsr.h"#include "rulecstr.h"/***************************************//* LOCAL INTERNAL FUNCTION DEFINITIONS *//***************************************/   static intBool                 CheckForUnmatchableConstraints(void *,struct lhsParseNode *,int);   static intBool                 MultifieldCardinalityViolation(void *,struct lhsParseNode *);   static struct lhsParseNode    *UnionVariableConstraints(void *,struct lhsParseNode *,                                                     struct lhsParseNode *);   static struct lhsParseNode    *AddToVariableConstraints(void *,struct lhsParseNode *,                                                    struct lhsParseNode *);   static void                    ConstraintConflictMessage(void *,struct symbolHashNode *,                                                            int,int,struct symbolHashNode *);   static intBool                 CheckArgumentForConstraintError(void *,struct expr *,struct expr*,                                                                  int,struct FunctionDefinition *,                                                                  struct lhsParseNode *);/***********************************************************//* CheckForUnmatchableConstraints: Determines if a LHS CE  *//*   node contains unmatchable constraints. Return TRUE if *//*   there are unmatchable constraints, otherwise FALSE.   *//***********************************************************/static intBool CheckForUnmatchableConstraints(  void *theEnv,  struct lhsParseNode *theNode,  int whichCE)  {   if (EnvGetStaticConstraintChecking(theEnv) == FALSE) return(FALSE);   if (UnmatchableConstraint(theNode->constraints))     {      ConstraintConflictMessage(theEnv,(SYMBOL_HN *) theNode->value,whichCE,                                theNode->index,theNode->slot);      return(TRUE);     }   return(FALSE);  }/******************************************************//* ConstraintConflictMessage: Error message used when *//*   a constraint restriction for a slot prevents any *//*   value from matching the pattern constraint.      *//******************************************************/static void ConstraintConflictMessage(  void *theEnv,  struct symbolHashNode *variableName,  int thePattern,  int theField,  struct symbolHashNode *theSlot)  {   /*=========================*/   /* Print the error header. */   /*=========================*/   PrintErrorID(theEnv,"RULECSTR",1,TRUE);   /*======================================================*/   /* Print the variable name (if available) and CE number */   /* for which the constraint violation occurred.         */   /*======================================================*/   if (variableName != NULL)     {      EnvPrintRouter(theEnv,WERROR,"Variable ?");      EnvPrintRouter(theEnv,WERROR,ValueToString(variableName));      EnvPrintRouter(theEnv,WERROR," in CE #");      PrintLongInteger(theEnv,WERROR,(long int) thePattern);     }   else     {      EnvPrintRouter(theEnv,WERROR,"Pattern #");      PrintLongInteger(theEnv,WERROR,(long int) thePattern);     }   /*=======================================*/   /* Print the slot name or field position */   /* in which the violation occurred.      */   /*=======================================*/   if (theSlot == NULL)     {      EnvPrintRouter(theEnv,WERROR," field #");      PrintLongInteger(theEnv,WERROR,(long int) theField);     }   else     {      EnvPrintRouter(theEnv,WERROR," slot ");      EnvPrintRouter(theEnv,WERROR,ValueToString(theSlot));     }   /*======================================*/   /* Print the rest of the error message. */   /*======================================*/   EnvPrintRouter(theEnv,WERROR,"\nhas constraint conflicts which make the pattern unmatchable.\n");  }/***************************************************************//* MultifieldCardinalityViolation: Determines if a cardinality *//*   violation has occurred for a LHS CE node.                 *//***************************************************************/static intBool MultifieldCardinalityViolation(  void *theEnv,  struct lhsParseNode *theNode)  {   struct lhsParseNode *tmpNode;   struct expr *tmpMax;   long minFields = 0;   long maxFields = 0;   int posInfinity = FALSE;   CONSTRAINT_RECORD *newConstraint, *tempConstraint;   /*================================*/   /* A single field slot can't have */   /* a cardinality violation.       */   /*================================*/   if (theNode->multifieldSlot == FALSE) return(FALSE);   /*=============================================*/   /* Determine the minimum and maximum number of */   /* fields the slot could contain based on the  */   /* slot constraints found in the pattern.      */   /*=============================================*/   for (tmpNode = theNode->bottom;        tmpNode != NULL;        tmpNode = tmpNode->right)     {      /*====================================================*/      /* A single field variable increases both the minimum */      /* and maximum number of fields by one.               */      /*====================================================*/      if ((tmpNode->type == SF_VARIABLE) ||          (tmpNode->type == SF_WILDCARD))        {         minFields++;         maxFields++;        }      /*=================================================*/      /* Otherwise a multifield wildcard or variable has */      /* been encountered. If it is constrained then use */      /* minimum and maximum number of fields constraint */      /* associated with this LHS node.                  */      /*=================================================*/      else if (tmpNode->constraints != NULL)        {         /*=======================================*/         /* The lowest minimum of all the min/max */         /* pairs will be the first in the list.  */         /*=======================================*/         if (tmpNode->constraints->minFields->value != SymbolData(theEnv)->NegativeInfinity)           { minFields += (long) ValueToLong(tmpNode->constraints->minFields->value); }         /*=========================================*/         /* The greatest maximum of all the min/max */         /* pairs will be the last in the list.     */         /*=========================================*/         tmpMax = tmpNode->constraints->maxFields;         while (tmpMax->nextArg != NULL) tmpMax = tmpMax->nextArg;         if (tmpMax->value == SymbolData(theEnv)->PositiveInfinity)           { posInfinity = TRUE; }         else           { maxFields += (long) ValueToLong(tmpMax->value); }        }      /*================================================*/      /* Otherwise an unconstrained multifield wildcard */      /* or variable increases the maximum number of    */      /* fields to positive infinity.                   */      /*================================================*/      else        { posInfinity = TRUE; }     }   /*==================================================================*/   /* Create a constraint record for the cardinality of the sum of the */   /* cardinalities of the restrictions inside the multifield slot.    */   /*==================================================================*/   if (theNode->constraints == NULL) tempConstraint = GetConstraintRecord(theEnv);   else tempConstraint = CopyConstraintRecord(theEnv,theNode->constraints);   ReturnExpression(theEnv,tempConstraint->minFields);   ReturnExpression(theEnv,tempConstraint->maxFields);   tempConstraint->minFields = GenConstant(theEnv,INTEGER,EnvAddLong(theEnv,(long long) minFields));   if (posInfinity) tempConstraint->maxFields = GenConstant(theEnv,SYMBOL,SymbolData(theEnv)->PositiveInfinity);   else tempConstraint->maxFields = GenConstant(theEnv,INTEGER,EnvAddLong(theEnv,(long long) maxFields));   /*================================================================*/   /* Determine the final cardinality for the multifield slot by     */   /* intersecting the cardinality sum of the restrictions within    */   /* the multifield slot with the original cardinality of the slot. */   /*================================================================*/   newConstraint = IntersectConstraints(theEnv,theNode->constraints,tempConstraint);   if (theNode->derivedConstraints) RemoveConstraint(theEnv,theNode->constraints);   RemoveConstraint(theEnv,tempConstraint);   theNode->constraints = newConstraint;   theNode->derivedConstraints = TRUE;   /*===================================================================*/   /* Determine if the final cardinality for the slot can be satisfied. */   /*===================================================================*/   if (EnvGetStaticConstraintChecking(theEnv) == FALSE) return(FALSE);   if (UnmatchableConstraint(newConstraint)) return(TRUE);   return(FALSE);  }/***************************************************//* ProcessConnectedConstraints: Examines a single  *//*   connected constraint searching for constraint *//*   violations.                                   *//***************************************************/globle intBool ProcessConnectedConstraints(  void *theEnv,  struct lhsParseNode *theNode,  struct lhsParseNode *multifieldHeader,  struct lhsParseNode *patternHead)  {   struct constraintRecord *orConstraints = NULL, *andConstraints;   struct constraintRecord *tmpConstraints, *rvConstraints;   struct lhsParseNode *orNode, *andNode;   struct expr *tmpExpr;   /*============================================*/   /* Loop through all of the or (|) constraints */   /* found in the connected constraint.         */   /*============================================*/   for (orNode = theNode->bottom; orNode != NULL; orNode = orNode->bottom)     {      /*=================================================*/      /* Intersect all of the &'ed constraints together. */      /*=================================================*/

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
k8久久久一区二区三区| 亚洲精品在线网站| 91福利在线播放| av不卡一区二区三区| 国产成人精品免费一区二区| 国产一区二区三区最好精华液| 麻豆视频一区二区| 蜜臀av性久久久久蜜臀av麻豆| 男女男精品网站| 久久草av在线| 国精产品一区一区三区mba视频| 精品中文字幕一区二区| 国产精品88888| 成人h动漫精品| 色爱区综合激月婷婷| 欧美综合一区二区| 91麻豆精品国产91久久久使用方法| 欧美一区二区免费视频| 精品少妇一区二区| 国产日韩欧美电影| **欧美大码日韩| 一区二区欧美视频| 首页综合国产亚洲丝袜| 国产在线一区二区综合免费视频| 国产风韵犹存在线视精品| 成人一道本在线| 日本久久电影网| 欧美一区二区三区在线看| 精品国产一区a| 国产精品视频第一区| 亚洲精品欧美专区| 日韩av一区二区在线影视| 国产一区欧美一区| 色综合久久久久网| 日韩精品一区二区三区三区免费| 中文字幕av一区二区三区| 亚洲精品久久久蜜桃| 日韩国产欧美在线视频| 国产在线一区观看| 在线观看国产91| 欧美xxxx老人做受| 亚洲乱码一区二区三区在线观看| 日本少妇一区二区| 丁香婷婷综合五月| 欧美日韩精品系列| 久久久国产精品不卡| 一区二区三区欧美日| 久久99在线观看| 91在线国内视频| 日韩免费看的电影| 亚洲免费观看高清完整版在线观看| 日本女人一区二区三区| 丁香网亚洲国际| 欧美一区国产二区| 自拍偷在线精品自拍偷无码专区| 日韩**一区毛片| 97久久人人超碰| 精品嫩草影院久久| 亚洲永久免费视频| 国产iv一区二区三区| 欧美妇女性影城| 亚洲免费资源在线播放| 国产一区二区三区香蕉| 欧美日韩五月天| 国产婷婷色一区二区三区四区| 天堂成人免费av电影一区| 成人久久视频在线观看| 欧美一级理论片| 亚洲一区二区三区免费视频| 岛国一区二区在线观看| 精品久久久久久久久久久久久久久久久 | 午夜视频一区在线观看| 国产成人精品影视| 日韩欧美国产综合在线一区二区三区| 亚洲另类色综合网站| 国产精品88888| 日韩精品中午字幕| 亚洲h在线观看| 99re视频这里只有精品| 国产日韩欧美高清| 国产原创一区二区三区| 日韩精品一区二区三区中文不卡| 午夜成人免费视频| 在线精品视频免费观看| 亚洲天堂网中文字| 成人午夜av电影| 国产亚洲美州欧州综合国| 久久99精品久久只有精品| 91精品国产欧美一区二区成人 | 国产99久久久精品| 久久亚洲二区三区| 美女视频黄 久久| 欧美一二三四区在线| 天涯成人国产亚洲精品一区av| 欧美性感一类影片在线播放| 亚洲女人****多毛耸耸8| www.亚洲在线| 国产精品久久久久久一区二区三区| 国产精品18久久久久久久久 | 欧美一级爆毛片| 青青草原综合久久大伊人精品优势 | 韩国欧美国产一区| 欧美大片在线观看| 极品少妇一区二区三区精品视频| 日韩一区二区三| 蜜臀99久久精品久久久久久软件| 3d动漫精品啪啪1区2区免费| 五月综合激情婷婷六月色窝| 7777精品伊人久久久大香线蕉| 婷婷综合在线观看| 欧美电影在线免费观看| 欧美a一区二区| 精品人在线二区三区| 国产成人在线视频网址| 中文字幕av一区二区三区高 | eeuss鲁片一区二区三区| 成人免费视频在线观看| 91精品1区2区| 亚洲福中文字幕伊人影院| 91麻豆精品国产91久久久更新时间| 老汉av免费一区二区三区| 欧美电影精品一区二区| 国产激情一区二区三区四区| 国产精品高潮久久久久无| 91国偷自产一区二区三区成为亚洲经典| 亚洲一区中文在线| 日韩一区二区三| 国产成人精品亚洲午夜麻豆| 亚洲色图19p| 欧美人伦禁忌dvd放荡欲情| 日本不卡一区二区| 国产午夜精品理论片a级大结局| 成人短视频下载 | 色天使色偷偷av一区二区| 亚洲黄色免费网站| 日韩一区二区在线看片| 国产盗摄一区二区三区| 亚洲久本草在线中文字幕| 欧美蜜桃一区二区三区| 激情综合五月天| 国产精品久久免费看| 欧美日韩精品一区二区三区蜜桃| 麻豆国产精品官网| 综合色天天鬼久久鬼色| 日韩三级视频在线看| av一区二区三区黑人| 天天射综合影视| 日本一二三四高清不卡| 欧美色手机在线观看| 国模一区二区三区白浆| 一区二区免费在线播放| 久久久夜色精品亚洲| 91久久免费观看| 国产一区二区三区在线观看免费| 一区二区三区毛片| 亚洲精品在线观| 欧美午夜精品一区| 国产成人高清在线| 蜜臀av一级做a爰片久久| 日韩美女啊v在线免费观看| 日韩精品一区二区三区中文不卡| 91丝袜美腿高跟国产极品老师 | 国产成人久久精品77777最新版本| 亚洲自拍都市欧美小说| 国产三级精品视频| 欧美一级日韩免费不卡| 91在线一区二区三区| 国产综合久久久久影院| 亚洲福利一二三区| 中文字幕在线观看不卡视频| 日韩区在线观看| 欧美三级韩国三级日本三斤 | 久久久久一区二区三区四区| 欧美亚洲禁片免费| 91性感美女视频| 国产乱色国产精品免费视频| 偷拍亚洲欧洲综合| 曰韩精品一区二区| 国产精品久久毛片a| 久久久综合精品| 欧美一区二区三区免费| 在线观看视频91| 91在线免费看| 国产98色在线|日韩| 久久99久久精品| 日韩精品久久理论片| 亚洲一区二区成人在线观看| 国产精品免费网站在线观看| 精品美女在线观看| 91麻豆精品久久久久蜜臀| 欧美日韩一本到| 色偷偷成人一区二区三区91 | 欧美欧美欧美欧美首页| 日本道色综合久久| 91影视在线播放| 国产a视频精品免费观看| 国产麻豆成人传媒免费观看| 激情五月婷婷综合| 韩国理伦片一区二区三区在线播放| 青娱乐精品在线视频|