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