class Kaguya::CLI

Public Class Methods

new(argv) click to toggle source
# File lib/kaguya/cli.rb, line 13
def initialize(argv)
  @argv = argv.dup
  parser.parse!(@argv)
end
start(argv) click to toggle source
# File lib/kaguya/cli.rb, line 9
def self.start(argv)
  new(argv).run
end

Public Instance Methods

run() click to toggle source
# File lib/kaguya/cli.rb, line 18
def run
  source_file = File.open(@argv[0], 'r')
  parser = Parser.new(source_file)
  ast = parser.parse

  if @debug
    puts '=== AST ==='
    pp ast
  end

  compiler = Compiler.new(ast)
  iseq = compiler.compile

  if @debug
    puts '=== ISEQ ==='
    pp iseq
    puts '=== RUN ==='
  end

  vm = VM.new(iseq)
  vm.run
end

Private Instance Methods

parser() click to toggle source
# File lib/kaguya/cli.rb, line 43
def parser
  @parser ||= OptionParser.new do |opts|
    opts.banner = 'kaguya'
    opts.version = Kaguya::VERSION
    opts.on('-d', '--debug') { |d| @debug = d }
  end
end