Sha256: 3261680e131fe689214977fc7a68f033a1245d65a2f2387c91242af46e3f45bd

Contents?: true

Size: 829 Bytes

Versions: 55

Compression:

Stored size: 829 Bytes

Contents

# frozen_string_literal: true

module Parser

  class StaticEnvironment
    FORWARD_ARGS = :FORWARD_ARGS

    def initialize
      reset
    end

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

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

      self
    end

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

      self
    end

    def unextend
      @variables = @stack.pop

      self
    end

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

      self
    end

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

    def declare_forward_args
      declare(FORWARD_ARGS)
    end

    def declared_forward_args?
      declared?(FORWARD_ARGS)
    end

    def empty?
      @stack.empty?
    end
  end

end

Version data entries

55 entries across 52 versions & 9 rubygems

Version Path
primary_connect_proto-0.20.0 vendor/bundle/ruby/3.0.0/gems/parser-3.0.2.0/lib/parser/static_environment.rb
primary_connect_proto-0.20.0 vendor/bundle/ruby/2.6.0/gems/parser-3.0.2.0/lib/parser/static_environment.rb
primary_connect_proto-0.19.0 vendor/bundle/ruby/3.0.0/gems/parser-3.0.2.0/lib/parser/static_environment.rb
primary_connect_proto-0.18.0 vendor/bundle/ruby/2.6.0/gems/parser-3.0.2.0/lib/parser/static_environment.rb
primary_connect_proto-0.18.0 vendor/bundle/ruby/3.0.0/gems/parser-3.0.2.0/lib/parser/static_environment.rb
primary_connect_proto-0.17.0 vendor/bundle/ruby/2.6.0/gems/parser-3.0.2.0/lib/parser/static_environment.rb
primary_connect_proto-0.17.0 vendor/bundle/ruby/3.0.0/gems/parser-3.0.2.0/lib/parser/static_environment.rb
primary_connect_proto-0.12.1 vendor/bundle/ruby/2.7.0/gems/parser-3.0.2.0/lib/parser/static_environment.rb
primary_connect_proto-0.10.2 vendor/bundle/ruby/2.7.0/gems/parser-3.0.2.0/lib/parser/static_environment.rb
primary_connect_proto-0.10.1 vendor/bundle/ruby/2.7.0/gems/parser-3.0.2.0/lib/parser/static_environment.rb
primary_connect_proto-0.9.0 vendor/bundle/ruby/2.6.0/gems/parser-3.0.2.0/lib/parser/static_environment.rb
primary_connect_proto-0.8.2 vendor/bundle/ruby/2.7.0/gems/parser-3.0.2.0/lib/parser/static_environment.rb
primary_connect_proto-0.8.1 vendor/bundle/ruby/2.7.0/gems/parser-3.0.2.0/lib/parser/static_environment.rb
primary_connect_proto-0.8.0 vendor/bundle/ruby/2.6.0/gems/parser-3.0.2.0/lib/parser/static_environment.rb
primary_connect_proto-0.7.3 vendor/bundle/ruby/2.6.0/gems/parser-3.0.2.0/lib/parser/static_environment.rb
primary_connect_proto-0.7.2 vendor/bundle/ruby/2.6.0/gems/parser-3.0.2.0/lib/parser/static_environment.rb
primary_connect_proto-0.7.1 vendor/bundle/ruby/2.6.0/gems/parser-3.0.2.0/lib/parser/static_environment.rb
primary_connect_proto-0.7.0 vendor/bundle/ruby/2.6.0/gems/parser-3.0.2.0/lib/parser/static_environment.rb
primary_connect_proto-0.6.0 vendor/bundle/ruby/2.6.0/gems/parser-3.0.2.0/lib/parser/static_environment.rb
primary_connect_proto-0.4.0 vendor/bundle/ruby/2.6.0/gems/parser-3.0.2.0/lib/parser/static_environment.rb