From df2e24a228c7ac56026d2120625979434f3beb8c Mon Sep 17 00:00:00 2001 From: Sam Harwell Date: Sun, 25 Mar 2012 07:53:59 -0500 Subject: [PATCH] Override getRuleIndex() in generated context objects so ParserRuleContext.ruleIndex field can be removed --- runtime/Java/src/org/antlr/v4/runtime/Parser.java | 8 +++----- .../Java/src/org/antlr/v4/runtime/ParserRuleContext.java | 7 ------- .../org/antlr/v4/tool/templates/codegen/Java/Java.stg | 1 + 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/runtime/Java/src/org/antlr/v4/runtime/Parser.java b/runtime/Java/src/org/antlr/v4/runtime/Parser.java index 66c234f3c..04c5b56ca 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/Parser.java +++ b/runtime/Java/src/org/antlr/v4/runtime/Parser.java @@ -45,18 +45,18 @@ public abstract class Parser extends Recognizer public class TraceListener implements ParseListener { @Override public void enterNonLRRule(ParserRuleContext ctx) { - System.out.println("enter " + getRuleNames()[ctx.ruleIndex] + ", LT(1)=" + _input.LT(1).getText()); + System.out.println("enter " + getRuleNames()[ctx.getRuleIndex()] + ", LT(1)=" + _input.LT(1).getText()); } @Override public void exitEveryRule(ParserRuleContext ctx) { - System.out.println("exit "+getRuleNames()[ctx.ruleIndex]+", LT(1)="+_input.LT(1).getText()); + System.out.println("exit "+getRuleNames()[ctx.getRuleIndex()]+", LT(1)="+_input.LT(1).getText()); } @Override public void visitTerminal(ParserRuleContext parent, Token token) { System.out.println("consume "+token+" rule "+ - getRuleNames()[parent.ruleIndex]+ + getRuleNames()[parent.getRuleIndex()]+ " alt="+parent.altNum); } } @@ -380,7 +380,6 @@ public abstract class Parser extends Recognizer public void enterRule(ParserRuleContext localctx, int ruleIndex) { _ctx = localctx; _ctx.start = _input.LT(1); - _ctx.ruleIndex = ruleIndex; if (_buildParseTrees) addContextToParseTree(); if ( _parseListeners != null) triggerEnterRuleEvent(); } @@ -407,7 +406,6 @@ public abstract class Parser extends Recognizer public void pushNewRecursionContext(ParserRuleContext localctx, int ruleIndex) { _ctx = localctx; _ctx.start = _input.LT(1); - _ctx.ruleIndex = ruleIndex; } public void unrollRecursionContexts(ParserRuleContext _parentctx) { diff --git a/runtime/Java/src/org/antlr/v4/runtime/ParserRuleContext.java b/runtime/Java/src/org/antlr/v4/runtime/ParserRuleContext.java index 3ba0bb249..3571a5c83 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/ParserRuleContext.java +++ b/runtime/Java/src/org/antlr/v4/runtime/ParserRuleContext.java @@ -103,9 +103,6 @@ public class ParserRuleContext extends RuleContext { public Symbol start, stop; - /** Set during parsing to identify which rule parser is in. */ - public int ruleIndex; - /** Set during parsing to identify which alt of rule parser is in. */ public int altNum; @@ -120,7 +117,6 @@ public class ParserRuleContext extends RuleContext { this.start = ctx.start; this.stop = ctx.stop; - this.ruleIndex = ctx.ruleIndex; } public ParserRuleContext(@Nullable ParserRuleContext parent, int invokingStateNumber, int stateNumber) { @@ -289,9 +285,6 @@ public class ParserRuleContext extends RuleContext { @Override public int getChildCount() { return children!=null ? children.size() : 0; } - @Override - public int getRuleIndex() { return ruleIndex; } - @Override public Interval getSourceInterval() { if ( start==null || stop==null ) return Interval.EMPTY; diff --git a/tool/resources/org/antlr/v4/tool/templates/codegen/Java/Java.stg b/tool/resources/org/antlr/v4/tool/templates/codegen/Java/Java.stg index 422e4ac3d..b838d8af2 100644 --- a/tool/resources/org/antlr/v4/tool/templates/codegen/Java/Java.stg +++ b/tool/resources/org/antlr/v4/tool/templates/codegen/Java/Java.stg @@ -608,6 +608,7 @@ public static class extends implement super(parent, state); = ;}; separator="\n"> } + @Override public int getRuleIndex() { return RULE_; } public () { } public void copyFrom( ctx) {