Sha256: 28a9d5316b03b4263add9c53ba1b9c1c1da9ac2ff05ac705f10e93ee278327f8

Contents?: true

Size: 1.31 KB

Versions: 7

Compression:

Stored size: 1.31 KB

Contents

module Treetop
  module Runtime
    class SyntaxNode < ParseResult
      attr_reader :input, :interval
      
      def initialize(input, interval, elements = nil, nested_results = elements)
        super(input, nested_results || [])
        @interval = interval
        @elements = elements
      end
      
      def success?
        true
      end
    
      def failure?
        false
      end

      def terminal?
        @elements.nil?
      end
      
      def nonterminal?
        !terminal?
      end
      
      def elements
        @elements || [self]
      end
      
      def text_value
        input[interval]
      end
      
      def update_nested_results(nested_results)
        new_nested_failures = collect_nested_failures_at_maximum_index(nested_results)
      
        return if new_nested_failures.empty?
        @nested_failures = new_nested_failures and return if nested_failures.empty?
      
        current_nested_failure_index = nested_failures.first.index
        new_nested_failure_index = new_nested_failures.first.index
      
        if new_nested_failure_index > current_nested_failure_index
          @nested_failures = new_nested_failures
        elsif new_nested_failure_index == current_nested_failure_index
          @nested_failures += new_nested_failures
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
treetop-1.0.1 lib/treetop/runtime/syntax_node.rb
treetop-1.1.0 lib/treetop/runtime/syntax_node.rb
treetop-1.0.0 lib/treetop/runtime/syntax_node.rb
treetop-1.0.2 lib/treetop/runtime/syntax_node.rb
treetop-1.1.1 lib/treetop/runtime/syntax_node.rb
treetop-1.1.2 lib/treetop/runtime/syntax_node.rb
treetop-1.1.4 lib/treetop/runtime/syntax_node.rb