Sha256: aa7a7a29f22959e7ce5b58c327fbc2297c4b1e8af01edb795fea0aee4b3b4bfc

Contents?: true

Size: 707 Bytes

Versions: 1

Compression:

Stored size: 707 Bytes

Contents

# # frozen_string_literal: true

require_relative 'word'
require_relative 'module_word'

module Forthic
  class ImportedWord < Word
    attr_accessor :module_word, :imported_module

    # @param [Word] module_word
    # @param [String] prefix
    # @param [ModuleWord] imported_module
    def initialize(module_word, prefix, imported_module)
      prefix = prefix.empty? ? "" : "#{prefix}."
      super("#{prefix}#{module_word.name}")
      @module_word = module_word
      @imported_module = imported_module
    end

    # @param [Interpreter] interp
    def execute(interp)
      interp.module_stack_push(@imported_module)
      @module_word.execute(interp)
      interp.module_stack_pop
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
forthic-0.1.0 lib/forthic/words/imported_word.rb