Class: Ibex::Codegen::GeneratedActionABI::Cache

Inherits:
Object
  • Object
show all
Defined in:
lib/ibex/codegen/generated_action_abi.rb

Overview

Keeps semantic-action analysis local to one code-generation run.

Instance Method Summary collapse

Constructor Details

#initializeCache

Returns a new instance of Cache.



31
32
33
34
35
# File 'lib/ibex/codegen/generated_action_abi.rb', line 31

def initialize
  @values_only = {}
  @borrowed_values = {}
  @positional_actions = {}
end

Instance Method Details

#borrowed_values?(production) ⇒ Boolean

Returns:

  • (Boolean)


45
46
47
48
49
50
# File 'lib/ibex/codegen/generated_action_abi.rb', line 45

def borrowed_values?(production)
  @borrowed_values.fetch(production.id) do
    @borrowed_values[production.id] =
      GeneratedActionABI.borrowed_values?(production, analysis: self)
  end
end

#positional_action_source(production) ⇒ Object



53
54
55
56
57
58
# File 'lib/ibex/codegen/generated_action_abi.rb', line 53

def positional_action_source(production)
  @positional_actions.fetch(production.id) do
    @positional_actions[production.id] =
      GeneratedActionABI.positional_action_source(production, analysis: self)
  end
end

#positional_values?(production) ⇒ Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/ibex/codegen/generated_action_abi.rb', line 61

def positional_values?(production)
  !positional_action_source(production).nil?
end

#values_only?(production) ⇒ Boolean

Returns:

  • (Boolean)


38
39
40
41
42
# File 'lib/ibex/codegen/generated_action_abi.rb', line 38

def values_only?(production)
  @values_only.fetch(production.id) do
    @values_only[production.id] = GeneratedActionABI.values_only?(production)
  end
end