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

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

?? generate.c

?? clips源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
   /*******************************************************/   /*      "C" Language Integrated Production System      */   /*                                                     */   /*             CLIPS Version 6.30  10/19/06            */   /*                                                     */   /*                   GENERATE MODULE                   */   /*******************************************************//*************************************************************//* Purpose: Provides routines for converting field           *//*   constraints to expressions which can be used            *//*   in the pattern and join networks.                       *//*                                                           *//* Principal Programmer(s):                                  *//*      Gary D. Riley                                        *//*                                                           *//* Contributing Programmer(s):                               *//*                                                           *//* Revision History:                                         *//*                                                           *//*      6.30: Added support for hashed alpha memories.       *//*                                                           *//*************************************************************/#define _GENERATE_SOURCE_#include <stdio.h>#define _STDIO_INCLUDED_#include <stdlib.h>#include "setup.h"#if (! RUN_TIME) && (! BLOAD_ONLY) && DEFRULE_CONSTRUCT#include "constant.h"#include "envrnmnt.h"#include "memalloc.h"#include "symbol.h"#include "exprnpsr.h"#include "argacces.h"#include "extnfunc.h"#include "router.h"#include "ruledef.h"#include "pattern.h"#include "generate.h"#if DEFGLOBAL_CONSTRUCT#include "globlpsr.h"#endif/***************************************//* LOCAL INTERNAL FUNCTION DEFINITIONS *//***************************************/   static void                    ExtractAnds(void *,struct lhsParseNode *,int,                                              struct expr **,struct expr **,struct expr **,                                              struct expr **,struct expr **,int);   static void                    ExtractFieldTest(void *,struct lhsParseNode *,int,                                                   struct expr **,struct expr **,struct expr **,                                                   struct expr **,struct expr **,int);   static struct expr            *GetfieldReplace(void *,struct lhsParseNode *);   static struct expr            *GenPNConstant(void *,struct lhsParseNode *);   static struct expr            *GenJNConstant(void *,struct lhsParseNode *,int);   static struct expr            *GenJNColon(void *,struct lhsParseNode *,int);   static struct expr            *GenPNColon(void *,struct lhsParseNode *);   static struct expr            *GenJNEq(void *,struct lhsParseNode *,int);   static struct expr            *GenPNEq(void *,struct lhsParseNode *);   static struct expr            *GenJNVariableComparison(void *,struct lhsParseNode *,                                                          struct lhsParseNode *,int);   static struct expr            *GenPNVariableComparison(void *,struct lhsParseNode *,                                                          struct lhsParseNode *);   static int                     AllVariablesInPattern(struct lhsParseNode *,                                                        int);   static int                     AllVariablesInExpression(struct lhsParseNode *,                                                           int);   static int                     FieldIsNandTest(struct lhsParseNode *);   /*******************************************************//* FieldConversion: Generates join and pattern network *//*   expressions for a field constraint.               *//*******************************************************/globle void FieldConversion(  void *theEnv,  struct lhsParseNode *theField,  struct lhsParseNode *thePattern)  {   int testInPatternNetwork = TRUE;   struct lhsParseNode *patternPtr;   struct expr *headOfPNExpression, *headOfJNExpression, *headOfNandExpression;   struct expr *lastPNExpression, *lastJNExpression, *lastNandExpression;   struct expr *tempExpression;   struct expr *patternNetTest = NULL;   struct expr *joinNetTest = NULL;   struct expr *nandTest = NULL;   struct expr *constantSelector = NULL;   struct expr *constantValue = NULL;   int nandField;   /*==================================================*/   /* Consider a NULL pointer to be an internal error. */   /*==================================================*/   if (theField == NULL)     {      SystemError(theEnv,"ANALYSIS",3);      EnvExitRouter(theEnv,EXIT_FAILURE);     }   /*========================================================*/   /* Determine if constant testing must be performed in the */   /* join network. Only possible when a field contains an   */   /* or ('|') and references are made to variables outside  */   /* the pattern.                                           */   /*========================================================*/   if (theField->bottom != NULL)     {      if (theField->bottom->bottom != NULL)        { testInPatternNetwork = AllVariablesInPattern(theField->bottom,theField->pattern); }     }   /*=========================================================*/   /* Determine if any of the field tests require the network */   /* expression to be evaluted in the nand join.             */   /*=========================================================*/      nandField = FieldIsNandTest(theField);   /*=============================================================*/   /* Extract pattern and join network expressions. Loop through  */   /* the or'ed constraints of the field, extracting pattern and  */   /* join network expressions and adding them to a running list. */   /*=============================================================*/   headOfPNExpression = lastPNExpression = NULL;   headOfJNExpression = lastJNExpression = NULL;   headOfNandExpression = lastNandExpression = NULL;   for (patternPtr = theField->bottom;        patternPtr != NULL;        patternPtr = patternPtr->bottom)     {      /*=============================================*/      /* Extract pattern and join network tests from */      /* the or'ed constraint being examined.        */      /*=============================================*/      ExtractAnds(theEnv,patternPtr,testInPatternNetwork,&patternNetTest,&joinNetTest,&nandTest,                  &constantSelector,&constantValue,nandField);      /*=============================================================*/      /* Constant hashing is only used in the pattern network if the */      /* field doesn't contain an or'ed constraint. For example, the */      /* constaint "red | blue" can not use hashing.                 */      /*=============================================================*/            if (constantSelector != NULL)        {         if ((patternPtr == theField->bottom) &&             (patternPtr->bottom == NULL))           {            theField->constantSelector = constantSelector;            theField->constantValue = constantValue;           }         else           {            ReturnExpression(theEnv,constantSelector);            ReturnExpression(theEnv,constantValue);            ReturnExpression(theEnv,theField->constantSelector);            ReturnExpression(theEnv,theField->constantValue);            theField->constantSelector = NULL;            theField->constantValue = NULL;           }        }              /*=====================================================*/      /* Add the new pattern network expressions to the list */      /* of pattern network expressions being constructed.   */      /*=====================================================*/      if (patternNetTest != NULL)        {         if (lastPNExpression == NULL)           { headOfPNExpression = patternNetTest; }         else           { lastPNExpression->nextArg = patternNetTest; }         lastPNExpression = patternNetTest;        }      /*==================================================*/      /* Add the new join network expressions to the list */      /* of join network expressions being constructed.   */      /*==================================================*/      if (joinNetTest != NULL)        {         if (lastJNExpression == NULL)           { headOfJNExpression = joinNetTest; }         else           { lastJNExpression->nextArg = joinNetTest; }         lastJNExpression = joinNetTest;        }      /*=======================================================*/      /* Add the new nand join network expressions to the list */      /* of nand join network expressions being constructed.   */      /*=======================================================*/      if (nandTest != NULL)        {         if (lastNandExpression == NULL)           { headOfNandExpression = nandTest; }         else           { lastNandExpression->nextArg = nandTest; }         lastNandExpression = nandTest;        }     }   /*==========================================================*/   /* If there was more than one expression generated from the */   /* or'ed field constraints for the pattern network, then    */   /* enclose the expressions within an "or" function call.    */   /*==========================================================*/   if ((headOfPNExpression != NULL) ? (headOfPNExpression->nextArg != NULL) : FALSE)     {      tempExpression = GenConstant(theEnv,FCALL,ExpressionData(theEnv)->PTR_OR);      tempExpression->argList = headOfPNExpression;      headOfPNExpression = tempExpression;     }   /*==========================================================*/   /* If there was more than one expression generated from the */   /* or'ed field constraints for the join network, then       */   /* enclose the expressions within an "or" function call.    */   /*==========================================================*/   if ((headOfJNExpression != NULL) ? (headOfJNExpression->nextArg != NULL) : FALSE)     {      tempExpression = GenConstant(theEnv,FCALL,ExpressionData(theEnv)->PTR_OR);      tempExpression->argList = headOfJNExpression;      headOfJNExpression = tempExpression;     }   /*==========================================================*/   /* If there was more than one expression generated from the */   /* or'ed field constraints for the nand join network, then  */   /* enclose the expressions within an "or" function call.    */   /*==========================================================*/   if ((headOfNandExpression != NULL) ? (headOfNandExpression->nextArg != NULL) : FALSE)     {      tempExpression = GenConstant(theEnv,FCALL,ExpressionData(theEnv)->PTR_OR);      tempExpression->argList = headOfNandExpression;      headOfNandExpression = tempExpression;     }        /*===============================================================*/   /* If the field constraint binds a variable that was previously  */   /* bound somewhere in the LHS of the rule, then generate an      */   /* expression to compare this binding occurrence of the variable */   /* to the previous binding occurrence.                           */   /*===============================================================*/   if (((theField->type == MF_VARIABLE) || (theField->type == SF_VARIABLE)) &&       (theField->referringNode != NULL))     {      /*================================================================*/      /* If the previous variable reference is within the same pattern, */      /* then the variable comparison can occur in the pattern network. */      /*================================================================*/      if (theField->referringNode->pattern == theField->pattern)        {         tempExpression = GenPNVariableComparison(theEnv,theField,theField->referringNode);         headOfPNExpression = CombineExpressions(theEnv,tempExpression,headOfPNExpression);        }      /*====================================*/      /* Otherwise, the variable comparison */      /* must occur in the join network.    */      /*====================================*/      else if (theField->referringNode->pattern > 0)        {         tempExpression = GenJNVariableComparison(theEnv,theField,theField->referringNode,nandField);                  if (theField->beginNandDepth > theField->referringNode->beginNandDepth)           {             headOfNandExpression = CombineExpressions(theEnv,tempExpression,headOfNandExpression);             /*==========================*/            /* Generate the hash index. */            /*==========================*/            if (theField->patternType->genGetJNValueFunction)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区不卡在线| 粉嫩一区二区三区在线看| 免费成人av在线播放| 99视频超级精品| 欧美日韩三级在线| 欧美国产精品一区二区| 欧美aaa在线| 色网综合在线观看| 欧美高清你懂得| 中文字幕乱码日本亚洲一区二区 | 日韩一区二区精品葵司在线| xf在线a精品一区二区视频网站| 中文字幕日本不卡| 国产成人在线视频免费播放| 欧美三级午夜理伦三级中视频| 精品久久久久久久久久久久久久久久久| 中文字幕在线不卡| 紧缚奴在线一区二区三区| 精品视频免费看| 亚洲特黄一级片| 麻豆精品精品国产自在97香蕉| 91日韩精品一区| 欧美极品美女视频| 欧美视频一区二区三区四区| 久久久国产精品麻豆| 中文字幕一区二区三区在线不卡 | 午夜精品久久久久久久久| proumb性欧美在线观看| 国产片一区二区| 日本aⅴ免费视频一区二区三区| 欧美日韩一区成人| 一区二区三区日韩| 成人97人人超碰人人99| 中文字幕av不卡| 国产一二精品视频| 日本精品一区二区三区四区的功能| 中文在线资源观看网站视频免费不卡| 蜜臀av性久久久久蜜臀aⅴ | 久久国产尿小便嘘嘘尿| 欧美日韩中文另类| 午夜精品123| 欧美日韩专区在线| 2021国产精品久久精品| 国产乱理伦片在线观看夜一区| 日韩一区二区免费在线电影| 久久99热狠狠色一区二区| 欧美一区二区成人6969| 免费黄网站欧美| 久久综合色天天久久综合图片| 久久99国内精品| 国产日韩视频一区二区三区| 国产成人鲁色资源国产91色综| 精品久久久久久久久久久久久久久久久 | 久久美女艺术照精彩视频福利播放| 免费av成人在线| 久久精品水蜜桃av综合天堂| 精品一区二区免费| 中文字幕一区二区在线观看| 欧美日韩高清一区二区三区| 日韩国产精品久久久久久亚洲| wwww国产精品欧美| av在线不卡免费看| 国产精品欧美久久久久一区二区 | 国产精品网曝门| 国产成人精品网址| 亚洲在线中文字幕| 精品日韩欧美在线| 91社区在线播放| 男人的天堂久久精品| 欧美三级电影在线观看| 国产一区二区久久| 亚洲欧美另类综合偷拍| 日韩欧美资源站| 高清日韩电视剧大全免费| 亚洲欧美视频一区| 国产日韩影视精品| 欧美色视频在线观看| 国产精品一级黄| 一区二区三区波多野结衣在线观看 | 日韩不卡一区二区| 中文字幕一区二区日韩精品绯色| 91免费在线看| 国产盗摄女厕一区二区三区| 亚洲男人的天堂av| 欧美va亚洲va| 欧美日本国产视频| 懂色av一区二区在线播放| 夜夜嗨av一区二区三区| 精品久久久久久久一区二区蜜臀| 91亚洲国产成人精品一区二三| 欧美aⅴ一区二区三区视频| 国产欧美日本一区二区三区| 欧美日韩专区在线| 成人丝袜视频网| 精品一区二区综合| 一区二区三区av电影| 中文字幕巨乱亚洲| 日韩美一区二区三区| 91麻豆国产在线观看| 极品少妇一区二区| 亚洲成av人片一区二区| 国产清纯白嫩初高生在线观看91| 3atv一区二区三区| 色综合久久久久综合体桃花网| 精品制服美女丁香| 日韩av一区二区三区四区| 综合激情网...| 久久精品一区二区三区av| 欧美大片在线观看| 欧美精品在线观看播放| 99久久精品99国产精品 | 一区二区成人在线| 亚洲免费成人av| 中文字幕+乱码+中文字幕一区| 国产亚洲欧美色| 欧美成人三级电影在线| 色播五月激情综合网| 欧美在线综合视频| 久久综合色之久久综合| 久久久久久久久久久久久久久99| 正在播放亚洲一区| 日韩免费观看2025年上映的电影| 9191成人精品久久| 91蝌蚪国产九色| 欧美亚洲尤物久久| 欧洲中文字幕精品| 欧美日韩精品福利| 9191精品国产综合久久久久久 | 在线视频观看一区| 欧美嫩在线观看| 91精品国产综合久久久久久久 | 欧美精品自拍偷拍动漫精品| 欧美亚洲国产一区在线观看网站| 欧美日韩国产片| 91精品国产综合久久精品图片 | 国产精华液一区二区三区| 国产激情精品久久久第一区二区 | 亚洲与欧洲av电影| 日韩精品福利网| 日韩精品一级二级| 国产精品88888| 不卡免费追剧大全电视剧网站| 成人爽a毛片一区二区免费| 日本久久一区二区| 欧美年轻男男videosbes| 日韩欧美国产午夜精品| 欧美日韩黄色影视| 精品久久国产字幕高潮| 精品久久久久久久人人人人传媒 | 麻豆精品在线视频| 亚洲高清视频在线| 久久99精品国产麻豆婷婷洗澡| 国产一区二区免费在线| 99精品一区二区| 日本高清不卡一区| 69堂精品视频| 国产精品私房写真福利视频| 亚洲午夜久久久| 开心九九激情九九欧美日韩精美视频电影| 国产激情91久久精品导航| 在线观看91视频| 337p粉嫩大胆噜噜噜噜噜91av | 午夜激情一区二区| 免费成人在线播放| 色综合久久久网| 久久综合资源网| 天堂资源在线中文精品| 国产不卡视频一区二区三区| 欧美日韩一区二区在线观看| 日韩一区二区三区电影在线观看 | 国产三级欧美三级| 亚洲bdsm女犯bdsm网站| 国产精品一品二品| 日韩精品一区二区三区视频| 亚洲图片激情小说| 激情久久五月天| 99国产欧美久久久精品| 欧美探花视频资源| 国产精品热久久久久夜色精品三区| 亚洲高清不卡在线观看| 国产美女一区二区| 欧美日韩1234| 一区二区三区不卡在线观看 | 亚洲美女在线一区| 成人免费视频播放| 2017欧美狠狠色| 国内精品久久久久影院色| 欧美无砖砖区免费| 亚洲午夜久久久久| 91麻豆免费看| 亚洲另类中文字| 成人精品高清在线| 中文字幕电影一区| 国产一二精品视频| 欧美一级淫片007| 久久精品二区亚洲w码| 在线精品观看国产| 亚洲va欧美va人人爽| 欧美最新大片在线看| 亚洲综合清纯丝袜自拍|