add global variable space
could in the long run move spaces functionality to the class and since the class is global anyway, wouldn’t need this
This commit is contained in:
parent
b1939e9828
commit
9ebe28450b
@ -136,6 +136,13 @@ module Soml
|
||||
def reset_regs
|
||||
@regs.clear
|
||||
end
|
||||
|
||||
# ensure the name given is not space and raise exception otherwise
|
||||
# return the name for chaining
|
||||
def no_space name
|
||||
raise "space is a reserved name" if name == :space
|
||||
name
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -5,7 +5,7 @@ module Soml
|
||||
reset_regs # statements reset registers, ie have all at their disposal
|
||||
#puts statement.inspect
|
||||
name , value = *statement
|
||||
name = name.to_a.first
|
||||
name = no_space name.to_a.first
|
||||
v = process(value)
|
||||
raise "Not register #{v}" unless v.is_a?(Register::RegisterValue)
|
||||
code = nil
|
||||
|
@ -6,7 +6,8 @@ module Soml
|
||||
reset_regs # field_def is a statement, no return and all regs
|
||||
#puts statement.inspect
|
||||
type , name , value = *statement
|
||||
@method.ensure_local( name.first, type ) unless( @method.has_arg(name.first))
|
||||
name_s = no_space( name.first )
|
||||
@method.ensure_local( name_s, type ) unless( @method.has_arg(name_s))
|
||||
# if there is a value assigned, process it as am assignemnt statement (kind of call on_assign)
|
||||
process( s(:assignment , name , value ) ) if value
|
||||
return nil
|
||||
|
@ -12,6 +12,12 @@ module Soml
|
||||
add_code Register.get_slot(statement , :message , :receiver , ret )
|
||||
return ret
|
||||
end
|
||||
if(name == :space)
|
||||
space = Parfait::Space.object_space
|
||||
reg = use_reg :Space , space
|
||||
add_code Register::LoadConstant.new( statement, space , reg )
|
||||
return reg
|
||||
end
|
||||
# either an argument, so it's stored in message
|
||||
if( index = @method.has_arg(name))
|
||||
ret = use_reg @method.arguments[index].type
|
||||
|
Loading…
Reference in New Issue
Block a user