Class: Rley::GFG::ItemVertex

Inherits:
Vertex
  • Object
show all
Defined in:
lib/rley/gfg/item_vertex.rb

Overview

Specialization of Vertex class. Represents a vertex in a grammar flow graph associated to a given dotted item. Responsibilities (in addition to inherited ones):

  • Know its related non-terminal symbol

Instance Attribute Summary collapse

Attributes inherited from Vertex

#edges, #oid_str

Instance Method Summary collapse

Methods inherited from Vertex

#add_edge, #inspect, #selfie

Constructor Details

#initialize(aDottedItem) ⇒ ItemVertex

Constructor.



25
26
27
28
# File 'lib/rley/gfg/item_vertex.rb', line 25

def initialize(aDottedItem)
  super()
  @dotted_item = aDottedItem
end

Instance Attribute Details

#dotted_itemDottedItem (readonly)

Link to the dotted item object



16
17
18
# File 'lib/rley/gfg/item_vertex.rb', line 16

def dotted_item
  @dotted_item
end

#shortcutShortcutEdge

Optional link to a "shortcut" edge. Applicable only if the dotted expects a non-terminal symbol.



21
22
23
# File 'lib/rley/gfg/item_vertex.rb', line 21

def shortcut
  @shortcut
end

Instance Method Details

#complete?Boolean

Returns true if the dotted item has a dot at the end of the production.



49
50
51
# File 'lib/rley/gfg/item_vertex.rb', line 49

def complete?
  dotted_item.reduce_item?
end

#labelString

The label of this vertex. It is the same as the label of the corresponding dotted item.



43
44
45
# File 'lib/rley/gfg/item_vertex.rb', line 43

def label
  dotted_item.to_s
end

#lhsSyntax::GrmSymbol

Return the non-terminal symbol at the left-hand side of the production



68
69
70
# File 'lib/rley/gfg/item_vertex.rb', line 68

def lhs
  dotted_item.lhs
end

#next_symbolSyntax::GrmSymbol, NilClass

Return the symbol after the dot.



61
62
63
# File 'lib/rley/gfg/item_vertex.rb', line 61

def next_symbol
  @next_symbol ||= dotted_item.next_symbol
end

#prev_symbolSyntax::GrmSymbol, NilClass

Return the symbol before the dot.



55
56
57
# File 'lib/rley/gfg/item_vertex.rb', line 55

def prev_symbol
  dotted_item.prev_symbol
end