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
@@ -1,72 +0,0 @@
|
|
1
|
-
class StatementVariable < TypeVariable
|
2
|
-
|
3
|
-
def initialize(val)
|
4
|
-
super(val)
|
5
|
-
end
|
6
|
-
|
7
|
-
def copy
|
8
|
-
copied = self.class.new(@value.copy) {{:variable_id => self.variable_id,:uniq_id=>@uniq_id, :uniq_id_history=>@uniq_id_history.copy}}
|
9
|
-
copied.variable_id = self.variable_id
|
10
|
-
return copied
|
11
|
-
end
|
12
|
-
|
13
|
-
# Only let this method be called from fellow Fixnum classes or Unknowns
|
14
|
-
def variable_id=(id)
|
15
|
-
# TODO This would be nicer if it wasn't so hard coded ./lib/core/variable/Unknown.rb
|
16
|
-
unless caller.first.split(':')[0]==__FILE__ or caller.first.split(':')[0]=='./lib/core/statement/Statement.rb'
|
17
|
-
raise StandardError.new('Illegal attempt to set variable_id')
|
18
|
-
end
|
19
|
-
@variable_id = id
|
20
|
-
end
|
21
|
-
|
22
|
-
# Returns a copy of the variable, this method exists in the
|
23
|
-
# instance call class. It avoids distinguishing the two.
|
24
|
-
# Since variale is lowest level context doesn't matter.
|
25
|
-
#
|
26
|
-
def copy_contextual_variable
|
27
|
-
return copy
|
28
|
-
end
|
29
|
-
|
30
|
-
# Returns an array of instance calls the Statement instances can call. Some
|
31
|
-
# method calls require parameters. These parameters are in the available
|
32
|
-
# array.
|
33
|
-
#
|
34
|
-
# @param available An array of variables to be included in the creation
|
35
|
-
# of the InstanceCallContainer.
|
36
|
-
#
|
37
|
-
def instance_calls(available=[])
|
38
|
-
declared_variable_call = InstanceCallContainer.new(self.copy,DeclaredVariable.new)
|
39
|
-
return [declared_variable_call]
|
40
|
-
end
|
41
|
-
|
42
|
-
# Returns an array of instances calls that return a value and are
|
43
|
-
# therefore approriate for declaration statements.
|
44
|
-
#
|
45
|
-
def returning_instance_calls(available=[])
|
46
|
-
return instance_calls(available)
|
47
|
-
end
|
48
|
-
|
49
|
-
#
|
50
|
-
def destructive_instance_calls(available=[])
|
51
|
-
return []
|
52
|
-
end
|
53
|
-
|
54
|
-
# Compares the passed argument and returns true if it is a unknown
|
55
|
-
# variable which is treated as a wild card or a variable with
|
56
|
-
# the same value.
|
57
|
-
#
|
58
|
-
# TODO I'm not sure I like UnkownVariables being treated as wild cards
|
59
|
-
#
|
60
|
-
def equivalent?(to)
|
61
|
-
return true if to.kind_of?(Unknown)
|
62
|
-
return false if to.class != self.class
|
63
|
-
# TODO I don't know if this is an equivalent comparision
|
64
|
-
return false unless to.value.write == @value.write
|
65
|
-
return true
|
66
|
-
end
|
67
|
-
|
68
|
-
# def to_var
|
69
|
-
# raise StandardError.new('Already a variable')
|
70
|
-
# end
|
71
|
-
|
72
|
-
end
|
@@ -1,46 +0,0 @@
|
|
1
|
-
class StringVariable < TypeVariable
|
2
|
-
|
3
|
-
def initialize(val,id=nil)
|
4
|
-
super(val,id)
|
5
|
-
end
|
6
|
-
|
7
|
-
# Returns an array of instance calls for the particular type
|
8
|
-
# variable. For example:
|
9
|
-
#
|
10
|
-
# StringVariable.new('test').instance_calls
|
11
|
-
#
|
12
|
-
# might return [var.chop,var.length]
|
13
|
-
#
|
14
|
-
def instance_calls(available=[])
|
15
|
-
|
16
|
-
# Add the chop instance call
|
17
|
-
chop_call = InstanceCallContainer.new(self.copy,Chop.new)
|
18
|
-
length_call = InstanceCallContainer.new(self.copy,StringLength.new)
|
19
|
-
return [chop_call,length_call]
|
20
|
-
|
21
|
-
end
|
22
|
-
|
23
|
-
def to_declaration
|
24
|
-
return VariableDeclaration.new(self.class.to_s,@value.to_declaration)
|
25
|
-
end
|
26
|
-
|
27
|
-
def to_literal_string
|
28
|
-
return @value.to_literal_string
|
29
|
-
end
|
30
|
-
|
31
|
-
# TODO I wan't to get rid of this call entirly
|
32
|
-
def copy_contextual_variable
|
33
|
-
return copy
|
34
|
-
end
|
35
|
-
|
36
|
-
# Returns an array of desctructive instance calls given the available
|
37
|
-
# variables.
|
38
|
-
#
|
39
|
-
# @param available An array of other variables that can be used as
|
40
|
-
# parameters.
|
41
|
-
#
|
42
|
-
def destructive_instance_calls(available=[])
|
43
|
-
return []
|
44
|
-
end
|
45
|
-
|
46
|
-
end
|
@@ -1,72 +0,0 @@
|
|
1
|
-
# This variable doesn't represent a specific data type it is merely the parent
|
2
|
-
# of all the other typed variables e.g. FixnumVariable, StringVariable etc.
|
3
|
-
#
|
4
|
-
class TypeVariable < BaseVariable
|
5
|
-
attr_reader :value
|
6
|
-
|
7
|
-
def initialize(val,id=nil)
|
8
|
-
@value = val
|
9
|
-
super(id)
|
10
|
-
end
|
11
|
-
|
12
|
-
def copy
|
13
|
-
copied = self.class.new(@value.copy) {{:variable_id => self.variable_id,:uniq_id=>@uniq_id, :uniq_id_history=>@uniq_id_history.copy}}
|
14
|
-
copied.instance_variable = @instance_variable
|
15
|
-
return copied
|
16
|
-
end
|
17
|
-
|
18
|
-
# Only let this method be called from fellow Fixnum classes or Unknowns
|
19
|
-
# NOTE I have allowed variable ids to be set to allow runtime methods to change
|
20
|
-
# the id of passed variables.
|
21
|
-
def variable_id=(id)
|
22
|
-
# TODO This would be nicer if it wasn't so hard coded ./lib/core/variable/Unknown.rb
|
23
|
-
# unless caller.first.split(':')[0]==__FILE__ or caller.first.split(':')[0]=='./lib/core/variable/Unknown.rb'
|
24
|
-
# raise StandardError.new('Illegal attempt to set variable_id')
|
25
|
-
# end
|
26
|
-
@variable_id = id
|
27
|
-
end
|
28
|
-
|
29
|
-
def literalisable?
|
30
|
-
return true
|
31
|
-
end
|
32
|
-
|
33
|
-
def literalise
|
34
|
-
return Literal.new(@value.copy)
|
35
|
-
end
|
36
|
-
|
37
|
-
def realised?
|
38
|
-
return true unless @value.nil?
|
39
|
-
return false
|
40
|
-
end
|
41
|
-
|
42
|
-
def to_literal_string
|
43
|
-
return @value.to_literal_string
|
44
|
-
end
|
45
|
-
|
46
|
-
def describe(tab=0)
|
47
|
-
l = ''
|
48
|
-
tab.times {|x| l += "/t" }
|
49
|
-
l += '['+self.class.to_s+'] '+@value.write
|
50
|
-
l += "\n"
|
51
|
-
return l
|
52
|
-
end
|
53
|
-
|
54
|
-
|
55
|
-
def cauldron_method_calls
|
56
|
-
return ['.value']
|
57
|
-
end
|
58
|
-
|
59
|
-
# Compares the passed argument and returns true if it is a unknown
|
60
|
-
# variable which is treated as a wild card or a variable with
|
61
|
-
# the same value.
|
62
|
-
#
|
63
|
-
# TODO I'm not sure I like UnkownVariables being treated as wild cards
|
64
|
-
#
|
65
|
-
def equivalent?(to)
|
66
|
-
return true if to.kind_of?(Unknown)
|
67
|
-
return false if to.class != self.class
|
68
|
-
return false unless to.value == @value
|
69
|
-
return true
|
70
|
-
end
|
71
|
-
|
72
|
-
end
|
@@ -1,102 +0,0 @@
|
|
1
|
-
|
2
|
-
# TODO This is not strickly a Variable - it is a data type of it's own
|
3
|
-
|
4
|
-
class Unknown < BaseVariable
|
5
|
-
alias :variable_push :push
|
6
|
-
|
7
|
-
# TODO I think requirements here can be dropped
|
8
|
-
def initialize(*requirements)
|
9
|
-
super(*requirements)
|
10
|
-
end
|
11
|
-
|
12
|
-
# Returns a typed version of the variable with the correct
|
13
|
-
# variable id. This occurs when an Unknown variable is
|
14
|
-
# used in a statement and its value can be determined.
|
15
|
-
#
|
16
|
-
def classify(value)
|
17
|
-
case value.class.to_s
|
18
|
-
when 'String'
|
19
|
-
var = StringVariable.new(value)
|
20
|
-
var.variable_id = variable_id
|
21
|
-
return var
|
22
|
-
when 'Fixnum'
|
23
|
-
var = FixnumVariable.new(value)
|
24
|
-
var.variable_id = variable_id
|
25
|
-
return var
|
26
|
-
else
|
27
|
-
raise StandardError.new('Unknown data type '+value.class.to_s)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
# TODO Should 'Unknown' have a variable id
|
32
|
-
def copy
|
33
|
-
result = self.class.new(*self) {{:variable_id => variable_id,:uniq_id=>@uniq_id,:uniq_id_history=>@uniq_id_history.copy}}
|
34
|
-
result.instance_variable = @instance_variable
|
35
|
-
return result
|
36
|
-
end
|
37
|
-
|
38
|
-
#
|
39
|
-
def describe(tab=0,context=self)
|
40
|
-
|
41
|
-
# Create a temporay copy of the variable
|
42
|
-
copied_var = self.copy
|
43
|
-
|
44
|
-
unless context == self
|
45
|
-
|
46
|
-
# Return a duplicate variable with the requirements in the context indicated
|
47
|
-
copied_var = context.contextual_variable(copied_var.variable_id)
|
48
|
-
|
49
|
-
end
|
50
|
-
|
51
|
-
# Print the name of the variable
|
52
|
-
line = ''
|
53
|
-
line += write
|
54
|
-
|
55
|
-
# Print out each of the requirements
|
56
|
-
copied_var.each do |x|
|
57
|
-
desc = x.describe(context)
|
58
|
-
desc.each_line do |l|
|
59
|
-
line += "\t"+l
|
60
|
-
end
|
61
|
-
line += "\n" unless x == copied_var.last
|
62
|
-
end
|
63
|
-
line += "\n"
|
64
|
-
|
65
|
-
return line
|
66
|
-
|
67
|
-
end
|
68
|
-
|
69
|
-
# Returns a copy of the variable, this method exists in the
|
70
|
-
# instance call class. It avoids distinguishing the two.
|
71
|
-
# Since variale is lowest level context doesn't matter.
|
72
|
-
#
|
73
|
-
def copy_contextual_variable
|
74
|
-
return copy
|
75
|
-
end
|
76
|
-
|
77
|
-
def to_literal_string
|
78
|
-
return 'var'
|
79
|
-
end
|
80
|
-
|
81
|
-
def realised?
|
82
|
-
return false
|
83
|
-
end
|
84
|
-
|
85
|
-
def to_declaration
|
86
|
-
return VariableDeclaration.new('Unknown')
|
87
|
-
end
|
88
|
-
|
89
|
-
def to_var(id=nil,uniq_id=nil)
|
90
|
-
StandardLogger.instance.warning('"Unknown" is NOT a variable - it is a data type')
|
91
|
-
return UnknownVariable.new(self) {{:variable_id => id,:uniq_id=>uniq_id}}
|
92
|
-
end
|
93
|
-
|
94
|
-
# Unknown variables are evaluated are runtime so as along as it is
|
95
|
-
# a variable it is probably fine.
|
96
|
-
#
|
97
|
-
def equivalent?(to)
|
98
|
-
return true if to.kind_of?(BaseVariable)
|
99
|
-
return false
|
100
|
-
end
|
101
|
-
|
102
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# NOTE FROM VARIABLE REFERENCE
|
2
|
-
# I'm not sure if this is the way to go, but I need some way
|
3
|
-
# to handle the case where variables reference variables.
|
4
|
-
#
|
5
|
-
# For example:
|
6
|
-
#
|
7
|
-
# #
|
8
|
-
# #
|
9
|
-
# def method_8
|
10
|
-
# var_12 = Statement.new(Unknown.new,Equal.new,8.to_declaration)
|
11
|
-
# var_570 = var_12.declared_variable
|
12
|
-
# end
|
13
|
-
#
|
14
|
-
# In this case it is difficult to realise var_570 since it references an
|
15
|
-
# unrealised variable. I should maybe have created an Unknown class, but
|
16
|
-
# it is still an Unknown.
|
17
|
-
#
|
18
|
-
class UnknownVariable < TypeVariable
|
19
|
-
|
20
|
-
def initialize(val,id=nil)
|
21
|
-
super(val,id)
|
22
|
-
end
|
23
|
-
|
24
|
-
#
|
25
|
-
def destructive_instance_calls(available=[])
|
26
|
-
return []
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
@@ -1,70 +0,0 @@
|
|
1
|
-
# This class represents any variable object used to help generate
|
2
|
-
# a method.
|
3
|
-
#
|
4
|
-
|
5
|
-
module Variable
|
6
|
-
|
7
|
-
include VariableIncluded
|
8
|
-
|
9
|
-
@@variable_id = 0
|
10
|
-
|
11
|
-
# The unique id is used to identify actually different variables. This essentially occurs
|
12
|
-
# when a destructive method call is used. For example an two array variables might have the
|
13
|
-
# same variable_id say '2' so would both be written as 'var_2' but one of them might have had
|
14
|
-
# another element pushed into it e.g. 'var_2.push(6)'. The changed variable would then
|
15
|
-
# receive a different uniq_id.
|
16
|
-
@@uniq_id = 0
|
17
|
-
|
18
|
-
#CONST_TEST = 'test'
|
19
|
-
# 331 Constants are in capitals and accesses Variable::CONST_TEST class variables use @@
|
20
|
-
|
21
|
-
# Create the declaration for a unique variable id. The unique_variable_id reflects the different
|
22
|
-
# values a variable might have. For example if a variable is overwritten it will have the same
|
23
|
-
# name as it's predisessor but not the same value.
|
24
|
-
attr_reader :uniq_id, :scope_id
|
25
|
-
attr_writer :scope_id
|
26
|
-
|
27
|
-
def self.reset_global_id
|
28
|
-
#http://www.zenspider.com/Languages/Ruby/QuickRef.html
|
29
|
-
unless $".include?('test/unit.rb')
|
30
|
-
StandardLogger.instance.log 'WARNING: Resetting variable id, this should only be done for tests'
|
31
|
-
end
|
32
|
-
@@variable_id = 0
|
33
|
-
@@uniq_id = 0
|
34
|
-
end
|
35
|
-
|
36
|
-
def self.variable_id
|
37
|
-
return @@variable_id
|
38
|
-
end
|
39
|
-
|
40
|
-
# TODO This is not a permenant method it is a temporary fix
|
41
|
-
# as I migrate away from requirements.
|
42
|
-
#
|
43
|
-
def meets_requirements? of
|
44
|
-
return true if of.literalise.value == self.value
|
45
|
-
return false
|
46
|
-
end
|
47
|
-
|
48
|
-
# Change the value of the variables uniq_id
|
49
|
-
#
|
50
|
-
# @param The new value for the variables uniq_id
|
51
|
-
#
|
52
|
-
def uniq_id=(value)
|
53
|
-
@uniq_id = value
|
54
|
-
raise StandardError.new('Should be fixnum') unless value.kind_of?(Fixnum)
|
55
|
-
end
|
56
|
-
|
57
|
-
# Updates the uniq_id for this variable so it can be regarded
|
58
|
-
# differently. Uniq_ids are used in the CodeHandler to allow
|
59
|
-
# the inclusion of the correct statements to recreate a variable.
|
60
|
-
#
|
61
|
-
def increament_uniq_id!
|
62
|
-
@uniq_id = @@uniq_id
|
63
|
-
@@uniq_id += 1
|
64
|
-
end
|
65
|
-
|
66
|
-
def to_var(id=nil)
|
67
|
-
raise StandardError.new(self.class.to_s+' is already a Variable - should not call to_var')
|
68
|
-
end
|
69
|
-
|
70
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
class VariableContainer < BaseVariable
|
2
|
-
|
3
|
-
attr_writer :realised
|
4
|
-
|
5
|
-
def initialize
|
6
|
-
super()
|
7
|
-
|
8
|
-
@realised = false
|
9
|
-
end
|
10
|
-
|
11
|
-
# Returns a duplicate of this variable container.
|
12
|
-
#
|
13
|
-
def copy
|
14
|
-
result = VariableContainer.new(){{:variable_id => self.variable_id,:uniq_id=>@uniq_id, :uniq_id_history=>@uniq_id_history.copy}}
|
15
|
-
result.instance_variable = @instance_variable
|
16
|
-
self.each do |x|
|
17
|
-
result.push(x)
|
18
|
-
end
|
19
|
-
result.realised = @realised
|
20
|
-
return result
|
21
|
-
end
|
22
|
-
|
23
|
-
# TODO Write description - hack for instance calls
|
24
|
-
def variable
|
25
|
-
return self
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
@@ -1,27 +0,0 @@
|
|
1
|
-
# Classes that include this module are presumeed to include a variable,
|
2
|
-
# this is is used in the following classes.
|
3
|
-
#
|
4
|
-
# Variable
|
5
|
-
# InstanceCallContainer
|
6
|
-
# ArrayAccess
|
7
|
-
#
|
8
|
-
module VariableIncluded
|
9
|
-
|
10
|
-
# Should have the following methods
|
11
|
-
# variable
|
12
|
-
|
13
|
-
# Returns the variable. This call also exists in the InstanceCallContainer class. It is
|
14
|
-
# included to allow access of the variable with the need to disgiush whether it
|
15
|
-
# is variable or an instance call.
|
16
|
-
#
|
17
|
-
def variable
|
18
|
-
return self
|
19
|
-
end
|
20
|
-
|
21
|
-
# Returns the actual variable with the specified id.
|
22
|
-
#
|
23
|
-
def find_actual_variable(id)
|
24
|
-
raise StandardError.new('Method needs defined in class')
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|