require "./thue.cr" require "./parser.cr" require "../util.cr" require "../program.cr" struct Thue::Program < Flint::Program def initialize(source_io : IO) super @parser = Parser.new(source_io) end def interpret : Nil rules, state = @parser.parse loop do r = rules.find { |r| r.matches?(state) } break if r.nil? state = state.sub(r.pattern, r.replacement) end puts state end def compile raise Util::NoCompilerAvailableError.new("No available compilier for Thue") end end