antlr-ng
Version:
Next generation ANTLR Tool
20 lines (19 loc) • 1.07 kB
TypeScript
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;
}