Class: Klam::Compiler
- Inherits:
-
Object
- Object
- Klam::Compiler
- Includes:
- Klam::CompilationStages::ConstantizeConstructedConstants, Klam::CompilationStages::ConvertFreezesToLambdas, Klam::CompilationStages::ConvertLexicalVariables, Klam::CompilationStages::ConvertPartialApplicationsToLambdas, Klam::CompilationStages::ConvertSelfTailCallsToLoops, Klam::CompilationStages::CurryAbstractionApplications, Klam::CompilationStages::EmitRuby, Klam::CompilationStages::KlToInternalRepresentation, Klam::CompilationStages::MakeAbstractionsMonadic, Klam::CompilationStages::MakeAbstractionsVariadic, Klam::CompilationStages::SimplifyBooleanOperations, Klam::CompilationStages::StripTypeDeclarations
- Defined in:
- lib/klam/compiler.rb
Constant Summary
Constants included from Klam::CompilationStages::EmitRuby
Klam::CompilationStages::EmitRuby::PRIMITIVE_TEMPLATES
Constants included from Primitives::Lists
Instance Method Summary collapse
- #compile(kl) ⇒ Object
- #disable_ruby_interop_syntax! ⇒ Object
- #enable_ruby_interop_syntax! ⇒ Object
-
#initialize(environment) ⇒ Compiler
constructor
A new instance of Compiler.
- #ruby_interop_syntax_enabled? ⇒ Boolean
Methods included from Klam::CompilationStages::EmitRuby
Methods included from Template
Methods included from Klam::CompilationStages::ConvertSelfTailCallsToLoops
#convert_self_tail_calls_to_loops
Methods included from Klam::CompilationStages::ConstantizeConstructedConstants
#constantize_constructed_constants
Methods included from Klam::CompilationStages::MakeAbstractionsMonadic
Methods included from Klam::CompilationStages::CurryAbstractionApplications
#curry_abstraction_applications
Methods included from Klam::CompilationStages::ConvertPartialApplicationsToLambdas
#convert_partial_applications_to_lambdas
Methods included from Klam::CompilationStages::SimplifyBooleanOperations
Methods included from Klam::CompilationStages::ConvertFreezesToLambdas
Methods included from Klam::CompilationStages::ConvertLexicalVariables
Methods included from Klam::CompilationStages::MakeAbstractionsVariadic
Methods included from Klam::CompilationStages::StripTypeDeclarations
Methods included from Klam::CompilationStages::KlToInternalRepresentation
#kl_to_internal_representation
Methods included from Klam::Converters::List
Methods included from Primitives::Lists
Constructor Details
#initialize(environment) ⇒ Compiler
Returns a new instance of Compiler.
23 24 25 26 27 28 |
# File 'lib/klam/compiler.rb', line 23 def initialize(environment) @environment = environment @constant_generator = Klam::ConstantGenerator.new @variable_generator = Klam::VariableGenerator.new @ruby_interop_syntax_enabled = false end |
Instance Method Details
#compile(kl) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/klam/compiler.rb', line 30 def compile(kl) stages = [ :kl_to_internal_representation, :strip_type_declarations, :make_abstractions_variadic, :convert_lexical_variables, :convert_freezes_to_lambdas, :simplify_boolean_operations, :convert_partial_applications_to_lambdas, :curry_abstraction_applications, :make_abstractions_monadic, :constantize_constructed_constants, :convert_self_tail_calls_to_loops, :emit_ruby ] apply_stages(stages, kl) end |
#disable_ruby_interop_syntax! ⇒ Object
52 53 54 |
# File 'lib/klam/compiler.rb', line 52 def disable_ruby_interop_syntax! @ruby_interop_syntax_enabled = false end |
#enable_ruby_interop_syntax! ⇒ Object
48 49 50 |
# File 'lib/klam/compiler.rb', line 48 def enable_ruby_interop_syntax! @ruby_interop_syntax_enabled = true end |
#ruby_interop_syntax_enabled? ⇒ Boolean
56 57 58 |
# File 'lib/klam/compiler.rb', line 56 def ruby_interop_syntax_enabled? @ruby_interop_syntax_enabled end |