Class: Rley::Formatter::Asciitree
- Inherits:
-
BaseFormatter
- Object
- BaseFormatter
- Rley::Formatter::Asciitree
- Defined in:
- lib/rley/formatter/asciitree.rb
Overview
A formatter class that draws parse trees by using characters
Instance Attribute Summary collapse
-
#blank_indent ⇒ String
readonly
The character pattern used for a blank indentation.
-
#continuation_indent ⇒ String
readonly
continuation.
-
#curr_path ⇒ Object
readonly
TODO.
-
#nesting_prefix ⇒ String
readonly
a parent - child nesting.
-
#ranks ⇒ Object
readonly
For each node in curr_path, there is a corresponding string value.
Attributes inherited from BaseFormatter
Instance Method Summary collapse
-
#after_subnodes(_parent, _children) ⇒ Object
Method called by a ParseTreeVisitor to which the formatter subscribed.
-
#before_non_terminal(aNonTerm) ⇒ Object
Method called by a ParseTreeVisitor to which the formatter subscribed.
-
#before_subnodes(parent, _children) ⇒ Object
Method called by a ParseTreeVisitor to which the formatter subscribed.
-
#before_terminal(aTerm) ⇒ Object
Method called by a ParseTreeVisitor to which the formatter subscribed.
-
#initialize(anIO) ⇒ Asciitree
constructor
Constructor.
Methods inherited from BaseFormatter
Constructor Details
#initialize(anIO) ⇒ Asciitree
Constructor. is written.
32 33 34 35 36 37 38 39 40 |
# File 'lib/rley/formatter/asciitree.rb', line 32 def initialize(anIO) super(anIO) @curr_path = [] @ranks = [] @nesting_prefix = '+-- ' @blank_indent = ' ' @continuation_indent = '| ' end |
Instance Attribute Details
#blank_indent ⇒ String (readonly)
Returns The character pattern used for a blank indentation.
23 24 25 |
# File 'lib/rley/formatter/asciitree.rb', line 23 def blank_indent @blank_indent end |
#continuation_indent ⇒ String (readonly)
continuation.
27 28 29 |
# File 'lib/rley/formatter/asciitree.rb', line 27 def continuation_indent @continuation_indent end |
#curr_path ⇒ Object (readonly)
TODO
12 13 14 |
# File 'lib/rley/formatter/asciitree.rb', line 12 def curr_path @curr_path end |
#nesting_prefix ⇒ String (readonly)
a parent - child nesting
20 21 22 |
# File 'lib/rley/formatter/asciitree.rb', line 20 def nesting_prefix @nesting_prefix end |
#ranks ⇒ Object (readonly)
For each node in curr_path, there is a corresponding string value. Allowed string values are: 'first', 'last', 'first_and_last', 'other'
16 17 18 |
# File 'lib/rley/formatter/asciitree.rb', line 16 def ranks @ranks end |
Instance Method Details
#after_subnodes(_parent, _children) ⇒ Object
Method called by a ParseTreeVisitor to which the formatter subscribed. Notification of a visit event: the visitor completed the visit of the children of a non-terminal node.
73 74 75 76 |
# File 'lib/rley/formatter/asciitree.rb', line 73 def after_subnodes(_parent, _children) curr_path.pop ranks.pop end |
#before_non_terminal(aNonTerm) ⇒ Object
Method called by a ParseTreeVisitor to which the formatter subscribed. Notification of a visit event: the visitor is about to visit a non-terminal node
56 57 58 |
# File 'lib/rley/formatter/asciitree.rb', line 56 def before_non_terminal(aNonTerm) emit(aNonTerm) end |
#before_subnodes(parent, _children) ⇒ Object
Method called by a ParseTreeVisitor to which the formatter subscribed. Notification of a visit event: the visitor is about to visit the children of a non-terminal node
47 48 49 50 |
# File 'lib/rley/formatter/asciitree.rb', line 47 def before_subnodes(parent, _children) rank_of(parent) curr_path << parent end |
#before_terminal(aTerm) ⇒ Object
Method called by a ParseTreeVisitor to which the formatter subscribed. Notification of a visit event: the visitor is about to visit a terminal node
64 65 66 |
# File 'lib/rley/formatter/asciitree.rb', line 64 def before_terminal(aTerm) emit(aTerm, ": '#{aTerm.token.lexeme}'") end |