rubyx/lib/ruby/normalizer.rb
Torsten Rüger d1f8733623 Rename Vool to Sol
Simple is really the descriptive name for the layer
Sure, it is "virtual" but that is not as important as the fact that it is simple (or simplified)
Also objct (based really) is better, since orientated implies it is a little like that, but only orientated, not really it. Sol only has objects, nothing else
Just cause i was renaming anyway
2019-10-04 00:38:47 +03:00

24 lines
971 B
Ruby

module Ruby
module Normalizer
# Normalize ruby to sol by "flattening" structure
#
# This is a common issue for return, if and while , which all need to operate on the
# last value. In ruby the last value is always implicit, in sol not.
#
# A "normalized" structure is first of all not recursive, a list not a tree,
# The last expression of the list may be one of three things
# - a constant (unlikely, unless code is returning /testing a constant)
# - any variable (same)
# - a simple call (most common, but see call "normalisation" in SendStatement)
#
# We return the last expression, the one that is returned or tested on, seperately
#
def normalized_sol( condition )
sol_condition = condition.to_sol
return sol_condition unless( sol_condition.is_a?(Sol::Statements) )
return sol_condition.first if( sol_condition.single?)
return [sol_condition.pop , sol_condition ]
end
end
end