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