class Parser::Lexer::StackState

def active?

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

def clear

def clear
  @stack = 0
end

def initialize(name)

def initialize(name)
  @name  = name.freeze
  clear
end

def lexpop

def lexpop
  push(pop || pop)
end

def pop

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

def push(bit)

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

def to_s

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