module Vm
  module Tree
    class IntegerExpression < Expression
      include ValuePrinter
      attr_accessor :value
      def initialize(value)
        @value = value
      end
    end
    class FloatExpression < Expression
      include ValuePrinter
      attr_accessor :value
      def initialize(value)
        @value = value
      end
    end
    class TrueExpression < Expression
      def to_s
        "true"
      end
    end
    class FalseExpression < Expression
      def to_s
        "false"
      end
    end
    class NilExpression < Expression
      def to_s
        "nil"
      end
    end
    class StringExpression < Expression
      include ValuePrinter
      attr_accessor :value
      def initialize(value)
        @value = value
      end
    end

    class NameExpression < Expression
      include ValuePrinter
      attr_accessor :value
      alias :name :value
      def initialize(value)
        @value = value
      end
    end

    class  LocalName < NameExpression
    end
    class  ArgumentName < NameExpression
    end
    class  InstanceName < NameExpression
    end
    class  KnownName < NameExpression
    end

    class ClassExpression < Expression
      include ValuePrinter
      attr_accessor :value
      def initialize(value)
        @value = value
      end
    end
  end
end