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

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

?? rulepsr.c

?? clips源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
/********************************************************************//* ExpressionComplexity: Determines the complexity of a expression. *//********************************************************************/static int ExpressionComplexity(   void *theEnv,  struct expr *exprPtr)  {   int complexity = 0;   while (exprPtr != NULL)     {      if (exprPtr->type == FCALL)        {         /*=========================================*/         /* Logical combinations do not add to the  */         /* complexity, but their arguments do.     */         /*=========================================*/         if ((exprPtr->value == ExpressionData(theEnv)->PTR_AND) ||                  (exprPtr->value == ExpressionData(theEnv)->PTR_NOT) ||                  (exprPtr->value == ExpressionData(theEnv)->PTR_OR))           { complexity += ExpressionComplexity(theEnv,exprPtr->argList); }         /*=========================================*/         /* else other function calls increase the  */         /* complexity, but their arguments do not. */         /*=========================================*/         else           { complexity++; }        }      else if ((EvaluationData(theEnv)->PrimitivesArray[exprPtr->type] != NULL) ?               EvaluationData(theEnv)->PrimitivesArray[exprPtr->type]->addsToRuleComplexity : FALSE)        { complexity++; }      exprPtr = exprPtr->nextArg;     }   return(complexity);  }/********************************************//* LogicalAnalysis: Analyzes the use of the *//*   logical CE within the LHS of a rule.   *//********************************************/static int LogicalAnalysis(  void *theEnv,  struct lhsParseNode *patternList)  {   int firstLogical, logicalsFound = FALSE, logicalJoin = 1;   int gap = FALSE;   if (patternList == NULL) return(0);   firstLogical = patternList->logical;   /*===================================================*/   /* Loop through each pattern in the LHS of the rule. */   /*===================================================*/   for (;        patternList != NULL;        patternList = patternList->bottom)     {      /*=======================================*/      /* Skip anything that isn't a pattern CE */      /* or is embedded within a not/and CE.   */      /*=======================================*/      if ((patternList->type != PATTERN_CE) || (patternList->endNandDepth != 1))        { continue; }      /*=====================================================*/      /* If the pattern CE is not contained within a logical */      /* CE, then set the gap flag to TRUE indicating that   */      /* any subsequent pattern CE found within a logical CE */      /* represents a gap between logical CEs which is an    */      /* error.                                              */      /*=====================================================*/      if (patternList->logical == FALSE)        {         gap = TRUE;         continue;        }      /*=================================================*/      /* If a logical CE is encountered and the first CE */      /* of the rule isn't a logical CE, then indicate   */      /* that the first CE must be a logical CE.         */      /*=================================================*/      if (! firstLogical)        {         PrintErrorID(theEnv,"RULEPSR",1,TRUE);         EnvPrintRouter(theEnv,WERROR,"Logical CEs must be placed first in a rule\n");         return(-1);        }      /*===================================================*/      /* If a break within the logical CEs was found and a */      /* new logical CE is encountered, then indicate that */      /* there can't be any gaps between logical CEs.      */      /*===================================================*/      if (gap)        {         PrintErrorID(theEnv,"RULEPSR",2,TRUE);         EnvPrintRouter(theEnv,WERROR,"Gaps may not exist between logical CEs\n");         return(-1);        }      /*===========================================*/      /* Increment the count of logical CEs found. */      /*===========================================*/      logicalJoin++;      logicalsFound = TRUE;     }   /*============================================*/   /* If logical CEs were found, then return the */   /* join number where the logical information  */   /* will be stored in the join network.        */   /*============================================*/   if (logicalsFound) return(logicalJoin);   /*=============================*/   /* Return zero indicating that */   /* no logical CE was found.    */   /*=============================*/   return(0);  }/*****************************************************************//* FindVariable: Searches for the last occurence of a variable   *//*  in the LHS of a rule that is visible from the RHS of a rule. *//*  The last occurence of the variable on the LHS side of the    *//*  rule will have the strictest constraints (because it will    *//*  have been intersected with all of the other constraints for  *//*  the variable on the LHS of the rule). The strictest          *//*  constraints are useful for performing type checking on the   *//*  RHS of the rule.                                             *//*****************************************************************/globle struct lhsParseNode *FindVariable(  SYMBOL_HN *name,  struct lhsParseNode *theLHS)  {   struct lhsParseNode *theFields, *tmpFields = NULL;   struct lhsParseNode *theReturnValue = NULL;   /*==============================================*/   /* Loop through each CE in the LHS of the rule. */   /*==============================================*/   for (;        theLHS != NULL;        theLHS = theLHS->bottom)     {      /*==========================================*/      /* Don't bother searching for the variable  */      /* in anything other than a pattern CE that */      /* is not contained within a not CE.        */      /*==========================================*/      if ((theLHS->type != PATTERN_CE) ||          (theLHS->negated == TRUE) ||          (theLHS->exists == TRUE) ||          (theLHS->beginNandDepth > 1))        { continue; }      /*=====================================*/      /* Check the pattern address variable. */      /*=====================================*/      if (theLHS->value == (void *) name)        { theReturnValue = theLHS; }      /*============================================*/      /* Check for the variable inside the pattern. */      /*============================================*/      theFields = theLHS->right;      while (theFields != NULL)        {         /*=================================================*/         /* Go one level deeper to check a multifield slot. */         /*=================================================*/         if (theFields->multifieldSlot)           {            tmpFields = theFields;            theFields = theFields->bottom;           }         /*=================================*/         /* See if the field being examined */         /* is the variable being sought.   */         /*=================================*/         if (theFields == NULL)           { /* Do Nothing */ }         else if (((theFields->type == SF_VARIABLE) ||                   (theFields->type == MF_VARIABLE)) &&             (theFields->value == (void *) name))           { theReturnValue = theFields; }         /*============================*/         /* Move on to the next field. */         /*============================*/         if (theFields == NULL)           {            theFields = tmpFields;            tmpFields = NULL;           }         else if ((theFields->right == NULL) && (tmpFields != NULL))           {            theFields = tmpFields;            tmpFields = NULL;           }         theFields = theFields->right;        }     }   /*=========================================================*/   /* Return a pointer to the LHS location where the variable */   /* was found (or a NULL pointer if it wasn't).             */   /*=========================================================*/   return(theReturnValue);  }/**********************************************************//* AddToDefruleList: Adds a defrule to the list of rules. *//**********************************************************/static void AddToDefruleList(  struct defrule *rulePtr)  {   struct defrule *tempRule;   struct defruleModule *theModuleItem;   theModuleItem = (struct defruleModule *) rulePtr->header.whichModule;   if (theModuleItem->header.lastItem == NULL)     { theModuleItem->header.firstItem = (struct constructHeader *) rulePtr; }   else     {      tempRule = (struct defrule *) theModuleItem->header.lastItem;      while (tempRule != NULL)        {         tempRule->header.next = (struct constructHeader *) rulePtr;         tempRule = tempRule->disjunct;        }     }   theModuleItem->header.lastItem = (struct constructHeader *) rulePtr;  }#if DEVELOPER && DEBUGGING_FUNCTIONS/**********************************************************//* DumpRuleAnalysis:  *//**********************************************************/static void DumpRuleAnalysis(  void *theEnv,  struct lhsParseNode *tempNode)  {   struct lhsParseNode *traceNode;   char buffer[20];   EnvPrintRouter(theEnv,WDISPLAY,"\n");   for (traceNode = tempNode; traceNode != NULL; traceNode = traceNode->bottom)     {      if (! traceNode->userCE)        { continue; }              gensprintf(buffer,"CE %2d: ",traceNode->whichCE);      EnvPrintRouter(theEnv,WDISPLAY,buffer);      PrintExpression(theEnv,WDISPLAY,traceNode->networkTest);      EnvPrintRouter(theEnv,WDISPLAY,"\n");      if (traceNode->externalNetworkTest != NULL)        {          EnvPrintRouter(theEnv,WDISPLAY,"       ET: ");         PrintExpression(theEnv,WDISPLAY,traceNode->externalNetworkTest);         EnvPrintRouter(theEnv,WDISPLAY,"\n");        }      if (traceNode->secondaryNetworkTest != NULL)        {          EnvPrintRouter(theEnv,WDISPLAY,"       ST: ");         PrintExpression(theEnv,WDISPLAY,traceNode->secondaryNetworkTest);         EnvPrintRouter(theEnv,WDISPLAY,"\n");        }                       if (traceNode->externalRightHash != NULL)        {          EnvPrintRouter(theEnv,WDISPLAY,"       EB: ");         PrintExpression(theEnv,WDISPLAY,traceNode->externalRightHash);         EnvPrintRouter(theEnv,WDISPLAY,"\n");        }                       if (traceNode->externalLeftHash != NULL)        {          EnvPrintRouter(theEnv,WDISPLAY,"       EH: ");         PrintExpression(theEnv,WDISPLAY,traceNode->externalLeftHash);         EnvPrintRouter(theEnv,WDISPLAY,"\n");        }                     if (traceNode->leftHash != NULL)        {          EnvPrintRouter(theEnv,WDISPLAY,"       LH: ");         PrintExpression(theEnv,WDISPLAY,traceNode->leftHash);         EnvPrintRouter(theEnv,WDISPLAY,"\n");        }                       if (traceNode->rightHash != NULL)        {          EnvPrintRouter(theEnv,WDISPLAY,"       RH: ");         PrintExpression(theEnv,WDISPLAY,traceNode->rightHash);         EnvPrintRouter(theEnv,WDISPLAY,"\n");        }                       if (traceNode->betaHash != NULL)        {          EnvPrintRouter(theEnv,WDISPLAY,"       BH: ");         PrintExpression(theEnv,WDISPLAY,traceNode->betaHash);         EnvPrintRouter(theEnv,WDISPLAY,"\n");        }     }  }#endif#endif /* (! RUN_TIME) && (! BLOAD_ONLY) */#endif /* DEFRULE_CONSTRUCT */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
青青草视频一区| 日韩中文字幕91| 水蜜桃久久夜色精品一区的特点| 三级一区在线视频先锋 | 成人免费高清视频| 欧美在线综合视频| 国产精品免费看片| 七七婷婷婷婷精品国产| 91小视频免费观看| 国产丝袜在线精品| 久久国产福利国产秒拍| 欧美日韩国产一二三| 国产精品国产自产拍高清av| 久久精品av麻豆的观看方式| 欧美日韩成人综合| 亚洲综合久久久久| 91亚洲国产成人精品一区二区三| 精品国产91洋老外米糕| 亚洲一区二区三区四区在线免费观看| 欧美一级欧美三级| 国产成人精品网址| 日韩高清不卡在线| 亚洲欧洲精品天堂一级| 欧美一区二区三区电影| 成人三级伦理片| 欧美性一二三区| 亚洲国产欧美日韩另类综合| 日韩av一二三| 91精品久久久久久久91蜜桃| 亚洲第一在线综合网站| 在线观看免费一区| 一区二区三区精密机械公司| 欧美影院精品一区| 亚洲国产色一区| 欧美日韩黄色影视| 免费xxxx性欧美18vr| 日韩一级片在线观看| 日韩avvvv在线播放| 日韩欧美一区在线观看| 精品一区在线看| 久久久国产精品麻豆| 国产一区二区导航在线播放| 26uuu精品一区二区三区四区在线| 精品中文字幕一区二区| 久久精品欧美一区二区三区不卡 | 国产精品理论片| 不卡av在线免费观看| 亚洲男人的天堂在线观看| 91影视在线播放| 亚洲成人在线观看视频| 欧美一区二区三区四区高清 | 97久久超碰国产精品| 国产精品另类一区| 色哟哟在线观看一区二区三区| 亚洲国产你懂的| 宅男在线国产精品| 国产成人免费在线观看| 一片黄亚洲嫩模| 日韩免费电影一区| 成人动漫在线一区| 婷婷久久综合九色综合绿巨人 | 日本国产一区二区| 青青草97国产精品免费观看无弹窗版| 精品sm捆绑视频| av电影在线观看完整版一区二区| 亚洲欧美一区二区三区久本道91| 777奇米四色成人影色区| 国产精品一区二区视频| 一区二区三区精品| 久久久精品天堂| 欧美特级限制片免费在线观看| 久久国产精品露脸对白| 国产精品久久久久久久久图文区| 欧美视频在线一区| 国产成人精品免费| 日韩av中文字幕一区二区三区| 国产婷婷精品av在线| 欧美日韩一区二区三区高清| 国产麻豆午夜三级精品| 午夜成人免费电影| 综合精品久久久| 久久久国产午夜精品| 7777精品伊人久久久大香线蕉的| 国产风韵犹存在线视精品| 亚洲成人久久影院| 国产精品福利在线播放| 欧美mv日韩mv国产网站| 欧美三级在线看| 99re在线视频这里只有精品| 国产精品亚洲第一区在线暖暖韩国| 亚洲综合视频网| 中文字幕亚洲欧美在线不卡| 欧美精品一区二区三区久久久| 91精品午夜视频| 欧美在线你懂得| 91欧美激情一区二区三区成人| 国产一区高清在线| 免费观看91视频大全| 午夜一区二区三区在线观看| 亚洲四区在线观看| 国产欧美1区2区3区| 精品国产乱码久久久久久浪潮| 欧美狂野另类xxxxoooo| 91久久精品日日躁夜夜躁欧美| 成人免费av资源| 国产精品伊人色| 国产精品白丝av| 国产精品一区二区久久不卡| 麻豆国产欧美日韩综合精品二区| 日本不卡在线视频| 日韩激情在线观看| 日韩中文字幕91| 日韩高清欧美激情| 蜜臀av一区二区在线观看 | 亚洲国产综合在线| 亚洲精品国产a| 亚洲精品日产精品乱码不卡| 成人免费在线观看入口| 中文字幕一区视频| 亚洲欧美区自拍先锋| 日韩理论片在线| 亚洲一区二区三区在线看| 一区二区三区日本| 亚洲午夜久久久久久久久久久 | www.一区二区| 91影视在线播放| 欧美视频在线播放| 91精品国产综合久久久蜜臀粉嫩| 717成人午夜免费福利电影| 欧美男生操女生| 久久中文娱乐网| 国产精品久久久久久久久免费樱桃| 国产精品久久久久四虎| 一区二区三区精品| 麻豆精品视频在线观看视频| 国产福利一区二区三区在线视频| 成人激情校园春色| 色婷婷综合激情| 欧美一级高清大全免费观看| 亚洲精品在线电影| 中文字幕一区二区三区在线不卡 | 亚洲人妖av一区二区| 亚洲一区二区三区美女| 美女尤物国产一区| 成人av动漫在线| 欧美日韩国产综合视频在线观看| 日韩欧美美女一区二区三区| 国产嫩草影院久久久久| 亚洲福利国产精品| 福利视频网站一区二区三区| 欧美亚洲国产bt| 精品1区2区在线观看| 综合久久久久综合| 久久综合综合久久综合| 国产成人鲁色资源国产91色综| 91黄色激情网站| 2欧美一区二区三区在线观看视频| 成人欧美一区二区三区视频网页| 日本欧美大码aⅴ在线播放| 波多野结衣一区二区三区 | 欧美一级理论片| 国产精品久久久久久久第一福利| 日韩影院精彩在线| caoporn国产一区二区| 日韩午夜激情视频| 亚洲同性gay激情无套| 国精品**一区二区三区在线蜜桃| 色婷婷精品大在线视频 | a级精品国产片在线观看| 欧美人与性动xxxx| 国产精品高潮呻吟| 国产一区二区免费看| 91精品国产高清一区二区三区| 亚洲欧洲一区二区三区| 精品影视av免费| 在线不卡的av| 亚洲美女精品一区| 国产精品一区二区久久不卡| 91精品国产全国免费观看| 中文字幕一区二区在线观看| 国产精品 欧美精品| 91精品国产综合久久久久久| 亚洲一区免费在线观看| 9久草视频在线视频精品| 久久综合久久鬼色中文字| 婷婷综合另类小说色区| 欧美日韩在线直播| 亚洲天堂免费看| 成人国产一区二区三区精品| 久久久久久久精| 国产精品正在播放| 国产亚洲美州欧州综合国| 久久99久久99| 精品入口麻豆88视频| 蜜臀av亚洲一区中文字幕| 欧美一区二区美女| 久久精品国产久精国产| 日韩女同互慰一区二区| 韩国欧美国产1区| 2欧美一区二区三区在线观看视频|