All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.antlr.v4.runtime.tree.ParseTree Maven / Gradle / Ivy

There is a newer version: 2.12.15
Show newest version
/*
 * Copyright (c) 2012-2017 The ANTLR Project. All rights reserved.
 * Use of this file is governed by the BSD 3-clause license that
 * can be found in the LICENSE.txt file in the project root.
 */

package org.antlr.v4.runtime.tree;

import org.antlr.v4.runtime.Parser;
import org.antlr.v4.runtime.RuleContext;
import org.antlr.v4.runtime.Token;

/** An interface to access the tree of {@link RuleContext} objects created
 *  during a parse that makes the data structure look like a simple parse tree.
 *  This node represents both internal nodes, rule invocations,
 *  and leaf nodes, token matches.
 *
 *  

The payload is either a {@link Token} or a {@link RuleContext} object.

*/ public interface ParseTree extends SyntaxTree { // the following methods narrow the return type; they are not additional methods @Override ParseTree getParent(); @Override ParseTree getChild(int i); /** Set the parent for this node. * * This is not backward compatible as it changes * the interface but no one was able to create custom * nodes anyway so I'm adding as it improves internal * code quality. * * One could argue for a restructuring of * the class/interface hierarchy so that * setParent, addChild are moved up to Tree * but that's a major change. So I'll do the * minimal change, which is to add this method. * * @since 4.7 */ void setParent(RuleContext parent); /** The {@link ParseTreeVisitor} needs a double dispatch method. */ T accept(ParseTreeVisitor visitor); /** Return the combined text of all leaf nodes. Does not get any * off-channel tokens (if any) so won't return whitespace and * comments if they are sent to parser on hidden channel. */ String getText(); /** Specialize toStringTree so that it can print out more information * based upon the parser. */ String toStringTree(Parser parser); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy