Class: Rley::GFG::ItemVertex
- 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
-
#dotted_item ⇒ DottedItem
readonly
Link to the dotted item object.
-
#shortcut ⇒ ShortcutEdge
Optional link to a "shortcut" edge.
Attributes inherited from Vertex
Instance Method Summary collapse
-
#complete? ⇒ Boolean
Returns true if the dotted item has a dot at the end of the production.
-
#initialize(aDottedItem) ⇒ ItemVertex
constructor
Constructor.
-
#label ⇒ String
The label of this vertex.
-
#lhs ⇒ Syntax::GrmSymbol
Return the non-terminal symbol at the left-hand side of the production.
-
#next_symbol ⇒ Syntax::GrmSymbol, NilClass
Return the symbol after the dot.
-
#prev_symbol ⇒ Syntax::GrmSymbol, NilClass
Return the symbol before the dot.
Methods inherited from Vertex
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_item ⇒ DottedItem (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 |
#shortcut ⇒ ShortcutEdge
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 |
#label ⇒ String
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 |
#lhs ⇒ Syntax::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_symbol ⇒ Syntax::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_symbol ⇒ Syntax::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 |