Class: Depager::Grammar::SymbolSet
- Inherits:
-
Object
- Object
- Depager::Grammar::SymbolSet
- Includes:
- Enumerable
- Defined in:
- lib/depager/grammar.rb
Instance Attribute Summary collapse
-
#set ⇒ Object
Returns the value of attribute set.
Instance Method Summary collapse
- #&(other) ⇒ Object
- #-(other) ⇒ Object
- #<<(sym) ⇒ Object
- #concat_array(set) ⇒ Object
- #delete(sym) ⇒ Object
- #each ⇒ Object
- #empty? ⇒ Boolean
- #include?(sym) ⇒ Boolean
-
#initialize(g, set = 0) ⇒ SymbolSet
constructor
A new instance of SymbolSet.
- #inspect ⇒ Object
- #merge!(symset) ⇒ Object
- #subset_of?(symset) ⇒ Boolean
- #|(other) ⇒ Object
Constructor Details
Instance Attribute Details
#set ⇒ Object
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 |
#each ⇒ Object
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
180 181 182 |
# File 'lib/depager/grammar.rb', line 180 def empty? @set == 0 end |
#include?(sym) ⇒ Boolean
184 185 186 |
# File 'lib/depager/grammar.rb', line 184 def include?(sym) (@set & @grammar.sym_mask(sym) != 0) end |
#inspect ⇒ Object
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
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 |