Sha256: 7063f1f3627b3b3fa693afba3ad63ce5f4f9885677be08900b09819d9234ad8a
Contents?: true
Size: 717 Bytes
Versions: 6898
Compression:
Stored size: 717 Bytes
Contents
# frozen_string_literal: true module Parser # Stack that holds names of current arguments, # i.e. while parsing # def m1(a = (def m2(b = def m3(c = 1); end); end)); end # ^ # stack is [:a, :b, :c] # # Emulates `p->cur_arg` in MRI's parse.y # # @api private # class CurrentArgStack attr_reader :stack def initialize @stack = [] freeze end def empty? @stack.size == 0 end def push(value) @stack << value end def set(value) @stack[@stack.length - 1] = value end def pop @stack.pop end def reset @stack.clear end def top @stack.last end end end
Version data entries
6,898 entries across 6,889 versions & 40 rubygems