Sha256: e7cda1eb29873fed0e15d205a91624a91657211488f1a73ad5c7872ae7fc3464

Contents?: true

Size: 1.06 KB

Versions: 3

Compression:

Stored size: 1.06 KB

Contents

require_relative 'vertex'

module Rley # This module is used as a namespace
  module GFG # This module is used as a namespace
    # Abstract class.
    # Represents a specialized vertex in a grammar flow graph 
    # that is associated to a given non-terminal symbol and
    # that may have in-degree or out-degree > 1
    # Responsibilities (in addition to inherited ones):
    # - Know its related non-terminal symbol
    class NonTerminalVertex < Vertex
      # The non-terminal symbol associated to the vertex
      # @return [Syntax::NonTerminal]
      attr_reader :non_terminal
      
      # Constructor to specialize in subclasses.
      # @param aNonTerminal [Syntax::NonTerminal]
      def initialize(aNonTerminal)
        super()
        @non_terminal = aNonTerminal
      end
      
      protected

      # Validation method for adding an outgoing edge to the vertex.
      # A start vertex may accept an indegree and outdegree greater than one
      def check_add_edge(anEdge)
        return anEdge
      end      
    end # class
  end # module
end # module

# End of file

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rley-0.5.10 lib/rley/gfg/non_terminal_vertex.rb
rley-0.5.09 lib/rley/gfg/non_terminal_vertex.rb
rley-0.5.08 lib/rley/gfg/non_terminal_vertex.rb