⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dffctbsc.c

📁 NASA 开发使用的一个专家系统
💻 C
字号:
   /*******************************************************/   /*      "C" Language Integrated Production System      */   /*                                                     */   /*             CLIPS Version 6.05  04/09/97            */   /*                                                     */   /*         DEFFACTS BASIC COMMANDS HEADER FILE         */   /*******************************************************//*************************************************************//* Purpose: Implements core commands for the deffacts        *//*   construct such as clear, reset, save, undeffacts,       *//*   ppdeffacts, list-deffacts, and get-deffacts-list.       *//*                                                           *//* Principal Programmer(s):                                  *//*      Gary D. Riley                                        *//*                                                           *//* Contributing Programmer(s):                               *//*      Brian L. Donnell                                     *//*                                                           *//* Revision History:                                         *//*                                                           *//*************************************************************/#define _DFFCTBSC_SOURCE_#include "setup.h"#if DEFFACTS_CONSTRUCT#include <stdio.h>#define _CLIPS_STDIO_#include <string.h>#include "argacces.h"#include "clipsmem.h"#include "scanner.h"#include "router.h"#include "extnfunc.h"#include "constrct.h"#include "cstrccom.h"#include "factrhs.h"#include "tmpltdef.h"#include "cstrcpsr.h"#include "dffctpsr.h"#include "dffctdef.h"#if BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE#include "dffctbin.h"#endif#if CONSTRUCT_COMPILER && (! RUN_TIME)#include "dffctcmp.h"#endif#include "dffctbsc.h"/***************************************//* LOCAL INTERNAL FUNCTION DEFINITIONS *//***************************************/#if ANSI_COMPILER   static VOID                    ResetDeffacts(void);   static VOID                    ClearDeffacts(void);   static VOID                    SaveDeffacts(char *);   static VOID                    ResetDeffactsAction(struct constructHeader *,VOID *);#else   static VOID                    ResetDeffacts();   static VOID                    ClearDeffacts();   static VOID                    SaveDeffacts();   static VOID                    ResetDeffactsAction();#endif/***************************************************************//* DeffactsBasicCommands: Initializes basic deffacts commands. *//***************************************************************/globle VOID DeffactsBasicCommands()  {   AddResetFunction("deffacts",ResetDeffacts,0);   AddClearFunction("deffacts",ClearDeffacts,0);   AddSaveFunction("deffacts",SaveDeffacts,10);   #if ! RUN_TIME   DefineFunction2("get-deffacts-list",'m',PTIF GetDeffactsListFunction,"GetDeffactsListFunction","01w");   DefineFunction2("undeffacts",'v',PTIF UndeffactsCommand,"UndeffactsCommand","11w");   DefineFunction2("deffacts-module",'w',PTIF DeffactsModuleFunction,"DeffactsModuleFunction","11w");#if DEBUGGING_FUNCTIONS   DefineFunction2("list-deffacts",'v', PTIF ListDeffactsCommand,"ListDeffactsCommand","01w");   DefineFunction2("ppdeffacts",'v',PTIF PPDeffactsCommand,"PPDeffactsCommand","11w");#endif#if (BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE)   DeffactsBinarySetup();#endif#if CONSTRUCT_COMPILER && (! RUN_TIME)   DeffactsCompilerSetup();#endif#endif  }  /**********************************************************//* ResetDeffacts: Deffacts reset routine for use with the *//*   reset command. Asserts all of the facts contained in *//*   deffacts constructs.                                 *//**********************************************************/static VOID ResetDeffacts()  { DoForAllConstructs(ResetDeffactsAction,DeffactsModuleIndex,CLIPS_TRUE,NULL); }/*****************************************************//* ResetDeffactsAction: Action to be applied to each *//*   deffacts construct during a reset command.      *//*****************************************************/#if IBM_TBC#pragma argsused#endifstatic VOID ResetDeffactsAction(theConstruct,buffer)  struct constructHeader *theConstruct;     VOID *buffer;  {#if MAC_MPW || MAC_MCW#pragma unused(buffer)#endif   DATA_OBJECT result;   struct deffacts *theDeffacts = (struct deffacts *) theConstruct;            if (theDeffacts->assertList == NULL) return;      SetEvaluationError(CLIPS_FALSE);      EvaluateExpression(theDeffacts->assertList,&result);  }/**********************************************************//* ClearDeffacts: Deffacts clear routine for use with the *//*   clear command. Creates the initial-facts deffacts.   *//**********************************************************/static VOID ClearDeffacts()  {#if (! RUN_TIME) && (! BLOAD_ONLY)   struct expr *stub;   struct deffacts *newDeffacts;   /*=====================================*/   /* Create the data structures for the  */   /* expression (assert (initial-fact)). */   /*=====================================*/      stub = GenConstant(FCALL,FindFunction("assert"));   stub->argList = GenConstant(DEFTEMPLATE_PTR,FindDeftemplate("initial-fact"));   ExpressionInstall(stub);   /*=============================================*/   /* Create a deffacts data structure to contain */   /* the expression and initialize it.           */   /*=============================================*/      newDeffacts = get_struct(deffacts);   newDeffacts->header.whichModule =       (struct defmoduleItemHeader *) GetDeffactsModuleItem(NULL);   newDeffacts->header.name = (SYMBOL_HN *) AddSymbol("initial-fact");   IncrementSymbolCount(newDeffacts->header.name);   newDeffacts->assertList = PackExpression(stub);   newDeffacts->header.next = NULL;   newDeffacts->header.ppForm = NULL;   ReturnExpression(stub);   /*===========================================*/   /* Store the deffacts in the current module. */   /*===========================================*/      AddConstructToModule(&newDeffacts->header);#endif  }  /***************************************//* SaveDeffacts: Deffacts save routine *//*   for use with the save command.    *//***************************************/static VOID SaveDeffacts(logicalName)  char *logicalName;  { SaveConstruct(logicalName,DeffactsConstruct); }/*******************************************//* UndeffactsCommand: CLIPS access routine *//*   for the undeffacts command.           *//*******************************************/globle VOID UndeffactsCommand()  { UndefconstructCommand("undeffacts",DeffactsConstruct); }/*********************************//* Undeffacts: C access routine  *//*   for the undeffacts command. *//*********************************/globle BOOLEAN Undeffacts(theDeffacts)  VOID *theDeffacts;  { return(Undefconstruct(theDeffacts,DeffactsConstruct)); } /*************************************************//* GetDeffactsListFunction: CLIPS access routine *//*   for the get-deffacts-list function.         *//*************************************************/globle VOID GetDeffactsListFunction(returnValue)  DATA_OBJECT_PTR returnValue;  { GetConstructListFunction("get-deffacts-list",returnValue,DeffactsConstruct); }/*****************************************//* GetDeffactsList: C access routine for *//*   the get-deffacts-list function.     *//*****************************************/globle VOID GetDeffactsList(returnValue,theModule)  DATA_OBJECT_PTR returnValue;  VOID *theModule;  { GetConstructList(returnValue,DeffactsConstruct,(struct defmodule *) theModule); }/************************************************//* DeffactsModuleFunction: CLIPS access routine *//*   for the deffacts-module function.          *//************************************************/globle SYMBOL_HN *DeffactsModuleFunction()  { return(GetConstructModuleCommand("deffacts-module",DeffactsConstruct)); }#if DEBUGGING_FUNCTIONS/*******************************************//* PPDeffactsCommand: CLIPS access routine *//*   for the ppdeffacts command.           *//*******************************************/globle VOID PPDeffactsCommand()  { PPConstructCommand("ppdeffacts",DeffactsConstruct); }/************************************//* PPDeffacts: C access routine for *//*   the ppdeffacts command.        *//************************************/globle int PPDeffacts(deffactsName,logicalName)  char *deffactsName, *logicalName;  { return(PPConstruct(deffactsName,logicalName,DeffactsConstruct)); }/*********************************************//* ListDeffactsCommand: CLIPS access routine *//*   for the list-deffacts command.          *//*********************************************/globle VOID ListDeffactsCommand()  { ListConstructCommand("list-deffacts",DeffactsConstruct); }/**************************************//* ListDeffacts: C access routine for *//*   the list-deffacts command.       *//**************************************/globle VOID ListDeffacts(logicalName,theModule)  char *logicalName;  VOID *theModule;  { ListConstruct(DeffactsConstruct,logicalName,(struct defmodule *) theModule); }#endif /* DEBUGGING_FUNCTIONS */#endif /* DEFFACTS_CONSTRUCT */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -