Class: Depager::Grammar::SymbolSet

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/depager/grammar.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(g, set = 0) ⇒ SymbolSet

Returns a new instance of SymbolSet.



138
139
140
141
142
143
# File 'lib/depager/grammar.rb', line 138

def initialize(g, set = 0)
  raise g.class.name unless g.is_a? Depager::Grammar

  @grammar = g
  @set = set
end

Instance Attribute Details

#setObject

Returns the value of attribute set.



136
137
138
# File 'lib/depager/grammar.rb', line 136

def set
  @set
end

Instance Method Details

#&(other) ⇒ Object



157
158
159
# File 'lib/depager/grammar.rb', line 157

def &(other)
  SymbolSet.new(@grammar, @set & other.set)
end

#-(other) ⇒ Object



170
171
172
# File 'lib/depager/grammar.rb', line 170

def -(other)
  SymbolSet.new(@grammar, @set ^ (other.set & @set))
end

#<<(sym) ⇒ Object



152
153
154
155
# File 'lib/depager/grammar.rb', line 152

def <<(sym)
  @set |= @grammar.sym_mask(sym)
  self
end

#concat_array(set) ⇒ Object



145
146
147
148
149
150
# File 'lib/depager/grammar.rb', line 145

def concat_array(set)
  set.each do |i|
    self << i
  end
  self
end

#delete(sym) ⇒ Object



188
189
190
191
192
# File 'lib/depager/grammar.rb', line 188

def delete(sym)
  old = @set
  @set &= ~@grammar.sym_mask(sym)
  old == @set ? nil : sym
end

#eachObject



194
195
196
197
198
199
# File 'lib/depager/grammar.rb', line 194

def each
  mask_sym = @grammar.mask_sym
  @grammar.mask_size.times do |x|
    @set[x] == 1 and yield mask_sym[x]
  end
end

#empty?Boolean

Returns:

  • (Boolean)


180
181
182
# File 'lib/depager/grammar.rb', line 180

def empty?
  @set == 0
end

#include?(sym) ⇒ Boolean

Returns:

  • (Boolean)


184
185
186
# File 'lib/depager/grammar.rb', line 184

def include?(sym)
  (@set & @grammar.sym_mask(sym) != 0)
end

#inspectObject



201
202
203
# File 'lib/depager/grammar.rb', line 201

def inspect
  map { |i| @grammar.symname(i) }.inspect
end

#merge!(symset) ⇒ Object



165
166
167
168
# File 'lib/depager/grammar.rb', line 165

def merge!(symset)
  @set |= symset.set
  self
end

#subset_of?(symset) ⇒ Boolean

Returns:

  • (Boolean)


174
175
176
177
178
# File 'lib/depager/grammar.rb', line 174

def subset_of?(symset)
  # "a is a subset of b" is a-b={}
  d = (@set ^ (symset.set & @set))
  d == 0
end

#|(other) ⇒ Object



161
162
163
# File 'lib/depager/grammar.rb', line 161

def |(other)
  SymbolSet.new(@grammar, @set | other.set)
end