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.
Files changed (346) hide show
  1. checksums.yaml +7 -0
  2. data/ext/clipsruby/agenda.c +1373 -0
  3. data/ext/clipsruby/agenda.h +169 -0
  4. data/ext/clipsruby/analysis.c +1142 -0
  5. data/ext/clipsruby/analysis.h +61 -0
  6. data/ext/clipsruby/argacces.c +526 -0
  7. data/ext/clipsruby/argacces.h +77 -0
  8. data/ext/clipsruby/bload.c +884 -0
  9. data/ext/clipsruby/bload.h +94 -0
  10. data/ext/clipsruby/bmathfun.c +557 -0
  11. data/ext/clipsruby/bmathfun.h +66 -0
  12. data/ext/clipsruby/bsave.c +634 -0
  13. data/ext/clipsruby/bsave.h +130 -0
  14. data/ext/clipsruby/classcom.c +976 -0
  15. data/ext/clipsruby/classcom.h +115 -0
  16. data/ext/clipsruby/classexm.c +1376 -0
  17. data/ext/clipsruby/classexm.h +97 -0
  18. data/ext/clipsruby/classfun.c +1392 -0
  19. data/ext/clipsruby/classfun.h +164 -0
  20. data/ext/clipsruby/classinf.c +1245 -0
  21. data/ext/clipsruby/classinf.h +94 -0
  22. data/ext/clipsruby/classini.c +843 -0
  23. data/ext/clipsruby/classini.h +75 -0
  24. data/ext/clipsruby/classpsr.c +957 -0
  25. data/ext/clipsruby/classpsr.h +73 -0
  26. data/ext/clipsruby/clips.h +133 -0
  27. data/ext/clipsruby/clipsruby.c +619 -0
  28. data/ext/clipsruby/clsltpsr.c +931 -0
  29. data/ext/clipsruby/clsltpsr.h +72 -0
  30. data/ext/clipsruby/commline.c +1217 -0
  31. data/ext/clipsruby/commline.h +131 -0
  32. data/ext/clipsruby/conscomp.c +1593 -0
  33. data/ext/clipsruby/conscomp.h +150 -0
  34. data/ext/clipsruby/constant.h +264 -0
  35. data/ext/clipsruby/constrct.c +1090 -0
  36. data/ext/clipsruby/constrct.h +216 -0
  37. data/ext/clipsruby/constrnt.c +554 -0
  38. data/ext/clipsruby/constrnt.h +132 -0
  39. data/ext/clipsruby/crstrtgy.c +1088 -0
  40. data/ext/clipsruby/crstrtgy.h +85 -0
  41. data/ext/clipsruby/cstrcbin.c +185 -0
  42. data/ext/clipsruby/cstrcbin.h +61 -0
  43. data/ext/clipsruby/cstrccmp.h +43 -0
  44. data/ext/clipsruby/cstrccom.c +1791 -0
  45. data/ext/clipsruby/cstrccom.h +115 -0
  46. data/ext/clipsruby/cstrcpsr.c +835 -0
  47. data/ext/clipsruby/cstrcpsr.h +97 -0
  48. data/ext/clipsruby/cstrnbin.c +282 -0
  49. data/ext/clipsruby/cstrnbin.h +55 -0
  50. data/ext/clipsruby/cstrnchk.c +826 -0
  51. data/ext/clipsruby/cstrnchk.h +91 -0
  52. data/ext/clipsruby/cstrncmp.c +238 -0
  53. data/ext/clipsruby/cstrncmp.h +57 -0
  54. data/ext/clipsruby/cstrnops.c +1176 -0
  55. data/ext/clipsruby/cstrnops.h +47 -0
  56. data/ext/clipsruby/cstrnpsr.c +1394 -0
  57. data/ext/clipsruby/cstrnpsr.h +88 -0
  58. data/ext/clipsruby/cstrnutl.c +564 -0
  59. data/ext/clipsruby/cstrnutl.h +54 -0
  60. data/ext/clipsruby/default.c +454 -0
  61. data/ext/clipsruby/default.h +57 -0
  62. data/ext/clipsruby/defins.c +971 -0
  63. data/ext/clipsruby/defins.h +127 -0
  64. data/ext/clipsruby/developr.c +677 -0
  65. data/ext/clipsruby/developr.h +69 -0
  66. data/ext/clipsruby/dffctbin.c +477 -0
  67. data/ext/clipsruby/dffctbin.h +76 -0
  68. data/ext/clipsruby/dffctbsc.c +308 -0
  69. data/ext/clipsruby/dffctbsc.h +72 -0
  70. data/ext/clipsruby/dffctcmp.c +297 -0
  71. data/ext/clipsruby/dffctcmp.h +44 -0
  72. data/ext/clipsruby/dffctdef.c +364 -0
  73. data/ext/clipsruby/dffctdef.h +104 -0
  74. data/ext/clipsruby/dffctpsr.c +179 -0
  75. data/ext/clipsruby/dffctpsr.h +49 -0
  76. data/ext/clipsruby/dffnxbin.c +520 -0
  77. data/ext/clipsruby/dffnxbin.h +67 -0
  78. data/ext/clipsruby/dffnxcmp.c +378 -0
  79. data/ext/clipsruby/dffnxcmp.h +54 -0
  80. data/ext/clipsruby/dffnxexe.c +241 -0
  81. data/ext/clipsruby/dffnxexe.h +58 -0
  82. data/ext/clipsruby/dffnxfun.c +1192 -0
  83. data/ext/clipsruby/dffnxfun.h +155 -0
  84. data/ext/clipsruby/dffnxpsr.c +514 -0
  85. data/ext/clipsruby/dffnxpsr.h +57 -0
  86. data/ext/clipsruby/dfinsbin.c +509 -0
  87. data/ext/clipsruby/dfinsbin.h +66 -0
  88. data/ext/clipsruby/dfinscmp.c +345 -0
  89. data/ext/clipsruby/dfinscmp.h +48 -0
  90. data/ext/clipsruby/drive.c +1191 -0
  91. data/ext/clipsruby/drive.h +65 -0
  92. data/ext/clipsruby/emathfun.c +1213 -0
  93. data/ext/clipsruby/emathfun.h +99 -0
  94. data/ext/clipsruby/engine.c +1568 -0
  95. data/ext/clipsruby/engine.h +203 -0
  96. data/ext/clipsruby/entities.h +276 -0
  97. data/ext/clipsruby/envrnbld.c +514 -0
  98. data/ext/clipsruby/envrnbld.h +40 -0
  99. data/ext/clipsruby/envrnmnt.c +257 -0
  100. data/ext/clipsruby/envrnmnt.h +112 -0
  101. data/ext/clipsruby/evaluatn.c +1736 -0
  102. data/ext/clipsruby/evaluatn.h +211 -0
  103. data/ext/clipsruby/expressn.c +494 -0
  104. data/ext/clipsruby/expressn.h +154 -0
  105. data/ext/clipsruby/exprnbin.c +538 -0
  106. data/ext/clipsruby/exprnbin.h +60 -0
  107. data/ext/clipsruby/exprnops.c +564 -0
  108. data/ext/clipsruby/exprnops.h +67 -0
  109. data/ext/clipsruby/exprnpsr.c +1112 -0
  110. data/ext/clipsruby/exprnpsr.h +98 -0
  111. data/ext/clipsruby/extconf.rb +2 -0
  112. data/ext/clipsruby/extnfunc.c +1015 -0
  113. data/ext/clipsruby/extnfunc.h +157 -0
  114. data/ext/clipsruby/factbin.c +447 -0
  115. data/ext/clipsruby/factbin.h +56 -0
  116. data/ext/clipsruby/factbld.c +1035 -0
  117. data/ext/clipsruby/factbld.h +63 -0
  118. data/ext/clipsruby/factcmp.c +386 -0
  119. data/ext/clipsruby/factcmp.h +46 -0
  120. data/ext/clipsruby/factcom.c +759 -0
  121. data/ext/clipsruby/factcom.h +80 -0
  122. data/ext/clipsruby/factfile.c +1761 -0
  123. data/ext/clipsruby/factfile.h +54 -0
  124. data/ext/clipsruby/factfun.c +682 -0
  125. data/ext/clipsruby/factfun.h +77 -0
  126. data/ext/clipsruby/factgen.c +1305 -0
  127. data/ext/clipsruby/factgen.h +229 -0
  128. data/ext/clipsruby/facthsh.c +438 -0
  129. data/ext/clipsruby/facthsh.h +81 -0
  130. data/ext/clipsruby/factlhs.c +250 -0
  131. data/ext/clipsruby/factlhs.h +54 -0
  132. data/ext/clipsruby/factmch.c +905 -0
  133. data/ext/clipsruby/factmch.h +68 -0
  134. data/ext/clipsruby/factmngr.c +3373 -0
  135. data/ext/clipsruby/factmngr.h +325 -0
  136. data/ext/clipsruby/factprt.c +498 -0
  137. data/ext/clipsruby/factprt.h +60 -0
  138. data/ext/clipsruby/factqpsr.c +796 -0
  139. data/ext/clipsruby/factqpsr.h +61 -0
  140. data/ext/clipsruby/factqury.c +1267 -0
  141. data/ext/clipsruby/factqury.h +112 -0
  142. data/ext/clipsruby/factrete.c +978 -0
  143. data/ext/clipsruby/factrete.h +70 -0
  144. data/ext/clipsruby/factrhs.c +667 -0
  145. data/ext/clipsruby/factrhs.h +55 -0
  146. data/ext/clipsruby/filecom.c +353 -0
  147. data/ext/clipsruby/filecom.h +137 -0
  148. data/ext/clipsruby/filertr.c +481 -0
  149. data/ext/clipsruby/filertr.h +94 -0
  150. data/ext/clipsruby/fileutil.c +1020 -0
  151. data/ext/clipsruby/fileutil.h +50 -0
  152. data/ext/clipsruby/generate.c +1079 -0
  153. data/ext/clipsruby/generate.h +57 -0
  154. data/ext/clipsruby/genrcbin.c +902 -0
  155. data/ext/clipsruby/genrcbin.h +69 -0
  156. data/ext/clipsruby/genrccmp.c +640 -0
  157. data/ext/clipsruby/genrccmp.h +59 -0
  158. data/ext/clipsruby/genrccom.c +2017 -0
  159. data/ext/clipsruby/genrccom.h +119 -0
  160. data/ext/clipsruby/genrcexe.c +737 -0
  161. data/ext/clipsruby/genrcexe.h +73 -0
  162. data/ext/clipsruby/genrcfun.c +890 -0
  163. data/ext/clipsruby/genrcfun.h +185 -0
  164. data/ext/clipsruby/genrcpsr.c +1618 -0
  165. data/ext/clipsruby/genrcpsr.h +80 -0
  166. data/ext/clipsruby/globlbin.c +458 -0
  167. data/ext/clipsruby/globlbin.h +71 -0
  168. data/ext/clipsruby/globlbsc.c +361 -0
  169. data/ext/clipsruby/globlbsc.h +83 -0
  170. data/ext/clipsruby/globlcmp.c +330 -0
  171. data/ext/clipsruby/globlcmp.h +52 -0
  172. data/ext/clipsruby/globlcom.c +289 -0
  173. data/ext/clipsruby/globlcom.h +63 -0
  174. data/ext/clipsruby/globldef.c +1087 -0
  175. data/ext/clipsruby/globldef.h +151 -0
  176. data/ext/clipsruby/globlpsr.c +530 -0
  177. data/ext/clipsruby/globlpsr.h +59 -0
  178. data/ext/clipsruby/immthpsr.c +431 -0
  179. data/ext/clipsruby/immthpsr.h +55 -0
  180. data/ext/clipsruby/incrrset.c +530 -0
  181. data/ext/clipsruby/incrrset.h +73 -0
  182. data/ext/clipsruby/inherpsr.c +850 -0
  183. data/ext/clipsruby/inherpsr.h +52 -0
  184. data/ext/clipsruby/inscom.c +2076 -0
  185. data/ext/clipsruby/inscom.h +182 -0
  186. data/ext/clipsruby/insfile.c +1764 -0
  187. data/ext/clipsruby/insfile.h +96 -0
  188. data/ext/clipsruby/insfun.c +1451 -0
  189. data/ext/clipsruby/insfun.h +134 -0
  190. data/ext/clipsruby/insmngr.c +2550 -0
  191. data/ext/clipsruby/insmngr.h +125 -0
  192. data/ext/clipsruby/insmoddp.c +1041 -0
  193. data/ext/clipsruby/insmoddp.h +91 -0
  194. data/ext/clipsruby/insmult.c +804 -0
  195. data/ext/clipsruby/insmult.h +62 -0
  196. data/ext/clipsruby/inspsr.c +602 -0
  197. data/ext/clipsruby/inspsr.h +60 -0
  198. data/ext/clipsruby/insquery.c +1278 -0
  199. data/ext/clipsruby/insquery.h +115 -0
  200. data/ext/clipsruby/insqypsr.c +729 -0
  201. data/ext/clipsruby/insqypsr.h +63 -0
  202. data/ext/clipsruby/iofun.c +2045 -0
  203. data/ext/clipsruby/iofun.h +116 -0
  204. data/ext/clipsruby/lgcldpnd.c +644 -0
  205. data/ext/clipsruby/lgcldpnd.h +75 -0
  206. data/ext/clipsruby/main.c +112 -0
  207. data/ext/clipsruby/match.h +142 -0
  208. data/ext/clipsruby/memalloc.c +481 -0
  209. data/ext/clipsruby/memalloc.h +197 -0
  210. data/ext/clipsruby/miscfun.c +1801 -0
  211. data/ext/clipsruby/miscfun.h +132 -0
  212. data/ext/clipsruby/modulbin.c +607 -0
  213. data/ext/clipsruby/modulbin.h +84 -0
  214. data/ext/clipsruby/modulbsc.c +347 -0
  215. data/ext/clipsruby/modulbsc.h +67 -0
  216. data/ext/clipsruby/modulcmp.c +499 -0
  217. data/ext/clipsruby/modulcmp.h +54 -0
  218. data/ext/clipsruby/moduldef.c +817 -0
  219. data/ext/clipsruby/moduldef.h +271 -0
  220. data/ext/clipsruby/modulpsr.c +1150 -0
  221. data/ext/clipsruby/modulpsr.h +69 -0
  222. data/ext/clipsruby/modulutl.c +1036 -0
  223. data/ext/clipsruby/modulutl.h +84 -0
  224. data/ext/clipsruby/msgcom.c +1221 -0
  225. data/ext/clipsruby/msgcom.h +125 -0
  226. data/ext/clipsruby/msgfun.c +1076 -0
  227. data/ext/clipsruby/msgfun.h +118 -0
  228. data/ext/clipsruby/msgpass.c +1441 -0
  229. data/ext/clipsruby/msgpass.h +103 -0
  230. data/ext/clipsruby/msgpsr.c +698 -0
  231. data/ext/clipsruby/msgpsr.h +73 -0
  232. data/ext/clipsruby/multifld.c +1404 -0
  233. data/ext/clipsruby/multifld.h +130 -0
  234. data/ext/clipsruby/multifun.c +2182 -0
  235. data/ext/clipsruby/multifun.h +102 -0
  236. data/ext/clipsruby/network.h +142 -0
  237. data/ext/clipsruby/objbin.c +1522 -0
  238. data/ext/clipsruby/objbin.h +79 -0
  239. data/ext/clipsruby/objcmp.c +1507 -0
  240. data/ext/clipsruby/objcmp.h +71 -0
  241. data/ext/clipsruby/object.h +260 -0
  242. data/ext/clipsruby/objrtbin.c +701 -0
  243. data/ext/clipsruby/objrtbin.h +79 -0
  244. data/ext/clipsruby/objrtbld.c +2393 -0
  245. data/ext/clipsruby/objrtbld.h +66 -0
  246. data/ext/clipsruby/objrtcmp.c +734 -0
  247. data/ext/clipsruby/objrtcmp.h +66 -0
  248. data/ext/clipsruby/objrtfnx.c +1330 -0
  249. data/ext/clipsruby/objrtfnx.h +222 -0
  250. data/ext/clipsruby/objrtgen.c +736 -0
  251. data/ext/clipsruby/objrtgen.h +63 -0
  252. data/ext/clipsruby/objrtmch.c +1524 -0
  253. data/ext/clipsruby/objrtmch.h +160 -0
  254. data/ext/clipsruby/parsefun.c +415 -0
  255. data/ext/clipsruby/parsefun.h +67 -0
  256. data/ext/clipsruby/pattern.c +1265 -0
  257. data/ext/clipsruby/pattern.h +163 -0
  258. data/ext/clipsruby/pprint.c +328 -0
  259. data/ext/clipsruby/pprint.h +79 -0
  260. data/ext/clipsruby/prccode.c +1478 -0
  261. data/ext/clipsruby/prccode.h +145 -0
  262. data/ext/clipsruby/prcdrfun.c +640 -0
  263. data/ext/clipsruby/prcdrfun.h +95 -0
  264. data/ext/clipsruby/prcdrpsr.c +1068 -0
  265. data/ext/clipsruby/prcdrpsr.h +79 -0
  266. data/ext/clipsruby/prdctfun.c +869 -0
  267. data/ext/clipsruby/prdctfun.h +77 -0
  268. data/ext/clipsruby/prntutil.c +878 -0
  269. data/ext/clipsruby/prntutil.h +125 -0
  270. data/ext/clipsruby/proflfun.c +827 -0
  271. data/ext/clipsruby/proflfun.h +118 -0
  272. data/ext/clipsruby/reorder.c +2082 -0
  273. data/ext/clipsruby/reorder.h +172 -0
  274. data/ext/clipsruby/reteutil.c +1732 -0
  275. data/ext/clipsruby/reteutil.h +111 -0
  276. data/ext/clipsruby/retract.c +710 -0
  277. data/ext/clipsruby/retract.h +74 -0
  278. data/ext/clipsruby/router.c +737 -0
  279. data/ext/clipsruby/router.h +147 -0
  280. data/ext/clipsruby/rulebin.c +1136 -0
  281. data/ext/clipsruby/rulebin.h +153 -0
  282. data/ext/clipsruby/rulebld.c +1328 -0
  283. data/ext/clipsruby/rulebld.h +62 -0
  284. data/ext/clipsruby/rulebsc.c +517 -0
  285. data/ext/clipsruby/rulebsc.h +91 -0
  286. data/ext/clipsruby/rulecmp.c +733 -0
  287. data/ext/clipsruby/rulecmp.h +63 -0
  288. data/ext/clipsruby/rulecom.c +1583 -0
  289. data/ext/clipsruby/rulecom.h +116 -0
  290. data/ext/clipsruby/rulecstr.c +892 -0
  291. data/ext/clipsruby/rulecstr.h +53 -0
  292. data/ext/clipsruby/ruledef.c +559 -0
  293. data/ext/clipsruby/ruledef.h +179 -0
  294. data/ext/clipsruby/ruledlt.c +599 -0
  295. data/ext/clipsruby/ruledlt.h +58 -0
  296. data/ext/clipsruby/rulelhs.c +1216 -0
  297. data/ext/clipsruby/rulelhs.h +52 -0
  298. data/ext/clipsruby/rulepsr.c +1073 -0
  299. data/ext/clipsruby/rulepsr.h +61 -0
  300. data/ext/clipsruby/scanner.c +856 -0
  301. data/ext/clipsruby/scanner.h +112 -0
  302. data/ext/clipsruby/setup.h +488 -0
  303. data/ext/clipsruby/sortfun.c +433 -0
  304. data/ext/clipsruby/sortfun.h +55 -0
  305. data/ext/clipsruby/strngfun.c +1173 -0
  306. data/ext/clipsruby/strngfun.h +96 -0
  307. data/ext/clipsruby/strngrtr.c +523 -0
  308. data/ext/clipsruby/strngrtr.h +97 -0
  309. data/ext/clipsruby/symblbin.c +648 -0
  310. data/ext/clipsruby/symblbin.h +64 -0
  311. data/ext/clipsruby/symblcmp.c +893 -0
  312. data/ext/clipsruby/symblcmp.h +61 -0
  313. data/ext/clipsruby/symbol.c +1961 -0
  314. data/ext/clipsruby/symbol.h +243 -0
  315. data/ext/clipsruby/sysdep.c +894 -0
  316. data/ext/clipsruby/sysdep.h +164 -0
  317. data/ext/clipsruby/textpro.c +1388 -0
  318. data/ext/clipsruby/textpro.h +77 -0
  319. data/ext/clipsruby/tmpltbin.c +609 -0
  320. data/ext/clipsruby/tmpltbin.h +108 -0
  321. data/ext/clipsruby/tmpltbsc.c +327 -0
  322. data/ext/clipsruby/tmpltbsc.h +87 -0
  323. data/ext/clipsruby/tmpltcmp.c +450 -0
  324. data/ext/clipsruby/tmpltcmp.h +57 -0
  325. data/ext/clipsruby/tmpltdef.c +584 -0
  326. data/ext/clipsruby/tmpltdef.h +155 -0
  327. data/ext/clipsruby/tmpltfun.c +2477 -0
  328. data/ext/clipsruby/tmpltfun.h +122 -0
  329. data/ext/clipsruby/tmpltlhs.c +379 -0
  330. data/ext/clipsruby/tmpltlhs.h +50 -0
  331. data/ext/clipsruby/tmpltpsr.c +819 -0
  332. data/ext/clipsruby/tmpltpsr.h +59 -0
  333. data/ext/clipsruby/tmpltrhs.c +595 -0
  334. data/ext/clipsruby/tmpltrhs.h +55 -0
  335. data/ext/clipsruby/tmpltutl.c +637 -0
  336. data/ext/clipsruby/tmpltutl.h +82 -0
  337. data/ext/clipsruby/userdata.c +156 -0
  338. data/ext/clipsruby/userdata.h +72 -0
  339. data/ext/clipsruby/userfunctions.c +70 -0
  340. data/ext/clipsruby/usrsetup.h +7 -0
  341. data/ext/clipsruby/utility.c +1594 -0
  342. data/ext/clipsruby/utility.h +250 -0
  343. data/ext/clipsruby/watch.c +865 -0
  344. data/ext/clipsruby/watch.h +124 -0
  345. data/lib/clipsruby.rb +1 -0
  346. metadata +388 -0
@@ -0,0 +1,163 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 11/01/16 */
5
+ /* */
6
+ /* PATTERN HEADER FILE */
7
+ /*******************************************************/
8
+
9
+ /*************************************************************/
10
+ /* Purpose: Provides the mechanism for recognizing and */
11
+ /* parsing the various types of patterns that can be used */
12
+ /* in the LHS of a rule. In version 6.0, the only pattern */
13
+ /* types provided are for deftemplate and instance */
14
+ /* patterns. */
15
+ /* */
16
+ /* Principal Programmer(s): */
17
+ /* Gary D. Riley */
18
+ /* */
19
+ /* Contributing Programmer(s): */
20
+ /* */
21
+ /* Revision History: */
22
+ /* */
23
+ /* 6.24: Removed LOGICAL_DEPENDENCIES compilation flag. */
24
+ /* */
25
+ /* Renamed BOOLEAN macro type to intBool. */
26
+ /* */
27
+ /* 6.30: Added support for hashed alpha memories. */
28
+ /* */
29
+ /* Added const qualifiers to remove C++ */
30
+ /* deprecation warnings. */
31
+ /* */
32
+ /* 6.40: Removed LOCALE definition. */
33
+ /* */
34
+ /* Pragma once and other inclusion changes. */
35
+ /* */
36
+ /* Added support for booleans with <stdbool.h>. */
37
+ /* */
38
+ /* Removed use of void pointers for specific */
39
+ /* data structures. */
40
+ /* */
41
+ /* Removed initial-fact and initial-object */
42
+ /* support. */
43
+ /* */
44
+ /*************************************************************/
45
+
46
+ #ifndef _H_pattern
47
+
48
+ #pragma once
49
+
50
+ #define _H_pattern
51
+
52
+ #include <stdio.h>
53
+
54
+ #include "evaluatn.h"
55
+ #include "entities.h"
56
+
57
+
58
+ #ifndef _H_symbol
59
+ #include "symbol.h"
60
+ #endif
61
+ #ifndef _H_scanner
62
+ #include "scanner.h"
63
+ #endif
64
+ #ifndef _H_expressn
65
+ #include "expressn.h"
66
+ #endif
67
+ #ifndef _H_match
68
+ #include "match.h"
69
+ #endif
70
+ #ifndef _H_reorder
71
+ #include "reorder.h"
72
+ #endif
73
+ #ifndef _H_constrnt
74
+ #include "constrnt.h"
75
+ #endif
76
+
77
+ #define MAXIMUM_NUMBER_OF_PATTERNS 128
78
+
79
+ struct patternParser
80
+ {
81
+ const char *name;
82
+ struct patternEntityRecord *entityType;
83
+ unsigned short positionInArray;
84
+ bool (*recognizeFunction)(CLIPSLexeme *);
85
+ struct lhsParseNode *(*parseFunction)(Environment *,const char *,struct token *);
86
+ bool (*postAnalysisFunction)(Environment *,struct lhsParseNode *);
87
+ struct patternNodeHeader *(*addPatternFunction)(Environment *,struct lhsParseNode *);
88
+ void (*removePatternFunction)(Environment *,struct patternNodeHeader *);
89
+ struct expr *(*genJNConstantFunction)(void *,struct lhsParseNode *,int);
90
+ void (*replaceGetJNValueFunction)(Environment *,struct expr *,struct lhsParseNode *,int);
91
+ struct expr *(*genGetJNValueFunction)(Environment *,struct lhsParseNode *,int);
92
+ struct expr *(*genCompareJNValuesFunction)(Environment *,struct lhsParseNode *,struct lhsParseNode *,bool);
93
+ struct expr *(*genPNConstantFunction)(Environment *,struct lhsParseNode *);
94
+ void (*replaceGetPNValueFunction)(Environment *,struct expr *,struct lhsParseNode *);
95
+ struct expr *(*genGetPNValueFunction)(Environment *,struct lhsParseNode *);
96
+ struct expr *(*genComparePNValuesFunction)(Environment *,struct lhsParseNode *,struct lhsParseNode *);
97
+ void (*returnUserDataFunction)(Environment *,void *);
98
+ void *(*copyUserDataFunction)(Environment *,void *);
99
+ void (*markIRPatternFunction)(Environment *,struct patternNodeHeader *,bool);
100
+ void (*incrementalResetFunction)(Environment *);
101
+ void (*codeReferenceFunction)(Environment *,void *,FILE *,unsigned int,unsigned int);
102
+ int priority;
103
+ struct patternParser *next;
104
+ };
105
+
106
+ struct reservedSymbol
107
+ {
108
+ const char *theSymbol;
109
+ const char *reservedBy;
110
+ struct reservedSymbol *next;
111
+ };
112
+
113
+ #define MAX_POSITIONS 8
114
+
115
+ #define PATTERN_DATA 19
116
+
117
+ struct patternData
118
+ {
119
+ struct patternParser *ListOfPatternParsers;
120
+ struct patternParser *PatternParserArray[MAX_POSITIONS];
121
+ unsigned short NextPosition;
122
+ struct reservedSymbol *ListOfReservedPatternSymbols;
123
+ bool WithinNotCE;
124
+ int GlobalSalience;
125
+ bool GlobalAutoFocus;
126
+ struct expr *SalienceExpression;
127
+ struct patternNodeHashEntry **PatternHashTable;
128
+ unsigned long PatternHashTableSize;
129
+ };
130
+
131
+ #define PatternData(theEnv) ((struct patternData *) GetEnvironmentData(theEnv,PATTERN_DATA))
132
+
133
+ void InitializePatterns(Environment *);
134
+ bool AddPatternParser(Environment *,struct patternParser *);
135
+ struct patternParser *FindPatternParser(Environment *,const char *);
136
+ void DetachPattern(Environment *,unsigned short,struct patternNodeHeader *);
137
+ void GetNextPatternEntity(Environment *,
138
+ struct patternParser **,
139
+ struct patternEntity **);
140
+ struct patternParser *GetPatternParser(Environment *,unsigned short);
141
+ struct lhsParseNode *RestrictionParse(Environment *,const char *,struct token *,bool,
142
+ CLIPSLexeme *,unsigned short,
143
+ struct constraintRecord *,unsigned short);
144
+ bool PostPatternAnalysis(Environment *,struct lhsParseNode *);
145
+ void PatternNodeHeaderToCode(Environment *,FILE *,struct patternNodeHeader *,
146
+ unsigned int,unsigned int);
147
+ void AddReservedPatternSymbol(Environment *,const char *,const char *);
148
+ bool ReservedPatternSymbol(Environment *,const char *,const char *);
149
+ void ReservedPatternSymbolErrorMsg(Environment *,const char *,const char *);
150
+ void AddHashedPatternNode(Environment *,void *,void *,unsigned short,void *);
151
+ bool RemoveHashedPatternNode(Environment *,void *,void *,unsigned short,void *);
152
+ void *FindHashedPatternNode(Environment *,void *,unsigned short,void *);
153
+
154
+ #endif /* _H_pattern */
155
+
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+
@@ -0,0 +1,328 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 10/02/17 */
5
+ /* */
6
+ /* PRETTY PRINT MODULE */
7
+ /*******************************************************/
8
+
9
+ /*************************************************************/
10
+ /* Purpose: Routines for processing the pretty print */
11
+ /* representation of constructs. */
12
+ /* */
13
+ /* Principal Programmer(s): */
14
+ /* Gary D. Riley */
15
+ /* */
16
+ /* Contributing Programmer(s): */
17
+ /* Chris Culbert */
18
+ /* Brian Dantes */
19
+ /* */
20
+ /* Revision History: */
21
+ /* */
22
+ /* 6.24: Corrected code generating compilation */
23
+ /* warnings. */
24
+ /* */
25
+ /* 6.30: Changed integer type/precision. */
26
+ /* */
27
+ /* Used genstrcpy instead of strcpy. */
28
+ /* */
29
+ /* Added const qualifiers to remove C++ */
30
+ /* deprecation warnings. */
31
+ /* */
32
+ /* 6.31: Fix for pretty print buffer overflow. */
33
+ /* */
34
+ /* 6.40: Added NULL pointer check in CopyPPBuffer. */
35
+ /* */
36
+ /* Pragma once and other inclusion changes. */
37
+ /* */
38
+ /* Added support for booleans with <stdbool.h>. */
39
+ /* */
40
+ /* Removed use of void pointers for specific */
41
+ /* data structures. */
42
+ /* */
43
+ /*************************************************************/
44
+
45
+ #include <stdio.h>
46
+ #include <string.h>
47
+ #include <ctype.h>
48
+
49
+ #include "setup.h"
50
+
51
+ #include "constant.h"
52
+ #include "envrnmnt.h"
53
+ #include "memalloc.h"
54
+ #include "sysdep.h"
55
+ #include "utility.h"
56
+
57
+ #include "pprint.h"
58
+
59
+ #define PP_CR_FIXED_BUFFER_SIZE 120
60
+
61
+ /***************************************/
62
+ /* LOCAL INTERNAL FUNCTION DEFINITIONS */
63
+ /***************************************/
64
+
65
+ static void DeallocatePrettyPrintData(Environment *);
66
+
67
+ /****************************************************/
68
+ /* InitializePrettyPrintData: Allocates environment */
69
+ /* data for pretty print routines. */
70
+ /****************************************************/
71
+ void InitializePrettyPrintData(
72
+ Environment *theEnv)
73
+ {
74
+ AllocateEnvironmentData(theEnv,PRETTY_PRINT_DATA,sizeof(struct prettyPrintData),DeallocatePrettyPrintData);
75
+
76
+ PrettyPrintData(theEnv)->PPBufferEnabled = true;
77
+ }
78
+
79
+ /******************************************************/
80
+ /* DeallocatePrettyPrintData: Deallocates environment */
81
+ /* data for the pretty print routines. */
82
+ /******************************************************/
83
+ static void DeallocatePrettyPrintData(
84
+ Environment *theEnv)
85
+ {
86
+ if (PrettyPrintData(theEnv)->PrettyPrintBuffer != NULL)
87
+ { rm(theEnv,PrettyPrintData(theEnv)->PrettyPrintBuffer,PrettyPrintData(theEnv)->PPBufferMax); }
88
+ }
89
+
90
+ /*******************************************************/
91
+ /* FlushPPBuffer: Resets the pretty print save buffer. */
92
+ /*******************************************************/
93
+ void FlushPPBuffer(
94
+ Environment *theEnv)
95
+ {
96
+ if (PrettyPrintData(theEnv)->PrettyPrintBuffer == NULL) return;
97
+ PrettyPrintData(theEnv)->PPBackupOnce = 0;
98
+ PrettyPrintData(theEnv)->PPBackupTwice = 0;
99
+ PrettyPrintData(theEnv)->PPBufferPos = 0;
100
+ PrettyPrintData(theEnv)->PrettyPrintBuffer[0] = EOS;
101
+ return;
102
+ }
103
+
104
+ /*********************************************************************/
105
+ /* DestroyPPBuffer: Resets and removes the pretty print save buffer. */
106
+ /*********************************************************************/
107
+ void DestroyPPBuffer(
108
+ Environment *theEnv)
109
+ {
110
+ PrettyPrintData(theEnv)->PPBackupOnce = 0;
111
+ PrettyPrintData(theEnv)->PPBackupTwice = 0;
112
+ PrettyPrintData(theEnv)->PPBufferPos = 0;
113
+ if (PrettyPrintData(theEnv)->PrettyPrintBuffer != NULL) rm(theEnv,PrettyPrintData(theEnv)->PrettyPrintBuffer,PrettyPrintData(theEnv)->PPBufferMax);
114
+ PrettyPrintData(theEnv)->PrettyPrintBuffer = NULL;
115
+ PrettyPrintData(theEnv)->PPBufferMax = 0;
116
+ }
117
+
118
+ /*********************************************/
119
+ /* SavePPBuffer: Appends a string to the end */
120
+ /* of the pretty print save buffer. */
121
+ /*********************************************/
122
+ void SavePPBuffer(
123
+ Environment *theEnv,
124
+ const char *str)
125
+ {
126
+ size_t increment;
127
+
128
+ /*==========================================*/
129
+ /* If the pretty print buffer isn't needed, */
130
+ /* then don't bother writing to it. */
131
+ /*==========================================*/
132
+
133
+ if ((PrettyPrintData(theEnv)->PPBufferStatus == false) || (! PrettyPrintData(theEnv)->PPBufferEnabled))
134
+ { return; }
135
+
136
+ /*===============================*/
137
+ /* Determine the increment size. */
138
+ /*===============================*/
139
+
140
+ increment = 512;
141
+ if (PrettyPrintData(theEnv)->PPBufferPos > increment)
142
+ { increment = PrettyPrintData(theEnv)->PPBufferPos * 3; }
143
+
144
+ /*================================================*/
145
+ /* If the pretty print buffer isn't big enough to */
146
+ /* contain the string, then increase its size. */
147
+ /*================================================*/
148
+
149
+ if (strlen(str) + PrettyPrintData(theEnv)->PPBufferPos + 1 >= PrettyPrintData(theEnv)->PPBufferMax)
150
+ {
151
+ PrettyPrintData(theEnv)->PrettyPrintBuffer =
152
+ (char *) genrealloc(theEnv,PrettyPrintData(theEnv)->PrettyPrintBuffer,
153
+ PrettyPrintData(theEnv)->PPBufferMax,
154
+ PrettyPrintData(theEnv)->PPBufferMax + increment);
155
+ PrettyPrintData(theEnv)->PPBufferMax += increment;
156
+ }
157
+
158
+ /*==================================================*/
159
+ /* Remember the previous tokens saved to the pretty */
160
+ /* print buffer in case it is necessary to back up. */
161
+ /*==================================================*/
162
+
163
+ PrettyPrintData(theEnv)->PPBackupTwice = PrettyPrintData(theEnv)->PPBackupOnce;
164
+ PrettyPrintData(theEnv)->PPBackupOnce = PrettyPrintData(theEnv)->PPBufferPos;
165
+
166
+ /*=============================================*/
167
+ /* Save the string to the pretty print buffer. */
168
+ /*=============================================*/
169
+
170
+ PrettyPrintData(theEnv)->PrettyPrintBuffer = AppendToString(theEnv,str,PrettyPrintData(theEnv)->PrettyPrintBuffer,&PrettyPrintData(theEnv)->PPBufferPos,&PrettyPrintData(theEnv)->PPBufferMax);
171
+ }
172
+
173
+ /***************************************************/
174
+ /* PPBackup: Removes the last string added to the */
175
+ /* pretty print save buffer. Only capable of */
176
+ /* backing up for the two most recent additions. */
177
+ /***************************************************/
178
+ void PPBackup(
179
+ Environment *theEnv)
180
+ {
181
+ if ((PrettyPrintData(theEnv)->PPBufferStatus == false) ||
182
+ (PrettyPrintData(theEnv)->PrettyPrintBuffer == NULL) ||
183
+ (! PrettyPrintData(theEnv)->PPBufferEnabled))
184
+ { return; }
185
+
186
+ PrettyPrintData(theEnv)->PPBufferPos = PrettyPrintData(theEnv)->PPBackupOnce;
187
+ PrettyPrintData(theEnv)->PPBackupOnce = PrettyPrintData(theEnv)->PPBackupTwice;
188
+ PrettyPrintData(theEnv)->PrettyPrintBuffer[PrettyPrintData(theEnv)->PPBufferPos] = EOS;
189
+ }
190
+
191
+ /**************************************************/
192
+ /* CopyPPBuffer: Makes a copy of the pretty print */
193
+ /* save buffer. */
194
+ /**************************************************/
195
+ char *CopyPPBuffer(
196
+ Environment *theEnv)
197
+ {
198
+ size_t length;
199
+ char *newString;
200
+ char *theBuffer = PrettyPrintData(theEnv)->PrettyPrintBuffer;
201
+
202
+ if (theBuffer == NULL) return NULL;
203
+
204
+ length = (1 + strlen(theBuffer)) * sizeof(char);
205
+ newString = (char *) gm2(theEnv,length);
206
+
207
+ genstrcpy(newString,theBuffer);
208
+ return(newString);
209
+ }
210
+
211
+ /************************************************************/
212
+ /* GetPPBuffer: Returns a pointer to the PrettyPrintBuffer. */
213
+ /************************************************************/
214
+ char *GetPPBuffer(
215
+ Environment *theEnv)
216
+ {
217
+ return(PrettyPrintData(theEnv)->PrettyPrintBuffer);
218
+ }
219
+
220
+ /*******************************************/
221
+ /* PPCRAndIndent: Prints white spaces into */
222
+ /* the pretty print buffer. */
223
+ /*******************************************/
224
+ void PPCRAndIndent(
225
+ Environment *theEnv)
226
+ {
227
+ size_t i;
228
+ char *buffer;
229
+ char fixedBuffer[PP_CR_FIXED_BUFFER_SIZE];
230
+
231
+ if ((PrettyPrintData(theEnv)->PPBufferStatus == false) ||
232
+ (! PrettyPrintData(theEnv)->PPBufferEnabled))
233
+ { return; }
234
+
235
+ if ((PrettyPrintData(theEnv)->IndentationDepth + 2) > PP_CR_FIXED_BUFFER_SIZE)
236
+ { buffer = (char *) genalloc(theEnv,PrettyPrintData(theEnv)->IndentationDepth + 2);}
237
+ else
238
+ { buffer = fixedBuffer; }
239
+
240
+ buffer[0] = '\n';
241
+
242
+ for (i = 1 ; i <= PrettyPrintData(theEnv)->IndentationDepth ; i++)
243
+ { buffer[i] = ' '; }
244
+ buffer[i] = EOS;
245
+
246
+ SavePPBuffer(theEnv,buffer);
247
+
248
+ if ((PrettyPrintData(theEnv)->IndentationDepth + 2) > PP_CR_FIXED_BUFFER_SIZE)
249
+ { genfree(theEnv,buffer,PrettyPrintData(theEnv)->IndentationDepth + 2);}
250
+ }
251
+
252
+ /************************************************/
253
+ /* IncrementIndentDepth: Increments indentation */
254
+ /* depth for pretty printing. */
255
+ /************************************************/
256
+ void IncrementIndentDepth(
257
+ Environment *theEnv,
258
+ size_t value)
259
+ {
260
+ PrettyPrintData(theEnv)->IndentationDepth += value;
261
+ }
262
+
263
+ /************************************************/
264
+ /* DecrementIndentDepth: Decrements indentation */
265
+ /* depth for pretty printing. */
266
+ /************************************************/
267
+ void DecrementIndentDepth(
268
+ Environment *theEnv,
269
+ size_t value)
270
+ {
271
+ PrettyPrintData(theEnv)->IndentationDepth -= value;
272
+ }
273
+
274
+ /************************************/
275
+ /* SetIndentDepth: Sets indentation */
276
+ /* depth for pretty printing. */
277
+ /************************************/
278
+ void SetIndentDepth(
279
+ Environment *theEnv,
280
+ size_t value)
281
+ {
282
+ PrettyPrintData(theEnv)->IndentationDepth = value;
283
+ }
284
+
285
+ /******************************************/
286
+ /* SetPPBufferStatus: Sets PPBufferStatus */
287
+ /* flag to boolean value of ON or OFF. */
288
+ /******************************************/
289
+ void SetPPBufferStatus(
290
+ Environment *theEnv,
291
+ bool value)
292
+ {
293
+ PrettyPrintData(theEnv)->PPBufferStatus = value;
294
+ }
295
+
296
+ /************************************/
297
+ /* GetPPBufferStatus: Returns value */
298
+ /* of the PPBufferStatus flag. */
299
+ /************************************/
300
+ bool GetPPBufferStatus(
301
+ Environment *theEnv)
302
+ {
303
+ return(PrettyPrintData(theEnv)->PPBufferStatus);
304
+ }
305
+
306
+ /***********************/
307
+ /* SetPPBufferEnabled: */
308
+ /***********************/
309
+ bool SetPPBufferEnabled(
310
+ Environment *theEnv,
311
+ bool value)
312
+ {
313
+ bool oldValue;
314
+
315
+ oldValue = PrettyPrintData(theEnv)->PPBufferEnabled;
316
+ PrettyPrintData(theEnv)->PPBufferEnabled = value;
317
+ return oldValue;
318
+ }
319
+
320
+ /***********************/
321
+ /* GetPPBufferEnabled: */
322
+ /***********************/
323
+ bool GetPPBufferEnabled(
324
+ Environment *theEnv)
325
+ {
326
+ return PrettyPrintData(theEnv)->PPBufferEnabled;
327
+ }
328
+
@@ -0,0 +1,79 @@
1
+ /*******************************************************/
2
+ /* "C" Language Integrated Production System */
3
+ /* */
4
+ /* CLIPS Version 6.40 10/02/17 */
5
+ /* */
6
+ /* PRETTY PRINT HEADER FILE */
7
+ /*******************************************************/
8
+
9
+ /*************************************************************/
10
+ /* Purpose: Routines for processing the pretty print */
11
+ /* representation of constructs. */
12
+ /* */
13
+ /* Principal Programmer(s): */
14
+ /* Gary D. Riley */
15
+ /* */
16
+ /* Contributing Programmer(s): */
17
+ /* */
18
+ /* Revision History: */
19
+ /* */
20
+ /* 6.30: Changed integer type/precision. */
21
+ /* */
22
+ /* Used genstrcpy instead of strcpy. */
23
+ /* */
24
+ /* Added const qualifiers to remove C++ */
25
+ /* deprecation warnings. */
26
+ /* */
27
+ /* 6.40: Removed LOCALE definition. */
28
+ /* */
29
+ /* Pragma once and other inclusion changes. */
30
+ /* */
31
+ /* Added support for booleans with <stdbool.h>. */
32
+ /* */
33
+ /* Removed use of void pointers for specific */
34
+ /* data structures. */
35
+ /* */
36
+ /*************************************************************/
37
+
38
+ #ifndef _H_pprint
39
+
40
+ #pragma once
41
+
42
+ #define _H_pprint
43
+
44
+ #define PRETTY_PRINT_DATA 52
45
+
46
+ struct prettyPrintData
47
+ {
48
+ bool PPBufferStatus;
49
+ bool PPBufferEnabled;
50
+ size_t IndentationDepth;
51
+ size_t PPBufferPos;
52
+ size_t PPBufferMax;
53
+ size_t PPBackupOnce;
54
+ size_t PPBackupTwice;
55
+ char *PrettyPrintBuffer;
56
+ };
57
+
58
+ #define PrettyPrintData(theEnv) ((struct prettyPrintData *) GetEnvironmentData(theEnv,PRETTY_PRINT_DATA))
59
+
60
+ void InitializePrettyPrintData(Environment *);
61
+ void FlushPPBuffer(Environment *);
62
+ void DestroyPPBuffer(Environment *);
63
+ void SavePPBuffer(Environment *,const char *);
64
+ void PPBackup(Environment *);
65
+ char *CopyPPBuffer(Environment *);
66
+ char *GetPPBuffer(Environment *);
67
+ void PPCRAndIndent(Environment *);
68
+ void IncrementIndentDepth(Environment *,size_t);
69
+ void DecrementIndentDepth(Environment *,size_t);
70
+ void SetIndentDepth(Environment *,size_t);
71
+ void SetPPBufferStatus(Environment *,bool);
72
+ bool GetPPBufferStatus(Environment *);
73
+ bool SetPPBufferEnabled(Environment *,bool);
74
+ bool GetPPBufferEnabled(Environment *);
75
+
76
+ #endif
77
+
78
+
79
+