亚洲欧美第一页_禁久久精品乱码_粉嫩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视频在线观看| 亚洲欧洲成人精品av97| 99国产精品久久久久久久久久| 国产精品久久三| 97久久久精品综合88久久| 亚洲男同性视频| 欧美艳星brazzers| 日韩vs国产vs欧美| 日韩免费观看2025年上映的电影 | 久久久99久久| 成人午夜短视频| 亚洲自拍与偷拍| 91精品国产福利在线观看| 免费看黄色91| 国产色综合久久| 91亚洲男人天堂| 亚洲第一av色| 2023国产精华国产精品| 国产91丝袜在线播放| 亚洲另类一区二区| 在线播放欧美女士性生活| 久久99久久99精品免视看婷婷| 久久精品在线观看| 91丨国产丨九色丨pron| 美日韩黄色大片| 中文字幕中文字幕中文字幕亚洲无线| 99麻豆久久久国产精品免费优播| 亚洲观看高清完整版在线观看| 欧美一区二区三区思思人| 风流少妇一区二区| 亚洲国产三级在线| 久久久久国产精品麻豆| 欧美在线你懂的| 韩国精品主播一区二区在线观看 | 欧美大片拔萝卜| 99久久久国产精品| 日本欧美肥老太交大片| 日韩一区在线免费观看| 日韩视频不卡中文| 99精品桃花视频在线观看| 午夜免费久久看| 国产精品久久国产精麻豆99网站| 欧美老女人第四色| 成人免费看黄yyy456| 日韩综合小视频| 亚洲乱码国产乱码精品精可以看 | 精品国产三级电影在线观看| 91免费在线播放| 精品一区二区在线观看| 亚洲自拍偷拍av| 中文欧美字幕免费| 26uuu欧美| 欧美精品粉嫩高潮一区二区| 99国产精品久| 粉嫩欧美一区二区三区高清影视 | 精品久久免费看| 欧美三级视频在线观看| av不卡在线播放| 国产成人精品亚洲777人妖| 看电影不卡的网站| 日韩精品免费视频人成| 一区二区三区四区在线播放| 欧美国产一区二区在线观看| 久久久精品2019中文字幕之3| 7777精品伊人久久久大香线蕉超级流畅| av电影天堂一区二区在线观看| 国产一区二区中文字幕| 美女视频一区二区| 午夜免费久久看| 亚洲成年人网站在线观看| 亚洲精品日韩综合观看成人91| 国产精品国产三级国产aⅴ无密码| 久久先锋影音av| 精品国产三级a在线观看| 日韩网站在线看片你懂的| 欧美精品亚洲一区二区在线播放| 色国产精品一区在线观看| 成人性生交大片免费看在线播放 | 色综合久久88色综合天天| 成人综合在线视频| 国产一区二区三区视频在线播放| 日本成人在线电影网| 亚洲美女淫视频| 亚洲激情图片小说视频| 综合av第一页| 亚洲一区二区三区精品在线| 亚洲影院理伦片| 亚洲欧美色一区| 亚洲国产欧美日韩另类综合| 一区二区三区蜜桃| 五月天网站亚洲| 天堂在线亚洲视频| 一区二区高清免费观看影视大全 | 中文字幕一区二区三区精华液 | 日韩一级免费一区| 精品日韩一区二区| 精品少妇一区二区三区免费观看| 精品国产乱子伦一区| 日韩视频在线你懂得| 91麻豆精品国产无毒不卡在线观看| 制服丝袜亚洲播放| 精品电影一区二区三区| 国产精品美女一区二区三区 | 另类小说一区二区三区| 免费人成黄页网站在线一区二区| 亚洲成人av福利| 日本aⅴ免费视频一区二区三区| 麻豆精品久久精品色综合| 三级一区在线视频先锋| 蜜臀av国产精品久久久久| 午夜视频久久久久久| 青青草原综合久久大伊人精品优势| 另类小说图片综合网| 国产精品一区二区久激情瑜伽| 99精品视频免费在线观看| 91福利国产成人精品照片| 欧美又粗又大又爽| 日韩亚洲欧美在线| 久久精品人人做人人爽人人| 中文字幕一区二区三中文字幕| 国产欧美一区二区三区在线老狼 | 首页国产欧美久久| 免费观看日韩av| 91视频在线看| 91精品福利在线一区二区三区 | 国产成人免费在线观看| 欧亚一区二区三区| 久久这里只有精品视频网| 一区二区三区四区在线| 人人狠狠综合久久亚洲| 91蜜桃网址入口| 欧美酷刑日本凌虐凌虐| 国产精品美日韩| 日韩高清在线不卡| 91蜜桃网址入口| 精品国产一二三区| 日韩中文字幕一区二区三区| www.日韩av| 欧美岛国在线观看| 香港成人在线视频| 成人美女视频在线观看| 欧美成人精品二区三区99精品| 成人欧美一区二区三区视频网页| 九九国产精品视频| 色婷婷综合久久久久中文一区二区 | 99久久er热在这里只有精品66| 欧美日韩精品综合在线| 专区另类欧美日韩| 裸体在线国模精品偷拍| 欧美日韩国产在线观看| 国产日韩v精品一区二区| 激情久久五月天| 3d动漫精品啪啪一区二区竹菊| 成人欧美一区二区三区| 日韩av一区二区三区四区| 日本丶国产丶欧美色综合| 精品美女在线观看| 一区二区三区四区av| 色综合久久综合网欧美综合网| 久久久久久久久免费| 激情五月婷婷综合| 欧美日韩国产高清一区二区三区 | 日韩国产高清影视| 91色porny在线视频| 一区二区中文字幕在线| 国产美女精品一区二区三区| 久久综合一区二区| 午夜精品免费在线| 欧美日韩亚洲综合在线 | 亚洲男人天堂av网| 日韩一级高清毛片| 亚洲福利视频导航| 欧美日韩久久一区| 亚洲视频中文字幕| 成人v精品蜜桃久久一区| 国产精品久久久久久福利一牛影视 | 在线成人小视频| 亚洲成人1区2区| 欧美中文字幕一二三区视频| 中文字幕一区二区三区四区不卡| 国产精品白丝av| 国产精品久久久久一区二区三区 | 中文字幕一区二区三区在线播放 | 视频一区欧美精品| 国产91丝袜在线播放0| 中文在线免费一区三区高中清不卡| 成人一区二区三区视频| 日本一区二区三级电影在线观看 | 国产一区二区三区久久悠悠色av| 欧美精品一区二区三区久久久| 久久综合综合久久综合| 26uuu国产日韩综合| 国产成人精品一区二区三区四区| 中国色在线观看另类| 国产成人av电影在线播放| 国产精品看片你懂得| 欧美性感一类影片在线播放| 亚洲国产精品人人做人人爽|