Class: Ibex::IR::Action

Inherits:
Object
  • Object
show all
Defined in:
lib/ibex/ir/grammar_ir.rb

Overview

Opaque Ruby semantic action metadata.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(code:, location:, named_refs: [], context_length: 0, composition: nil) ⇒ Action

Returns a new instance of Action.



76
77
78
79
80
81
82
83
# File 'lib/ibex/ir/grammar_ir.rb', line 76

def initialize(code:, location:, named_refs: [], context_length: 0, composition: nil)
  @code = code.freeze
  @location = IR.deep_freeze(location)
  @named_refs = IR.deep_freeze(named_refs)
  @context_length = context_length
  @composition = IR.deep_freeze(composition)
  freeze
end

Instance Attribute Details

#codeObject (readonly)

: String



68
69
70
# File 'lib/ibex/ir/grammar_ir.rb', line 68

def code
  @code
end

#compositionObject (readonly)

: action_composition?



72
73
74
# File 'lib/ibex/ir/grammar_ir.rb', line 72

def composition
  @composition
end

#context_lengthObject (readonly)

: Integer



71
72
73
# File 'lib/ibex/ir/grammar_ir.rb', line 71

def context_length
  @context_length
end

#locationObject (readonly)

: location



69
70
71
# File 'lib/ibex/ir/grammar_ir.rb', line 69

def location
  @location
end

#named_refsObject (readonly)

: Array



70
71
72
# File 'lib/ibex/ir/grammar_ir.rb', line 70

def named_refs
  @named_refs
end

Instance Method Details

#to_h(schema_version: SCHEMA_VERSION) ⇒ Object



86
87
88
89
90
91
# File 'lib/ibex/ir/grammar_ir.rb', line 86

def to_h(schema_version: SCHEMA_VERSION)
  value = { code: @code, loc: @location, named_refs: @named_refs,
            context_length: @context_length } #: Hash[Symbol, untyped]
  value[:composition] = @composition if schema_version >= 2
  value
end