cauldron 0.1.3 → 0.1.5

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 (409) hide show
  1. data/.gitignore +51 -0
  2. data/Gemfile +6 -3
  3. data/Gemfile.lock +16 -3
  4. data/Rakefile +94 -92
  5. data/VERSION +1 -1
  6. data/bin/cauldron +2 -2
  7. data/cauldron.gemspec +15 -451
  8. data/features/cauldron_new_approach.feature +46 -0
  9. data/features/step_definitions/cauldron_steps.rb +11 -0
  10. data/features/step_definitions/terminal_steps.rb +0 -2
  11. data/features/support/env.rb +11 -1
  12. data/features/support/hooks.rb +5 -0
  13. data/lib/cauldron.rb +13 -7
  14. data/lib/cauldron/array_reverse_operator.rb +39 -0
  15. data/lib/cauldron/concat_operator.rb +34 -0
  16. data/lib/cauldron/if_relationship.rb +37 -0
  17. data/lib/cauldron/numeric_operator.rb +45 -0
  18. data/lib/cauldron/pot.rb +54 -162
  19. data/lib/cauldron/relationship.rb +5 -0
  20. data/lib/cauldron/terminal.rb +4 -60
  21. data/lib/cauldron/version.rb +3 -0
  22. data/lib/core/string.rb +21 -0
  23. data/sandbox.rb +27 -6
  24. data/spec/cauldron/array_reverse_operator_spec.rb +59 -0
  25. data/spec/cauldron/concat_operator_spec.rb +89 -0
  26. data/spec/cauldron/if_relationship_spec.rb +25 -0
  27. data/spec/cauldron/numeric_operator_spec.rb +70 -0
  28. data/spec/cauldron/pot_spec.rb +81 -151
  29. data/spec/cauldron/terminal_spec.rb +1 -39
  30. data/spec/examples/adding_if_statement.yml +13 -0
  31. data/spec/examples/simple_head_theory.txt +13 -0
  32. data/spec/spec_helper.rb +1 -14
  33. data/tasks/theory_tasks.rake +207 -207
  34. metadata +92 -532
  35. data/cauldron/.autotest +0 -23
  36. data/cauldron/History.txt +0 -6
  37. data/cauldron/Manifest.txt +0 -8
  38. data/cauldron/README.txt +0 -57
  39. data/cauldron/Rakefile +0 -27
  40. data/cauldron/bin/cauldron +0 -3
  41. data/cauldron/lib/cauldron.rb +0 -3
  42. data/cauldron/test/test_cauldron.rb +0 -8
  43. data/features/cauldron_example_cases.feature +0 -13
  44. data/features/cauldron_generates_runtime_method.feature +0 -16
  45. data/features/cauldron_generates_single_paramter_methods.feature +0 -25
  46. data/features/cauldron_interactive_start_terminal.feature +0 -17
  47. data/features/cauldron_quit_terminal.feature +0 -9
  48. data/features/cauldron_start_terminal.feature +0 -12
  49. data/features/support/method_1.example +0 -3
  50. data/features/support/method_2.example +0 -6
  51. data/lib/Chain.rb +0 -771
  52. data/lib/ChainMapping.rb +0 -172
  53. data/lib/CodeHandler.rb +0 -513
  54. data/lib/Mapping.rb +0 -27
  55. data/lib/MappingValues.rb +0 -24
  56. data/lib/PartialChain.rb +0 -253
  57. data/lib/Theory.rb +0 -295
  58. data/lib/UnifiedChain.rb +0 -351
  59. data/lib/cauldron/conversion.rb +0 -15
  60. data/lib/cauldron/demos.rb +0 -280
  61. data/lib/cauldron/env.rb +0 -1
  62. data/lib/cauldron/sexp2cauldron.rb +0 -139
  63. data/lib/cauldron/theory_factory.rb +0 -10
  64. data/lib/cauldron/util/home.rb +0 -21
  65. data/lib/cauldron/util/saver.rb +0 -45
  66. data/lib/core/ActsAsCode.rb +0 -25
  67. data/lib/core/BlockToken.rb +0 -33
  68. data/lib/core/CCall.rb +0 -7
  69. data/lib/core/CTestCase.rb +0 -27
  70. data/lib/core/ClassMethodCallContainer.rb +0 -58
  71. data/lib/core/Container.rb +0 -95
  72. data/lib/core/InstanceCallContainer.rb +0 -298
  73. data/lib/core/MethodUsage.rb +0 -65
  74. data/lib/core/PrintVariables.rb +0 -25
  75. data/lib/core/TheoryGenerator.rb +0 -753
  76. data/lib/core/Token.rb +0 -7
  77. data/lib/core/assignment/Assignment.rb +0 -18
  78. data/lib/core/assignment/Equal.rb +0 -39
  79. data/lib/core/assignment/Equivalent.rb +0 -20
  80. data/lib/core/assignment/NotEqual.rb +0 -14
  81. data/lib/core/call_container/CallContainer.rb +0 -72
  82. data/lib/core/class_method_call/New.rb +0 -15
  83. data/lib/core/class_method_call/RuntimeClassMethodCall.rb +0 -31
  84. data/lib/core/declaration/Declaration.rb +0 -16
  85. data/lib/core/declaration/LiteralDeclaration.rb +0 -47
  86. data/lib/core/declaration/VariableDeclaration.rb +0 -59
  87. data/lib/core/instance_call/ArrayEach.rb +0 -23
  88. data/lib/core/instance_call/ArrayLength.rb +0 -15
  89. data/lib/core/instance_call/Chop.rb +0 -19
  90. data/lib/core/instance_call/Copy.rb +0 -22
  91. data/lib/core/instance_call/DeclaredVariable.rb +0 -18
  92. data/lib/core/instance_call/InstanceCall.rb +0 -77
  93. data/lib/core/instance_call/Params.rb +0 -15
  94. data/lib/core/instance_call/Push.rb +0 -20
  95. data/lib/core/instance_call/StringLength.rb +0 -32
  96. data/lib/core/instance_call/Times.rb +0 -20
  97. data/lib/core/instance_call/instance_calls.rb +0 -176
  98. data/lib/core/instance_call/length_equal.rb +0 -15
  99. data/lib/core/kernal/EvalCall.rb +0 -15
  100. data/lib/core/kernal/LocalVariablesCall.rb +0 -15
  101. data/lib/core/literal/Literal.rb +0 -111
  102. data/lib/core/literal/Raw.rb +0 -23
  103. data/lib/core/literal/RuntimeMethodLiteral.rb +0 -21
  104. data/lib/core/literal/StatementLiteral.rb +0 -28
  105. data/lib/core/method_call/AvailableVariablesCall.rb +0 -25
  106. data/lib/core/method_call/ClassCall.rb +0 -33
  107. data/lib/core/method_call/DefCall.rb +0 -72
  108. data/lib/core/method_call/EvaluateClassCall.rb +0 -29
  109. data/lib/core/method_call/MethodNameCall.rb +0 -27
  110. data/lib/core/method_call/ToDeclarationCall.rb +0 -15
  111. data/lib/core/requirement/Requirement.rb +0 -292
  112. data/lib/core/runtime_class/ArrayClass.rb +0 -19
  113. data/lib/core/runtime_class/ClassCallClass.rb +0 -23
  114. data/lib/core/runtime_class/ClassEvaluationClass.rb +0 -19
  115. data/lib/core/runtime_class/ClassName.rb +0 -18
  116. data/lib/core/runtime_class/DefCallClass.rb +0 -21
  117. data/lib/core/runtime_class/EqualClass.rb +0 -19
  118. data/lib/core/runtime_class/FixnumClass.rb +0 -15
  119. data/lib/core/runtime_class/InstanceCallClass.rb +0 -19
  120. data/lib/core/runtime_class/InstanceCallContainerClass.rb +0 -16
  121. data/lib/core/runtime_class/InstanceClassCallClass.rb +0 -19
  122. data/lib/core/runtime_class/LiteralClass.rb +0 -19
  123. data/lib/core/runtime_class/MethodParameterClass.rb +0 -27
  124. data/lib/core/runtime_class/MethodUsageClass.rb +0 -27
  125. data/lib/core/runtime_class/RequirementClass.rb +0 -19
  126. data/lib/core/runtime_class/ReturnClass.rb +0 -21
  127. data/lib/core/runtime_class/RuntimeClass.rb +0 -30
  128. data/lib/core/runtime_class/RuntimeClassClass.rb +0 -19
  129. data/lib/core/runtime_class/RuntimeMethodClass.rb +0 -34
  130. data/lib/core/runtime_class/StatementClass.rb +0 -53
  131. data/lib/core/runtime_class/StringClass.rb +0 -23
  132. data/lib/core/runtime_class/StringLengthClass.rb +0 -19
  133. data/lib/core/runtime_class/StringVariableClass.rb +0 -19
  134. data/lib/core/runtime_class/ThisClass.rb +0 -15
  135. data/lib/core/runtime_class/UnknownClass.rb +0 -23
  136. data/lib/core/runtime_class/class_names.rb +0 -95
  137. data/lib/core/runtime_class/runtime_class.rb +0 -123
  138. data/lib/core/runtime_method/ActsAsRuntimeMethod.rb +0 -293
  139. data/lib/core/runtime_method/ParametersContainer.rb +0 -29
  140. data/lib/core/runtime_method/RealisedRuntimeMethod.rb +0 -94
  141. data/lib/core/runtime_method/RuntimeMethod.rb +0 -814
  142. data/lib/core/runtime_method/WriteParameters.rb +0 -35
  143. data/lib/core/statement/ActsAsStatement.rb +0 -20
  144. data/lib/core/statement/ArrayAccess.rb +0 -122
  145. data/lib/core/statement/BlockStatement.rb +0 -348
  146. data/lib/core/statement/DeclarationStatement.rb +0 -19
  147. data/lib/core/statement/HackStatement.rb +0 -25
  148. data/lib/core/statement/HashAccess.rb +0 -18
  149. data/lib/core/statement/OpenStatement.rb +0 -178
  150. data/lib/core/statement/RealisedStatement.rb +0 -5
  151. data/lib/core/statement/SingleLineBlockStatement.rb +0 -39
  152. data/lib/core/statement/Statement.rb +0 -1091
  153. data/lib/core/statement/StatementGroup.rb +0 -157
  154. data/lib/core/statement/StatementStructure2.rb +0 -224
  155. data/lib/core/statement/TheoryStatement.rb +0 -68
  156. data/lib/core/statement/TopologicalStatements.rb +0 -34
  157. data/lib/core/syntax/Addition.rb +0 -26
  158. data/lib/core/syntax/BlockContainer.rb +0 -102
  159. data/lib/core/syntax/Boolean.rb +0 -15
  160. data/lib/core/syntax/Code.rb +0 -11
  161. data/lib/core/syntax/Do.rb +0 -20
  162. data/lib/core/syntax/False.rb +0 -12
  163. data/lib/core/syntax/If.rb +0 -36
  164. data/lib/core/syntax/Nil.rb +0 -15
  165. data/lib/core/syntax/Return.rb +0 -33
  166. data/lib/core/syntax/Subtract.rb +0 -19
  167. data/lib/core/syntax/This.rb +0 -40
  168. data/lib/core/syntax/True.rb +0 -20
  169. data/lib/core/syntax/syntax.rb +0 -24
  170. data/lib/core/tracking/ActsAsTrackable.rb +0 -65
  171. data/lib/core/tracking/History.rb +0 -167
  172. data/lib/core/tracking/RuntimeTrackingMethod.rb +0 -32
  173. data/lib/core/tracking/Step.rb +0 -52
  174. data/lib/core/variable/ArrayVariable.rb +0 -76
  175. data/lib/core/variable/BaseVariable.rb +0 -152
  176. data/lib/core/variable/BlockVariable.rb +0 -92
  177. data/lib/core/variable/FixnumVariable.rb +0 -35
  178. data/lib/core/variable/HistoryVariable.rb +0 -8
  179. data/lib/core/variable/MethodParameter.rb +0 -179
  180. data/lib/core/variable/MethodUsageVariable.rb +0 -60
  181. data/lib/core/variable/NilVariable.rb +0 -29
  182. data/lib/core/variable/RuntimeMethodParameter.rb +0 -67
  183. data/lib/core/variable/StatementVariable.rb +0 -72
  184. data/lib/core/variable/StepVariable.rb +0 -7
  185. data/lib/core/variable/StringVariable.rb +0 -46
  186. data/lib/core/variable/TypeVariable.rb +0 -72
  187. data/lib/core/variable/Unknown.rb +0 -102
  188. data/lib/core/variable/UnknownVariable.rb +0 -29
  189. data/lib/core/variable/Variable.rb +0 -70
  190. data/lib/core/variable/VariableContainer.rb +0 -28
  191. data/lib/core/variable/VariableIncluded.rb +0 -27
  192. data/lib/core/variable/VariableReference.rb +0 -85
  193. data/lib/error/FailedToFindStatementContainerError.rb +0 -7
  194. data/lib/error/FailedToFindStatementError.rb +0 -7
  195. data/lib/error/FailedToFindVariableError.rb +0 -7
  196. data/lib/error/FailedToLiteraliseError.rb +0 -7
  197. data/lib/error/FailedVariableMatch.rb +0 -7
  198. data/lib/error/ImproperStatementUsageError.rb +0 -7
  199. data/lib/error/IncompatiableRequirementsError.rb +0 -7
  200. data/lib/error/InvalidStatementError.rb +0 -7
  201. data/lib/error/MethodSizeError.rb +0 -7
  202. data/lib/error/RuntimeSyntaxError.rb +0 -7
  203. data/lib/error/UnexpectedStatementTypeError.rb +0 -7
  204. data/lib/error/UnknownStatementType.rb +0 -7
  205. data/lib/error/UnliteralisableError.rb +0 -7
  206. data/lib/implemented_chain.rb +0 -35
  207. data/lib/intrinsic/IntrinsicLastRuntimeMethod.rb +0 -20
  208. data/lib/intrinsic/IntrinsicLiteral.rb +0 -26
  209. data/lib/intrinsic/IntrinsicObject.rb +0 -22
  210. data/lib/intrinsic/IntrinsicRuntimeMethod.rb +0 -27
  211. data/lib/intrinsic/IntrinsicTestCases.rb +0 -17
  212. data/lib/logger/StandardLogger.rb +0 -62
  213. data/lib/required.rb +0 -222
  214. data/lib/ruby_code/Array.rb +0 -95
  215. data/lib/ruby_code/Fixnum.rb +0 -39
  216. data/lib/ruby_code/Hash.rb +0 -25
  217. data/lib/ruby_code/NilClass.rb +0 -19
  218. data/lib/ruby_code/Object.rb +0 -24
  219. data/lib/ruby_code/String.rb +0 -63
  220. data/lib/ruby_code/Symbol.rb +0 -7
  221. data/lib/standard_library/Tasks.rb +0 -12
  222. data/lib/theories.rb +0 -166
  223. data/lib/theory/ActionImplementation.rb +0 -17
  224. data/lib/theory/TheoryAction.rb +0 -100
  225. data/lib/theory/TheoryChainValidator.rb +0 -103
  226. data/lib/theory/TheoryComponent.rb +0 -59
  227. data/lib/theory/TheoryConnector.rb +0 -756
  228. data/lib/theory/TheoryDependent.rb +0 -135
  229. data/lib/theory/TheoryImplementation.rb +0 -75
  230. data/lib/theory/TheoryResult.rb +0 -131
  231. data/lib/theory/TheoryVariable.rb +0 -63
  232. data/lib/theory/theory_collection.rb +0 -62
  233. data/lib/util/ClassEvaluation.rb +0 -44
  234. data/lib/util/CodeEvaluation.rb +0 -39
  235. data/lib/util/DeclarationStatementEvaluation.rb +0 -32
  236. data/lib/util/MethodEvaluation.rb +0 -49
  237. data/lib/util/MethodTester.rb +0 -71
  238. data/lib/util/MethodValidation.rb +0 -149
  239. data/lib/util/MethodWriter.rb +0 -66
  240. data/lib/util/Parser.rb +0 -305
  241. data/lib/util/StatementCheck.rb +0 -44
  242. data/lib/util/StringToTheory.rb +0 -142
  243. data/lib/util/System.rb +0 -8
  244. data/spec/cauldron/chain_spec.rb +0 -24
  245. data/spec/cauldron/demos_spec.rb +0 -30
  246. data/spec/cauldron/runtime_method_spec.rb +0 -92
  247. data/spec/cauldron/saver_spec.rb +0 -45
  248. data/spec/cauldron/sexp_2_cauldron_spec.rb +0 -118
  249. data/spec/cauldron/theory_action_spec.rb +0 -25
  250. data/spec/cauldron/theory_connector_spec.rb +0 -52
  251. data/spec/cauldron/theory_spec.rb +0 -59
  252. data/spec/cauldron/unified_chain_spec.rb +0 -140
  253. data/test/fixtures/chains/1/declaration.txt +0 -26
  254. data/test/fixtures/chains/1/dump +0 -0
  255. data/test/fixtures/chains/2/declaration.txt +0 -26
  256. data/test/fixtures/chains/2/dump +0 -0
  257. data/test/fixtures/chains/3/declaration.txt +0 -26
  258. data/test/fixtures/chains/3/dump +0 -0
  259. data/test/fixtures/implementation_results/0/declaration.txt +0 -3
  260. data/test/fixtures/implementation_results/0/dump +0 -0
  261. data/test/fixtures/theories/0/declaration.txt +0 -9
  262. data/test/fixtures/theories/0/desc +0 -10
  263. data/test/fixtures/theories/0/dump +0 -0
  264. data/test/fixtures/theories/1/declaration.txt +0 -15
  265. data/test/fixtures/theories/1/desc +0 -11
  266. data/test/fixtures/theories/1/dump +0 -0
  267. data/test/fixtures/theories/10/declaration.txt +0 -23
  268. data/test/fixtures/theories/10/desc +0 -17
  269. data/test/fixtures/theories/10/dump +0 -0
  270. data/test/fixtures/theories/11/declaration.txt +0 -20
  271. data/test/fixtures/theories/11/desc +0 -14
  272. data/test/fixtures/theories/11/dump +0 -0
  273. data/test/fixtures/theories/12/declaration.txt +0 -18
  274. data/test/fixtures/theories/12/desc +0 -12
  275. data/test/fixtures/theories/12/dump +0 -0
  276. data/test/fixtures/theories/13/declaration.txt +0 -24
  277. data/test/fixtures/theories/13/desc +0 -20
  278. data/test/fixtures/theories/13/dump +0 -0
  279. data/test/fixtures/theories/14/declaration.txt +0 -26
  280. data/test/fixtures/theories/14/desc +0 -20
  281. data/test/fixtures/theories/14/dump +0 -0
  282. data/test/fixtures/theories/15/declaration.txt +0 -20
  283. data/test/fixtures/theories/15/desc +0 -14
  284. data/test/fixtures/theories/15/dump +0 -0
  285. data/test/fixtures/theories/16/declaration.txt +0 -30
  286. data/test/fixtures/theories/16/desc +0 -14
  287. data/test/fixtures/theories/16/dump +0 -0
  288. data/test/fixtures/theories/17/declaration.txt +0 -25
  289. data/test/fixtures/theories/17/desc +0 -11
  290. data/test/fixtures/theories/17/dump +0 -0
  291. data/test/fixtures/theories/18/declaration.txt +0 -23
  292. data/test/fixtures/theories/18/desc +0 -11
  293. data/test/fixtures/theories/18/dump +0 -0
  294. data/test/fixtures/theories/19/declaration.txt +0 -23
  295. data/test/fixtures/theories/19/desc +0 -11
  296. data/test/fixtures/theories/19/dump +0 -0
  297. data/test/fixtures/theories/2/declaration.txt +0 -12
  298. data/test/fixtures/theories/2/desc +0 -10
  299. data/test/fixtures/theories/2/dump +0 -0
  300. data/test/fixtures/theories/20/declaration.txt +0 -23
  301. data/test/fixtures/theories/20/desc +0 -17
  302. data/test/fixtures/theories/20/dump +0 -0
  303. data/test/fixtures/theories/3/declaration.txt +0 -19
  304. data/test/fixtures/theories/3/desc +0 -11
  305. data/test/fixtures/theories/3/dump +0 -0
  306. data/test/fixtures/theories/4/declaration.txt +0 -11
  307. data/test/fixtures/theories/4/desc +0 -11
  308. data/test/fixtures/theories/4/dump +0 -0
  309. data/test/fixtures/theories/5/declaration.txt +0 -6
  310. data/test/fixtures/theories/5/desc +0 -9
  311. data/test/fixtures/theories/5/dump +0 -0
  312. data/test/fixtures/theories/6/declaration.txt +0 -13
  313. data/test/fixtures/theories/6/desc +0 -11
  314. data/test/fixtures/theories/6/dump +0 -0
  315. data/test/fixtures/theories/7/declaration.txt +0 -19
  316. data/test/fixtures/theories/7/desc +0 -11
  317. data/test/fixtures/theories/7/dump +0 -0
  318. data/test/fixtures/theories/8/declaration.txt +0 -21
  319. data/test/fixtures/theories/8/desc +0 -11
  320. data/test/fixtures/theories/8/dump +0 -0
  321. data/test/fixtures/theories/9/declaration.txt +0 -24
  322. data/test/fixtures/theories/9/desc +0 -20
  323. data/test/fixtures/theories/9/dump +0 -0
  324. data/test/fixtures/theory_implementations/0/declaration.txt +0 -11
  325. data/test/fixtures/theory_implementations/0/desc.txt +0 -9
  326. data/test/fixtures/theory_implementations/0/dump +0 -0
  327. data/test/fixtures/theory_implementations/0/theory_id +0 -1
  328. data/test/fixtures/theory_implementations/1/declaration.txt +0 -11
  329. data/test/fixtures/theory_implementations/1/desc.txt +0 -9
  330. data/test/fixtures/theory_implementations/1/dump +0 -1
  331. data/test/fixtures/theory_implementations/1/theory_id +0 -1
  332. data/test/fixtures/theory_implementations/2/declaration.txt +0 -11
  333. data/test/fixtures/theory_implementations/2/desc.txt +0 -9
  334. data/test/fixtures/theory_implementations/2/dump +0 -0
  335. data/test/fixtures/theory_implementations/2/theory_id +0 -1
  336. data/test/output/simple_method.txt +0 -5
  337. data/test/output/test_method/first_possible_method.txt +0 -6
  338. data/test/output/test_simple_cases/simple_case_01.txt +0 -8
  339. data/test/output/test_simple_cases/simple_case_02.txt +0 -7
  340. data/test/output/test_simple_cases/simple_case_03.txt +0 -8
  341. data/test/output/test_simple_cases/simple_case_04.txt +0 -8
  342. data/test/output/test_simple_cases/simple_case_05.txt +0 -8
  343. data/test/output/test_simple_cases/simple_case_06.txt +0 -9
  344. data/test/output/test_simple_cases/simple_case_07.txt +0 -9
  345. data/test/output/test_simple_cases/simple_case_08.txt +0 -9
  346. data/test/tc_describe.rb +0 -46
  347. data/test/tc_method.rb +0 -130
  348. data/test/tc_requirement.rb +0 -30
  349. data/test/tc_suite_complete.rb +0 -26
  350. data/test/tc_variable.rb +0 -52
  351. data/test/ts_complete.rb +0 -74
  352. data/test/ts_stable.rb +0 -81
  353. data/test/unit/core/declaration/tc_literal_declaration.rb +0 -34
  354. data/test/unit/core/method_call/tc_class_call.rb +0 -20
  355. data/test/unit/core/runtime_method/tc_realised_runtime_method.rb +0 -132
  356. data/test/unit/core/runtime_method/tc_runtime_method.rb +0 -546
  357. data/test/unit/core/statement/tc_array_access.rb +0 -63
  358. data/test/unit/core/statement/tc_block_statement.rb +0 -53
  359. data/test/unit/core/statement/tc_hack_statement.rb +0 -26
  360. data/test/unit/core/statement/tc_open_statement.rb +0 -79
  361. data/test/unit/core/statement/tc_statement.rb +0 -483
  362. data/test/unit/core/statement/tc_statement_group.rb +0 -35
  363. data/test/unit/core/statement/tc_statement_replace_variable.rb +0 -61
  364. data/test/unit/core/statement/tc_theory_statement.rb +0 -53
  365. data/test/unit/core/syntax/tc_block_container.rb +0 -32
  366. data/test/unit/core/syntax/tc_if_container.rb +0 -39
  367. data/test/unit/core/tc_class_method_call.rb +0 -34
  368. data/test/unit/core/tc_container.rb +0 -41
  369. data/test/unit/core/tc_ctest_case.rb +0 -25
  370. data/test/unit/core/tc_instance_call_container.rb +0 -93
  371. data/test/unit/core/tc_literal.rb +0 -30
  372. data/test/unit/core/tc_theory_generator.rb +0 -336
  373. data/test/unit/core/tc_theory_generator_heavy.rb +0 -42
  374. data/test/unit/core/tracking/tc_history.rb +0 -104
  375. data/test/unit/core/tracking/tc_step.rb +0 -65
  376. data/test/unit/core/variable/tc_array_variable.rb +0 -61
  377. data/test/unit/core/variable/tc_block_variable.rb +0 -17
  378. data/test/unit/core/variable/tc_fixnum_variable.rb +0 -54
  379. data/test/unit/core/variable/tc_method_parameter_variable.rb +0 -22
  380. data/test/unit/core/variable/tc_runtime_method_variable.rb +0 -32
  381. data/test/unit/core/variable/tc_string_variable.rb +0 -37
  382. data/test/unit/core/variable/tc_unknown.rb +0 -24
  383. data/test/unit/core/variable/tc_variable_reference.rb +0 -28
  384. data/test/unit/ruby_code/tc_array.rb +0 -64
  385. data/test/unit/ruby_code/tc_fixnum.rb +0 -18
  386. data/test/unit/ruby_code/tc_hash.rb +0 -41
  387. data/test/unit/ruby_code/tc_string.rb +0 -38
  388. data/test/unit/tc_chain.rb +0 -434
  389. data/test/unit/tc_chain_mapping.rb +0 -62
  390. data/test/unit/tc_chain_with_case_1.rb +0 -169
  391. data/test/unit/tc_instance_call.rb +0 -40
  392. data/test/unit/tc_method_usage.rb +0 -35
  393. data/test/unit/tc_pot.rb +0 -124
  394. data/test/unit/tc_runtime_tracking_method.rb +0 -40
  395. data/test/unit/tc_theory.rb +0 -531
  396. data/test/unit/tc_variable_declaration.rb +0 -32
  397. data/test/unit/theory/tc_theory_action.rb +0 -108
  398. data/test/unit/theory/tc_theory_action_implementation.rb +0 -23
  399. data/test/unit/theory/tc_theory_chain_validator.rb +0 -340
  400. data/test/unit/theory/tc_theory_connector.rb +0 -361
  401. data/test/unit/theory/tc_theory_dependent.rb +0 -153
  402. data/test/unit/theory/tc_theory_implementation.rb +0 -137
  403. data/test/unit/theory/tc_theory_result.rb +0 -112
  404. data/test/unit/theory/tc_theory_variable.rb +0 -45
  405. data/test/unit/util/tc_method_validation.rb +0 -101
  406. data/test/unit/util/tc_parser.rb +0 -110
  407. data/test/unit/util/tc_string_to_theory.rb +0 -300
  408. data/test/unit/variable/tc_method_usage_variable.rb +0 -25
  409. data/tmp/runtime_method_evaluation.rb +0 -16
@@ -1 +0,0 @@
1
- TAB = ' '
@@ -1,139 +0,0 @@
1
- require 'rubygems'
2
- require 'ruby2ruby'
3
- require 'sexp_processor'
4
-
5
- module Cauldron
6
-
7
- class Sexp2Cauldron < SexpProcessor
8
-
9
- VARIABLE_EXPRESSION = /var[|_]*(\d+)/
10
-
11
- def initialize
12
- super
13
- self.expected = Object
14
- self.auto_shift_type = true
15
- self.strict = true
16
- @debug[:lasgn] = nil
17
- @unsupported_checked = true
18
- end
19
-
20
- def process_lit(exp)
21
- val = exp.shift
22
- return Literal.new(val)
23
- end
24
-
25
- def in_context type, &block
26
- self.context.unshift type
27
- yield
28
- self.context.shift
29
- end
30
-
31
- def process_str(exp)
32
- Literal.new(exp.shift)
33
- end
34
-
35
- # => Overwritten method
36
- def process_lasgn(exp)
37
- next_exp = exp.shift
38
- if next_exp.to_s.match(VARIABLE_EXPRESSION)
39
- s = Statement.new(convert_to_variable(next_exp),Equal.new)
40
- end
41
- a = process(exp.shift)
42
- s.add a
43
- return s
44
- end
45
-
46
- def process_if(exp)
47
- inner_statement_sexp = exp.shift
48
- scope = process(exp.shift) # => The content of the if statement
49
- exp.shift
50
- open_statement = OpenStatement.new(Statement.new(If.new,Container.new(process(inner_statement_sexp))))
51
- open_statement << scope unless scope.nil?
52
- return open_statement
53
- end
54
-
55
- def process_return(exp)
56
- return Statement.new(Return.new,process(exp.shift))
57
- end
58
-
59
- def process_call(exp)
60
- results = []
61
- until exp.empty?
62
- atom = exp.shift
63
- if atom.to_s.match(VARIABLE_EXPRESSION)
64
- results << convert_to_variable(atom)
65
- next
66
- end
67
- if atom == :==
68
- results << Equivalent.new
69
- next
70
- end
71
- next if atom.nil?
72
- res = process(atom)
73
- next if res.nil?
74
- results << res
75
- end
76
- return Statement.new(*results)
77
- end
78
-
79
- def process_arglist(exp)
80
- return process exp.shift
81
- end
82
-
83
- def process_defn(exp)
84
- type = exp.shift
85
- args = exp.shift
86
- scope = exp.shift
87
-
88
- usage = (args.length==2) ? process(args) : MethodUsage.new
89
- method_id = type.to_s.match(/method_(\d)+/)[1]
90
- method = RuntimeMethod.new(usage,method_id)
91
- statements = process(scope)
92
- unless statements.nil?
93
- statements.each do |statement|
94
- method << statement unless statement.nil?
95
- end
96
- end
97
- return method
98
-
99
- end
100
-
101
- def process_args(exp)
102
- atom = exp.shift
103
- variable_id = atom.to_s.match(VARIABLE_EXPRESSION)[1]
104
- param = MethodParameter.new()
105
- param.variable_id = variable_id
106
- return MethodUsage.new(param)
107
- end
108
-
109
- def process_scope(exp)
110
- block = exp.shift
111
- res = process(block)
112
- return res
113
- end
114
-
115
- def process_block(exp)
116
- result = []
117
- until exp.empty?
118
- atom = exp.shift
119
- next if atom.first == :nil
120
- result << process(atom)
121
- end
122
- return result
123
- end
124
-
125
- def process_lvar(exp)
126
- var = exp.shift
127
- return convert_to_variable(var)
128
- end
129
-
130
- private
131
-
132
- def convert_to_variable(variable)
133
- return Unknown.new(variable.to_s.match(VARIABLE_EXPRESSION)[1])
134
- end
135
-
136
- end
137
-
138
-
139
- end
@@ -1,10 +0,0 @@
1
-
2
-
3
- module Cauldron
4
-
5
- class TheoryFactory
6
-
7
-
8
- end
9
-
10
- end
@@ -1,21 +0,0 @@
1
- module Cauldron
2
-
3
- module Util
4
-
5
- module Home
6
-
7
- private
8
-
9
- # Check that the home directory exists
10
- def home
11
- realHome = ["HOME", "HOMEPATH"].detect {|h| ENV[h] != nil}
12
- if not realHome
13
- StandardLogger.instance.warning "Couldn't detect a home directory"
14
- end
15
- return ENV[realHome]
16
- end
17
-
18
- end
19
-
20
- end
21
- end
@@ -1,45 +0,0 @@
1
- module Cauldron::Util::Saver
2
-
3
- def self.save(obj)
4
- dir_path = FileUtils.mkdir(next_directory).first
5
- begin
6
- dump_file_path = File.join(dir_path,'dump')
7
- dump_file = File.open(dump_file_path,'w+')
8
- data = Marshal.dump(obj)
9
- dump_file << data
10
- return dump_file_path
11
- ensure
12
- dump_file.close
13
- end
14
- end
15
-
16
- def self.debug_directory
17
- # the home directory code is duplicated
18
- realHome = ["HOME", "HOMEPATH"].detect {|h| ENV[h] != nil}
19
- if not realHome
20
- StandardLogger.instance.warning "Couldn't detect a home directory"
21
- end
22
- return File.join(ENV[realHome],'cauldron','debug')
23
- end
24
-
25
- def self.next_directory
26
- FileUtils.mkdir(debug_directory) unless File.exists?(debug_directory)
27
- highest_integer = 0
28
- Dir.glob(File.join(debug_directory,'*')).each do |filename|
29
- if filename.match(/(\d+)/)
30
- highest_integer = $1.to_i if $1.to_i > highest_integer
31
- end
32
- end
33
- return File.join(debug_directory,(highest_integer + 1).to_s)
34
- end
35
-
36
- def self.load(id)
37
- Dir.glob(File.join(debug_directory,'*')).each do |filename|
38
- if m = filename.match(/(\d+)/) and m[0].to_i == id
39
- dump_file = File.open(File.join(filename,'dump'),'r')
40
- return Marshal.load(dump_file.read)
41
- end
42
- end
43
- end
44
-
45
- end
@@ -1,25 +0,0 @@
1
- #
2
- # This module is used in the various code containers used in Cauldren
3
- #
4
- module ActsAsCode
5
-
6
- # Returns a string description of the statement with any of tokens replaced with
7
- # token markers.
8
- #
9
- # So var_1 = var_2 + 3
10
- #
11
- # becomes a = b + c
12
- #
13
- # The order of replacement is important, the first token becomes a, the second b
14
- # and so forth.
15
- #
16
- def write_structure
17
- # TODO Not sure how to handle duplicate literals
18
- output = self.write
19
- self.tokens.zip(('a'..'z').to_a) do |x,y|
20
- output.gsub!(x.write,y)
21
- end
22
- return output
23
- end
24
-
25
- end
@@ -1,33 +0,0 @@
1
- # I'm not sure whether to keep this class as I already have BlockVariable but that
2
- # is a bit overkill - I'm not sure I need to keep BlockVariable either.
3
- #
4
- # Instances of this are used in theories where a variable that shouldn't be
5
- # replaced is used. This might be a Global variable or a block variable.
6
- #
7
- # if(var1.any? {|x| x == var2})
8
- # return false
9
- # end
10
- #
11
- # In the theory above if x was a normal TheoryVariable it would be replaced and the theory
12
- # would break.
13
- #
14
- class BlockToken
15
- include Token
16
-
17
- def initialize(identitiy)
18
- @identitiy = identitiy
19
- end
20
-
21
- def write
22
- return @identitiy
23
- end
24
-
25
- def describe
26
- return write
27
- end
28
-
29
- def copy
30
- return BlockToken.new(@identitiy.copy)
31
- end
32
-
33
- end
@@ -1,7 +0,0 @@
1
- class CCall
2
-
3
- def initialize
4
-
5
- end
6
-
7
- end
@@ -1,27 +0,0 @@
1
- # This is an individual test case that has an input an output. It is essentially
2
- # just a hash but I've created a new class for it just for the convenience of using
3
- # the .kind_of? method in theory chains.
4
- #
5
- # TODO Don't like extending core datatypes
6
- class CTestCase < Hash
7
-
8
- # TODO Should be able pass the hash directly or usea variable to contain the hash
9
- def initialize(inputs=nil,output=nil)
10
- super()
11
- self[:params] = inputs
12
- self[:output] = output
13
- end
14
-
15
- def copy
16
- return Marshal.load(Marshal.dump(self))
17
- end
18
-
19
- def cauldron_method_calls
20
- results = self.collect do |key,value|
21
- '[:'+key.to_s+']'
22
- end
23
- results << '.kind_of?'
24
- return results
25
- end
26
-
27
- end
@@ -1,58 +0,0 @@
1
- #
2
- # FixnumVariable.new(8)
3
- #
4
- class ClassMethodCallContainer < CallContainer
5
- attr_reader :method_call, :parameters
6
-
7
- def initialize(class_name,method_call,*parameters)
8
-
9
- # Check the type for the class name
10
- raise StandardError.new('Unexpected data type '+class_name.class.to_s) unless class_name.kind_of?(ClassName)
11
- @class_name = class_name
12
-
13
- super(class_name,method_call,*parameters)
14
- end
15
-
16
- def class_name
17
- return @subject
18
- end
19
-
20
- def copy
21
- return ClassMethodCallContainer.new(@subject.copy,@method_call.copy,*@parameters.collect {|x| x.copy})
22
- end
23
-
24
- # This method is used during tracking to print a general description of what
25
- # the instance call is doing. e.g. MethodUsage.new.
26
- #
27
- def to_literal_string
28
- return @class_name.write+'.'+@method_call.to_literal_string
29
- end
30
-
31
- # Returns true if the supplied argument is the same class, has the equivalent subjects
32
- # and parameters.
33
- #
34
- def equivalent?(to)
35
- return false unless self.class == to.class
36
- return false unless @class_name.class == to.class_name.class
37
- return false unless @method_call.class == to.method_call.class
38
- @parameters.each_with_index do |x,i|
39
- return false unless x.equivalent?(to.parameters[i])
40
- end
41
- return true
42
- end
43
-
44
- def replace_variables_alt!(map)
45
- @parameters.each_with_index do |x,i|
46
- if x.kind_of?(TheoryVariable)
47
- map.each do |key,value|
48
- if x.theory_variable_id == key.theory_variable_id
49
- @parameters[i] = value
50
- end
51
- end
52
- else
53
- x.replace_variables_alt!(map)
54
- end
55
- end
56
- end
57
-
58
- end
@@ -1,95 +0,0 @@
1
- # This is just a wrapper for elements that should be wrapped in parenthesis.
2
- #
3
- class Container
4
-
5
- def initialize(*tokens)
6
- @tokens = tokens
7
- end
8
-
9
- def replace_theory_variables!(mapping)
10
- @tokens.each_with_index do |x,i|
11
- if x.kind_of?(TheoryVariable) && mapping.has_key?(x.theory_variable_id)
12
- @tokens[i] = mapping[x.theory_variable_id].copy
13
- next
14
- end
15
- @tokens[i].replace_theory_variables!(mapping) if @tokens[i].respond_to?(:replace_theory_variables!)
16
- end
17
- end
18
-
19
- def subst_variable!(id,var)
20
- @tokens.each_with_index do |token,i|
21
- if token.kind_of?(Variable) && id == token.variable_id
22
- @tokens[i] = var
23
- end
24
- if token.kind_of?(Statement)
25
- token.subst_variable!(id,var)
26
- end
27
- end
28
- self
29
- end
30
-
31
- def write(tab=0)
32
- line = '('
33
- tab.times {line += " " }
34
- @tokens.each do |code|
35
- line += code.write
36
- break if code.object_id == @tokens.last.object_id
37
- end
38
- return line+')'
39
- end
40
-
41
- def describe(tab=0)
42
- line = '('
43
- tab.times {line += "\t" }
44
- @tokens.each do |code|
45
- line += code.describe
46
- break if code.object_id == @tokens.last.object_id
47
- end
48
- return line+')'
49
- end
50
-
51
- def copy
52
- return Container.new(*@tokens.collect {|x| x.copy} )
53
- end
54
-
55
- def select_all(results=[],&block)
56
- results.push self if block.call(self)
57
- @tokens.each do |x|
58
- if block.call(x)
59
- results.push(x)
60
- end
61
- if x.respond_to?(:select_all)
62
- x.select_all(results,&block)
63
- end
64
- end
65
- return results
66
- end
67
-
68
- def has?(&block)
69
- return true if block.call(self)
70
- @tokens.each do |x|
71
- return true if block.call(x)
72
- end
73
- return false
74
- end
75
-
76
- # This method writes the statement out as a literal string. In the sense
77
- # that any of the variables used in the statement are converted to literals
78
- # and written. Unknown variables are not written yet though.
79
- #
80
- # This method is called during tracking to give an indication what the statement
81
- # being tracked is doing.
82
- #
83
- # TODO I am treating unknown variables as a special case that is the same
84
- # value e.g. 'var' - but for determining equivalent processes it isn't
85
- # ideal becuase you loose track of what variables is used in each
86
- # statement. Although I'll wait unitl I can come up with an example
87
- # and come up with a solution then.
88
- #
89
- def to_literal_string
90
- return @tokens.inject('') do |complete,part|
91
- complete += part.to_literal_string
92
- end
93
- end
94
-
95
- end