Sha256: 5ef14a1d550cf83b25248de570188bbfaa28d108e49040824928d01e89c3a9a4

Contents?: true

Size: 942 Bytes

Versions: 6

Compression:

Stored size: 942 Bytes

Contents

module PLang
  class PObject
    attr_accessor :type
    attr_accessor :params
    
    def initialize(type, params)
      @type = type
      @params = params
    end
    
    def ==(obj)
      if @type == obj.type
        @params.each_with_index do |param, i|
          unless param == obj.params[i]
            return false
          end
        end
        return true
      else
        return false
      end
    end
    
    def form
      case @type
        when :integer, :decimal, :boolean, :char, :string
          [:literal, @type, @params[0]]
        else
          [:object, @type, @params.collect(&:form)]
      end
    end
    
    def to_s
      case @type
        when :integer, :decimal, :boolean
          @params[0]
        when :string
          "\"#{@params[0]}\""
        when :char
          "\'#{@params[0]}\'"
        else
          "{#{@type}: #{@params.collect(&:to_s).join(",")}}"
      end
    end
    
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
p-lang-0.1.1 lib/vm/pobject.rb
p-lang-0.1.0 lib/vm/pobject.rb
p-lang-0.0.4 lib/vm/pobject.rb
p-lang-0.0.3 lib/vm/pobject.rb
p-lang-0.0.2 lib/vm/pobject.rb
p-lang-0.0.1 lib/vm/pobject.rb