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.
30 31 32 33 34 35 36 37 38 |
# File 'lib/rley/formatter/asciitree.rb', line 30 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.
21 22 23 |
# File 'lib/rley/formatter/asciitree.rb', line 21 def blank_indent @blank_indent end |
#continuation_indent ⇒ String (readonly)
continuation.
25 26 27 |
# File 'lib/rley/formatter/asciitree.rb', line 25 def continuation_indent @continuation_indent end |
#curr_path ⇒ Object (readonly)
TODO
10 11 12 |
# File 'lib/rley/formatter/asciitree.rb', line 10 def curr_path @curr_path end |
#nesting_prefix ⇒ String (readonly)
a parent - child nesting
18 19 20 |
# File 'lib/rley/formatter/asciitree.rb', line 18 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'
14 15 16 |
# File 'lib/rley/formatter/asciitree.rb', line 14 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.
71 72 73 74 |
# File 'lib/rley/formatter/asciitree.rb', line 71 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
54 55 56 |
# File 'lib/rley/formatter/asciitree.rb', line 54 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
45 46 47 48 |
# File 'lib/rley/formatter/asciitree.rb', line 45 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
62 63 64 |
# File 'lib/rley/formatter/asciitree.rb', line 62 def before_terminal(aTerm) emit(aTerm, ": '#{aTerm.token.lexeme}'") end |