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.
- data/.gitignore +51 -0
- data/Gemfile +6 -3
- data/Gemfile.lock +16 -3
- data/Rakefile +94 -92
- data/VERSION +1 -1
- data/bin/cauldron +2 -2
- data/cauldron.gemspec +15 -451
- data/features/cauldron_new_approach.feature +46 -0
- data/features/step_definitions/cauldron_steps.rb +11 -0
- data/features/step_definitions/terminal_steps.rb +0 -2
- data/features/support/env.rb +11 -1
- data/features/support/hooks.rb +5 -0
- data/lib/cauldron.rb +13 -7
- data/lib/cauldron/array_reverse_operator.rb +39 -0
- data/lib/cauldron/concat_operator.rb +34 -0
- data/lib/cauldron/if_relationship.rb +37 -0
- data/lib/cauldron/numeric_operator.rb +45 -0
- data/lib/cauldron/pot.rb +54 -162
- data/lib/cauldron/relationship.rb +5 -0
- data/lib/cauldron/terminal.rb +4 -60
- data/lib/cauldron/version.rb +3 -0
- data/lib/core/string.rb +21 -0
- data/sandbox.rb +27 -6
- data/spec/cauldron/array_reverse_operator_spec.rb +59 -0
- data/spec/cauldron/concat_operator_spec.rb +89 -0
- data/spec/cauldron/if_relationship_spec.rb +25 -0
- data/spec/cauldron/numeric_operator_spec.rb +70 -0
- data/spec/cauldron/pot_spec.rb +81 -151
- data/spec/cauldron/terminal_spec.rb +1 -39
- data/spec/examples/adding_if_statement.yml +13 -0
- data/spec/examples/simple_head_theory.txt +13 -0
- data/spec/spec_helper.rb +1 -14
- data/tasks/theory_tasks.rake +207 -207
- metadata +92 -532
- data/cauldron/.autotest +0 -23
- data/cauldron/History.txt +0 -6
- data/cauldron/Manifest.txt +0 -8
- data/cauldron/README.txt +0 -57
- data/cauldron/Rakefile +0 -27
- data/cauldron/bin/cauldron +0 -3
- data/cauldron/lib/cauldron.rb +0 -3
- data/cauldron/test/test_cauldron.rb +0 -8
- data/features/cauldron_example_cases.feature +0 -13
- data/features/cauldron_generates_runtime_method.feature +0 -16
- data/features/cauldron_generates_single_paramter_methods.feature +0 -25
- data/features/cauldron_interactive_start_terminal.feature +0 -17
- data/features/cauldron_quit_terminal.feature +0 -9
- data/features/cauldron_start_terminal.feature +0 -12
- data/features/support/method_1.example +0 -3
- data/features/support/method_2.example +0 -6
- data/lib/Chain.rb +0 -771
- data/lib/ChainMapping.rb +0 -172
- data/lib/CodeHandler.rb +0 -513
- data/lib/Mapping.rb +0 -27
- data/lib/MappingValues.rb +0 -24
- data/lib/PartialChain.rb +0 -253
- data/lib/Theory.rb +0 -295
- data/lib/UnifiedChain.rb +0 -351
- data/lib/cauldron/conversion.rb +0 -15
- data/lib/cauldron/demos.rb +0 -280
- data/lib/cauldron/env.rb +0 -1
- data/lib/cauldron/sexp2cauldron.rb +0 -139
- data/lib/cauldron/theory_factory.rb +0 -10
- data/lib/cauldron/util/home.rb +0 -21
- data/lib/cauldron/util/saver.rb +0 -45
- data/lib/core/ActsAsCode.rb +0 -25
- data/lib/core/BlockToken.rb +0 -33
- data/lib/core/CCall.rb +0 -7
- data/lib/core/CTestCase.rb +0 -27
- data/lib/core/ClassMethodCallContainer.rb +0 -58
- data/lib/core/Container.rb +0 -95
- data/lib/core/InstanceCallContainer.rb +0 -298
- data/lib/core/MethodUsage.rb +0 -65
- data/lib/core/PrintVariables.rb +0 -25
- data/lib/core/TheoryGenerator.rb +0 -753
- data/lib/core/Token.rb +0 -7
- data/lib/core/assignment/Assignment.rb +0 -18
- data/lib/core/assignment/Equal.rb +0 -39
- data/lib/core/assignment/Equivalent.rb +0 -20
- data/lib/core/assignment/NotEqual.rb +0 -14
- data/lib/core/call_container/CallContainer.rb +0 -72
- data/lib/core/class_method_call/New.rb +0 -15
- data/lib/core/class_method_call/RuntimeClassMethodCall.rb +0 -31
- data/lib/core/declaration/Declaration.rb +0 -16
- data/lib/core/declaration/LiteralDeclaration.rb +0 -47
- data/lib/core/declaration/VariableDeclaration.rb +0 -59
- data/lib/core/instance_call/ArrayEach.rb +0 -23
- data/lib/core/instance_call/ArrayLength.rb +0 -15
- data/lib/core/instance_call/Chop.rb +0 -19
- data/lib/core/instance_call/Copy.rb +0 -22
- data/lib/core/instance_call/DeclaredVariable.rb +0 -18
- data/lib/core/instance_call/InstanceCall.rb +0 -77
- data/lib/core/instance_call/Params.rb +0 -15
- data/lib/core/instance_call/Push.rb +0 -20
- data/lib/core/instance_call/StringLength.rb +0 -32
- data/lib/core/instance_call/Times.rb +0 -20
- data/lib/core/instance_call/instance_calls.rb +0 -176
- data/lib/core/instance_call/length_equal.rb +0 -15
- data/lib/core/kernal/EvalCall.rb +0 -15
- data/lib/core/kernal/LocalVariablesCall.rb +0 -15
- data/lib/core/literal/Literal.rb +0 -111
- data/lib/core/literal/Raw.rb +0 -23
- data/lib/core/literal/RuntimeMethodLiteral.rb +0 -21
- data/lib/core/literal/StatementLiteral.rb +0 -28
- data/lib/core/method_call/AvailableVariablesCall.rb +0 -25
- data/lib/core/method_call/ClassCall.rb +0 -33
- data/lib/core/method_call/DefCall.rb +0 -72
- data/lib/core/method_call/EvaluateClassCall.rb +0 -29
- data/lib/core/method_call/MethodNameCall.rb +0 -27
- data/lib/core/method_call/ToDeclarationCall.rb +0 -15
- data/lib/core/requirement/Requirement.rb +0 -292
- data/lib/core/runtime_class/ArrayClass.rb +0 -19
- data/lib/core/runtime_class/ClassCallClass.rb +0 -23
- data/lib/core/runtime_class/ClassEvaluationClass.rb +0 -19
- data/lib/core/runtime_class/ClassName.rb +0 -18
- data/lib/core/runtime_class/DefCallClass.rb +0 -21
- data/lib/core/runtime_class/EqualClass.rb +0 -19
- data/lib/core/runtime_class/FixnumClass.rb +0 -15
- data/lib/core/runtime_class/InstanceCallClass.rb +0 -19
- data/lib/core/runtime_class/InstanceCallContainerClass.rb +0 -16
- data/lib/core/runtime_class/InstanceClassCallClass.rb +0 -19
- data/lib/core/runtime_class/LiteralClass.rb +0 -19
- data/lib/core/runtime_class/MethodParameterClass.rb +0 -27
- data/lib/core/runtime_class/MethodUsageClass.rb +0 -27
- data/lib/core/runtime_class/RequirementClass.rb +0 -19
- data/lib/core/runtime_class/ReturnClass.rb +0 -21
- data/lib/core/runtime_class/RuntimeClass.rb +0 -30
- data/lib/core/runtime_class/RuntimeClassClass.rb +0 -19
- data/lib/core/runtime_class/RuntimeMethodClass.rb +0 -34
- data/lib/core/runtime_class/StatementClass.rb +0 -53
- data/lib/core/runtime_class/StringClass.rb +0 -23
- data/lib/core/runtime_class/StringLengthClass.rb +0 -19
- data/lib/core/runtime_class/StringVariableClass.rb +0 -19
- data/lib/core/runtime_class/ThisClass.rb +0 -15
- data/lib/core/runtime_class/UnknownClass.rb +0 -23
- data/lib/core/runtime_class/class_names.rb +0 -95
- data/lib/core/runtime_class/runtime_class.rb +0 -123
- data/lib/core/runtime_method/ActsAsRuntimeMethod.rb +0 -293
- data/lib/core/runtime_method/ParametersContainer.rb +0 -29
- data/lib/core/runtime_method/RealisedRuntimeMethod.rb +0 -94
- data/lib/core/runtime_method/RuntimeMethod.rb +0 -814
- data/lib/core/runtime_method/WriteParameters.rb +0 -35
- data/lib/core/statement/ActsAsStatement.rb +0 -20
- data/lib/core/statement/ArrayAccess.rb +0 -122
- data/lib/core/statement/BlockStatement.rb +0 -348
- data/lib/core/statement/DeclarationStatement.rb +0 -19
- data/lib/core/statement/HackStatement.rb +0 -25
- data/lib/core/statement/HashAccess.rb +0 -18
- data/lib/core/statement/OpenStatement.rb +0 -178
- data/lib/core/statement/RealisedStatement.rb +0 -5
- data/lib/core/statement/SingleLineBlockStatement.rb +0 -39
- data/lib/core/statement/Statement.rb +0 -1091
- data/lib/core/statement/StatementGroup.rb +0 -157
- data/lib/core/statement/StatementStructure2.rb +0 -224
- data/lib/core/statement/TheoryStatement.rb +0 -68
- data/lib/core/statement/TopologicalStatements.rb +0 -34
- data/lib/core/syntax/Addition.rb +0 -26
- data/lib/core/syntax/BlockContainer.rb +0 -102
- data/lib/core/syntax/Boolean.rb +0 -15
- data/lib/core/syntax/Code.rb +0 -11
- data/lib/core/syntax/Do.rb +0 -20
- data/lib/core/syntax/False.rb +0 -12
- data/lib/core/syntax/If.rb +0 -36
- data/lib/core/syntax/Nil.rb +0 -15
- data/lib/core/syntax/Return.rb +0 -33
- data/lib/core/syntax/Subtract.rb +0 -19
- data/lib/core/syntax/This.rb +0 -40
- data/lib/core/syntax/True.rb +0 -20
- data/lib/core/syntax/syntax.rb +0 -24
- data/lib/core/tracking/ActsAsTrackable.rb +0 -65
- data/lib/core/tracking/History.rb +0 -167
- data/lib/core/tracking/RuntimeTrackingMethod.rb +0 -32
- data/lib/core/tracking/Step.rb +0 -52
- data/lib/core/variable/ArrayVariable.rb +0 -76
- data/lib/core/variable/BaseVariable.rb +0 -152
- data/lib/core/variable/BlockVariable.rb +0 -92
- data/lib/core/variable/FixnumVariable.rb +0 -35
- data/lib/core/variable/HistoryVariable.rb +0 -8
- data/lib/core/variable/MethodParameter.rb +0 -179
- data/lib/core/variable/MethodUsageVariable.rb +0 -60
- data/lib/core/variable/NilVariable.rb +0 -29
- data/lib/core/variable/RuntimeMethodParameter.rb +0 -67
- data/lib/core/variable/StatementVariable.rb +0 -72
- data/lib/core/variable/StepVariable.rb +0 -7
- data/lib/core/variable/StringVariable.rb +0 -46
- data/lib/core/variable/TypeVariable.rb +0 -72
- data/lib/core/variable/Unknown.rb +0 -102
- data/lib/core/variable/UnknownVariable.rb +0 -29
- data/lib/core/variable/Variable.rb +0 -70
- data/lib/core/variable/VariableContainer.rb +0 -28
- data/lib/core/variable/VariableIncluded.rb +0 -27
- data/lib/core/variable/VariableReference.rb +0 -85
- data/lib/error/FailedToFindStatementContainerError.rb +0 -7
- data/lib/error/FailedToFindStatementError.rb +0 -7
- data/lib/error/FailedToFindVariableError.rb +0 -7
- data/lib/error/FailedToLiteraliseError.rb +0 -7
- data/lib/error/FailedVariableMatch.rb +0 -7
- data/lib/error/ImproperStatementUsageError.rb +0 -7
- data/lib/error/IncompatiableRequirementsError.rb +0 -7
- data/lib/error/InvalidStatementError.rb +0 -7
- data/lib/error/MethodSizeError.rb +0 -7
- data/lib/error/RuntimeSyntaxError.rb +0 -7
- data/lib/error/UnexpectedStatementTypeError.rb +0 -7
- data/lib/error/UnknownStatementType.rb +0 -7
- data/lib/error/UnliteralisableError.rb +0 -7
- data/lib/implemented_chain.rb +0 -35
- data/lib/intrinsic/IntrinsicLastRuntimeMethod.rb +0 -20
- data/lib/intrinsic/IntrinsicLiteral.rb +0 -26
- data/lib/intrinsic/IntrinsicObject.rb +0 -22
- data/lib/intrinsic/IntrinsicRuntimeMethod.rb +0 -27
- data/lib/intrinsic/IntrinsicTestCases.rb +0 -17
- data/lib/logger/StandardLogger.rb +0 -62
- data/lib/required.rb +0 -222
- data/lib/ruby_code/Array.rb +0 -95
- data/lib/ruby_code/Fixnum.rb +0 -39
- data/lib/ruby_code/Hash.rb +0 -25
- data/lib/ruby_code/NilClass.rb +0 -19
- data/lib/ruby_code/Object.rb +0 -24
- data/lib/ruby_code/String.rb +0 -63
- data/lib/ruby_code/Symbol.rb +0 -7
- data/lib/standard_library/Tasks.rb +0 -12
- data/lib/theories.rb +0 -166
- data/lib/theory/ActionImplementation.rb +0 -17
- data/lib/theory/TheoryAction.rb +0 -100
- data/lib/theory/TheoryChainValidator.rb +0 -103
- data/lib/theory/TheoryComponent.rb +0 -59
- data/lib/theory/TheoryConnector.rb +0 -756
- data/lib/theory/TheoryDependent.rb +0 -135
- data/lib/theory/TheoryImplementation.rb +0 -75
- data/lib/theory/TheoryResult.rb +0 -131
- data/lib/theory/TheoryVariable.rb +0 -63
- data/lib/theory/theory_collection.rb +0 -62
- data/lib/util/ClassEvaluation.rb +0 -44
- data/lib/util/CodeEvaluation.rb +0 -39
- data/lib/util/DeclarationStatementEvaluation.rb +0 -32
- data/lib/util/MethodEvaluation.rb +0 -49
- data/lib/util/MethodTester.rb +0 -71
- data/lib/util/MethodValidation.rb +0 -149
- data/lib/util/MethodWriter.rb +0 -66
- data/lib/util/Parser.rb +0 -305
- data/lib/util/StatementCheck.rb +0 -44
- data/lib/util/StringToTheory.rb +0 -142
- data/lib/util/System.rb +0 -8
- data/spec/cauldron/chain_spec.rb +0 -24
- data/spec/cauldron/demos_spec.rb +0 -30
- data/spec/cauldron/runtime_method_spec.rb +0 -92
- data/spec/cauldron/saver_spec.rb +0 -45
- data/spec/cauldron/sexp_2_cauldron_spec.rb +0 -118
- data/spec/cauldron/theory_action_spec.rb +0 -25
- data/spec/cauldron/theory_connector_spec.rb +0 -52
- data/spec/cauldron/theory_spec.rb +0 -59
- data/spec/cauldron/unified_chain_spec.rb +0 -140
- data/test/fixtures/chains/1/declaration.txt +0 -26
- data/test/fixtures/chains/1/dump +0 -0
- data/test/fixtures/chains/2/declaration.txt +0 -26
- data/test/fixtures/chains/2/dump +0 -0
- data/test/fixtures/chains/3/declaration.txt +0 -26
- data/test/fixtures/chains/3/dump +0 -0
- data/test/fixtures/implementation_results/0/declaration.txt +0 -3
- data/test/fixtures/implementation_results/0/dump +0 -0
- data/test/fixtures/theories/0/declaration.txt +0 -9
- data/test/fixtures/theories/0/desc +0 -10
- data/test/fixtures/theories/0/dump +0 -0
- data/test/fixtures/theories/1/declaration.txt +0 -15
- data/test/fixtures/theories/1/desc +0 -11
- data/test/fixtures/theories/1/dump +0 -0
- data/test/fixtures/theories/10/declaration.txt +0 -23
- data/test/fixtures/theories/10/desc +0 -17
- data/test/fixtures/theories/10/dump +0 -0
- data/test/fixtures/theories/11/declaration.txt +0 -20
- data/test/fixtures/theories/11/desc +0 -14
- data/test/fixtures/theories/11/dump +0 -0
- data/test/fixtures/theories/12/declaration.txt +0 -18
- data/test/fixtures/theories/12/desc +0 -12
- data/test/fixtures/theories/12/dump +0 -0
- data/test/fixtures/theories/13/declaration.txt +0 -24
- data/test/fixtures/theories/13/desc +0 -20
- data/test/fixtures/theories/13/dump +0 -0
- data/test/fixtures/theories/14/declaration.txt +0 -26
- data/test/fixtures/theories/14/desc +0 -20
- data/test/fixtures/theories/14/dump +0 -0
- data/test/fixtures/theories/15/declaration.txt +0 -20
- data/test/fixtures/theories/15/desc +0 -14
- data/test/fixtures/theories/15/dump +0 -0
- data/test/fixtures/theories/16/declaration.txt +0 -30
- data/test/fixtures/theories/16/desc +0 -14
- data/test/fixtures/theories/16/dump +0 -0
- data/test/fixtures/theories/17/declaration.txt +0 -25
- data/test/fixtures/theories/17/desc +0 -11
- data/test/fixtures/theories/17/dump +0 -0
- data/test/fixtures/theories/18/declaration.txt +0 -23
- data/test/fixtures/theories/18/desc +0 -11
- data/test/fixtures/theories/18/dump +0 -0
- data/test/fixtures/theories/19/declaration.txt +0 -23
- data/test/fixtures/theories/19/desc +0 -11
- data/test/fixtures/theories/19/dump +0 -0
- data/test/fixtures/theories/2/declaration.txt +0 -12
- data/test/fixtures/theories/2/desc +0 -10
- data/test/fixtures/theories/2/dump +0 -0
- data/test/fixtures/theories/20/declaration.txt +0 -23
- data/test/fixtures/theories/20/desc +0 -17
- data/test/fixtures/theories/20/dump +0 -0
- data/test/fixtures/theories/3/declaration.txt +0 -19
- data/test/fixtures/theories/3/desc +0 -11
- data/test/fixtures/theories/3/dump +0 -0
- data/test/fixtures/theories/4/declaration.txt +0 -11
- data/test/fixtures/theories/4/desc +0 -11
- data/test/fixtures/theories/4/dump +0 -0
- data/test/fixtures/theories/5/declaration.txt +0 -6
- data/test/fixtures/theories/5/desc +0 -9
- data/test/fixtures/theories/5/dump +0 -0
- data/test/fixtures/theories/6/declaration.txt +0 -13
- data/test/fixtures/theories/6/desc +0 -11
- data/test/fixtures/theories/6/dump +0 -0
- data/test/fixtures/theories/7/declaration.txt +0 -19
- data/test/fixtures/theories/7/desc +0 -11
- data/test/fixtures/theories/7/dump +0 -0
- data/test/fixtures/theories/8/declaration.txt +0 -21
- data/test/fixtures/theories/8/desc +0 -11
- data/test/fixtures/theories/8/dump +0 -0
- data/test/fixtures/theories/9/declaration.txt +0 -24
- data/test/fixtures/theories/9/desc +0 -20
- data/test/fixtures/theories/9/dump +0 -0
- data/test/fixtures/theory_implementations/0/declaration.txt +0 -11
- data/test/fixtures/theory_implementations/0/desc.txt +0 -9
- data/test/fixtures/theory_implementations/0/dump +0 -0
- data/test/fixtures/theory_implementations/0/theory_id +0 -1
- data/test/fixtures/theory_implementations/1/declaration.txt +0 -11
- data/test/fixtures/theory_implementations/1/desc.txt +0 -9
- data/test/fixtures/theory_implementations/1/dump +0 -1
- data/test/fixtures/theory_implementations/1/theory_id +0 -1
- data/test/fixtures/theory_implementations/2/declaration.txt +0 -11
- data/test/fixtures/theory_implementations/2/desc.txt +0 -9
- data/test/fixtures/theory_implementations/2/dump +0 -0
- data/test/fixtures/theory_implementations/2/theory_id +0 -1
- data/test/output/simple_method.txt +0 -5
- data/test/output/test_method/first_possible_method.txt +0 -6
- data/test/output/test_simple_cases/simple_case_01.txt +0 -8
- data/test/output/test_simple_cases/simple_case_02.txt +0 -7
- data/test/output/test_simple_cases/simple_case_03.txt +0 -8
- data/test/output/test_simple_cases/simple_case_04.txt +0 -8
- data/test/output/test_simple_cases/simple_case_05.txt +0 -8
- data/test/output/test_simple_cases/simple_case_06.txt +0 -9
- data/test/output/test_simple_cases/simple_case_07.txt +0 -9
- data/test/output/test_simple_cases/simple_case_08.txt +0 -9
- data/test/tc_describe.rb +0 -46
- data/test/tc_method.rb +0 -130
- data/test/tc_requirement.rb +0 -30
- data/test/tc_suite_complete.rb +0 -26
- data/test/tc_variable.rb +0 -52
- data/test/ts_complete.rb +0 -74
- data/test/ts_stable.rb +0 -81
- data/test/unit/core/declaration/tc_literal_declaration.rb +0 -34
- data/test/unit/core/method_call/tc_class_call.rb +0 -20
- data/test/unit/core/runtime_method/tc_realised_runtime_method.rb +0 -132
- data/test/unit/core/runtime_method/tc_runtime_method.rb +0 -546
- data/test/unit/core/statement/tc_array_access.rb +0 -63
- data/test/unit/core/statement/tc_block_statement.rb +0 -53
- data/test/unit/core/statement/tc_hack_statement.rb +0 -26
- data/test/unit/core/statement/tc_open_statement.rb +0 -79
- data/test/unit/core/statement/tc_statement.rb +0 -483
- data/test/unit/core/statement/tc_statement_group.rb +0 -35
- data/test/unit/core/statement/tc_statement_replace_variable.rb +0 -61
- data/test/unit/core/statement/tc_theory_statement.rb +0 -53
- data/test/unit/core/syntax/tc_block_container.rb +0 -32
- data/test/unit/core/syntax/tc_if_container.rb +0 -39
- data/test/unit/core/tc_class_method_call.rb +0 -34
- data/test/unit/core/tc_container.rb +0 -41
- data/test/unit/core/tc_ctest_case.rb +0 -25
- data/test/unit/core/tc_instance_call_container.rb +0 -93
- data/test/unit/core/tc_literal.rb +0 -30
- data/test/unit/core/tc_theory_generator.rb +0 -336
- data/test/unit/core/tc_theory_generator_heavy.rb +0 -42
- data/test/unit/core/tracking/tc_history.rb +0 -104
- data/test/unit/core/tracking/tc_step.rb +0 -65
- data/test/unit/core/variable/tc_array_variable.rb +0 -61
- data/test/unit/core/variable/tc_block_variable.rb +0 -17
- data/test/unit/core/variable/tc_fixnum_variable.rb +0 -54
- data/test/unit/core/variable/tc_method_parameter_variable.rb +0 -22
- data/test/unit/core/variable/tc_runtime_method_variable.rb +0 -32
- data/test/unit/core/variable/tc_string_variable.rb +0 -37
- data/test/unit/core/variable/tc_unknown.rb +0 -24
- data/test/unit/core/variable/tc_variable_reference.rb +0 -28
- data/test/unit/ruby_code/tc_array.rb +0 -64
- data/test/unit/ruby_code/tc_fixnum.rb +0 -18
- data/test/unit/ruby_code/tc_hash.rb +0 -41
- data/test/unit/ruby_code/tc_string.rb +0 -38
- data/test/unit/tc_chain.rb +0 -434
- data/test/unit/tc_chain_mapping.rb +0 -62
- data/test/unit/tc_chain_with_case_1.rb +0 -169
- data/test/unit/tc_instance_call.rb +0 -40
- data/test/unit/tc_method_usage.rb +0 -35
- data/test/unit/tc_pot.rb +0 -124
- data/test/unit/tc_runtime_tracking_method.rb +0 -40
- data/test/unit/tc_theory.rb +0 -531
- data/test/unit/tc_variable_declaration.rb +0 -32
- data/test/unit/theory/tc_theory_action.rb +0 -108
- data/test/unit/theory/tc_theory_action_implementation.rb +0 -23
- data/test/unit/theory/tc_theory_chain_validator.rb +0 -340
- data/test/unit/theory/tc_theory_connector.rb +0 -361
- data/test/unit/theory/tc_theory_dependent.rb +0 -153
- data/test/unit/theory/tc_theory_implementation.rb +0 -137
- data/test/unit/theory/tc_theory_result.rb +0 -112
- data/test/unit/theory/tc_theory_variable.rb +0 -45
- data/test/unit/util/tc_method_validation.rb +0 -101
- data/test/unit/util/tc_parser.rb +0 -110
- data/test/unit/util/tc_string_to_theory.rb +0 -300
- data/test/unit/variable/tc_method_usage_variable.rb +0 -25
- data/tmp/runtime_method_evaluation.rb +0 -16
data/lib/cauldron/env.rb
DELETED
@@ -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
|
data/lib/cauldron/util/home.rb
DELETED
@@ -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
|
data/lib/cauldron/util/saver.rb
DELETED
@@ -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
|
data/lib/core/ActsAsCode.rb
DELETED
@@ -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
|
data/lib/core/BlockToken.rb
DELETED
@@ -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
|
data/lib/core/CCall.rb
DELETED
data/lib/core/CTestCase.rb
DELETED
@@ -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
|
data/lib/core/Container.rb
DELETED
@@ -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
|