UNPKG

antlr-ng

Version:

Next generation ANTLR Tool

20 lines (19 loc) 1.07 kB
import type { GrammarAST } from "../tool/ast/GrammarAST.js"; import type { CommonTree } from "./CommonTree.js"; import { RewriteRuleElementStream } from "./RewriteRuleElementStream.js"; export declare class RewriteRuleSubtreeStream extends RewriteRuleElementStream { /** * Treats next element as a single node even if it's a subtree. This is used instead of next() when the result has * to be a tree root node. Also prevents us from duplicating recently-added children; e.g., ^(type ID)+ adds ID * to type and then 2nd iteration must dup the type node, but ID has been added. * * Referencing a rule result twice is ok. Dup entire tree as we can't be adding trees as root, e.g., expr expr. * * Hideous code duplication here with super.next(). Can't think of a proper way to refactor. This needs to always * call dup node and super.next() doesn't know which to call: dup node or dup tree. * * @returns The next node in the stream. */ nextNode(): GrammarAST; protected dup(el: CommonTree): CommonTree; }