class RedParse::ListInNode::UnaryOpNode
Attributes
lvalue[W]
Public Class Methods
create(op,val)
click to toggle source
# File lib/redparse/node.rb, line 1770 def self.create(op,val) return UnaryStarNode.new(op,val) if /\*$/===op.ident return UnaryAmpNode.new(op,val) if /&$/===op.ident return new(op,val) end
new(op,val,options=nil)
click to toggle source
Calls superclass method
RedParse::ListInNode::Node::new
# File lib/redparse/node.rb, line 1776 def initialize(op,val,options=nil) @offset||=op.offset rescue val.offset op=op.ident if op.respond_to? :ident /([&*])$/===op and op=$1+"@" /^(?:!|not)$/===op and val.respond_to? :special_conditions! and val.special_conditions! args=[op,val] args<<options if options super(*args) end
Public Instance Methods
arg()
click to toggle source
# File lib/redparse/node.rb, line 1788 def arg; val end
arg=(x;)
click to toggle source
# File lib/redparse/node.rb, line 1789 def arg= x; self.val=x end
image()
click to toggle source
# File lib/redparse/node.rb, line 1793 def image; "(#{op})" end
lvalue()
click to toggle source
# File lib/redparse/node.rb, line 1795 def lvalue # return nil unless op=="*@" return @lvalue if defined? @lvalue @lvalue=true end
lvalue_parsetree(o)
click to toggle source
# File lib/redparse/node.rb, line 1822 def lvalue_parsetree(o) parsetree(o) end
parsetree(o)
click to toggle source
# File lib/redparse/node.rb, line 1807 def parsetree(o) node=self node=node.val while UnOpNode===node and node.op=="+@" return node.parsetree(o) if LiteralNode&-{:val=>Integer|Float|Symbol}===node return node.parsetree(o) if StringNode&-{:char=>'/', :size=>1}===node case op when /^&/; [:block_arg, val.ident.to_sym] when "!","not"; [:not, val.rescue_parsetree(o)] when "defined?"; [:defined, val.parsetree(o)] else [:call, val.rescue_parsetree(o), op.to_sym] end end
to_lisp()
click to toggle source
# File lib/redparse/node.rb, line 1803 def to_lisp "(#{op} #{val.to_lisp})" end
unparse(o=default_unparse_options)
click to toggle source
# File lib/redparse/node.rb, line 1826 def unparse o=default_unparse_options op=op() op=op.chomp "@" result=op result+=" " if /(?:#{LETTER}|[?!])$/o===op or /^[+-]/===op && LiteralNode===val result+=val.unparse(o) end