Search in sources :

Example 6 with ErrorNode

use of org.antlr.v4.runtime.tree.ErrorNode in project antlr4 by antlr.

the class ParserRuleContext method addErrorNode.

/** Add a child to this node based upon badToken.  It
	 *  creates a ErrorNodeImpl rather than using
	 *  {@link Parser#createErrorNode(ParserRuleContext, Token)}. I'm leaving this
	 *  in for compatibility but the parser doesn't use this anymore.
	 */
@Deprecated
public ErrorNode addErrorNode(Token badToken) {
    ErrorNodeImpl t = new ErrorNodeImpl(badToken);
    addAnyChild(t);
    t.setParent(this);
    return t;
}
Also used : ErrorNodeImpl(org.antlr.v4.runtime.tree.ErrorNodeImpl)

Example 7 with ErrorNode

use of org.antlr.v4.runtime.tree.ErrorNode in project antlr4 by antlr.

the class ParserRuleContext method copyFrom.

/** COPY a ctx (I'm deliberately not using copy constructor) to avoid
	 *  confusion with creating node with parent. Does not copy children
	 *  (except error leaves).
	 *
	 *  This is used in the generated parser code to flip a generic XContext
	 *  node for rule X to a YContext for alt label Y. In that sense, it is
	 *  not really a generic copy function.
	 *
	 *  If we do an error sync() at start of a rule, we might add error nodes
	 *  to the generic XContext so this function must copy those nodes to
	 *  the YContext as well else they are lost!
	 */
public void copyFrom(ParserRuleContext ctx) {
    this.parent = ctx.parent;
    this.invokingState = ctx.invokingState;
    this.start = ctx.start;
    this.stop = ctx.stop;
    // copy any error nodes to alt label node
    if (ctx.children != null) {
        this.children = new ArrayList<>();
        // reset parent pointer for any error nodes
        for (ParseTree child : ctx.children) {
            if (child instanceof ErrorNode) {
                addChild((ErrorNode) child);
            }
        }
    }
}
Also used : ErrorNode(org.antlr.v4.runtime.tree.ErrorNode) ParseTree(org.antlr.v4.runtime.tree.ParseTree)

Example 8 with ErrorNode

use of org.antlr.v4.runtime.tree.ErrorNode in project antlr4 by antlr.

the class Trees method getNodeText.

public static String getNodeText(Tree t, List<String> ruleNames) {
    if (ruleNames != null) {
        if (t instanceof RuleContext) {
            int ruleIndex = ((RuleContext) t).getRuleContext().getRuleIndex();
            String ruleName = ruleNames.get(ruleIndex);
            int altNumber = ((RuleContext) t).getAltNumber();
            if (altNumber != ATN.INVALID_ALT_NUMBER) {
                return ruleName + ":" + altNumber;
            }
            return ruleName;
        } else if (t instanceof ErrorNode) {
            return t.toString();
        } else if (t instanceof TerminalNode) {
            Token symbol = ((TerminalNode) t).getSymbol();
            if (symbol != null) {
                String s = symbol.getText();
                return s;
            }
        }
    }
    // no recog for rule names
    Object payload = t.getPayload();
    if (payload instanceof Token) {
        return ((Token) payload).getText();
    }
    return t.getPayload().toString();
}
Also used : RuleContext(org.antlr.v4.runtime.RuleContext) ParserRuleContext(org.antlr.v4.runtime.ParserRuleContext) CommonToken(org.antlr.v4.runtime.CommonToken) Token(org.antlr.v4.runtime.Token)

Aggregations

ErrorNode (org.antlr.v4.runtime.tree.ErrorNode)4 ParserRuleContext (org.antlr.v4.runtime.ParserRuleContext)2 Rectangle2D (java.awt.geom.Rectangle2D)1 ArrayDeque (java.util.ArrayDeque)1 ArrayList (java.util.ArrayList)1 ANTLRInputStream (org.antlr.v4.runtime.ANTLRInputStream)1 BaseErrorListener (org.antlr.v4.runtime.BaseErrorListener)1 CommonToken (org.antlr.v4.runtime.CommonToken)1 CommonTokenStream (org.antlr.v4.runtime.CommonTokenStream)1 RecognitionException (org.antlr.v4.runtime.RecognitionException)1 RuleContext (org.antlr.v4.runtime.RuleContext)1 Token (org.antlr.v4.runtime.Token)1 IntegerStack (org.antlr.v4.runtime.misc.IntegerStack)1 ErrorNodeImpl (org.antlr.v4.runtime.tree.ErrorNodeImpl)1 ParseTree (org.antlr.v4.runtime.tree.ParseTree)1 ParseTreeListener (org.antlr.v4.runtime.tree.ParseTreeListener)1 TerminalNode (org.antlr.v4.runtime.tree.TerminalNode)1 BaseRuntimeTest.antlrOnString (org.antlr.v4.test.runtime.BaseRuntimeTest.antlrOnString)1 Test (org.junit.Test)1 ST (org.stringtemplate.v4.ST)1