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

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

?? factcmp.c

?? clips源代碼
?? C
字號:
   /*******************************************************/   /*      "C" Language Integrated Production System      */   /*                                                     */   /*             CLIPS Version 6.20  01/31/02            */   /*                                                     */   /*     FACT PATTERN NETWORK CONSTRUCTS-TO-C MODULE     */   /*******************************************************//*************************************************************//* Purpose: Implements the constructs-to-c feature for the   *//*    fact pattern network.                                  *//*                                                           *//* Principal Programmer(s):                                  *//*      Gary D. Riley                                        *//*                                                           *//* Contributing Programmer(s):                               *//*                                                           *//* Revision History:                                         *//*                                                           *//*************************************************************/#define _FACTCMP_SOURCE_#include "setup.h"#if DEFRULE_CONSTRUCT && (! RUN_TIME) && DEFTEMPLATE_CONSTRUCT && CONSTRUCT_COMPILER#define FactPrefix() ArbitraryPrefix(FactData(theEnv)->FactCodeItem,0)#include <stdio.h>#define _STDIO_INCLUDED_#include "factbld.h"#include "conscomp.h"#include "factcmp.h"#include "tmpltdef.h"#include "envrnmnt.h"/***************************************//* LOCAL INTERNAL FUNCTION DEFINITIONS *//***************************************/   static int                     PatternNetworkToCode(void *,char *,int,FILE *,int,int);   static void                    BeforePatternNetworkToCode(void *);   static struct factPatternNode *GetNextPatternNode(struct factPatternNode *);   static void                    CloseNetworkFiles(void *,FILE *,int);   static void                    PatternNodeToCode(void *,FILE *,struct factPatternNode *,int,int);/**************************************************************//* FactPatternsCompilerSetup: Initializes the constructs-to-c *//*   command for use with the fact pattern network.           *//**************************************************************/globle void FactPatternsCompilerSetup(    void *theEnv)  {   FactData(theEnv)->FactCodeItem = AddCodeGeneratorItem(theEnv,"facts",0,BeforePatternNetworkToCode,                                       NULL,PatternNetworkToCode,1);  }/****************************************************************//* BeforePatternNetworkToCode: Assigns each pattern node with a *//*   unique ID which will be used for pointer references when   *//*   the data structures are written to a file as C code        *//****************************************************************/static void BeforePatternNetworkToCode(  void *theEnv)  {   int whichPattern = 0;   int whichDeftemplate = 0;   struct defmodule *theModule;   struct deftemplate *theDeftemplate;   struct factPatternNode *thePattern;   /*===========================*/   /* Loop through each module. */   /*===========================*/   for (theModule = (struct defmodule *) EnvGetNextDefmodule(theEnv,NULL);        theModule != NULL;        theModule = (struct defmodule *) EnvGetNextDefmodule(theEnv,theModule))     {      /*=========================*/      /* Set the current module. */      /*=========================*/      EnvSetCurrentModule(theEnv,(void *) theModule);      /*======================================================*/      /* Loop through each deftemplate in the current module. */      /*======================================================*/      for (theDeftemplate = (struct deftemplate *) EnvGetNextDeftemplate(theEnv,NULL);           theDeftemplate != NULL;           theDeftemplate = (struct deftemplate *) EnvGetNextDeftemplate(theEnv,theDeftemplate))        {         /*=================================================*/         /* Assign each pattern node in the pattern network */         /* for the deftemplate a unique integer ID.        */         /*=================================================*/         theDeftemplate->header.bsaveID = whichDeftemplate++;         for (thePattern = theDeftemplate->patternNetwork;              thePattern != NULL;              thePattern = GetNextPatternNode(thePattern))           { thePattern->bsaveID = whichPattern++; }        }     }  }/********************************************************************//* GetNextPatternNode: Returns the next node in a pattern network   *//*   tree. The next node is computed using a depth first traversal. *//********************************************************************/static struct factPatternNode *GetNextPatternNode(  struct factPatternNode *thePattern)  {   /*=========================================*/   /* If it's possible to go deeper into the  */   /* tree, then move down to the next level. */   /*=========================================*/   if (thePattern->nextLevel != NULL) return(thePattern->nextLevel);   /*========================================*/   /* Keep backing up toward the root of the */   /* tree until a side branch can be taken. */   /*========================================*/   while (thePattern->rightNode == NULL)     {      /*========================================*/      /* Back up to check the next side branch. */      /*========================================*/      thePattern = thePattern->lastLevel;      /*======================================*/      /* If we branched up from the root, the */      /* entire tree has been traversed.      */      /*======================================*/      if (thePattern == NULL) return(NULL);     }   /*==================================*/   /* Move on to the next side branch. */   /*==================================*/   return(thePattern->rightNode);  }/********************************************************************//* PatternNetworkToCode: Produces the fact pattern network code for *//*   a run-time module created using the constructs-to-c function.  *//********************************************************************/static int PatternNetworkToCode(  void *theEnv,  char *fileName,  int fileID,  FILE *headerFP,  int imageID,  int maxIndices)  {   int fileCount = 1;   struct defmodule *theModule;   struct deftemplate *theTemplate;   struct factPatternNode *thePatternNode;   int networkArrayCount = 0, networkArrayVersion = 1;   FILE *networkFile = NULL;   /*===========================================================*/   /* Include the appropriate fact pattern network header file. */   /*===========================================================*/   fprintf(headerFP,"#include \"factbld.h\"\n");   /*===============================*/   /* Loop through all the modules. */   /*===============================*/   for (theModule = (struct defmodule *) EnvGetNextDefmodule(theEnv,NULL);        theModule != NULL;        theModule = (struct defmodule *) EnvGetNextDefmodule(theEnv,theModule))     {      /*=========================*/      /* Set the current module. */      /*=========================*/      EnvSetCurrentModule(theEnv,(void *) theModule);      /*======================================*/      /* Loop through all of the deftemplates */      /* in the current module.               */      /*======================================*/      for (theTemplate = (struct deftemplate *) EnvGetNextDeftemplate(theEnv,NULL);           theTemplate != NULL;           theTemplate = (struct deftemplate *) EnvGetNextDeftemplate(theEnv,theTemplate))        {         /*======================================================*/         /* Loop through each pattern node in the deftemplate's  */         /* pattern network writing its C code representation to */         /* the file as it is traversed.                         */         /*======================================================*/         for (thePatternNode = theTemplate->patternNetwork;              thePatternNode != NULL;              thePatternNode = GetNextPatternNode(thePatternNode))           {            networkFile = OpenFileIfNeeded(theEnv,networkFile,fileName,fileID,imageID,&fileCount,                                         networkArrayVersion,headerFP,                                         "struct factPatternNode",FactPrefix(),FALSE,NULL);            if (networkFile == NULL)              {               CloseNetworkFiles(theEnv,networkFile,maxIndices);               return(0);              }            PatternNodeToCode(theEnv,networkFile,thePatternNode,imageID,maxIndices);            networkArrayCount++;            networkFile = CloseFileIfNeeded(theEnv,networkFile,&networkArrayCount,                                            &networkArrayVersion,maxIndices,NULL,NULL);           }        }     }   /*==============================*/   /* Close any C files left open. */   /*==============================*/   CloseNetworkFiles(theEnv,networkFile,maxIndices);   /*===============================*/   /* Return TRUE to indicate the C */   /* code was successfully saved.  */   /*===============================*/   return(TRUE);  }/****************************************************************//* CloseNetworkFiles: Closes all of the C files created for the *//*   fact pattern network. Called when an error occurs or when  *//*   the fact pattern network data structures have all been     *//*   written to the files.                                      *//****************************************************************/static void CloseNetworkFiles(  void *theEnv,  FILE *networkFile,  int maxIndices)  {   int count = maxIndices;   int arrayVersion = 0;   if (networkFile != NULL)     {      CloseFileIfNeeded(theEnv,networkFile,&count,&arrayVersion,maxIndices,NULL,NULL);     }  }/************************************************************//* PatternNodeToCode: Writes the C code representation of a *//*   single fact pattern node slot to the specified file.   *//************************************************************/static void PatternNodeToCode(  void *theEnv,  FILE *theFile,  struct factPatternNode *thePatternNode,  int imageID,  int maxIndices)  {   fprintf(theFile,"{");   /*=====================*/   /* Pattern Node Header */   /*=====================*/   PatternNodeHeaderToCode(theEnv,theFile,&thePatternNode->header,imageID,maxIndices);   /*========================*/   /* Field and Slot Indices */   /*========================*/   fprintf(theFile,",0,%d,%d,%d,",thePatternNode->whichField,                             thePatternNode->whichSlot,                             thePatternNode->leaveFields);   /*===============*/   /* Network Tests */   /*===============*/   PrintHashedExpressionReference(theEnv,theFile,thePatternNode->networkTest,imageID,maxIndices);   /*============*/   /* Next Level */   /*============*/   if (thePatternNode->nextLevel == NULL)     { fprintf(theFile,",NULL,"); }   else     {      fprintf(theFile,",&%s%d_%ld[%ld],",FactPrefix(),                 imageID,(thePatternNode->nextLevel->bsaveID / maxIndices) + 1,                         thePatternNode->nextLevel->bsaveID % maxIndices);     }   /*============*/   /* Last Level */   /*============*/   if (thePatternNode->lastLevel == NULL)     { fprintf(theFile,"NULL,"); }   else     {      fprintf(theFile,"&%s%d_%ld[%ld],",FactPrefix(),              imageID,(thePatternNode->lastLevel->bsaveID / maxIndices) + 1,                   thePatternNode->lastLevel->bsaveID % maxIndices);     }   /*===========*/   /* Left Node */   /*===========*/   if (thePatternNode->leftNode == NULL)     { fprintf(theFile,"NULL,"); }   else     {      fprintf(theFile,"&%s%d_%ld[%ld],",FactPrefix(),             imageID,(thePatternNode->leftNode->bsaveID / maxIndices) + 1,                  thePatternNode->leftNode->bsaveID % maxIndices);     }   /*============*/   /* Right Node */   /*============*/   if (thePatternNode->rightNode == NULL)     { fprintf(theFile,"NULL}"); }   else     {      fprintf(theFile,"&%s%d_%ld[%ld]}",FactPrefix(),            imageID,(thePatternNode->rightNode->bsaveID / maxIndices) + 1,                thePatternNode->rightNode->bsaveID % maxIndices);     }  }/**********************************************************//* FactPatternNodeReference: Prints C code representation *//*   of a fact pattern node data structure reference.     *//**********************************************************/globle void FactPatternNodeReference(  void *theEnv,  void *theVPattern,  FILE *theFile,  int imageID,  int maxIndices)  {   struct factPatternNode *thePattern = (struct factPatternNode *) theVPattern;   if (thePattern == NULL) fprintf(theFile,"NULL");   else     {      fprintf(theFile,"&%s%d_%ld[%ld]",FactPrefix(),                    imageID,(thePattern->bsaveID / maxIndices) + 1,                            thePattern->bsaveID % maxIndices);     }  }#endif /* DEFRULE_CONSTRUCT && (! RUN_TIME) && DEFTEMPLATE_CONSTRUCT && CONSTRUCT_COMPILER */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美国精品在线观看| 一区二区三区不卡视频在线观看 | 欧美色网站导航| 日韩三级中文字幕| 国产精品网友自拍| 日韩国产一二三区| 欧美国产成人在线| 欧美一区二区三区啪啪| 中文在线免费一区三区高中清不卡| 亚洲最大成人网4388xx| 日韩精品一二三区| 国产iv一区二区三区| 在线观看亚洲一区| 久久久久国产一区二区三区四区| 夜夜嗨av一区二区三区| 成人高清免费观看| 欧美一区二区三区婷婷月色| 亚洲男人的天堂网| 成人a区在线观看| 精品国产sm最大网站| 亚洲午夜免费电影| 日本福利一区二区| 中文字幕一区二区三区在线不卡| 黄色资源网久久资源365| 欧美日韩在线综合| 夜夜嗨av一区二区三区中文字幕| 成人午夜电影小说| 国产欧美日韩中文久久| 激情五月播播久久久精品| 欧美色国产精品| 亚洲国产精品视频| 一本大道综合伊人精品热热| 国产精品久久久久婷婷| 国产成人av一区| 国产色一区二区| 国产成人自拍在线| 久久综合狠狠综合| 国产激情一区二区三区| 精品美女一区二区三区| 精品在线观看视频| 久久精品一区二区| 国产精品一区在线观看你懂的| 精品国产电影一区二区| 国产成人综合在线观看| 亚洲国产精华液网站w| 欧美日韩日日骚| 亚洲少妇30p| 91视视频在线观看入口直接观看www| 欧美国产禁国产网站cc| 91视频国产观看| 一区二区成人在线观看| 欧美精品九九99久久| 麻豆成人av在线| 日韩精品一区二区三区swag| 国产一区二区三区视频在线播放| 国产欧美日产一区| 91丝袜国产在线播放| 亚洲成在线观看| 精品国产3级a| 91热门视频在线观看| 香蕉久久夜色精品国产使用方法 | 亚洲电影视频在线| 91精品福利在线一区二区三区 | 日韩女优制服丝袜电影| 国产在线精品国自产拍免费| 日韩精品最新网址| 精彩视频一区二区三区 | 国产成人免费9x9x人网站视频| 国产精品美女视频| 欧洲国产伦久久久久久久| 亚洲一区免费在线观看| 久久一区二区三区四区| av中文字幕亚洲| 青青草伊人久久| 国产精品美女久久久久aⅴ国产馆| 91麻豆6部合集magnet| 久久精工是国产品牌吗| 专区另类欧美日韩| 欧美r级在线观看| 成人动漫一区二区| 免费成人av资源网| 国产精品久久久久久久第一福利| 欧美精品乱人伦久久久久久| 成人小视频在线| 免费观看在线综合| 亚洲天堂精品视频| 久久久久国产精品麻豆ai换脸 | 91精品国产欧美一区二区成人| 国产电影一区在线| 日韩黄色在线观看| 亚洲视频资源在线| 国产偷国产偷亚洲高清人白洁| 欧美视频一区二区在线观看| 国产成人久久精品77777最新版本| 亚洲电影你懂得| 日韩久久一区二区| 久久精品水蜜桃av综合天堂| 欧美一区二区三区不卡| 欧美日韩久久久| 91亚洲大成网污www| 国产福利91精品| 国产米奇在线777精品观看| 午夜电影一区二区三区| 一区二区三区免费| 亚洲视频免费看| 国产欧美精品区一区二区三区| 日韩欧美视频一区| 7777精品伊人久久久大香线蕉的| 不卡一卡二卡三乱码免费网站| 丝袜a∨在线一区二区三区不卡| 色婷婷国产精品| 免费成人美女在线观看| 亚洲免费视频中文字幕| 久久久久久免费网| 欧美色图一区二区三区| 国产乱子轮精品视频| 香蕉成人伊视频在线观看| 久久久久久久久久久久久夜| 欧美午夜片在线观看| 懂色av噜噜一区二区三区av| 日本不卡123| 亚洲一二三四在线| 国产亚洲欧美日韩在线一区| 欧美日韩另类国产亚洲欧美一级| 成人高清免费观看| 国产呦萝稀缺另类资源| 中文字幕精品—区二区四季| 欧美日本国产一区| 欧洲一区在线观看| 99久久99久久精品国产片果冻| 国产一区二区成人久久免费影院| 色综合久久久久综合体桃花网| 中文字幕高清一区| 韩国午夜理伦三级不卡影院| 亚洲黄网站在线观看| 久久综合av免费| 3d动漫精品啪啪一区二区竹菊| 91免费版pro下载短视频| 国内精品伊人久久久久av一坑| 首页国产欧美久久| 亚洲人妖av一区二区| 国产精品污www在线观看| 欧美精品久久一区| 91极品视觉盛宴| 91网站最新地址| 国产成人在线色| 精品一区二区三区av| 亚洲成人手机在线| 日韩美女视频19| 国产精品成人在线观看| 国产精品国产三级国产三级人妇| 久久久噜噜噜久久人人看| 精品免费一区二区三区| 久久久精品蜜桃| 国产欧美久久久精品影院| 中文乱码免费一区二区 | 国产精品网站导航| 欧美成人精品3d动漫h| 色狠狠桃花综合| 国产suv精品一区二区883| 日韩精品一二三四| 亚洲成人av电影在线| 中文字幕一区二区三区四区不卡 | 色哟哟亚洲精品| 色综合 综合色| 风间由美一区二区三区在线观看| 国产成人啪免费观看软件| 香蕉乱码成人久久天堂爱免费| 亚洲第一成人在线| 日韩av在线播放中文字幕| 国内精品写真在线观看| 色综合咪咪久久| 欧美日韩国产高清一区| 国产欧美精品一区二区三区四区 | 在线免费不卡电影| 色综合久久九月婷婷色综合| 日韩欧美国产精品| 国产欧美一区二区精品仙草咪| 亚洲三级免费观看| 国产乱国产乱300精品| 国产99久久精品| 欧美日韩亚洲另类| 2021中文字幕一区亚洲| 日韩欧美高清一区| 国产精品国产自产拍高清av| 一区二区三区四区在线播放| 最新日韩在线视频| 8v天堂国产在线一区二区| 欧美va在线播放| 麻豆成人久久精品二区三区小说| 韩日欧美一区二区三区| 欧美成人午夜电影| 玉足女爽爽91| 91在线免费看| 欧美一级夜夜爽| 国产目拍亚洲精品99久久精品| 一区二区三区日韩| 国产天堂亚洲国产碰碰| 久久精品国产成人一区二区三区| 99精品热视频|