lib/rley/parser/parse_forest_factory.rb in rley-0.4.07 vs lib/rley/parser/parse_forest_factory.rb in rley-0.4.08
- old
+ new
@@ -1,50 +1,14 @@
-require_relative 'parse_walker_factory'
+require_relative 'parse_rep_creator'
require_relative 'parse_forest_builder'
module Rley # This module is used as a namespace
module Parser # This module is used as a namespace
# Utility class that helps to create a ParseForest from
# a given Parsing object.
- class ParseForestFactory
- # Link to Parsing object (= results of recognizer)
- attr_reader(:parsing)
+ class ParseForestFactory < ParseRepCreator
-
- def initialize(aParsingResult)
- @parsing = aParsingResult
- end
-
- # Factory that produces the parse forest
- def build_parse_forest()
- a_walker = walker(parsing)
- a_builder = builder(parsing)
-
- begin
- loop do
- event = a_walker.next
- # puts "EVENT #{event[0]} #{event[1]}"
- a_builder.receive_event(*event)
- end
- rescue StopIteration
- # Do nothing
- end
-
- return a_builder.forest
- end
-
-
- private
-
- # Create a Parsing walker, that is, an object
- # that will iterate over the relevant nodes (= parsing entries)
- # of a GFGParsing
- def walker(aParseResult)
- walker_factory = ParseWalkerFactory.new
- accept_entry = aParseResult.accepting_entry
- accept_index = aParseResult.chart.last_index
- walker_factory.build_walker(accept_entry, accept_index)
- end
+ protected
# Create a Builder, that is, an object
# that will create piece by piece the forest
def builder(aParseResult)
ParseForestBuilder.new(aParseResult.tokens)