Class: Kanocc::Item

Inherits:
Object
  • Object
show all
Defined in:
lib/kanocc/earley.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(rule, dot, j, n, prev_pos_min = 0, prev_pos_max = 0) ⇒ Item

Returns a new instance of Item.



261
262
263
264
265
266
267
268
# File 'lib/kanocc/earley.rb', line 261

def initialize(rule, dot, j, n,  prev_pos_min = 0, prev_pos_max = 0)
  @rule = rule
  @dot = dot
  @j = j
  @n = n
  @prev_pos_min = prev_pos_min
  @prev_pos_max = prev_pos_max
end

Instance Attribute Details

#dotObject (readonly)

Returns the value of attribute dot.



258
259
260
# File 'lib/kanocc/earley.rb', line 258

def dot
  @dot
end

#jObject (readonly)

Returns the value of attribute j.



258
259
260
# File 'lib/kanocc/earley.rb', line 258

def j
  @j
end

#nObject (readonly)

Returns the value of attribute n.



258
259
260
# File 'lib/kanocc/earley.rb', line 258

def n
  @n
end

#prev_pos_maxObject

Returns the value of attribute prev_pos_max.



259
260
261
# File 'lib/kanocc/earley.rb', line 259

def prev_pos_max
  @prev_pos_max
end

#prev_pos_minObject

Returns the value of attribute prev_pos_min.



259
260
261
# File 'lib/kanocc/earley.rb', line 259

def prev_pos_min
  @prev_pos_min
end

#ruleObject (readonly)

Returns the value of attribute rule.



258
259
260
# File 'lib/kanocc/earley.rb', line 258

def rule
  @rule
end

Instance Method Details

#inspectObject



286
287
288
289
290
291
292
# File 'lib/kanocc/earley.rb', line 286

def inspect
  return "[" + 
  @rule.lhs.inspect + " --> " + 
   (@rule.rhs.slice(0, dot) + [Dot.instance] +
  @rule.rhs.slice(dot, @rule.rhs.length - dot)).map{|symbol| symbol.inspect}.join(" ") + 
        " ; " + @j.inspect + ", " + @n.inspect + "]"
end

#set_prev_pos(new_prev_pos) ⇒ Object



278
279
280
281
282
283
284
# File 'lib/kanocc/earley.rb', line 278

def set_prev_pos(new_prev_pos)
  if new_prev_pos < @prev_pos_min
    @prev_pos_min = new_prev_pos
  elsif new_prev_pos > @prev_pos_max
    @prev_pos_max = new_prev_pos
  end
end

#symbol_after_dotObject



270
271
272
# File 'lib/kanocc/earley.rb', line 270

def symbol_after_dot
  return @dot < @rule.rhs.size  ? @rule.rhs[@dot] : nil
end

#symbol_before_dotObject



274
275
276
# File 'lib/kanocc/earley.rb', line 274

def symbol_before_dot
  return @dot > 0 ? @rule.rhs[@dot - 1] : nil
end