Simple compiler list module to make compilers a list

This commit is contained in:
2019-09-28 09:38:34 +03:00
parent 701890f625
commit aba42a6836
4 changed files with 104 additions and 2 deletions

View File

@ -1,7 +1,6 @@
require "rx-file"
require "util/logging"
require "util/list"
require_relative "util"
require_relative "elf/object_writer"
require_relative "risc"
require_relative "mom/mom"

3
lib/util.rb Normal file
View File

@ -0,0 +1,3 @@
require_relative "util/logging"
require_relative "util/list"
require_relative "util/compiler_list"

36
lib/util/compiler_list.rb Normal file
View File

@ -0,0 +1,36 @@
module Util
module CompilerList
attr_reader :next_compiler
def add_method_compiler(comp)
raise "not compiler #{comp.class}" unless comp.is_a?(MethodCompiler)
if(@next_compiler)
@next_compiler.add_method_compiler(comp)
else
@next_compiler = comp
end
end
def each_compiler &block
block.yield(self)
@next_compiler.each(&block) if @next_compiler
end
def find_compiler &block
return self if block.yield(self)
@next_compiler.find_compiler(&block) if @next_compiler
end
def last_compiler
return self unless @next_compiler
@next_compiler.last_compiler
end
def num_compilers
1 + (@next_compiler ? @next_compiler.num_compilers : 0)
end
end
end