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

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

?? objrtbld.c

?? clips源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
   /*******************************************************/   /*      "C" Language Integrated Production System      */   /*                                                     */   /*               CLIPS Version 6.30  10/19/06          */   /*                                                     */   /*          OBJECT PATTERN MATCHER MODULE              */   /*******************************************************//**************************************************************//* Purpose: RETE Network Parsing Interface for Objects        *//*                                                            *//* Principal Programmer(s):                                   *//*      Brian L. Donnell                                      *//*                                                            *//* Contributing Programmer(s):                                *//*                                                            *//* Revision History:                                          *//*                                                            *//*      6.24: Removed INCREMENTAL_RESET compilation flag.     *//*                                                            *//*            Converted INSTANCE_PATTERN_MATCHING to          *//*            DEFRULE_CONSTRUCT.                              *//*                                                            *//*            Renamed BOOLEAN macro type to intBool.          *//*                                                            *//*      6.30: Added support for hashed alpha memories.        *//*                                                            *//**************************************************************//* =========================================   *****************************************               EXTERNAL DEFINITIONS   =========================================   ***************************************** */#include "setup.h"#if DEFRULE_CONSTRUCT && OBJECT_SYSTEM#if (! BLOAD_ONLY) && (! RUN_TIME)#include <string.h>#include <stdlib.h>#include "classcom.h"#include "classfun.h"#include "cstrnutl.h"#include "constrnt.h"#include "cstrnchk.h"#include "cstrnops.h"#include "drive.h"#include "envrnmnt.h"#include "exprnpsr.h"#include "inscom.h"#include "insfun.h"#include "insmngr.h"#include "memalloc.h"#include "network.h"#include "object.h"#include "pattern.h"#include "reteutil.h"#include "ruledef.h"#include "rulepsr.h"#include "scanner.h"#include "symbol.h"#include "utility.h"#endif#include "constrct.h"#include "objrtmch.h"#include "objrtgen.h"#include "objrtfnx.h"#include "reorder.h"#include "router.h"#if CONSTRUCT_COMPILER && (! RUN_TIME)#include "objrtcmp.h"#endif#if BLOAD_AND_BSAVE || BLOAD || BLOAD_ONLY#include "objrtbin.h"#endif#define _OBJRTBLD_SOURCE_#include "objrtbld.h"#if ! DEFINSTANCES_CONSTRUCT#include "extnfunc.h"#include "classfun.h"#include "classcom.h"#endif#if (! BLOAD_ONLY) && (! RUN_TIME)/* =========================================   *****************************************                   CONSTANTS   =========================================   ***************************************** */#define OBJECT_PATTERN_INDICATOR "object"/* =========================================   *****************************************      INTERNALLY VISIBLE FUNCTION HEADERS   =========================================   ***************************************** */static intBool PatternParserFind(SYMBOL_HN *);static struct lhsParseNode *ObjectLHSParse(void *,char *,struct token *);static intBool ReorderAndAnalyzeObjectPattern(void *,struct lhsParseNode *);static struct patternNodeHeader *PlaceObjectPattern(void *,struct lhsParseNode *);static OBJECT_PATTERN_NODE *FindObjectPatternNode(OBJECT_PATTERN_NODE *,struct lhsParseNode *,                                                  OBJECT_PATTERN_NODE **,unsigned,unsigned);static OBJECT_PATTERN_NODE *CreateNewObjectPatternNode(void *,struct lhsParseNode *,OBJECT_PATTERN_NODE *,                                                       OBJECT_PATTERN_NODE *,unsigned,unsigned);static void DetachObjectPattern(void *,struct patternNodeHeader *);static void ClearObjectPatternMatches(void *,OBJECT_ALPHA_NODE *);static void RemoveObjectPartialMatches(void *,INSTANCE_TYPE *,struct patternNodeHeader *);static intBool CheckDuplicateSlots(void *,struct lhsParseNode *,SYMBOL_HN *);static struct lhsParseNode *ParseClassRestriction(void *,char *,struct token *);static struct lhsParseNode *ParseNameRestriction(void *,char *,struct token *);static struct lhsParseNode *ParseSlotRestriction(void *,char *,struct token *,CONSTRAINT_RECORD *,int);static CLASS_BITMAP *NewClassBitMap(void *,int,int);static void InitializeClassBitMap(void *,CLASS_BITMAP *,int);static void DeleteIntermediateClassBitMap(void *,CLASS_BITMAP *);static void *CopyClassBitMap(void *,void *);static void DeleteClassBitMap(void *,void *);static void MarkBitMapClassesBusy(void *,BITMAP_HN *,int);static intBool EmptyClassBitMap(CLASS_BITMAP *);static intBool IdenticalClassBitMap(CLASS_BITMAP *,CLASS_BITMAP *);static intBool ProcessClassRestriction(void *,CLASS_BITMAP *,struct lhsParseNode **,int);static CONSTRAINT_RECORD *ProcessSlotRestriction(void *,CLASS_BITMAP *,SYMBOL_HN *,int *);static void IntersectClassBitMaps(CLASS_BITMAP *,CLASS_BITMAP *);static void UnionClassBitMaps(CLASS_BITMAP *,CLASS_BITMAP *);static CLASS_BITMAP *PackClassBitMap(void *,CLASS_BITMAP *);static struct lhsParseNode *FilterObjectPattern(void *,struct patternParser *,                                              struct lhsParseNode *,struct lhsParseNode **,                                              struct lhsParseNode **,struct lhsParseNode **);static BITMAP_HN *FormSlotBitMap(void *,struct lhsParseNode *);static struct lhsParseNode *RemoveSlotExistenceTests(void *,struct lhsParseNode *,BITMAP_HN **);static struct lhsParseNode *CreateInitialObjectPattern(void *);static EXPRESSION *ObjectMatchDelayParse(void *,EXPRESSION *,char *);static void MarkObjectPtnIncrementalReset(void *,struct patternNodeHeader *,int);static void ObjectIncrementalReset(void *);#endif#if ! DEFINSTANCES_CONSTRUCTstatic void ResetInitialObject(void *);#endif/* =========================================   *****************************************          EXTERNALLY VISIBLE FUNCTIONS   =========================================   ***************************************** *//********************************************************  NAME         : SetupObjectPatternStuff  DESCRIPTION  : Installs the parsers and other items                 necessary for recognizing and processing                 object patterns in defrules  INPUTS       : None  RETURNS      : Nothing useful  SIDE EFFECTS : Rete network interfaces for objects                 initialized  NOTES        : None ********************************************************/globle void SetupObjectPatternStuff(  void *theEnv)  {#if (! BLOAD_ONLY) && (! RUN_TIME)   struct patternParser *newPtr;   if (ReservedPatternSymbol(theEnv,"object",NULL) == TRUE)     {      SystemError(theEnv,"OBJRTBLD",1);      EnvExitRouter(theEnv,EXIT_FAILURE);     }   AddReservedPatternSymbol(theEnv,"object",NULL);   /* ===========================================================================      The object pattern parser needs to have a higher priority than deftemplates      or regular facts so that the "object" keyword is always recognized first      =========================================================================== */   newPtr = get_struct(theEnv,patternParser);      newPtr->name = "objects";   newPtr->priority = 20;   newPtr->entityType = &InstanceData(theEnv)->InstanceInfo;   newPtr->recognizeFunction = PatternParserFind;   newPtr->parseFunction = ObjectLHSParse;   newPtr->postAnalysisFunction = ReorderAndAnalyzeObjectPattern;   newPtr->addPatternFunction = PlaceObjectPattern;      newPtr->removePatternFunction = DetachObjectPattern;   newPtr->genJNConstantFunction = NULL;   newPtr->replaceGetJNValueFunction = ReplaceGetJNObjectValue;   newPtr->genGetJNValueFunction = GenGetJNObjectValue;   newPtr->genCompareJNValuesFunction = ObjectJNVariableComparison;   newPtr->genPNConstantFunction = GenObjectPNConstantCompare;   newPtr->replaceGetPNValueFunction = ReplaceGetPNObjectValue;   newPtr->genGetPNValueFunction = GenGetPNObjectValue;   newPtr->genComparePNValuesFunction = ObjectPNVariableComparison;   newPtr->returnUserDataFunction = DeleteClassBitMap;   newPtr->copyUserDataFunction = CopyClassBitMap;   newPtr->markIRPatternFunction = MarkObjectPtnIncrementalReset;   newPtr->incrementalResetFunction = ObjectIncrementalReset;   newPtr->initialPatternFunction = CreateInitialObjectPattern;#if CONSTRUCT_COMPILER && (! RUN_TIME)   newPtr->codeReferenceFunction = ObjectPatternNodeReference;#else   newPtr->codeReferenceFunction = NULL;#endif   AddPatternParser(theEnv,newPtr);      EnvDefineFunction2(theEnv,"object-pattern-match-delay",'u',                   PTIEF ObjectMatchDelay,"ObjectMatchDelay",NULL);   AddFunctionParser(theEnv,"object-pattern-match-delay",ObjectMatchDelayParse);   FuncSeqOvlFlags(theEnv,"object-pattern-match-delay",FALSE,FALSE);#endif   InstallObjectPrimitives(theEnv);#if CONSTRUCT_COMPILER && (! RUN_TIME)   ObjectPatternsCompilerSetup(theEnv);#endif#if ! DEFINSTANCES_CONSTRUCT   EnvAddResetFunction(theEnv,"reset-initial-object",ResetInitialObject,0);#endif#if BLOAD_AND_BSAVE || BLOAD || BLOAD_ONLY   SetupObjectPatternsBload(theEnv);#endif  }/* =========================================   *****************************************          INTERNALLY VISIBLE FUNCTIONS   =========================================   ***************************************** */#if ! DEFINSTANCES_CONSTRUCTstatic void ResetInitialObject(  void *theEnv)  {   EXPRESSION *tmp;   DATA_OBJECT rtn;   tmp = GenConstant(theEnv,FCALL,(void *) FindFunction(theEnv,"make-instance"));   tmp->argList = GenConstant(theEnv,INSTANCE_NAME,(void *) DefclassData(theEnv)->INITIAL_OBJECT_SYMBOL);   tmp->argList->nextArg =       GenConstant(theEnv,DEFCLASS_PTR,(void *) LookupDefclassInScope(theEnv,INITIAL_OBJECT_CLASS_NAME));   EvaluateExpression(theEnv,tmp,&rtn);   ReturnExpression(theEnv,tmp);  }#endif#if (! BLOAD_ONLY) && (! RUN_TIME)/*****************************************************  NAME         : PatternParserFind  DESCRIPTION  : Determines if a pattern CE is an                 object pattern (i.e. the first field                 is the constant symbol "object")  INPUTS       : 1) The type of the first field                 2) The value of the first field  RETURNS      : TRUE if it is an object pattern,                 FALSE otherwise  SIDE EFFECTS : None  NOTES        : Used by AddPatternParser() *****************************************************/static intBool PatternParserFind(  SYMBOL_HN *value)  {   if (strcmp(ValueToString(value),OBJECT_PATTERN_INDICATOR) == 0)     return(TRUE);   return(FALSE);  }/************************************************************************************  NAME         : ObjectLHSParse  DESCRIPTION  : Scans and parses an object pattern for a rule  INPUTS       : 1) The logical name of the input source                 2) A buffer holding the last token read  RETURNS      : The address of struct lhsParseNodes, NULL on errors  SIDE EFFECTS : A series of struct lhsParseNodes are created to represent                 the intermediate parse of the pattern                 Pretty-print form for the pattern is saved  NOTES        : Object Pattern Syntax:                 (object [<class-constraint>] [<name-constraint>] <slot-constraint>*)                 <class-constraint> ::= (is-a <constraint>)                 <name-constraint> ::= (name <constraint>)                 <slot-constraint> ::= (<slot-name> <constraint>*) ************************************************************************************/#if IBM_TBC#pragma argsused#endifstatic struct lhsParseNode *ObjectLHSParse(  void *theEnv,  char *readSource,  struct token *lastToken)  {#if MAC_MCW || IBM_MCW || MAC_XCD#pragma unused(lastToken)#endif   struct token theToken;   struct lhsParseNode *firstNode = NULL,*lastNode = NULL,*tmpNode;   CLASS_BITMAP *clsset,*tmpset;   CONSTRAINT_RECORD *slotConstraints;   int ppbackupReqd = FALSE,multip;   /* ========================================================      Get a bitmap big enough to mark the ids of all currently      existing classes - and set all bits, since the initial      set of applicable classes is everything.      ======================================================== */   clsset = NewClassBitMap(theEnv,((int) DefclassData(theEnv)->MaxClassID) - 1,1);   if (EmptyClassBitMap(clsset))     {      PrintErrorID(theEnv,"OBJRTBLD",1,FALSE);      EnvPrintRouter(theEnv,WERROR,"No objects of existing classes can satisfy pattern.\n");      DeleteIntermediateClassBitMap(theEnv,clsset);      return(NULL);     }   tmpset = NewClassBitMap(theEnv,((int) DefclassData(theEnv)->MaxClassID) - 1,1);   IncrementIndentDepth(theEnv,7);   /* ===========================================      Parse the class, name and slot restrictions      =========================================== */   GetToken(theEnv,readSource,&theToken);   while (theToken.type != RPAREN)     {      ppbackupReqd = TRUE;      PPBackup(theEnv);      SavePPBuffer(theEnv," ");      SavePPBuffer(theEnv,theToken.printForm);      if (theToken.type != LPAREN)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人国产精品免费网站| 欧美顶级少妇做爰| 中文字幕一区二区三区色视频 | 欧美亚洲国产怡红院影院| 精品999在线播放| 精品在线观看视频| 精品国产百合女同互慰| 国产精品夜夜爽| 国产视频一区二区在线观看| 高清日韩电视剧大全免费| 欧美国产精品专区| 91丨九色丨国产丨porny| 夜夜精品视频一区二区| 欧美一区二区三区小说| 精品一区二区日韩| 国产清纯白嫩初高生在线观看91| av在线不卡网| 五月婷婷激情综合网| 国产欧美综合在线观看第十页| 国产98色在线|日韩| 亚洲女厕所小便bbb| 日韩三级高清在线| 99精品热视频| 麻豆久久久久久久| 久久久美女毛片| 色一情一乱一乱一91av| 有坂深雪av一区二区精品| 欧美一级黄色大片| 欧美做爰猛烈大尺度电影无法无天| 久久精品国产亚洲a| 久久亚洲欧美国产精品乐播 | 国产精品乱码一区二区三区软件| 成人永久aaa| 青青草原综合久久大伊人精品优势| 欧美经典一区二区三区| 91精品国产综合久久精品app| 国产成人精品影院| 亚洲电影一区二区| 亚洲欧美日韩人成在线播放| 久久久亚洲午夜电影| 欧美一级搡bbbb搡bbbb| 欧美伦理影视网| 在线观看不卡视频| 91福利视频在线| a4yy欧美一区二区三区| 懂色av噜噜一区二区三区av| 另类小说综合欧美亚洲| 婷婷激情综合网| 天天av天天翘天天综合网 | 日韩精品在线看片z| 日韩西西人体444www| 欧美电影一区二区| 精品久久一二三区| 久久女同精品一区二区| 久久久久久一级片| 亚洲天堂2014| 亚洲中国最大av网站| 日韩精品久久理论片| 国产精品亚洲专一区二区三区 | 亚洲午夜久久久久| 成人av综合在线| 成人激情av网| 一本大道久久精品懂色aⅴ| 91网站黄www| 欧美无乱码久久久免费午夜一区| 欧美精品日韩一区| 久久久久久久久久久久久女国产乱 | 国产精品亚洲一区二区三区在线| 激情六月婷婷综合| 99re热视频精品| 在线观看91av| 中文字幕亚洲一区二区va在线| 亚洲福利一区二区三区| 国产精品私人影院| 亚洲影院久久精品| 国产综合一区二区| 欧美日韩国产一区| 日韩一区中文字幕| 国产高清一区日本| 日韩精品一区二区三区视频在线观看| ●精品国产综合乱码久久久久| 九九视频精品免费| 欧美另类videos死尸| 国产精品毛片无遮挡高清| 天堂成人免费av电影一区| 91香蕉视频黄| 国产精品系列在线| 懂色一区二区三区免费观看| 制服丝袜亚洲色图| 亚洲va国产天堂va久久en| 色综合久久中文综合久久97| 国产亚洲美州欧州综合国| 激情文学综合插| 欧美一区二区不卡视频| 午夜精品一区在线观看| 欧美va日韩va| 裸体一区二区三区| 亚洲精品一区二区三区在线观看| 石原莉奈一区二区三区在线观看| 在线亚洲免费视频| 三级久久三级久久久| 日韩一级片在线观看| 麻豆精品精品国产自在97香蕉| 精品88久久久久88久久久| 国产在线不卡一卡二卡三卡四卡| www欧美成人18+| 国产成人一区在线| 国产精品福利电影一区二区三区四区| 成人av在线一区二区三区| 亚洲免费在线视频一区 二区| 欧美亚洲日本国产| 另类综合日韩欧美亚洲| 国产欧美视频一区二区三区| 色婷婷久久久综合中文字幕| 日韩一区精品视频| 欧美国产日韩在线观看| 欧美丝袜丝nylons| 韩国成人精品a∨在线观看| 中文字幕第一页久久| 在线视频国内自拍亚洲视频| 欧美亚洲高清一区| 成人性生交大片免费看中文网站| 亚洲免费观看视频| 久久综合99re88久久爱| 色综合久久99| 国产黄色成人av| 亚洲 欧美综合在线网络| 中文字幕一区二区三区在线观看 | 成人午夜免费电影| 免费一区二区视频| 一区二区三区四区亚洲| 国产欧美日韩三区| 2021中文字幕一区亚洲| 91精品在线麻豆| 欧美中文字幕一二三区视频| 国产91丝袜在线播放| 韩国一区二区视频| 日本免费在线视频不卡一不卡二| 亚洲卡通欧美制服中文| 国产精品视频一区二区三区不卡| 久久久久一区二区三区四区| 欧美色视频在线观看| 91首页免费视频| jizzjizzjizz欧美| 成人免费视频播放| 国产精品 欧美精品| 国产伦精品一区二区三区在线观看| 麻豆精品在线观看| 国产一区二区调教| 成人精品高清在线| 色欧美片视频在线观看在线视频| 99r精品视频| 日本精品裸体写真集在线观看| 日本精品一区二区三区高清| 成人激情av网| 久久99久久精品| 91首页免费视频| 欧美激情在线观看视频免费| 亚洲欧美日韩综合aⅴ视频| 亚洲另类中文字| 麻豆精品新av中文字幕| 成人免费视频一区| 欧美自拍偷拍一区| 欧美大黄免费观看| 国产精品久久久久影院亚瑟| 日精品一区二区| 成人三级伦理片| 精品精品欲导航| 亚洲欧美日韩中文字幕一区二区三区 | 久久久综合九色合综国产精品| 亚洲蜜臀av乱码久久精品蜜桃| 日韩主播视频在线| 成人av网站在线| 日韩一区二区三区免费看 | 日韩精品电影一区亚洲| 91久久国产综合久久| 欧美日韩久久久一区| 久久久精品国产免大香伊| 亚洲男人电影天堂| 欧美网站一区二区| 麻豆精品一二三| 久久久五月婷婷| 国产一区二区三区久久悠悠色av| 日韩欧美国产综合一区 | 91精品蜜臀在线一区尤物| 国产精品视频一二| 国产麻豆视频一区| 国产精品理伦片| 欧美在线视频日韩| 五月婷婷色综合| 精品国产91久久久久久久妲己| 午夜精品在线视频一区| 日韩精品一区二区三区老鸭窝| 精品制服美女久久| 中文字幕欧美日韩一区| 99久久久久久99| 伊人开心综合网| 欧美日韩午夜影院| 久久精品二区亚洲w码| 精品乱人伦小说|