clipsruby 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/ext/clipsruby/agenda.c +1373 -0
- data/ext/clipsruby/agenda.h +169 -0
- data/ext/clipsruby/analysis.c +1142 -0
- data/ext/clipsruby/analysis.h +61 -0
- data/ext/clipsruby/argacces.c +526 -0
- data/ext/clipsruby/argacces.h +77 -0
- data/ext/clipsruby/bload.c +884 -0
- data/ext/clipsruby/bload.h +94 -0
- data/ext/clipsruby/bmathfun.c +557 -0
- data/ext/clipsruby/bmathfun.h +66 -0
- data/ext/clipsruby/bsave.c +634 -0
- data/ext/clipsruby/bsave.h +130 -0
- data/ext/clipsruby/classcom.c +976 -0
- data/ext/clipsruby/classcom.h +115 -0
- data/ext/clipsruby/classexm.c +1376 -0
- data/ext/clipsruby/classexm.h +97 -0
- data/ext/clipsruby/classfun.c +1392 -0
- data/ext/clipsruby/classfun.h +164 -0
- data/ext/clipsruby/classinf.c +1245 -0
- data/ext/clipsruby/classinf.h +94 -0
- data/ext/clipsruby/classini.c +843 -0
- data/ext/clipsruby/classini.h +75 -0
- data/ext/clipsruby/classpsr.c +957 -0
- data/ext/clipsruby/classpsr.h +73 -0
- data/ext/clipsruby/clips.h +133 -0
- data/ext/clipsruby/clipsruby.c +619 -0
- data/ext/clipsruby/clsltpsr.c +931 -0
- data/ext/clipsruby/clsltpsr.h +72 -0
- data/ext/clipsruby/commline.c +1217 -0
- data/ext/clipsruby/commline.h +131 -0
- data/ext/clipsruby/conscomp.c +1593 -0
- data/ext/clipsruby/conscomp.h +150 -0
- data/ext/clipsruby/constant.h +264 -0
- data/ext/clipsruby/constrct.c +1090 -0
- data/ext/clipsruby/constrct.h +216 -0
- data/ext/clipsruby/constrnt.c +554 -0
- data/ext/clipsruby/constrnt.h +132 -0
- data/ext/clipsruby/crstrtgy.c +1088 -0
- data/ext/clipsruby/crstrtgy.h +85 -0
- data/ext/clipsruby/cstrcbin.c +185 -0
- data/ext/clipsruby/cstrcbin.h +61 -0
- data/ext/clipsruby/cstrccmp.h +43 -0
- data/ext/clipsruby/cstrccom.c +1791 -0
- data/ext/clipsruby/cstrccom.h +115 -0
- data/ext/clipsruby/cstrcpsr.c +835 -0
- data/ext/clipsruby/cstrcpsr.h +97 -0
- data/ext/clipsruby/cstrnbin.c +282 -0
- data/ext/clipsruby/cstrnbin.h +55 -0
- data/ext/clipsruby/cstrnchk.c +826 -0
- data/ext/clipsruby/cstrnchk.h +91 -0
- data/ext/clipsruby/cstrncmp.c +238 -0
- data/ext/clipsruby/cstrncmp.h +57 -0
- data/ext/clipsruby/cstrnops.c +1176 -0
- data/ext/clipsruby/cstrnops.h +47 -0
- data/ext/clipsruby/cstrnpsr.c +1394 -0
- data/ext/clipsruby/cstrnpsr.h +88 -0
- data/ext/clipsruby/cstrnutl.c +564 -0
- data/ext/clipsruby/cstrnutl.h +54 -0
- data/ext/clipsruby/default.c +454 -0
- data/ext/clipsruby/default.h +57 -0
- data/ext/clipsruby/defins.c +971 -0
- data/ext/clipsruby/defins.h +127 -0
- data/ext/clipsruby/developr.c +677 -0
- data/ext/clipsruby/developr.h +69 -0
- data/ext/clipsruby/dffctbin.c +477 -0
- data/ext/clipsruby/dffctbin.h +76 -0
- data/ext/clipsruby/dffctbsc.c +308 -0
- data/ext/clipsruby/dffctbsc.h +72 -0
- data/ext/clipsruby/dffctcmp.c +297 -0
- data/ext/clipsruby/dffctcmp.h +44 -0
- data/ext/clipsruby/dffctdef.c +364 -0
- data/ext/clipsruby/dffctdef.h +104 -0
- data/ext/clipsruby/dffctpsr.c +179 -0
- data/ext/clipsruby/dffctpsr.h +49 -0
- data/ext/clipsruby/dffnxbin.c +520 -0
- data/ext/clipsruby/dffnxbin.h +67 -0
- data/ext/clipsruby/dffnxcmp.c +378 -0
- data/ext/clipsruby/dffnxcmp.h +54 -0
- data/ext/clipsruby/dffnxexe.c +241 -0
- data/ext/clipsruby/dffnxexe.h +58 -0
- data/ext/clipsruby/dffnxfun.c +1192 -0
- data/ext/clipsruby/dffnxfun.h +155 -0
- data/ext/clipsruby/dffnxpsr.c +514 -0
- data/ext/clipsruby/dffnxpsr.h +57 -0
- data/ext/clipsruby/dfinsbin.c +509 -0
- data/ext/clipsruby/dfinsbin.h +66 -0
- data/ext/clipsruby/dfinscmp.c +345 -0
- data/ext/clipsruby/dfinscmp.h +48 -0
- data/ext/clipsruby/drive.c +1191 -0
- data/ext/clipsruby/drive.h +65 -0
- data/ext/clipsruby/emathfun.c +1213 -0
- data/ext/clipsruby/emathfun.h +99 -0
- data/ext/clipsruby/engine.c +1568 -0
- data/ext/clipsruby/engine.h +203 -0
- data/ext/clipsruby/entities.h +276 -0
- data/ext/clipsruby/envrnbld.c +514 -0
- data/ext/clipsruby/envrnbld.h +40 -0
- data/ext/clipsruby/envrnmnt.c +257 -0
- data/ext/clipsruby/envrnmnt.h +112 -0
- data/ext/clipsruby/evaluatn.c +1736 -0
- data/ext/clipsruby/evaluatn.h +211 -0
- data/ext/clipsruby/expressn.c +494 -0
- data/ext/clipsruby/expressn.h +154 -0
- data/ext/clipsruby/exprnbin.c +538 -0
- data/ext/clipsruby/exprnbin.h +60 -0
- data/ext/clipsruby/exprnops.c +564 -0
- data/ext/clipsruby/exprnops.h +67 -0
- data/ext/clipsruby/exprnpsr.c +1112 -0
- data/ext/clipsruby/exprnpsr.h +98 -0
- data/ext/clipsruby/extconf.rb +2 -0
- data/ext/clipsruby/extnfunc.c +1015 -0
- data/ext/clipsruby/extnfunc.h +157 -0
- data/ext/clipsruby/factbin.c +447 -0
- data/ext/clipsruby/factbin.h +56 -0
- data/ext/clipsruby/factbld.c +1035 -0
- data/ext/clipsruby/factbld.h +63 -0
- data/ext/clipsruby/factcmp.c +386 -0
- data/ext/clipsruby/factcmp.h +46 -0
- data/ext/clipsruby/factcom.c +759 -0
- data/ext/clipsruby/factcom.h +80 -0
- data/ext/clipsruby/factfile.c +1761 -0
- data/ext/clipsruby/factfile.h +54 -0
- data/ext/clipsruby/factfun.c +682 -0
- data/ext/clipsruby/factfun.h +77 -0
- data/ext/clipsruby/factgen.c +1305 -0
- data/ext/clipsruby/factgen.h +229 -0
- data/ext/clipsruby/facthsh.c +438 -0
- data/ext/clipsruby/facthsh.h +81 -0
- data/ext/clipsruby/factlhs.c +250 -0
- data/ext/clipsruby/factlhs.h +54 -0
- data/ext/clipsruby/factmch.c +905 -0
- data/ext/clipsruby/factmch.h +68 -0
- data/ext/clipsruby/factmngr.c +3373 -0
- data/ext/clipsruby/factmngr.h +325 -0
- data/ext/clipsruby/factprt.c +498 -0
- data/ext/clipsruby/factprt.h +60 -0
- data/ext/clipsruby/factqpsr.c +796 -0
- data/ext/clipsruby/factqpsr.h +61 -0
- data/ext/clipsruby/factqury.c +1267 -0
- data/ext/clipsruby/factqury.h +112 -0
- data/ext/clipsruby/factrete.c +978 -0
- data/ext/clipsruby/factrete.h +70 -0
- data/ext/clipsruby/factrhs.c +667 -0
- data/ext/clipsruby/factrhs.h +55 -0
- data/ext/clipsruby/filecom.c +353 -0
- data/ext/clipsruby/filecom.h +137 -0
- data/ext/clipsruby/filertr.c +481 -0
- data/ext/clipsruby/filertr.h +94 -0
- data/ext/clipsruby/fileutil.c +1020 -0
- data/ext/clipsruby/fileutil.h +50 -0
- data/ext/clipsruby/generate.c +1079 -0
- data/ext/clipsruby/generate.h +57 -0
- data/ext/clipsruby/genrcbin.c +902 -0
- data/ext/clipsruby/genrcbin.h +69 -0
- data/ext/clipsruby/genrccmp.c +640 -0
- data/ext/clipsruby/genrccmp.h +59 -0
- data/ext/clipsruby/genrccom.c +2017 -0
- data/ext/clipsruby/genrccom.h +119 -0
- data/ext/clipsruby/genrcexe.c +737 -0
- data/ext/clipsruby/genrcexe.h +73 -0
- data/ext/clipsruby/genrcfun.c +890 -0
- data/ext/clipsruby/genrcfun.h +185 -0
- data/ext/clipsruby/genrcpsr.c +1618 -0
- data/ext/clipsruby/genrcpsr.h +80 -0
- data/ext/clipsruby/globlbin.c +458 -0
- data/ext/clipsruby/globlbin.h +71 -0
- data/ext/clipsruby/globlbsc.c +361 -0
- data/ext/clipsruby/globlbsc.h +83 -0
- data/ext/clipsruby/globlcmp.c +330 -0
- data/ext/clipsruby/globlcmp.h +52 -0
- data/ext/clipsruby/globlcom.c +289 -0
- data/ext/clipsruby/globlcom.h +63 -0
- data/ext/clipsruby/globldef.c +1087 -0
- data/ext/clipsruby/globldef.h +151 -0
- data/ext/clipsruby/globlpsr.c +530 -0
- data/ext/clipsruby/globlpsr.h +59 -0
- data/ext/clipsruby/immthpsr.c +431 -0
- data/ext/clipsruby/immthpsr.h +55 -0
- data/ext/clipsruby/incrrset.c +530 -0
- data/ext/clipsruby/incrrset.h +73 -0
- data/ext/clipsruby/inherpsr.c +850 -0
- data/ext/clipsruby/inherpsr.h +52 -0
- data/ext/clipsruby/inscom.c +2076 -0
- data/ext/clipsruby/inscom.h +182 -0
- data/ext/clipsruby/insfile.c +1764 -0
- data/ext/clipsruby/insfile.h +96 -0
- data/ext/clipsruby/insfun.c +1451 -0
- data/ext/clipsruby/insfun.h +134 -0
- data/ext/clipsruby/insmngr.c +2550 -0
- data/ext/clipsruby/insmngr.h +125 -0
- data/ext/clipsruby/insmoddp.c +1041 -0
- data/ext/clipsruby/insmoddp.h +91 -0
- data/ext/clipsruby/insmult.c +804 -0
- data/ext/clipsruby/insmult.h +62 -0
- data/ext/clipsruby/inspsr.c +602 -0
- data/ext/clipsruby/inspsr.h +60 -0
- data/ext/clipsruby/insquery.c +1278 -0
- data/ext/clipsruby/insquery.h +115 -0
- data/ext/clipsruby/insqypsr.c +729 -0
- data/ext/clipsruby/insqypsr.h +63 -0
- data/ext/clipsruby/iofun.c +2045 -0
- data/ext/clipsruby/iofun.h +116 -0
- data/ext/clipsruby/lgcldpnd.c +644 -0
- data/ext/clipsruby/lgcldpnd.h +75 -0
- data/ext/clipsruby/main.c +112 -0
- data/ext/clipsruby/match.h +142 -0
- data/ext/clipsruby/memalloc.c +481 -0
- data/ext/clipsruby/memalloc.h +197 -0
- data/ext/clipsruby/miscfun.c +1801 -0
- data/ext/clipsruby/miscfun.h +132 -0
- data/ext/clipsruby/modulbin.c +607 -0
- data/ext/clipsruby/modulbin.h +84 -0
- data/ext/clipsruby/modulbsc.c +347 -0
- data/ext/clipsruby/modulbsc.h +67 -0
- data/ext/clipsruby/modulcmp.c +499 -0
- data/ext/clipsruby/modulcmp.h +54 -0
- data/ext/clipsruby/moduldef.c +817 -0
- data/ext/clipsruby/moduldef.h +271 -0
- data/ext/clipsruby/modulpsr.c +1150 -0
- data/ext/clipsruby/modulpsr.h +69 -0
- data/ext/clipsruby/modulutl.c +1036 -0
- data/ext/clipsruby/modulutl.h +84 -0
- data/ext/clipsruby/msgcom.c +1221 -0
- data/ext/clipsruby/msgcom.h +125 -0
- data/ext/clipsruby/msgfun.c +1076 -0
- data/ext/clipsruby/msgfun.h +118 -0
- data/ext/clipsruby/msgpass.c +1441 -0
- data/ext/clipsruby/msgpass.h +103 -0
- data/ext/clipsruby/msgpsr.c +698 -0
- data/ext/clipsruby/msgpsr.h +73 -0
- data/ext/clipsruby/multifld.c +1404 -0
- data/ext/clipsruby/multifld.h +130 -0
- data/ext/clipsruby/multifun.c +2182 -0
- data/ext/clipsruby/multifun.h +102 -0
- data/ext/clipsruby/network.h +142 -0
- data/ext/clipsruby/objbin.c +1522 -0
- data/ext/clipsruby/objbin.h +79 -0
- data/ext/clipsruby/objcmp.c +1507 -0
- data/ext/clipsruby/objcmp.h +71 -0
- data/ext/clipsruby/object.h +260 -0
- data/ext/clipsruby/objrtbin.c +701 -0
- data/ext/clipsruby/objrtbin.h +79 -0
- data/ext/clipsruby/objrtbld.c +2393 -0
- data/ext/clipsruby/objrtbld.h +66 -0
- data/ext/clipsruby/objrtcmp.c +734 -0
- data/ext/clipsruby/objrtcmp.h +66 -0
- data/ext/clipsruby/objrtfnx.c +1330 -0
- data/ext/clipsruby/objrtfnx.h +222 -0
- data/ext/clipsruby/objrtgen.c +736 -0
- data/ext/clipsruby/objrtgen.h +63 -0
- data/ext/clipsruby/objrtmch.c +1524 -0
- data/ext/clipsruby/objrtmch.h +160 -0
- data/ext/clipsruby/parsefun.c +415 -0
- data/ext/clipsruby/parsefun.h +67 -0
- data/ext/clipsruby/pattern.c +1265 -0
- data/ext/clipsruby/pattern.h +163 -0
- data/ext/clipsruby/pprint.c +328 -0
- data/ext/clipsruby/pprint.h +79 -0
- data/ext/clipsruby/prccode.c +1478 -0
- data/ext/clipsruby/prccode.h +145 -0
- data/ext/clipsruby/prcdrfun.c +640 -0
- data/ext/clipsruby/prcdrfun.h +95 -0
- data/ext/clipsruby/prcdrpsr.c +1068 -0
- data/ext/clipsruby/prcdrpsr.h +79 -0
- data/ext/clipsruby/prdctfun.c +869 -0
- data/ext/clipsruby/prdctfun.h +77 -0
- data/ext/clipsruby/prntutil.c +878 -0
- data/ext/clipsruby/prntutil.h +125 -0
- data/ext/clipsruby/proflfun.c +827 -0
- data/ext/clipsruby/proflfun.h +118 -0
- data/ext/clipsruby/reorder.c +2082 -0
- data/ext/clipsruby/reorder.h +172 -0
- data/ext/clipsruby/reteutil.c +1732 -0
- data/ext/clipsruby/reteutil.h +111 -0
- data/ext/clipsruby/retract.c +710 -0
- data/ext/clipsruby/retract.h +74 -0
- data/ext/clipsruby/router.c +737 -0
- data/ext/clipsruby/router.h +147 -0
- data/ext/clipsruby/rulebin.c +1136 -0
- data/ext/clipsruby/rulebin.h +153 -0
- data/ext/clipsruby/rulebld.c +1328 -0
- data/ext/clipsruby/rulebld.h +62 -0
- data/ext/clipsruby/rulebsc.c +517 -0
- data/ext/clipsruby/rulebsc.h +91 -0
- data/ext/clipsruby/rulecmp.c +733 -0
- data/ext/clipsruby/rulecmp.h +63 -0
- data/ext/clipsruby/rulecom.c +1583 -0
- data/ext/clipsruby/rulecom.h +116 -0
- data/ext/clipsruby/rulecstr.c +892 -0
- data/ext/clipsruby/rulecstr.h +53 -0
- data/ext/clipsruby/ruledef.c +559 -0
- data/ext/clipsruby/ruledef.h +179 -0
- data/ext/clipsruby/ruledlt.c +599 -0
- data/ext/clipsruby/ruledlt.h +58 -0
- data/ext/clipsruby/rulelhs.c +1216 -0
- data/ext/clipsruby/rulelhs.h +52 -0
- data/ext/clipsruby/rulepsr.c +1073 -0
- data/ext/clipsruby/rulepsr.h +61 -0
- data/ext/clipsruby/scanner.c +856 -0
- data/ext/clipsruby/scanner.h +112 -0
- data/ext/clipsruby/setup.h +488 -0
- data/ext/clipsruby/sortfun.c +433 -0
- data/ext/clipsruby/sortfun.h +55 -0
- data/ext/clipsruby/strngfun.c +1173 -0
- data/ext/clipsruby/strngfun.h +96 -0
- data/ext/clipsruby/strngrtr.c +523 -0
- data/ext/clipsruby/strngrtr.h +97 -0
- data/ext/clipsruby/symblbin.c +648 -0
- data/ext/clipsruby/symblbin.h +64 -0
- data/ext/clipsruby/symblcmp.c +893 -0
- data/ext/clipsruby/symblcmp.h +61 -0
- data/ext/clipsruby/symbol.c +1961 -0
- data/ext/clipsruby/symbol.h +243 -0
- data/ext/clipsruby/sysdep.c +894 -0
- data/ext/clipsruby/sysdep.h +164 -0
- data/ext/clipsruby/textpro.c +1388 -0
- data/ext/clipsruby/textpro.h +77 -0
- data/ext/clipsruby/tmpltbin.c +609 -0
- data/ext/clipsruby/tmpltbin.h +108 -0
- data/ext/clipsruby/tmpltbsc.c +327 -0
- data/ext/clipsruby/tmpltbsc.h +87 -0
- data/ext/clipsruby/tmpltcmp.c +450 -0
- data/ext/clipsruby/tmpltcmp.h +57 -0
- data/ext/clipsruby/tmpltdef.c +584 -0
- data/ext/clipsruby/tmpltdef.h +155 -0
- data/ext/clipsruby/tmpltfun.c +2477 -0
- data/ext/clipsruby/tmpltfun.h +122 -0
- data/ext/clipsruby/tmpltlhs.c +379 -0
- data/ext/clipsruby/tmpltlhs.h +50 -0
- data/ext/clipsruby/tmpltpsr.c +819 -0
- data/ext/clipsruby/tmpltpsr.h +59 -0
- data/ext/clipsruby/tmpltrhs.c +595 -0
- data/ext/clipsruby/tmpltrhs.h +55 -0
- data/ext/clipsruby/tmpltutl.c +637 -0
- data/ext/clipsruby/tmpltutl.h +82 -0
- data/ext/clipsruby/userdata.c +156 -0
- data/ext/clipsruby/userdata.h +72 -0
- data/ext/clipsruby/userfunctions.c +70 -0
- data/ext/clipsruby/usrsetup.h +7 -0
- data/ext/clipsruby/utility.c +1594 -0
- data/ext/clipsruby/utility.h +250 -0
- data/ext/clipsruby/watch.c +865 -0
- data/ext/clipsruby/watch.h +124 -0
- data/lib/clipsruby.rb +1 -0
- metadata +388 -0
@@ -0,0 +1,44 @@
|
|
1
|
+
/*******************************************************/
|
2
|
+
/* "C" Language Integrated Production System */
|
3
|
+
/* */
|
4
|
+
/* CLIPS Version 6.40 07/30/16 */
|
5
|
+
/* */
|
6
|
+
/* DEFFACTS CONSTRUCT COMPILER HEADER FILE */
|
7
|
+
/*******************************************************/
|
8
|
+
|
9
|
+
/*************************************************************/
|
10
|
+
/* Purpose: */
|
11
|
+
/* */
|
12
|
+
/* Principal Programmer(s): */
|
13
|
+
/* Gary D. Riley */
|
14
|
+
/* */
|
15
|
+
/* Contributing Programmer(s): */
|
16
|
+
/* */
|
17
|
+
/* Revision History: */
|
18
|
+
/* */
|
19
|
+
/* 6.30: Added support for path name argument to */
|
20
|
+
/* constructs-to-c. */
|
21
|
+
/* */
|
22
|
+
/* Removed conditional code for unsupported */
|
23
|
+
/* compilers/operating systems (IBM_MCW, */
|
24
|
+
/* MAC_MCW, and IBM_TBC). */
|
25
|
+
/* */
|
26
|
+
/* 6.40: Removed LOCALE definition. */
|
27
|
+
/* */
|
28
|
+
/* Pragma once and other inclusion changes. */
|
29
|
+
/* */
|
30
|
+
/* Removed use of void pointers for specific */
|
31
|
+
/* data structures. */
|
32
|
+
/* */
|
33
|
+
/*************************************************************/
|
34
|
+
|
35
|
+
#ifndef _H_dffctcmp
|
36
|
+
|
37
|
+
#pragma once
|
38
|
+
|
39
|
+
#define _H_dffctcmp
|
40
|
+
|
41
|
+
void DeffactsCompilerSetup(Environment *);
|
42
|
+
void DeffactsCModuleReference(Environment *,FILE *,unsigned long,unsigned int,unsigned int);
|
43
|
+
|
44
|
+
#endif /* _H_dffctcmp */
|
@@ -0,0 +1,364 @@
|
|
1
|
+
/*******************************************************/
|
2
|
+
/* "C" Language Integrated Production System */
|
3
|
+
/* */
|
4
|
+
/* CLIPS Version 6.40 08/06/16 */
|
5
|
+
/* */
|
6
|
+
/* DEFFACTS DEFINITION MODULE */
|
7
|
+
/*******************************************************/
|
8
|
+
|
9
|
+
/*************************************************************/
|
10
|
+
/* Purpose: Defines basic deffacts primitive functions such */
|
11
|
+
/* as allocating and deallocating, traversing, and finding */
|
12
|
+
/* deffacts data structures. */
|
13
|
+
/* */
|
14
|
+
/* Principal Programmer(s): */
|
15
|
+
/* Gary D. Riley */
|
16
|
+
/* */
|
17
|
+
/* Contributing Programmer(s): */
|
18
|
+
/* Brian L. Dantes */
|
19
|
+
/* */
|
20
|
+
/* Revision History: */
|
21
|
+
/* */
|
22
|
+
/* 6.24: Renamed BOOLEAN macro type to intBool. */
|
23
|
+
/* */
|
24
|
+
/* Corrected code to remove run-time program */
|
25
|
+
/* compiler warning. */
|
26
|
+
/* */
|
27
|
+
/* 6.30: Removed conditional code for unsupported */
|
28
|
+
/* compilers/operating systems (IBM_MCW, */
|
29
|
+
/* MAC_MCW, and IBM_TBC). */
|
30
|
+
/* */
|
31
|
+
/* Added const qualifiers to remove C++ */
|
32
|
+
/* deprecation warnings. */
|
33
|
+
/* */
|
34
|
+
/* Converted API macros to function calls. */
|
35
|
+
/* */
|
36
|
+
/* Changed find construct functionality so that */
|
37
|
+
/* imported modules are search when locating a */
|
38
|
+
/* named construct. */
|
39
|
+
/* */
|
40
|
+
/* 6.40: Pragma once and other inclusion changes. */
|
41
|
+
/* */
|
42
|
+
/* Added support for booleans with <stdbool.h>. */
|
43
|
+
/* */
|
44
|
+
/* Removed use of void pointers for specific */
|
45
|
+
/* data structures. */
|
46
|
+
/* */
|
47
|
+
/* ALLOW_ENVIRONMENT_GLOBALS no longer supported. */
|
48
|
+
/* */
|
49
|
+
/*************************************************************/
|
50
|
+
|
51
|
+
#include "setup.h"
|
52
|
+
|
53
|
+
#if DEFFACTS_CONSTRUCT
|
54
|
+
|
55
|
+
#include <stdio.h>
|
56
|
+
|
57
|
+
#include "dffctbsc.h"
|
58
|
+
#include "dffctpsr.h"
|
59
|
+
#include "envrnmnt.h"
|
60
|
+
#include "memalloc.h"
|
61
|
+
|
62
|
+
#if BLOAD || BLOAD_ONLY || BLOAD_AND_BSAVE
|
63
|
+
#include "bload.h"
|
64
|
+
#include "dffctbin.h"
|
65
|
+
#endif
|
66
|
+
|
67
|
+
#if CONSTRUCT_COMPILER && (! RUN_TIME)
|
68
|
+
#include "dffctcmp.h"
|
69
|
+
#endif
|
70
|
+
|
71
|
+
#include "dffctdef.h"
|
72
|
+
|
73
|
+
/***************************************/
|
74
|
+
/* LOCAL INTERNAL FUNCTION DEFINITIONS */
|
75
|
+
/***************************************/
|
76
|
+
|
77
|
+
static void *AllocateModule(Environment *);
|
78
|
+
static void ReturnModule(Environment *,void *);
|
79
|
+
static void ReturnDeffacts(Environment *,Deffacts *);
|
80
|
+
static void InitializeDeffactsModules(Environment *);
|
81
|
+
static void DeallocateDeffactsData(Environment *);
|
82
|
+
#if ! RUN_TIME
|
83
|
+
static void DestroyDeffactsAction(Environment *,ConstructHeader *,void *);
|
84
|
+
#else
|
85
|
+
static void RuntimeDeffactsAction(Environment *,ConstructHeader *,void *);
|
86
|
+
#endif
|
87
|
+
|
88
|
+
/***********************************************************/
|
89
|
+
/* InitializeDeffacts: Initializes the deffacts construct. */
|
90
|
+
/***********************************************************/
|
91
|
+
void InitializeDeffacts(
|
92
|
+
Environment *theEnv)
|
93
|
+
{
|
94
|
+
AllocateEnvironmentData(theEnv,DEFFACTS_DATA,sizeof(struct deffactsData),DeallocateDeffactsData);
|
95
|
+
|
96
|
+
InitializeDeffactsModules(theEnv);
|
97
|
+
|
98
|
+
DeffactsBasicCommands(theEnv);
|
99
|
+
|
100
|
+
DeffactsData(theEnv)->DeffactsConstruct =
|
101
|
+
AddConstruct(theEnv,"deffacts","deffacts",ParseDeffacts,
|
102
|
+
(FindConstructFunction *) FindDeffacts,
|
103
|
+
GetConstructNamePointer,GetConstructPPForm,
|
104
|
+
GetConstructModuleItem,
|
105
|
+
(GetNextConstructFunction *) GetNextDeffacts,
|
106
|
+
SetNextConstruct,
|
107
|
+
(IsConstructDeletableFunction *) DeffactsIsDeletable,
|
108
|
+
(DeleteConstructFunction *) Undeffacts,
|
109
|
+
(FreeConstructFunction *) ReturnDeffacts);
|
110
|
+
}
|
111
|
+
|
112
|
+
/***************************************************/
|
113
|
+
/* DeallocateDeffactsData: Deallocates environment */
|
114
|
+
/* data for the deffacts construct. */
|
115
|
+
/***************************************************/
|
116
|
+
static void DeallocateDeffactsData(
|
117
|
+
Environment *theEnv)
|
118
|
+
{
|
119
|
+
#if ! RUN_TIME
|
120
|
+
struct deffactsModule *theModuleItem;
|
121
|
+
Defmodule *theModule;
|
122
|
+
|
123
|
+
#if BLOAD || BLOAD_AND_BSAVE
|
124
|
+
if (Bloaded(theEnv)) return;
|
125
|
+
#endif
|
126
|
+
|
127
|
+
DoForAllConstructs(theEnv,
|
128
|
+
DestroyDeffactsAction,
|
129
|
+
DeffactsData(theEnv)->DeffactsModuleIndex,
|
130
|
+
false,NULL);
|
131
|
+
|
132
|
+
for (theModule = GetNextDefmodule(theEnv,NULL);
|
133
|
+
theModule != NULL;
|
134
|
+
theModule = GetNextDefmodule(theEnv,theModule))
|
135
|
+
{
|
136
|
+
theModuleItem = (struct deffactsModule *)
|
137
|
+
GetModuleItem(theEnv,theModule,
|
138
|
+
DeffactsData(theEnv)->DeffactsModuleIndex);
|
139
|
+
rtn_struct(theEnv,deffactsModule,theModuleItem);
|
140
|
+
}
|
141
|
+
#else
|
142
|
+
#if MAC_XCD
|
143
|
+
#pragma unused(theEnv)
|
144
|
+
#endif
|
145
|
+
#endif
|
146
|
+
}
|
147
|
+
|
148
|
+
#if ! RUN_TIME
|
149
|
+
/*********************************************************/
|
150
|
+
/* DestroyDeffactsAction: Action used to remove deffacts */
|
151
|
+
/* as a result of DestroyEnvironment. */
|
152
|
+
/*********************************************************/
|
153
|
+
static void DestroyDeffactsAction(
|
154
|
+
Environment *theEnv,
|
155
|
+
ConstructHeader *theConstruct,
|
156
|
+
void *buffer)
|
157
|
+
{
|
158
|
+
#if MAC_XCD
|
159
|
+
#pragma unused(buffer)
|
160
|
+
#endif
|
161
|
+
#if (! BLOAD_ONLY) && (! RUN_TIME)
|
162
|
+
Deffacts *theDeffacts = (Deffacts *) theConstruct;
|
163
|
+
|
164
|
+
if (theDeffacts == NULL) return;
|
165
|
+
|
166
|
+
ReturnPackedExpression(theEnv,theDeffacts->assertList);
|
167
|
+
|
168
|
+
DestroyConstructHeader(theEnv,&theDeffacts->header);
|
169
|
+
|
170
|
+
rtn_struct(theEnv,deffacts,theDeffacts);
|
171
|
+
#else
|
172
|
+
#if MAC_XCD
|
173
|
+
#pragma unused(theEnv,theConstruct)
|
174
|
+
#endif
|
175
|
+
#endif
|
176
|
+
}
|
177
|
+
#endif
|
178
|
+
|
179
|
+
#if RUN_TIME
|
180
|
+
|
181
|
+
/***********************************************/
|
182
|
+
/* RuntimeDeffactsAction: Action to be applied */
|
183
|
+
/* to each deffacts construct when a runtime */
|
184
|
+
/* initialization occurs. */
|
185
|
+
/***********************************************/
|
186
|
+
static void RuntimeDeffactsAction(
|
187
|
+
Environment *theEnv,
|
188
|
+
ConstructHeader *theConstruct,
|
189
|
+
void *buffer)
|
190
|
+
{
|
191
|
+
#if MAC_XCD
|
192
|
+
#pragma unused(buffer)
|
193
|
+
#endif
|
194
|
+
Deffacts *theDeffacts = (Deffacts *) theConstruct;
|
195
|
+
|
196
|
+
theDeffacts->header.env = theEnv;
|
197
|
+
}
|
198
|
+
|
199
|
+
/******************************/
|
200
|
+
/* DeffactsRunTimeInitialize: */
|
201
|
+
/******************************/
|
202
|
+
void DeffactsRunTimeInitialize(
|
203
|
+
Environment *theEnv)
|
204
|
+
{
|
205
|
+
DoForAllConstructs(theEnv,RuntimeDeffactsAction,DeffactsData(theEnv)->DeffactsModuleIndex,true,NULL);
|
206
|
+
}
|
207
|
+
|
208
|
+
#endif
|
209
|
+
|
210
|
+
/*******************************************************/
|
211
|
+
/* InitializeDeffactsModules: Initializes the deffacts */
|
212
|
+
/* construct for use with the defmodule construct. */
|
213
|
+
/*******************************************************/
|
214
|
+
static void InitializeDeffactsModules(
|
215
|
+
Environment *theEnv)
|
216
|
+
{
|
217
|
+
DeffactsData(theEnv)->DeffactsModuleIndex =
|
218
|
+
RegisterModuleItem(theEnv,"deffacts",
|
219
|
+
AllocateModule,
|
220
|
+
ReturnModule,
|
221
|
+
#if BLOAD_AND_BSAVE || BLOAD || BLOAD_ONLY
|
222
|
+
BloadDeffactsModuleReference,
|
223
|
+
#else
|
224
|
+
NULL,
|
225
|
+
#endif
|
226
|
+
#if CONSTRUCT_COMPILER && (! RUN_TIME)
|
227
|
+
DeffactsCModuleReference,
|
228
|
+
#else
|
229
|
+
NULL,
|
230
|
+
#endif
|
231
|
+
(FindConstructFunction *) FindDeffactsInModule);
|
232
|
+
}
|
233
|
+
|
234
|
+
/************************************************/
|
235
|
+
/* AllocateModule: Allocates a deffacts module. */
|
236
|
+
/************************************************/
|
237
|
+
static void *AllocateModule(
|
238
|
+
Environment *theEnv)
|
239
|
+
{
|
240
|
+
return((void *) get_struct(theEnv,deffactsModule));
|
241
|
+
}
|
242
|
+
|
243
|
+
/************************************************/
|
244
|
+
/* ReturnModule: Deallocates a deffacts module. */
|
245
|
+
/************************************************/
|
246
|
+
static void ReturnModule(
|
247
|
+
Environment *theEnv,
|
248
|
+
void *theItem)
|
249
|
+
{
|
250
|
+
FreeConstructHeaderModule(theEnv,(struct defmoduleItemHeader *) theItem,DeffactsData(theEnv)->DeffactsConstruct);
|
251
|
+
rtn_struct(theEnv,deffactsModule,theItem);
|
252
|
+
}
|
253
|
+
|
254
|
+
/*************************************************************/
|
255
|
+
/* GetDeffactsModuleItem: Returns a pointer to the defmodule */
|
256
|
+
/* item for the specified deffacts or defmodule. */
|
257
|
+
/*************************************************************/
|
258
|
+
struct deffactsModule *GetDeffactsModuleItem(
|
259
|
+
Environment *theEnv,
|
260
|
+
Defmodule *theModule)
|
261
|
+
{
|
262
|
+
return((struct deffactsModule *) GetConstructModuleItemByIndex(theEnv,theModule,DeffactsData(theEnv)->DeffactsModuleIndex));
|
263
|
+
}
|
264
|
+
|
265
|
+
/************************************************/
|
266
|
+
/* FindDeffacts: Searches for a deffact in the */
|
267
|
+
/* list of deffacts. Returns a pointer to the */
|
268
|
+
/* deffact if found, otherwise NULL. */
|
269
|
+
/************************************************/
|
270
|
+
Deffacts *FindDeffacts(
|
271
|
+
Environment *theEnv,
|
272
|
+
const char *deffactsName)
|
273
|
+
{
|
274
|
+
return (Deffacts *) FindNamedConstructInModuleOrImports(theEnv,deffactsName,DeffactsData(theEnv)->DeffactsConstruct);
|
275
|
+
}
|
276
|
+
|
277
|
+
/************************************************/
|
278
|
+
/* FindDeffactsInModule: Searches for a deffact */
|
279
|
+
/* in the list of deffacts. Returns a pointer */
|
280
|
+
/* to the deffact if found, otherwise NULL. */
|
281
|
+
/************************************************/
|
282
|
+
Deffacts *FindDeffactsInModule(
|
283
|
+
Environment *theEnv,
|
284
|
+
const char *deffactsName)
|
285
|
+
{
|
286
|
+
return (Deffacts *) FindNamedConstructInModule(theEnv,deffactsName,DeffactsData(theEnv)->DeffactsConstruct);
|
287
|
+
}
|
288
|
+
|
289
|
+
/*********************************************************/
|
290
|
+
/* GetNextDeffacts: If passed a NULL pointer, returns */
|
291
|
+
/* the first deffacts in the ListOfDeffacts. Otherwise */
|
292
|
+
/* returns the next deffacts following the deffacts */
|
293
|
+
/* passed as an argument. */
|
294
|
+
/*********************************************************/
|
295
|
+
Deffacts *GetNextDeffacts(
|
296
|
+
Environment *theEnv,
|
297
|
+
Deffacts *deffactsPtr)
|
298
|
+
{
|
299
|
+
return (Deffacts *) GetNextConstructItem(theEnv,&deffactsPtr->header,DeffactsData(theEnv)->DeffactsModuleIndex);
|
300
|
+
}
|
301
|
+
|
302
|
+
/*******************************************************/
|
303
|
+
/* DeffactsIsDeletable: Returns true if a particular */
|
304
|
+
/* deffacts can be deleted, otherwise returns false. */
|
305
|
+
/*******************************************************/
|
306
|
+
bool DeffactsIsDeletable(
|
307
|
+
Deffacts *theDeffacts)
|
308
|
+
{
|
309
|
+
Environment *theEnv = theDeffacts->header.env;
|
310
|
+
|
311
|
+
if (! ConstructsDeletable(theEnv))
|
312
|
+
{ return false; }
|
313
|
+
|
314
|
+
if (ConstructData(theEnv)->ResetInProgress) return false;
|
315
|
+
|
316
|
+
return true;
|
317
|
+
}
|
318
|
+
|
319
|
+
/***********************************************************/
|
320
|
+
/* ReturnDeffacts: Returns the data structures associated */
|
321
|
+
/* with a deffacts construct to the pool of free memory. */
|
322
|
+
/***********************************************************/
|
323
|
+
static void ReturnDeffacts(
|
324
|
+
Environment *theEnv,
|
325
|
+
Deffacts *theDeffacts)
|
326
|
+
{
|
327
|
+
#if (! BLOAD_ONLY) && (! RUN_TIME)
|
328
|
+
if (theDeffacts == NULL) return;
|
329
|
+
|
330
|
+
ExpressionDeinstall(theEnv,theDeffacts->assertList);
|
331
|
+
ReturnPackedExpression(theEnv,theDeffacts->assertList);
|
332
|
+
|
333
|
+
DeinstallConstructHeader(theEnv,&theDeffacts->header);
|
334
|
+
|
335
|
+
rtn_struct(theEnv,deffacts,theDeffacts);
|
336
|
+
#endif
|
337
|
+
}
|
338
|
+
|
339
|
+
/*##################################*/
|
340
|
+
/* Additional Environment Functions */
|
341
|
+
/*##################################*/
|
342
|
+
|
343
|
+
const char *DeffactsModule(
|
344
|
+
Deffacts *theDeffacts)
|
345
|
+
{
|
346
|
+
return GetConstructModuleName(&theDeffacts->header);
|
347
|
+
}
|
348
|
+
|
349
|
+
const char *DeffactsName(
|
350
|
+
Deffacts *theDeffacts)
|
351
|
+
{
|
352
|
+
return GetConstructNameString(&theDeffacts->header);
|
353
|
+
}
|
354
|
+
|
355
|
+
const char *DeffactsPPForm(
|
356
|
+
Deffacts *theDeffacts)
|
357
|
+
{
|
358
|
+
return GetConstructPPForm(&theDeffacts->header);
|
359
|
+
}
|
360
|
+
|
361
|
+
|
362
|
+
#endif /* DEFFACTS_CONSTRUCT */
|
363
|
+
|
364
|
+
|
@@ -0,0 +1,104 @@
|
|
1
|
+
/*******************************************************/
|
2
|
+
/* "C" Language Integrated Production System */
|
3
|
+
/* */
|
4
|
+
/* CLIPS Version 6.40 08/06/16 */
|
5
|
+
/* */
|
6
|
+
/* DEFFACTS HEADER FILE */
|
7
|
+
/*******************************************************/
|
8
|
+
|
9
|
+
/*************************************************************/
|
10
|
+
/* Purpose: */
|
11
|
+
/* */
|
12
|
+
/* Principal Programmer(s): */
|
13
|
+
/* Gary D. Riley */
|
14
|
+
/* */
|
15
|
+
/* Contributing Programmer(s): */
|
16
|
+
/* Brian L. Dantes */
|
17
|
+
/* */
|
18
|
+
/* Revision History: */
|
19
|
+
/* */
|
20
|
+
/* 6.24: Renamed BOOLEAN macro type to intBool. */
|
21
|
+
/* */
|
22
|
+
/* 6.30: Removed conditional code for unsupported */
|
23
|
+
/* compilers/operating systems (IBM_MCW, */
|
24
|
+
/* MAC_MCW, and IBM_TBC). */
|
25
|
+
/* */
|
26
|
+
/* Added const qualifiers to remove C++ */
|
27
|
+
/* deprecation warnings. */
|
28
|
+
/* */
|
29
|
+
/* Converted API macros to function calls. */
|
30
|
+
/* */
|
31
|
+
/* Changed find construct functionality so that */
|
32
|
+
/* imported modules are search when locating a */
|
33
|
+
/* named construct. */
|
34
|
+
/* */
|
35
|
+
/* 6.40: Removed LOCALE definition. */
|
36
|
+
/* */
|
37
|
+
/* Pragma once and other inclusion changes. */
|
38
|
+
/* */
|
39
|
+
/* Added support for booleans with <stdbool.h>. */
|
40
|
+
/* */
|
41
|
+
/* Removed use of void pointers for specific */
|
42
|
+
/* data structures. */
|
43
|
+
/* */
|
44
|
+
/* ALLOW_ENVIRONMENT_GLOBALS no longer supported. */
|
45
|
+
/* */
|
46
|
+
/*************************************************************/
|
47
|
+
|
48
|
+
#ifndef _H_dffctdef
|
49
|
+
|
50
|
+
#pragma once
|
51
|
+
|
52
|
+
#define _H_dffctdef
|
53
|
+
|
54
|
+
typedef struct deffacts Deffacts;
|
55
|
+
|
56
|
+
#include "constrct.h"
|
57
|
+
#include "conscomp.h"
|
58
|
+
#include "cstrccom.h"
|
59
|
+
#include "evaluatn.h"
|
60
|
+
#include "expressn.h"
|
61
|
+
#include "moduldef.h"
|
62
|
+
#include "symbol.h"
|
63
|
+
|
64
|
+
#define DEFFACTS_DATA 0
|
65
|
+
|
66
|
+
struct deffactsData
|
67
|
+
{
|
68
|
+
Construct *DeffactsConstruct;
|
69
|
+
unsigned DeffactsModuleIndex;
|
70
|
+
#if CONSTRUCT_COMPILER && (! RUN_TIME)
|
71
|
+
struct CodeGeneratorItem *DeffactsCodeItem;
|
72
|
+
#endif
|
73
|
+
};
|
74
|
+
|
75
|
+
struct deffacts
|
76
|
+
{
|
77
|
+
ConstructHeader header;
|
78
|
+
struct expr *assertList;
|
79
|
+
};
|
80
|
+
|
81
|
+
struct deffactsModule
|
82
|
+
{
|
83
|
+
struct defmoduleItemHeader header;
|
84
|
+
};
|
85
|
+
|
86
|
+
#define DeffactsData(theEnv) ((struct deffactsData *) GetEnvironmentData(theEnv,DEFFACTS_DATA))
|
87
|
+
|
88
|
+
void InitializeDeffacts(Environment *);
|
89
|
+
Deffacts *FindDeffacts(Environment *,const char *);
|
90
|
+
Deffacts *FindDeffactsInModule(Environment *,const char *);
|
91
|
+
Deffacts *GetNextDeffacts(Environment *,Deffacts *);
|
92
|
+
void CreateInitialFactDeffacts(void);
|
93
|
+
bool DeffactsIsDeletable(Deffacts *);
|
94
|
+
struct deffactsModule *GetDeffactsModuleItem(Environment *,Defmodule *);
|
95
|
+
const char *DeffactsModule(Deffacts *);
|
96
|
+
const char *DeffactsName(Deffacts *);
|
97
|
+
const char *DeffactsPPForm(Deffacts *);
|
98
|
+
#if RUN_TIME
|
99
|
+
void DeffactsRunTimeInitialize(Environment *);
|
100
|
+
#endif
|
101
|
+
|
102
|
+
#endif /* _H_dffctdef */
|
103
|
+
|
104
|
+
|
@@ -0,0 +1,179 @@
|
|
1
|
+
/*******************************************************/
|
2
|
+
/* "C" Language Integrated Production System */
|
3
|
+
/* */
|
4
|
+
/* CLIPS Version 6.40 07/30/16 */
|
5
|
+
/* */
|
6
|
+
/* DEFFACTS PARSER MODULE */
|
7
|
+
/*******************************************************/
|
8
|
+
|
9
|
+
/*************************************************************/
|
10
|
+
/* Purpose: Parses a deffacts construct. */
|
11
|
+
/* */
|
12
|
+
/* Principal Programmer(s): */
|
13
|
+
/* Gary D. Riley */
|
14
|
+
/* */
|
15
|
+
/* Contributing Programmer(s): */
|
16
|
+
/* Brian L. Dantes */
|
17
|
+
/* */
|
18
|
+
/* Revision History: */
|
19
|
+
/* */
|
20
|
+
/* 6.30: Removed conditional code for unsupported */
|
21
|
+
/* compilers/operating systems (IBM_MCW and */
|
22
|
+
/* MAC_MCW). */
|
23
|
+
/* */
|
24
|
+
/* GetConstructNameAndComment API change. */
|
25
|
+
/* */
|
26
|
+
/* Added const qualifiers to remove C++ */
|
27
|
+
/* deprecation warnings. */
|
28
|
+
/* */
|
29
|
+
/* Changed find construct functionality so that */
|
30
|
+
/* imported modules are search when locating a */
|
31
|
+
/* named construct. */
|
32
|
+
/* */
|
33
|
+
/* 6.40: Pragma once and other inclusion changes. */
|
34
|
+
/* */
|
35
|
+
/* Added support for booleans with <stdbool.h>. */
|
36
|
+
/* */
|
37
|
+
/* Removed use of void pointers for specific */
|
38
|
+
/* data structures. */
|
39
|
+
/* */
|
40
|
+
/*************************************************************/
|
41
|
+
|
42
|
+
#include "setup.h"
|
43
|
+
|
44
|
+
#if DEFFACTS_CONSTRUCT
|
45
|
+
|
46
|
+
#if BLOAD || BLOAD_AND_BSAVE
|
47
|
+
#include "bload.h"
|
48
|
+
#endif
|
49
|
+
|
50
|
+
#include "cstrcpsr.h"
|
51
|
+
#include "dffctbsc.h"
|
52
|
+
#include "dffctdef.h"
|
53
|
+
#include "envrnmnt.h"
|
54
|
+
#include "factrhs.h"
|
55
|
+
#include "memalloc.h"
|
56
|
+
#include "modulutl.h"
|
57
|
+
#include "pprint.h"
|
58
|
+
#include "prntutil.h"
|
59
|
+
#include "router.h"
|
60
|
+
|
61
|
+
#include "dffctpsr.h"
|
62
|
+
|
63
|
+
/************************************************************/
|
64
|
+
/* ParseDeffacts: Coordinates all actions necessary for the */
|
65
|
+
/* addition of a deffacts construct into the current */
|
66
|
+
/* environment. Called when parsing a construct after the */
|
67
|
+
/* deffacts keyword has been found. */
|
68
|
+
/************************************************************/
|
69
|
+
bool ParseDeffacts(
|
70
|
+
Environment *theEnv,
|
71
|
+
const char *readSource)
|
72
|
+
{
|
73
|
+
#if (! RUN_TIME) && (! BLOAD_ONLY)
|
74
|
+
CLIPSLexeme *deffactsName;
|
75
|
+
struct expr *temp;
|
76
|
+
Deffacts *newDeffacts;
|
77
|
+
bool deffactsError;
|
78
|
+
struct token inputToken;
|
79
|
+
|
80
|
+
/*=========================*/
|
81
|
+
/* Parsing initialization. */
|
82
|
+
/*=========================*/
|
83
|
+
|
84
|
+
deffactsError = false;
|
85
|
+
SetPPBufferStatus(theEnv,true);
|
86
|
+
|
87
|
+
FlushPPBuffer(theEnv);
|
88
|
+
SetIndentDepth(theEnv,3);
|
89
|
+
SavePPBuffer(theEnv,"(deffacts ");
|
90
|
+
|
91
|
+
/*==========================================================*/
|
92
|
+
/* Deffacts can not be added when a binary image is loaded. */
|
93
|
+
/*==========================================================*/
|
94
|
+
|
95
|
+
#if BLOAD || BLOAD_AND_BSAVE
|
96
|
+
if ((Bloaded(theEnv) == true) && (! ConstructData(theEnv)->CheckSyntaxMode))
|
97
|
+
{
|
98
|
+
CannotLoadWithBloadMessage(theEnv,"deffacts");
|
99
|
+
return true;
|
100
|
+
}
|
101
|
+
#endif
|
102
|
+
|
103
|
+
/*============================*/
|
104
|
+
/* Parse the deffacts header. */
|
105
|
+
/*============================*/
|
106
|
+
|
107
|
+
deffactsName = GetConstructNameAndComment(theEnv,readSource,&inputToken,"deffacts",
|
108
|
+
(FindConstructFunction *) FindDeffactsInModule,
|
109
|
+
(DeleteConstructFunction *) Undeffacts,"$",true,
|
110
|
+
true,true,false);
|
111
|
+
if (deffactsName == NULL) { return true; }
|
112
|
+
|
113
|
+
/*===============================================*/
|
114
|
+
/* Parse the list of facts in the deffacts body. */
|
115
|
+
/*===============================================*/
|
116
|
+
|
117
|
+
temp = BuildRHSAssert(theEnv,readSource,&inputToken,&deffactsError,false,false,"deffacts");
|
118
|
+
|
119
|
+
if (deffactsError == true) { return true; }
|
120
|
+
|
121
|
+
if (ExpressionContainsVariables(temp,false))
|
122
|
+
{
|
123
|
+
LocalVariableErrorMessage(theEnv,"a deffacts construct");
|
124
|
+
ReturnExpression(theEnv,temp);
|
125
|
+
return true;
|
126
|
+
}
|
127
|
+
|
128
|
+
SavePPBuffer(theEnv,"\n");
|
129
|
+
|
130
|
+
/*==============================================*/
|
131
|
+
/* If we're only checking syntax, don't add the */
|
132
|
+
/* successfully parsed deffacts to the KB. */
|
133
|
+
/*==============================================*/
|
134
|
+
|
135
|
+
if (ConstructData(theEnv)->CheckSyntaxMode)
|
136
|
+
{
|
137
|
+
ReturnExpression(theEnv,temp);
|
138
|
+
return false;
|
139
|
+
}
|
140
|
+
|
141
|
+
/*==========================*/
|
142
|
+
/* Create the new deffacts. */
|
143
|
+
/*==========================*/
|
144
|
+
|
145
|
+
ExpressionInstall(theEnv,temp);
|
146
|
+
newDeffacts = get_struct(theEnv,deffacts);
|
147
|
+
IncrementLexemeCount(deffactsName);
|
148
|
+
InitializeConstructHeader(theEnv,"deffacts",DEFFACTS,&newDeffacts->header,deffactsName);
|
149
|
+
|
150
|
+
newDeffacts->assertList = PackExpression(theEnv,temp);
|
151
|
+
ReturnExpression(theEnv,temp);
|
152
|
+
|
153
|
+
/*=======================================================*/
|
154
|
+
/* Save the pretty print representation of the deffacts. */
|
155
|
+
/*=======================================================*/
|
156
|
+
|
157
|
+
if (GetConserveMemory(theEnv) == true)
|
158
|
+
{ newDeffacts->header.ppForm = NULL; }
|
159
|
+
else
|
160
|
+
{ newDeffacts->header.ppForm = CopyPPBuffer(theEnv); }
|
161
|
+
|
162
|
+
/*=============================================*/
|
163
|
+
/* Add the deffacts to the appropriate module. */
|
164
|
+
/*=============================================*/
|
165
|
+
|
166
|
+
AddConstructToModule(&newDeffacts->header);
|
167
|
+
|
168
|
+
#endif /* (! RUN_TIME) && (! BLOAD_ONLY) */
|
169
|
+
|
170
|
+
/*================================================================*/
|
171
|
+
/* Return false to indicate the deffacts was successfully parsed. */
|
172
|
+
/*================================================================*/
|
173
|
+
|
174
|
+
return false;
|
175
|
+
}
|
176
|
+
|
177
|
+
#endif /* DEFFACTS_CONSTRUCT */
|
178
|
+
|
179
|
+
|