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 collapse
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.
21 22 23 24 |
# File 'lib/sequitur/formatter/base_text.rb', line 21 def initialize(anIO) super(anIO) @prod_lookup = {} end |
Instance Attribute Details
#prod_lookup ⇒ Hash{Production => Integer} (readonly)
16 17 18 |
# File 'lib/sequitur/formatter/base_text.rb', line 16 def prod_lookup @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
74 75 76 |
# File 'lib/sequitur/formatter/base_text.rb', line 74 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
29 30 31 32 33 |
# File 'lib/sequitur/formatter/base_text.rb', line 29 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
65 66 67 68 |
# File 'lib/sequitur/formatter/base_text.rb', line 65 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
39 40 41 42 |
# File 'lib/sequitur/formatter/base_text.rb', line 39 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
48 49 50 |
# File 'lib/sequitur/formatter/base_text.rb', line 48 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
56 57 58 |
# File 'lib/sequitur/formatter/base_text.rb', line 56 def before_terminal(aSymbol) output.print " #{aSymbol}" end |