Class: Sequitur::Formatter::BaseText
- Inherits:
-
BaseFormatter
- Object
- BaseFormatter
- Sequitur::Formatter::BaseText
- Defined in:
- lib/sequitur/formatter/base_text.rb
Overview
A formatter class that can render a dynamic grammar in plain text.
Instance Attribute Summary
Attributes inherited from BaseFormatter
Instance Method Summary collapse
-
#after_production(_) ⇒ Object
Method called by a GrammarVisitor to which the formatter subscribed.
-
#before_grammar(aGrammar) ⇒ Object
Method called by a GrammarVisitor to which the formatter subscribed.
-
#before_non_terminal(aProduction) ⇒ Object
Method called by a GrammarVisitor to which the formatter subscribed.
-
#before_production(aProduction) ⇒ Object
Method called by a GrammarVisitor to which the formatter subscribed.
-
#before_rhs(_) ⇒ Object
Method called by a GrammarVisitor to which the formatter subscribed.
-
#before_terminal(aSymbol) ⇒ Object
Method called by a GrammarVisitor to which the formatter subscribed.
-
#initialize(anIO) ⇒ BaseText
constructor
Constructor.
Methods inherited from BaseFormatter
Constructor Details
#initialize(anIO) ⇒ BaseText
Constructor. is written.
18 19 20 21 |
# File 'lib/sequitur/formatter/base_text.rb', line 18 def initialize(anIO) super(anIO) @prod_lookup = {} end |
Instance Method Details
#after_production(_) ⇒ Object
Method called by a GrammarVisitor to which the formatter subscribed. Notification of a visit event: the visitor complete the visit of a production
72 73 74 |
# File 'lib/sequitur/formatter/base_text.rb', line 72 def after_production(_) output.print ".\n" end |
#before_grammar(aGrammar) ⇒ Object
Method called by a GrammarVisitor to which the formatter subscribed. Notification of a visit event: the visitor is about to visit a grammar
28 29 30 31 32 |
# File 'lib/sequitur/formatter/base_text.rb', line 28 def before_grammar(aGrammar) aGrammar.productions.each_with_index do |a_prod, index| prod_lookup[a_prod] = index end end |
#before_non_terminal(aProduction) ⇒ Object
Method called by a GrammarVisitor to which the formatter subscribed. Notification of a visit event: the visitor is about to visit a non-terminal (= an allusion to a production) in the rhs of a production
64 65 66 67 |
# File 'lib/sequitur/formatter/base_text.rb', line 64 def before_non_terminal(aProduction) p_name = prod_name(aProduction) output.print " #{p_name}" end |
#before_production(aProduction) ⇒ Object
Method called by a GrammarVisitor to which the formatter subscribed. Notification of a visit event: the visitor is about to visit a production
38 39 40 41 |
# File 'lib/sequitur/formatter/base_text.rb', line 38 def before_production(aProduction) p_name = prod_name(aProduction) output.print p_name end |
#before_rhs(_) ⇒ Object
Method called by a GrammarVisitor to which the formatter subscribed. Notification of a visit event: the visitor is about to visit the rhs of a production
47 48 49 |
# File 'lib/sequitur/formatter/base_text.rb', line 47 def before_rhs(_) output.print ' :' end |
#before_terminal(aSymbol) ⇒ Object
Method called by a GrammarVisitor to which the formatter subscribed. Notification of a visit event: the visitor is about to visit a terminal symbol from the rhs of a production
55 56 57 |
# File 'lib/sequitur/formatter/base_text.rb', line 55 def before_terminal(aSymbol) output.print " #{aSymbol}" end |