Class: Ibex::Runtime::CST::SyntaxRewriter
- Inherits:
-
Object
- Object
- Ibex::Runtime::CST::SyntaxRewriter
- Defined in:
- lib/json5/generated_parser.rb
Overview
Bottom-up syntax rewriter with kind-name dispatch.
Instance Method Summary collapse
Instance Method Details
#rewrite(root) ⇒ Object
1879 1880 1881 1882 1883 1884 1885 |
# File 'lib/json5/generated_parser.rb', line 1879 def rewrite(root) green = visit(root) return root if green.equal?(root.green) raise TypeError, "a syntax root must remain a GreenNode" unless green.is_a?(GreenNode) Editing.red_root(root, green) end |
#visit(element) ⇒ Object
1888 1889 1890 1891 1892 1893 1894 |
# File 'lib/json5/generated_parser.rb', line 1888 def visit(element) rewritten = element.is_a?(SyntaxNode) ? visit_children(element) : element.green method = :"visit_#{method_name(element.kind_name)}" return rewritten unless respond_to?(method, true) Editing.green_element(__send__(method, rewritten_view(element, rewritten))) end |