Class: TPPlus::Nodes::DefinitionNode

Inherits:
Object
  • Object
show all
Defined in:
lib/tp_plus/nodes/definition_node.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(identifier, assignable) ⇒ DefinitionNode

Returns a new instance of DefinitionNode.



5
6
7
8
# File 'lib/tp_plus/nodes/definition_node.rb', line 5

def initialize(identifier,assignable)
  @identifier = identifier
  @assignable = assignable
end

Instance Attribute Details

#assignableObject (readonly)

Returns the value of attribute assignable.



4
5
6
# File 'lib/tp_plus/nodes/definition_node.rb', line 4

def assignable
  @assignable
end

#identifierObject (readonly)

Returns the value of attribute identifier.



4
5
6
# File 'lib/tp_plus/nodes/definition_node.rb', line 4

def identifier
  @identifier
end

Instance Method Details

#eval(context) ⇒ Object



10
11
12
13
14
15
16
17
18
19
# File 'lib/tp_plus/nodes/definition_node.rb', line 10

def eval(context)
  if @assignable.is_a?(DigitNode) || @assignable.is_a?(RealNode)
    raise "Constants must be defined with all CAPS" unless @identifier.upcase == @identifier

    context.add_constant(@identifier, @assignable)
  else
    context.add_var(@identifier, @assignable)
  end
  nil
end