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,157 +0,0 @@
1
- class StatementGroup < Array
2
- attr_reader :scope, :scope_id, :statement_level
3
- attr_writer :scope, :scope_id, :statement_level
4
-
5
- # The scope id is used to determine what variables are available with the nested statement
6
- @@scope_id = 0
7
-
8
- alias :array_push :push
9
-
10
- def initialize(*statements)
11
- super()
12
- statements.each {|x| self.push(x)}
13
-
14
- # Update the scope id for the nested statement
15
- @scope_id = @@scope_id
16
- @@scope_id += 1
17
-
18
- @scope = [@scope_id]
19
-
20
- end
21
-
22
- def cauldron_method_calls
23
- return ['.statement_id']
24
- end
25
-
26
- def write(tab=0)
27
- line = ''
28
- self.each {|x| line += x.write(tab)+"\n" }
29
- return line
30
- end
31
-
32
- def describe(tab=0)
33
- line = ''
34
- #self.each {|x| line += x.describe(tab)+"\n" }
35
- self.each do |x|
36
- line += x.describe(tab)+"\n"
37
- end
38
- return line
39
- end
40
-
41
- # Removes any statements that simple re-declare an existing statement
42
- # e.g var_a = var_b.
43
- #
44
- def remove_simple
45
- results = StatementGroup.new
46
- self.each do |x|
47
- results.push x unless x.is_simple?
48
- end
49
- return results
50
- end
51
-
52
- def push(*entries)
53
- self.entries.each do |x|
54
- x.scope = [@scope_id]
55
- end
56
- #super.array_push(*entries)
57
- entries.each do |y|
58
-
59
- # TODO Oddly super.array_push seems to add it twice - might investigate
60
- #super.array_push(y)
61
- array_push(y)
62
- end
63
- end
64
-
65
- # TODO This method name doesn't suit what it returns
66
- def statement_id
67
- return @scope_id
68
- end
69
-
70
- # Returns a statement container (either a runtime method or a nested statement)
71
- # thats scope is the statement level specified. This means that any statements
72
- # with the statement level specified should reside directly in the statement
73
- # container.
74
- #
75
- # @param statement_level The statement level the statement group should
76
- # contain statements at.
77
- #
78
- def find_container_at_level(statement_level)
79
- return self if scope_id == statement_level
80
- self.each do |x|
81
- if x.kind_of?(StatementGroup)
82
- begin
83
- return x.find_container_at_level(statement_level)
84
- rescue FailedToFindStatementContainerError => e
85
- next
86
- end
87
- #result = x.find_container_at_level(statement_level)
88
- #return result unless result.nil?
89
- end
90
- end
91
- raise FailedToFindStatementContainerError.new('Failed to find containing statement with id '+statement_level.to_s)
92
- #return nil
93
- #raise StandardEror.new('There is no container at level '+)
94
- end
95
-
96
- # Returns the statement thats id matches that supplied.
97
- #
98
- # @param id The id of the statement should exist in the runtime method
99
- #
100
- def find_statement(id)
101
- self.each do |x|
102
- begin
103
- return x.find_statement(id)
104
- rescue FailedToFindStatementError => e
105
- next
106
- end
107
- end
108
- raise FailedToFindStatementError.new('Couldn\'t find statement with id '+id.to_s)
109
- end
110
-
111
- # Returns an array of all the runtime method instances that are
112
- # required for this statement group. This is essentially the
113
- # runtime methods referenced in DefCalls.
114
- #
115
- def find_all_required_runtime_methods
116
- results = []
117
- self.each do |x|
118
- results += x.find_all_required_runtime_methods
119
- end
120
- return results
121
- end
122
-
123
- def copy
124
- result = self.class.new(*self.collect {|x| x.copy })
125
- result.scope_id = scope_id
126
- result.scope = scope
127
- result.statement_level = statement_level
128
- return result
129
- end
130
-
131
- # Identify any of the contained statements that override an
132
- # existing variable.
133
- #
134
- # @param already_declared An array of previously declared variable ids in the
135
- # following format. [{:variable_id=>43},{:variable_id=>12}, ..]
136
- #
137
- def identify_overriding_statements(already_declared=[])
138
- self.each do |x|
139
- x.identify_overriding_statements(already_declared)
140
- end
141
- end
142
-
143
- # Returns an array of overriding statements that reside inside
144
- # this statement group. A overriding statement is a statement that
145
- # re-declares or modifies a previously declared variable.
146
- #
147
- # @param overriding_statements An array of statements that have been overriden
148
- # within the statement group.
149
- #
150
- def find_overriding_statements(overriding_statements=[])
151
- self.each do |x|
152
- x.find_overriding_statements(overriding_statements)
153
- end
154
- return overriding_statements
155
- end
156
-
157
- end
@@ -1,224 +0,0 @@
1
- # Move this class to the structure folder
2
- #
3
- # TODO This is more a StatementStructureFactory
4
- class StatementStructure2 < Array
5
-
6
- # attr_reader :declared_fixnum
7
- #
8
- # @@DECLARED_FIXNUM = 'declared_fixnum'
9
- # DECLARE_STRING = 'declared_string'
10
- # DECLARE_STRING_ADDITION = 'declared_string_addition'
11
- TIMES_ON_FIXNUM = 'times_on_fixnum'
12
-
13
- # TODO I don't think I really need to pass the parameters anymore
14
- def initialize(name)
15
- # TODO What are the two parameters an array expects
16
- super()
17
-
18
- @structure_name = name
19
-
20
- # Add the parameters to the array
21
- structure().each do |code|
22
- self.push(code)
23
- end
24
- end
25
-
26
- # var = 'test'+'ing'
27
- def StatementStructure2.declared_string_addition
28
- return 'declared_string_addition'
29
- end
30
-
31
- def StatementStructure2.times_on_fixnum
32
- return 'times_on_fixnum'
33
- end
34
-
35
- def StatementStructure2.declared_array
36
- return 'declared_array'
37
- end
38
-
39
- def StatementStructure2.declared_runtime_method
40
- return 'declared_runtime_method'
41
- end
42
-
43
- # var = 5+8
44
- def StatementStructure2.declared_fixnum_addition
45
- return 'declared_fixnum_addition'
46
- end
47
-
48
- def StatementStructure2.declared_statement
49
- return 'declared_statement'
50
- end
51
-
52
- def structure
53
- case @structure_name
54
- # when StatementStructure2.declared_fixnum
55
- # return [Unknown,Equal,FixnumVariable]
56
- # when StatementStructure2.declared_string
57
- # return [Unknown,Equal,StringVariable]
58
- when StatementStructure2.declared_array
59
- return [Unknown,Equal,ArrayVariable]
60
- when StatementStructure2.declared_runtime_method
61
- return DeclareRuntimeMethodStructure.new()
62
- when StatementStructure2.declared_string_addition
63
- return [Unknown,Equal,StringVariable,Addition,StringVariable]
64
- when StatementStructure2.declared_fixnum_addition
65
- return FixnumAdditionStructure.new()
66
- when StatementStructure2.declared_statement
67
- return DeclareStatementStructure.new()
68
- else
69
- raise StandardError.new('Unknown statement structure "'+@structure_name+'"')
70
- end
71
- end
72
-
73
- # Returns an array of possible statements that can be
74
- # created to follow the structure of the statement.
75
- #
76
- # Any method calls are considered as their returned value. So
77
- # a method that returns a string is just considered as a
78
- # RuntimeVariable with a string class requirement.
79
- #
80
- def statements(available=[])
81
-
82
- # Retrieve the statements for
83
- if(@structure_name==StatementStructure2.times_on_fixnum)
84
- return fixnum_times_statements(available)
85
- end
86
-
87
- # Create an array of statements that gets extended
88
- partial_statements = [Statement.new]
89
-
90
- # Go through each element of the statement structure
91
- self.each do |statement_element|
92
-
93
- # Creates an array of updated statements
94
- updated_statements = []
95
-
96
- # If it is an unknown variable just add it
97
- if(statement_element == Unknown)
98
- partial_statements = add_unknown_variable(partial_statements)
99
- next
100
- end
101
-
102
- # Just include it if it's a = sign
103
- if(statement_element == Equal)or(statement_element == Addition)
104
-
105
- # Go through each element in the partial statements and add a copy of the new element
106
- partial_statements.each do |partial|
107
- copied_statement = partial.copy
108
- copied_statement.push(statement_element.new)
109
- updated_statements.push copied_statement
110
- end
111
- partial_statements = updated_statements
112
- next
113
- end
114
-
115
- # Go through each of the available elements and see if they meet the statement elements
116
- available.each do |avail|
117
-
118
- # If any of the values match - include them in the statement
119
- if avail.kind_of?(statement_element)
120
-
121
- # Go through each element in the partial statements and add a copy of the new element
122
- partial_statements.each do |partial|
123
- copied_statement = partial.copy
124
- copied_statement.push(avail.copy)
125
- updated_statements.push copied_statement
126
- end
127
-
128
- end
129
-
130
- # Now see what instance calls are available to the passed avail
131
- if avail.kind_of?(Variable)
132
-
133
- # Retrieve any instance calls available for that variable
134
- # TODO Availabe should not include the variable with the same id
135
- instance_calls = avail.instance_calls(available)
136
- instance_calls.each do |x|
137
-
138
- if x.response.class == statement_element
139
-
140
- partial_statements.each do |partial|
141
- copied_statement = partial.copy
142
- copied_statement.push(x.copy)
143
- updated_statements.push copied_statement
144
- end
145
-
146
- end
147
- end
148
-
149
- end
150
-
151
- # If it is a definition call then check against the response value
152
- if avail.kind_of?(DefCall)
153
- if avail.response.class == statement_element
154
- partial_statements.each do |y|
155
- copied_statement = y.copy
156
- copied_statement.push(avail.copy)
157
- updated_statements.push copied_statement
158
- end
159
- end
160
- end
161
-
162
- end
163
-
164
- partial_statements = updated_statements
165
-
166
- end
167
-
168
- # # Save the structure used to create the statement - this structure type will
169
- # # become deprecated soom.
170
- # partial_statements.each do |x|
171
- # x.structure = self.class
172
- # end
173
-
174
- return partial_statements
175
-
176
- end
177
-
178
- # Returns a general description of the statement to
179
- # indicate whether it declares a new variable or
180
- # modifies an existing variable or nothing.
181
- #
182
- def self.statement_type
183
- #raise StandardError.new('This method should be overridden "'+self.to_s+'"')
184
- StandardLogger.instance.warning('This method should be used')
185
- #return StatementStructure.DECLARATION_STATEMENT
186
- return 'declaration_statement'
187
- end
188
-
189
- protected
190
-
191
- # TODO Write tests
192
- # Adds a unknown variable to each statement in the supplied
193
- # array and returns the result.
194
- #
195
- def add_unknown_variable(current_statements)
196
- results = []
197
- current_statements.each do |x|
198
- copied = x.copy
199
- copied.push(Unknown.new)
200
- results.push copied
201
- end
202
- return results
203
- end
204
-
205
- # Get the possible .times statements from the available
206
- # fixnum variables
207
- #
208
- def fixnum_times_statements(available=[])
209
-
210
- # If there aren't any fixnum variables there is nothing to return
211
- return [] unless available.any? {|x| x.kind_of?(FixnumVariable)}
212
-
213
- # Use each of the fixnum variables
214
- results = []
215
- available.find_all {|x| x.kind_of?(FixnumVariable) }.each do |y|
216
- new_statement = BlockStatement.new(Statement.new(InstanceCallContainer.new(y.copy,Times.new)),BlockContainer.new(BlockVariable.new))
217
- new_statement.structure = self.class
218
- results.push(new_statement)
219
- end
220
-
221
- return results
222
- end
223
-
224
- end
@@ -1,68 +0,0 @@
1
- # This class represents the general descriptions used inside the three
2
- # components of theories.
3
- #
4
- # TODO The statement class this extends is extremely bloated but I
5
- # need to create some complex journeys before I can start to
6
- # trim the fat.
7
- #
8
- class TheoryStatement < Statement
9
-
10
- def initialize(*parameters)
11
- super(*parameters)
12
- end
13
-
14
- # TODO map_to might replace the need for this method
15
- # TODO How does this work for instance call containers and array access?
16
- def replace_theory_variables!(mapping)
17
- self.each_with_index do |x,i|
18
- if x.kind_of?(TheoryVariable) && mapping.has_key?(x.theory_variable_id)
19
- self[i] = mapping[x.theory_variable_id].copy
20
- next
21
- end
22
- self[i].replace_theory_variables!(mapping) if self[i].respond_to?(:replace_theory_variables!)
23
- end
24
- self
25
- end
26
-
27
- # TODO This method was just nicked from TheoryDependent
28
- # TODO A similar method exists in Statement
29
- #
30
- def map_to(mapping)
31
-
32
- # Duplicate the current statement before it is rewritten
33
- rewritten_statement = self.copy
34
-
35
- # Find all the containers that contain TheoryVariables
36
- # NOTE The statement is put in an array because select all doesn't include the array itself
37
- containers = [rewritten_statement].select_all {|x| x.respond_to?(:has?)}
38
- theory_variable_containers = containers.select {|x| x.has? {|y| y.kind_of?(TheoryVariable)}}
39
-
40
- # Rewrite the statement replacing the values
41
- theory_variable_containers.each do |z|
42
- z.replace_theory_variables!(mapping)
43
- end
44
-
45
- return rewritten_statement
46
- #return TheoryDependent.new(rewritten_statement,@theory_component_id)
47
- end
48
-
49
- # =>
50
- # => map [<TheoryVariable>=><TheoryVariable>]
51
- def replace_variables_alt!(map)
52
- self.each do |x|
53
- x.replace_variables_alt!(map)
54
- end
55
- end
56
-
57
- # TODO Maybe use a opject to handle the output of the statement.
58
- def describe(tab=0)
59
- line = ''
60
- tab.times {line += " " }
61
- self.each do |code|
62
- line += code.describe
63
- break if code.object_id == self.last.object_id
64
- end
65
- return line
66
- end
67
-
68
- end