Sha256: dd814d5f26e7ce605d3c51431316054850668aa54be3167931895fa6231d6e59

Contents?: true

Size: 619 Bytes

Versions: 7

Compression:

Stored size: 619 Bytes

Contents

# frozen_string_literal: true

module Parser

  class Lexer::StackState
    def initialize(name)
      @name  = name.freeze
      clear
    end

    def clear
      @stack = 0
    end

    def push(bit)
      bit_value = bit ? 1 : 0
      @stack = (@stack << 1) | bit_value

      bit
    end

    def pop
      bit_value = @stack & 1
      @stack  >>= 1

      bit_value == 1
    end

    def lexpop
      @stack = ((@stack >> 1) | (@stack & 1))
      @stack[0] == 1
    end

    def active?
      @stack[0] == 1
    end

    def to_s
      "[#{@stack.to_s(2)} <= #{@name}]"
    end

    alias inspect to_s
  end

end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
vagrant-packet-0.1.1 vendor/bundle/ruby/2.4.0/gems/parser-2.5.1.0/lib/parser/lexer/stack_state.rb
parser-2.5.1.0 lib/parser/lexer/stack_state.rb
parser-2.5.0.5 lib/parser/lexer/stack_state.rb
parser-2.5.0.3 lib/parser/lexer/stack_state.rb
parser-2.5.0.2 lib/parser/lexer/stack_state.rb
parser-2.5.0.1 lib/parser/lexer/stack_state.rb
parser-2.5.0.0 lib/parser/lexer/stack_state.rb