Class: Sequitur::SequiturGrammar

Inherits:
DynamicGrammar show all
Defined in:
lib/sequitur/sequitur_grammar.rb

Overview

Specialization of the DynamicGrammar class. A Sequitur grammar is a context-free grammar that is entirely built from a sequence of input tokens through the Sequitur algorithm.

Defined Under Namespace

Classes: CollisionDiagnosis

Instance Attribute Summary

Attributes inherited from DynamicGrammar

#productions, #start, #trace

Instance Method Summary collapse

Methods inherited from DynamicGrammar

#accept, #add_production, #add_token, #remove_production, #to_string, #visitor

Constructor Details

#initialize(anEnum) ⇒ SequiturGrammar

Build the grammar from an enumerator of tokens.

Parameters:

  • anEnum (Enumerator)

    an enumerator that will iterate over the input tokens.



14
15
16
17
18
19
20
21
22
23
24
# File 'lib/sequitur/sequitur_grammar.rb', line 14

def initialize(anEnum)
  super()
  # Make start production compliant with utility rule
  2.times { start.incr_refcount }

  # Read the input sequence and apply the Sequitur algorithm
  anEnum.each do |a_token|
    add_token(a_token)
    enforce_rules
  end
end