Class: Y2R::AST::YCP::Const
- Inherits:
-
Node
- Object
- OpenStruct
- Node
- Y2R::AST::YCP::Const
show all
- Defined in:
- lib/y2r/ast/ycp.rb
Instance Method Summary
collapse
Methods inherited from Node
#always_returns?, #compile_as_copy_if_needed, #compile_statements, #compile_statements_inside_block, #compile_statements_with_whitespace, #creates_local_scope?, #needs_copy?, #optimize_last_statement, #optimize_next, #optimize_return, #remove_duplicate_imports, transfers_comments
Instance Method Details
#compile(context) ⇒ Object
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
|
# File 'lib/y2r/ast/ycp.rb', line 1086
def compile(context)
case type
when :void
Ruby::Literal.new(:value => nil)
when :bool
case value
when "true"
Ruby::Literal.new(:value => true)
when "false"
Ruby::Literal.new(:value => false)
else
raise "Unknown boolean value: #{value.inspect}."
end
when :int
Ruby::Literal.new(:value => value.to_i)
when :float
Ruby::Literal.new(:value => value.sub(/\.$/, ".0").to_f)
when :symbol
Ruby::Literal.new(:value => value.to_sym)
when :string
Ruby::Literal.new(:value => value)
when :path
Ruby::MethodCall.new(
:receiver => nil,
:name => "path",
:args => [Ruby::Literal.new(:value => value)],
:block => nil,
:parens => true
)
else
raise "Unknown const type: #{type.inspect}."
end
end
|
#never_nil? ⇒ Boolean
1122
1123
1124
|
# File 'lib/y2r/ast/ycp.rb', line 1122
def never_nil?
return type != :void
end
|