Class Farts::CallSyntaxNode
In: lib/farts/farts_parser.rb
Parent: SyntaxNode
SyntaxNode
LiteralSyntaxNode
ProgramSyntaxNode
AttributeSyntaxNode
IfSyntaxNode
CommentSyntaxNode
EndSyntaxNode
LocalVarSyntaxNode
CallSyntaxNode
CommandSyntaxNode
Racc::Parser
Parser
StringScanner
Lexer
Lib
Interpreter
Farts
dot/f_21.png

Methods

execute   new  

Public Class methods

[Source]

# File lib/farts/farts_parser.rb, line 675
    def initialize( lineno, func, args )
      super lineno
      @funcname = func
      @args = args
    end

Public Instance methods

[Source]

# File lib/farts/farts_parser.rb, line 681
    def execute(intp)
      arg = @args.collect {|i| i.execute(intp) }
      begin
        case @funcname
        when "||"
          arg[0] || arg[1]
        when "&&"
          arg[0] && arg[1]
        when "!="
          arg[0] != arg[1]
        when "!"
          !arg[0]
        else
          if arg.empty? || !arg[0].respond_to?(@funcname)
            intp.call_lib_function(@funcname, arg) do
              fart_err("undefined function '#{@funcname}'")
            end
          else
            recv = arg.shift
            recv.send(@funcname, *arg)
          end
        end
      rescue ArgumentError
        pp self
        pp arg
        fart_err($!.message)
      end
    end

[Validate]