class Parser::StaticEnvironment

def declare(name)

def declare(name)
  @variables.add(name.to_sym)
  self
end

def declared?(name)

def declared?(name)
  @variables.include?(name.to_sym)
end

def extend_dynamic

def extend_dynamic
  @stack.push(@variables)
  @variables = @variables.dup
  self
end

def extend_static

def extend_static
  @stack.push(@variables)
  @variables = Set[]
  self
end

def initialize

def initialize
  reset
end

def reset

def reset
  @variables = Set[]
  @stack     = []
end

def unextend

def unextend
  @variables = @stack.pop
  self
end