Class: Rley::Syntax::NonTerminal
- Defined in:
- lib/rley/syntax/non_terminal.rb
Overview
A non-terminal symbol (sometimes called a syntactic variable) represents a composition of terminal or non-terminal symbols
Instance Attribute Summary collapse
-
#generative ⇒ Object
writeonly
An indicator that tells whether the grammar symbol can generate a non-empty string of terminals.
-
#nullable ⇒ Object
writeonly
A non-terminal symbol is nullable if it can match an empty string.
-
#undefined ⇒ Object
writeonly
A non-terminal symbol is undefined if no production rule in the grammar has that non-terminal symbol in its left-hand side.
-
#unreachable ⇒ Object
writeonly
A non-terminal symbol is unreachable if it cannot be reached (derived) from the start symbol.
Attributes inherited from GrmSymbol
Instance Method Summary collapse
-
#nullable? ⇒ false/true
the empty string.
-
#undefined? ⇒ false/true
on the left-hand side of any production rule.
-
#unreachable? ⇒ false/true
from the start symbol.
Methods inherited from GrmSymbol
#generative?, #initialize, #terminal?, #to_s
Constructor Details
This class inherits a constructor from Rley::Syntax::GrmSymbol
Instance Attribute Details
#generative=(value) ⇒ Object (writeonly)
An indicator that tells whether the grammar symbol can generate a non-empty string of terminals.
12 13 14 |
# File 'lib/rley/syntax/non_terminal.rb', line 12 def generative=(value) @generative = value end |
#nullable=(value) ⇒ Object (writeonly)
A non-terminal symbol is nullable if it can match an empty string.
15 16 17 |
# File 'lib/rley/syntax/non_terminal.rb', line 15 def nullable=(value) @nullable = value end |
#undefined=(value) ⇒ Object (writeonly)
A non-terminal symbol is undefined if no production rule in the grammar has that non-terminal symbol in its left-hand side.
19 20 21 |
# File 'lib/rley/syntax/non_terminal.rb', line 19 def undefined=(value) @undefined = value end |
#unreachable=(value) ⇒ Object (writeonly)
A non-terminal symbol is unreachable if it cannot be reached (derived) from the start symbol.
23 24 25 |
# File 'lib/rley/syntax/non_terminal.rb', line 23 def unreachable=(value) @unreachable = value end |
Instance Method Details
#nullable? ⇒ false/true
the empty string. As non-terminal symbol is nullable when it can can match to zero input token. The "nullability" of a non-terminal can practically be determined once all the production rules of the grammar are specified.
30 31 32 |
# File 'lib/rley/syntax/non_terminal.rb', line 30 def nullable? return @nullable end |
#undefined? ⇒ false/true
on the left-hand side of any production rule.
36 37 38 |
# File 'lib/rley/syntax/non_terminal.rb', line 36 def undefined? return @undefined end |
#unreachable? ⇒ false/true
from the start symbol.
42 43 44 |
# File 'lib/rley/syntax/non_terminal.rb', line 42 def unreachable? return @unreachable end |