29 lines
541 B
Ruby
29 lines
541 B
Ruby
require_relative "frontend/frontend.rb"
|
|
require_relative "middleend/middleend.rb"
|
|
# require_relative "backend/backend.rb"
|
|
require "YAML"
|
|
|
|
if ARGV.length > 0
|
|
name = ARGV[0]
|
|
else
|
|
print "Enter .c file name:"
|
|
name=gets.chomp!
|
|
name+=".c" unless name.include? ".c"
|
|
end
|
|
|
|
code=File.read(name)
|
|
ir=genir(code)
|
|
ir=optimize(ir)
|
|
for func in ir
|
|
puts "#{func[:name]}() {"
|
|
for stmt in func[:code]
|
|
puts " #{stmt}"
|
|
end
|
|
puts "}"
|
|
end
|
|
# asm=generate(ir)
|
|
#
|
|
# outfile=File.open(name.gsub(".c",".asm"),"w")
|
|
# outfile.print asm
|
|
# outfile.close
|