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

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

?? rulebld.c

?? clips源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
   /*******************************************************/   /*      "C" Language Integrated Production System      */   /*                                                     */   /*             CLIPS Version 6.30  10/19/06            */   /*                                                     */   /*                  RULE BUILD MODULE                  */   /*******************************************************//*************************************************************//* Purpose: Provides routines to ntegrates a set of pattern  *//*   and join tests associated with a rule into the pattern  *//*   and join networks. The joins are integrated into the    *//*   join network by routines in this module. The pattern    *//*   is integrated by calling the external routine           *//*   associated with the pattern parser that originally      *//*   parsed the pattern.                                     *//*                                                           *//* Principal Programmer(s):                                  *//*      Gary D. Riley                                        *//*                                                           *//* Contributing Programmer(s):                               *//*                                                           *//* Revision History:                                         *//*                                                           *//*      6.24: Removed INCREMENTAL_RESET compilation flag.    *//*                                                           *//*            Corrected code to remove compiler warnings.    *//*                                                           *//*      6.30: Added support for hashed alpha memories.       *//*                                                           *//*************************************************************/#define _RULEBLD_SOURCE_#include "setup.h"#if DEFRULE_CONSTRUCT && (! RUN_TIME) && (! BLOAD_ONLY)#include <stdio.h>#define _STDIO_INCLUDED_#include <stdlib.h>#include "constant.h"#include "envrnmnt.h"#include "constrct.h"#include "drive.h"#include "incrrset.h"#include "memalloc.h"#include "pattern.h"#include "reteutil.h"#include "router.h"#include "rulebld.h"#include "watch.h"/***************************************//* LOCAL INTERNAL FUNCTION DEFINITIONS *//***************************************/   static struct joinNode        *FindShareableJoin(struct joinLink *,struct joinNode *,intBool,void *,unsigned,unsigned,                                                    unsigned,unsigned,struct expr *,struct expr *,                                                    struct expr *,struct expr *);   static int                     TestJoinForReuse(struct joinNode *,unsigned,unsigned,                                                   unsigned,unsigned,struct expr *,struct expr *,                                                   struct expr *,struct expr *);   static struct joinNode        *CreateNewJoin(void *,struct expr *,struct expr *,struct joinNode *,void *,                                                int,int,int,struct expr *,struct expr *);   static void                    AttachTestCEsToPatternCEs(void *,struct lhsParseNode *);/****************************************************************//* ConstructJoins: Integrates a set of pattern and join tests   *//*   associated with a rule into the pattern and join networks. *//****************************************************************/globle struct joinNode *ConstructJoins(  void *theEnv,  int logicalJoin,  struct lhsParseNode *theLHS,  int startDepth)  {   struct joinNode *lastJoin = NULL;   struct patternNodeHeader *lastPattern;   unsigned firstJoin = TRUE;   int tryToReuse = TRUE;   struct joinNode *listOfJoins = NULL;   struct joinNode *oldJoin;   int joinNumber = 1;   int isLogical, isExists;   struct joinNode *lastRightJoin;   int lastIteration = FALSE;   int rhsType;   struct expr *leftHash, *rightHash;   void *rhsStruct;   struct lhsParseNode *nextLHS;   struct expr *networkTest, *secondaryNetworkTest, *secondaryExternalTest;   int joinFromTheRight;   struct joinLink *theLinks;   intBool useLinks;   /*===================================================*/   /* Remove any test CEs from the LHS and attach their */   /* expression to the closest preceeding non-negated  */   /* join at the same not/and depth.                   */   /*===================================================*/   if (startDepth == 1)     { AttachTestCEsToPatternCEs(theEnv,theLHS); }   if (theLHS == NULL)     {      lastJoin = FindShareableJoin(DefruleData(theEnv)->RightPrimeJoins,NULL,TRUE,NULL,TRUE,                                   FALSE,FALSE,FALSE,NULL,NULL,NULL,NULL);                                              if (lastJoin == NULL)        { lastJoin = CreateNewJoin(theEnv,NULL,NULL,NULL,NULL,FALSE,FALSE,FALSE,NULL,NULL); }     }   /*=====================================================*/   /* Process each pattern CE in the rule. At this point, */   /* there should be no and/or/not/test CEs in the LHS.  */   /*=====================================================*/   while (theLHS != NULL)     {      /*======================================================*/      /* Find the beginning of the next group of patterns. If */      /* the current pattern is not the beginning of a "join  */      /* from the right" group of patterns, then the next     */      /* pattern is the next pattern. Otherwise skip over all */      /* the patterns that belong to the group of subjoins.   */      /*======================================================*/                   nextLHS = theLHS->bottom;      secondaryExternalTest = NULL;      if (theLHS->endNandDepth > startDepth)        {         while ((nextLHS != NULL) &&                (nextLHS->endNandDepth > startDepth))           { nextLHS = nextLHS->bottom; }                  /*====================================================*/         /* Variable nextLHS is now pointing to the end of the */         /* not/and group beginning with variable theLHS. If   */          /* the end depth of the group is less than the depth  */         /* of the current enclosing not/and group, then this  */         /* is the last iteration for the enclosing group.     */         /*====================================================*/                    if (nextLHS != NULL)           {            if (nextLHS->endNandDepth < startDepth)              { lastIteration = TRUE; }           }                    if (nextLHS != NULL)           { nextLHS = nextLHS->bottom; }                    if ((nextLHS != NULL) && (nextLHS->type == TEST_CE))           {             secondaryExternalTest = nextLHS->networkTest;            nextLHS = nextLHS->bottom;            }        }             /*=======================================*/      /* Is this the last pattern to be added? */      /*=======================================*/            if (nextLHS == NULL)        { lastIteration = TRUE; }      else if (theLHS->endNandDepth < startDepth)        { lastIteration = TRUE; }       else if ((nextLHS->type == TEST_CE) &&               (theLHS->beginNandDepth > startDepth) &&               (nextLHS->endNandDepth < startDepth))        { lastIteration = TRUE; }       /*===============================================*/      /* If the pattern is a join from the right, then */      /* construct the subgroup of patterns and use    */      /* that as the RHS of the join to be added.      */      /*===============================================*/                                               if (theLHS->beginNandDepth > startDepth)        {         joinFromTheRight = TRUE;         isExists = theLHS->existsNand;         lastRightJoin = ConstructJoins(theEnv,logicalJoin,theLHS,startDepth+1);                    rhsStruct = lastRightJoin;         rhsType = 0;         lastPattern = NULL;         networkTest = theLHS->externalNetworkTest; /* TBD */         secondaryNetworkTest = secondaryExternalTest;         leftHash = theLHS->externalLeftHash;         rightHash = theLHS->externalRightHash;        }               /*=======================================================*/      /* Otherwise, add the pattern to the appropriate pattern */      /* network and use the pattern node containing the alpha */      /* memory as the RHS of the join to be added.            */      /*=======================================================*/            else if (theLHS->right == NULL)        {         joinFromTheRight = FALSE;         rhsType = 0;         lastPattern = NULL;         rhsStruct = NULL;         lastRightJoin = NULL;         isExists = theLHS->exists;         networkTest = theLHS->networkTest;         secondaryNetworkTest = theLHS->secondaryNetworkTest;         leftHash = NULL;         rightHash = NULL;        }      else        {         joinFromTheRight = FALSE;         rhsType = theLHS->patternType->positionInArray;         lastPattern = (*theLHS->patternType->addPatternFunction)(theEnv,theLHS);         rhsStruct = lastPattern;         lastRightJoin = NULL;         isExists = theLHS->exists;         networkTest = theLHS->networkTest;         secondaryNetworkTest = theLHS->secondaryNetworkTest;         leftHash = theLHS->leftHash;         rightHash = theLHS->rightHash;        }            /*======================================================*/      /* Determine if the join being added is a logical join. */      /*======================================================*/      if ((startDepth == 1) && (joinNumber == logicalJoin)) isLogical = TRUE;      else isLogical = FALSE;      /*===============================================*/      /* Get the list of joins which could potentially */      /* be reused in place of the join being added.   */      /*===============================================*/      useLinks = TRUE;      if (firstJoin == TRUE)        {          if (theLHS->right == NULL)           { theLinks = DefruleData(theEnv)->RightPrimeJoins; }         else if (lastPattern != NULL)           {             listOfJoins = lastPattern->entryJoin;            theLinks = NULL;            useLinks = FALSE;           }         else           { theLinks = lastRightJoin->nextLinks; }        }      else        { theLinks = lastJoin->nextLinks; }      /*=======================================================*/      /* Determine if the next join to be added can be shared. */      /*=======================================================*/      if ((tryToReuse == TRUE) &&          ((oldJoin = FindShareableJoin(theLinks,listOfJoins,useLinks,rhsStruct,firstJoin,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲永久精品大片| bt欧美亚洲午夜电影天堂| 91麻豆免费看| 亚洲欧美日韩久久精品| 色综合天天综合| 国产精品国产精品国产专区不蜜| 成人91在线观看| |精品福利一区二区三区| 久久精品免费在线观看| 综合网在线视频| 亚洲福利一区二区三区| 婷婷丁香激情综合| 日韩欧美一区二区不卡| 一本到高清视频免费精品| 国产一区视频网站| 久久综合成人精品亚洲另类欧美| 国产成人啪免费观看软件| 日韩精品五月天| 国产精品99久久久久久久vr | 久久国产精品无码网站| 中文字幕不卡的av| 久久精品一二三| 国产成人免费av在线| 国产不卡在线视频| 欧美日韩夫妻久久| 久久综合久久综合亚洲| 亚洲国产精品一区二区久久| 国产精品456| 欧美www视频| 亚洲电影欧美电影有声小说| 国产精品主播直播| 日韩一级黄色大片| 亚洲久草在线视频| 成人av在线一区二区三区| 欧美一区二区人人喊爽| 青青草精品视频| 2020国产精品久久精品美国| 有坂深雪av一区二区精品| 国产成+人+日韩+欧美+亚洲| 国产欧美一区二区在线| 久久精品国产**网站演员| 在线观看视频一区| 亚洲超碰97人人做人人爱| 91久久精品国产91性色tv| 亚洲一二三四久久| 精品乱人伦一区二区三区| 丝袜美腿亚洲综合| 欧美高清性hdvideosex| 18欧美亚洲精品| 制服丝袜亚洲精品中文字幕| 免费黄网站欧美| 欧美不卡一区二区三区四区| 久久精品99国产国产精| 久久久久久久综合色一本| 91丨九色丨黑人外教| 日本伊人色综合网| 欧美精品黑人性xxxx| 欧美国产日韩精品免费观看| 91视频免费观看| 久久精品国产在热久久| 欧美激情综合在线| 欧美日韩卡一卡二| 国产一区免费电影| 亚洲成人午夜影院| 中文字幕在线观看一区| 久久久久久**毛片大全| 欧美一级一区二区| 亚洲精品日韩专区silk| 欧美午夜精品久久久久久孕妇| 日本va欧美va欧美va精品| 国产精品不卡在线观看| 91精品国产一区二区三区蜜臀| 丁香桃色午夜亚洲一区二区三区| 美日韩黄色大片| 中文字幕在线免费不卡| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 亚洲高清免费观看高清完整版在线观看| 精品视频1区2区| 色婷婷国产精品久久包臀| yourporn久久国产精品| 国产精品一区不卡| 国产一区高清在线| 不卡电影一区二区三区| 一区二区国产视频| 色综合久久88色综合天天6| 国产在线不卡一区| 国产成人激情av| 国产精品一区二区久久不卡| 国产一区二区主播在线| 国产成人超碰人人澡人人澡| 97精品久久久久中文字幕| 欧美一区二区视频在线观看2022| 激情综合色综合久久| 一区二区在线观看免费| 夜夜嗨av一区二区三区网页 | 国产一区二区三区日韩| 成人avav影音| 精品国产a毛片| 亚洲成a人v欧美综合天堂 | 久久99国产精品尤物| 亚洲高清视频的网址| 国产成人在线视频播放| 欧美一区二区在线看| 亚洲国产精品人人做人人爽| 91丨国产丨九色丨pron| 欧美国产禁国产网站cc| 国产在线麻豆精品观看| 26uuu亚洲| 春色校园综合激情亚洲| 日韩亚洲欧美成人一区| 午夜视频在线观看一区| 色婷婷综合在线| 国产精品沙发午睡系列990531| 亚洲一级在线观看| 国产精品18久久久久久久网站| 日本电影亚洲天堂一区| 欧美成人艳星乳罩| 一区二区日韩av| 国产精品一区二区x88av| 欧美在线观看视频一区二区| 亚洲国产精品ⅴa在线观看| 久久91精品国产91久久小草| 久久日韩精品一区二区五区| 成人av在线看| 免费欧美日韩国产三级电影| 久久一留热品黄| 卡一卡二国产精品| 欧美日韩中文国产| 玉米视频成人免费看| 色综合天天性综合| 亚洲情趣在线观看| k8久久久一区二区三区| 国产欧美精品在线观看| 成人午夜又粗又硬又大| 中文字幕的久久| 成人h精品动漫一区二区三区| 久久精品亚洲一区二区三区浴池| 国产一区二区精品久久| 国产精品嫩草影院av蜜臀| 99免费精品视频| 亚洲线精品一区二区三区八戒| 欧美无人高清视频在线观看| 久久草av在线| 一卡二卡欧美日韩| 国产校园另类小说区| 91精品国产一区二区三区蜜臀 | av激情亚洲男人天堂| 天天av天天翘天天综合网色鬼国产| 日韩欧美在线123| 色天天综合色天天久久| 高清久久久久久| 狠狠色狠狠色综合日日91app| 亚洲线精品一区二区三区八戒| 欧美国产成人在线| ww亚洲ww在线观看国产| 欧美久久久久免费| 不卡一区在线观看| 国产一区二区三区在线看麻豆| 亚洲综合久久久| 亚洲免费成人av| 国产精品一区二区不卡| 欧美无砖砖区免费| 日本高清不卡一区| 欧美日韩精品免费观看视频| 欧美三级电影精品| 欧美一区二区视频在线观看2022| 欧美一级午夜免费电影| 久久色在线观看| 亚洲制服丝袜一区| 亚洲精品一卡二卡| 亚洲1区2区3区视频| 国产日产欧美精品一区二区三区| 在线观看国产精品网站| 在线成人午夜影院| 欧美大片一区二区三区| 精品国产123| 中文字幕亚洲一区二区va在线| 亚洲丝袜美腿综合| 午夜精品久久久久久不卡8050| 日本美女一区二区三区视频| 国产a级毛片一区| 在线91免费看| 国产亚洲一区二区在线观看| 亚洲激情图片qvod| 精品系列免费在线观看| 成人免费视频视频在线观看免费| 在线观看网站黄不卡| 国产亚洲污的网站| 亚洲国产视频直播| 国产精品99久久久久久似苏梦涵 | 亚洲国产美女搞黄色| 精品影院一区二区久久久| 91在线视频免费91| 久久色中文字幕| 免费欧美高清视频| 欧美在线你懂的| 欧美中文字幕亚洲一区二区va在线| 久久亚洲综合av| 国产乱码精品一区二区三区五月婷 | 成人伦理片在线|