add send statement
This commit is contained in:
@ -4,6 +4,7 @@ module Vool
|
||||
end
|
||||
|
||||
require_relative "vool/array_statement"
|
||||
require_relative "vool/assignment_statement"
|
||||
require_relative "vool/basic_values"
|
||||
require_relative "vool/class_statement"
|
||||
require_relative "vool/hash_statement"
|
||||
@ -13,8 +14,7 @@ require_relative "vool/while_statement"
|
||||
require_relative "vool/if_statement"
|
||||
require_relative "vool/return_statement"
|
||||
require_relative "vool/statements"
|
||||
require_relative "vool/send_statement"
|
||||
require_relative "vool/operator_expression"
|
||||
require_relative "vool/call_site_statement"
|
||||
require_relative "vool/assignment_statement"
|
||||
|
||||
require_relative "vool/compiler"
|
||||
|
@ -27,6 +27,14 @@ module Vool
|
||||
end
|
||||
|
||||
#basic Values
|
||||
def on_self exp
|
||||
SelfStatement.new
|
||||
end
|
||||
|
||||
def on_nil expression
|
||||
NilStatement.new
|
||||
end
|
||||
|
||||
def on_int expression
|
||||
IntegerStatement.new(expression.children.first)
|
||||
end
|
||||
@ -43,10 +51,6 @@ module Vool
|
||||
FalseStatement.new
|
||||
end
|
||||
|
||||
def on_nil expression
|
||||
NilStatement.new
|
||||
end
|
||||
|
||||
def on_str expression
|
||||
StringStatement.new(expression.children.first)
|
||||
end
|
||||
@ -80,6 +84,14 @@ module Vool
|
||||
hash
|
||||
end
|
||||
|
||||
#Variables
|
||||
def on_lvasgn expression
|
||||
puts "EXP #{expression}"
|
||||
name = expression.children[0]
|
||||
value = process(expression.children[1])
|
||||
LocalAssignment.new(name,value)
|
||||
end
|
||||
|
||||
def on_return statement
|
||||
w = ReturnStatement.new()
|
||||
w.return_value = process(statement.children.first)
|
||||
@ -132,12 +144,15 @@ module Vool
|
||||
process expression.children.first
|
||||
end
|
||||
|
||||
def on_call statement
|
||||
name_s , arguments , receiver = *statement
|
||||
w = CallSite.new()
|
||||
w.name = name_s.children.first
|
||||
def on_send statement
|
||||
kids = statement.children.dup
|
||||
receiver = kids.shift
|
||||
name = kids.shift
|
||||
arguments = kids
|
||||
w = SendStatement.new()
|
||||
w.receiver = process(receiver) || SelfStatement.new
|
||||
w.name = name
|
||||
w.arguments = process_all(arguments)
|
||||
w.receiver = process(receiver)
|
||||
w
|
||||
end
|
||||
|
||||
|
Reference in New Issue
Block a user