Class: Sequitur::Digram
- Inherits:
-
Object
- Object
- Sequitur::Digram
- Defined in:
- lib/sequitur/digram.rb
Overview
In linguistics, a digram is a sequence of two letters. In Sequitur, a digram is a sequence of two consecutive symbols that appear in a production rule. Each symbol in a digram can be a terminal or not.
Instance Attribute Summary collapse
-
#key ⇒ Object
readonly
An unique hash key of the digram.
-
#production ⇒ Object
readonly
The production in which the digram occurs.
-
#symbols ⇒ Object
readonly
The sequence of two consecutive grammar symbols.
Instance Method Summary collapse
-
#==(other) ⇒ true/false
Equality testing.
-
#initialize(symbol1, symbol2, aProduction) ⇒ Digram
constructor
Constructor.
-
#repeating? ⇒ true/false
Does the digram consists of twice the same symbols?.
Constructor Details
#initialize(symbol1, symbol2, aProduction) ⇒ Digram
Constructor. A digram represents a sequence of two symbols (that appears in a rhs of a production). Terminal symbols must respond to the :hash message.
29 30 31 32 33 |
# File 'lib/sequitur/digram.rb', line 29 def initialize(symbol1, symbol2, aProduction) @symbols = [symbol1, symbol2] @key = symbol1.hash.to_s(16) + ':' + symbol2.hash.to_s(16) @production = aProduction end |
Instance Attribute Details
#key ⇒ Object (readonly)
An unique hash key of the digram
16 17 18 |
# File 'lib/sequitur/digram.rb', line 16 def key @key end |
#production ⇒ Object (readonly)
The production in which the digram occurs
19 20 21 |
# File 'lib/sequitur/digram.rb', line 19 def production @production end |
#symbols ⇒ Object (readonly)
The sequence of two consecutive grammar symbols. The two symbols should respond to the :hash message.
13 14 15 |
# File 'lib/sequitur/digram.rb', line 13 def symbols @symbols end |
Instance Method Details
#==(other) ⇒ true/false
Equality testing. true iff keys of both digrams are equal, false otherwise
39 40 41 |
# File 'lib/sequitur/digram.rb', line 39 def ==(other) return key == other.key end |
#repeating? ⇒ true/false
Does the digram consists of twice the same symbols?
45 46 47 |
# File 'lib/sequitur/digram.rb', line 45 def repeating? return symbols[0] == symbols[1] end |