Class: EleetScript::Nodes
- Inherits:
-
Object
- Object
- EleetScript::Nodes
show all
- Includes:
- Nextable, Returnable
- Defined in:
- lib/lang/nodes.rb,
lib/lang/interpreter.rb
Instance Method Summary
collapse
Methods included from Nextable
#nexted, #nexted?, #reset_nexted
Methods included from Returnable
#reset_returned, #returned, #returned?
Instance Method Details
#<<(node) ⇒ Object
27
28
29
30
|
# File 'lib/lang/nodes.rb', line 27
def <<(node)
nodes << node
self
end
|
#eval(context) ⇒ Object
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
# File 'lib/lang/interpreter.rb', line 97
def eval(context)
return_value = nil
nodes.each do |node|
if node.kind_of?(ReturnNode)
returned
break return_value = node.eval(context)
elsif node.kind_of?(NextNode)
nexted
break
else
return_value = node.eval(context)
end
if node.returnable? && node.returned?
returned
node.reset_returned
break
elsif node.nextable? && node.nexted?
node.reset_nexted
nexted
break
end
end
return_value || context.es_nil
end
|
#to_s(level = 0) ⇒ Object
32
33
34
35
36
37
38
|
# File 'lib/lang/nodes.rb', line 32
def to_s(level = 0)
str = "#{spaces(level)}<EleetScript::Nodes\n"
nodes.each do |node|
str += node.to_s(level + 1)
end
str + "#{spaces(level)}>\n"
end
|