module SpecialGiggle

Constants

VERSION

Public Class Methods

compile(infile, outfile, tmpdir = "/tmp") click to toggle source
# File lib/special-giggle.rb, line 19
def self.compile(infile, outfile, tmpdir = "/tmp")
  raise GiggleError, "Input file #{infile} does not found." unless File.exist?(infile)
  file = File.basename(infile, ".*")
  sfile, ofile = File.expand_path("#{file}.s", tmpdir), File.expand_path("#{file}.o", tmpdir)
  File.write(sfile, to_asm(File.read(infile)))
  system("as --64 -o #{ofile} #{sfile}") || (raise GiggleError, "Can't compile with as")
  system("gcc -no-pie -o #{outfile} #{ofile}") || (raise GiggleError, "Can't link with gcc")
end
to_asm(string) click to toggle source
# File lib/special-giggle.rb, line 12
def self.to_asm(string)
  tokens = Lexer.tokenize(string)
  ast = Parser.parse(tokens)
  code = Generator.generate(ast)
  code
end