Sha256: e2dbe4307c29be603bc04be44a80201cc96ea67ecf782d636d42a5ac82b3a8ea

Contents?: true

Size: 1.05 KB

Versions: 1

Compression:

Stored size: 1.05 KB

Contents

module Rubie
  class Interpreter
    def self.exec
      world = Object.new.send(:binding)

      puts 'おはよう、今日も私と一緒に遊んでくれるんだねっ!嬉しい!'
      while true
        print 'rubie > '
        command = gets
        if command.nil?
          puts "\nまたねー"
          return '遊んでくれてありがとう'
        end
        parser = Rubie::Ripper.new(command)

        begin
          parser.parse
          ret = eval(command, world)
          puts parser.detail
          puts "=> #{ret}"
        rescue Rubie::ParseErrorException => e
          puts "文法エラーみたい・・・ 「#{e.message}」だって"
        rescue ArgumentError => e
          puts '引数違うよー'
        rescue NoMethodError => e
          puts "#{e.receiver}に「#{e.name}」って名前のメソッドが定義されてないってー!"
        rescue NameError => e
          puts "#{e.receiver}に「#{e.name}」って名前の変数かメソッドが定義されてないってー!"
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rubie-0.1.1 lib/rubie/interpreter.rb