From 4d04b21999ab264630f0e170436c0175913d83b6 Mon Sep 17 00:00:00 2001 From: parrt Date: Mon, 27 Jun 2011 17:53:11 -0800 Subject: [PATCH] removed Rule depend from ATN [git-p4: depot-paths = "//depot/code/antlr4/main/": change = 8778] --- .../org/antlr/v4/runtime/BaseRecognizer.java | 3 ++- .../antlr/v4/runtime/RecognitionException.java | 2 +- .../Java/src/org/antlr/v4/runtime/atn/ATN.java | 13 +++++++------ .../antlr/v4/runtime/atn/ATNInterpreter.java | 3 ++- .../antlr/v4/runtime/atn/AtomTransition.java | 2 +- .../org/antlr/v4/runtime/atn/LL1Analyzer.java | 2 +- .../antlr/v4/runtime/atn/NotSetTransition.java | 2 +- .../antlr/v4/runtime/atn/RangeTransition.java | 5 +++-- .../antlr/v4/runtime/atn/SetTransition.java | 2 +- .../org/antlr/v4/runtime/atn/Transition.java | 2 +- .../antlr/v4/runtime}/misc/IntervalSet.java | 3 ++- tool/playground/Test.java | 10 +++------- tool/src/org/antlr/v4/Tool.java | 2 +- .../antlr/v4/analysis/AnalysisPipeline.java | 2 +- tool/src/org/antlr/v4/automata/ATNFactory.java | 2 +- .../org/antlr/v4/automata/ATNSerializer.java | 1 + .../org/antlr/v4/automata/LexerATNFactory.java | 2 +- .../antlr/v4/automata/ParserATNFactory.java | 18 +++++++++--------- .../v4/codegen/DefaultOutputModelFactory.java | 2 +- .../v4/codegen/OutputModelController.java | 2 +- .../org/antlr/v4/codegen/ParserFactory.java | 2 +- .../src/org/antlr/v4/codegen/model/Choice.java | 3 ++- .../antlr/v4/codegen/model/LL1AltBlock.java | 2 +- .../org/antlr/v4/codegen/model/LL1Loop.java | 2 +- .../model/LL1OptionalBlockSingleAlt.java | 2 +- .../antlr/v4/codegen/model/LL1PlusBlock.java | 2 +- .../codegen/model/LL1PlusBlockSingleAlt.java | 2 +- .../antlr/v4/codegen/model/LL1StarBlock.java | 2 +- .../codegen/model/LL1StarBlockSingleAlt.java | 2 +- .../antlr/v4/codegen/model/RuleFunction.java | 2 +- tool/src/org/antlr/v4/codegen/model/Sync.java | 2 +- .../antlr/v4/codegen/model/TestSetInline.java | 2 +- .../codegen/model/ThrowEarlyExitException.java | 2 +- .../v4/codegen/model/ThrowNoViableAlt.java | 2 +- .../model/ThrowRecognitionException.java | 2 +- tool/src/org/antlr/v4/tool/Grammar.java | 1 + tool/src/org/antlr/v4/tool/GrammarAST.java | 2 +- tool/test/org/antlr/v4/test/BaseTest.java | 2 +- .../org/antlr/v4/test/TestATNConstruction.java | 4 ++-- .../org/antlr/v4/test/TestATNInterpreter.java | 7 ++++--- .../antlr/v4/test/TestATNParserPrediction.java | 14 ++++++++------ 41 files changed, 74 insertions(+), 67 deletions(-) rename {tool/src/org/antlr/v4 => runtime/Java/src/org/antlr/v4/runtime}/misc/IntervalSet.java (99%) diff --git a/runtime/Java/src/org/antlr/v4/runtime/BaseRecognizer.java b/runtime/Java/src/org/antlr/v4/runtime/BaseRecognizer.java index 531ef6c69..c61677d22 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/BaseRecognizer.java +++ b/runtime/Java/src/org/antlr/v4/runtime/BaseRecognizer.java @@ -27,8 +27,9 @@ */ package org.antlr.v4.runtime; -import org.antlr.v4.misc.*; +import org.antlr.v4.misc.OrderedHashSet; import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.misc.IntervalSet; import java.util.*; diff --git a/runtime/Java/src/org/antlr/v4/runtime/RecognitionException.java b/runtime/Java/src/org/antlr/v4/runtime/RecognitionException.java index 0384d16b3..f3ac06462 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/RecognitionException.java +++ b/runtime/Java/src/org/antlr/v4/runtime/RecognitionException.java @@ -27,7 +27,7 @@ */ package org.antlr.v4.runtime; -import org.antlr.v4.misc.IntervalSet; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.runtime.tree.*; /** The root of the ANTLR exception hierarchy. diff --git a/runtime/Java/src/org/antlr/v4/runtime/atn/ATN.java b/runtime/Java/src/org/antlr/v4/runtime/atn/ATN.java index e80efa67e..d06db237d 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/atn/ATN.java +++ b/runtime/Java/src/org/antlr/v4/runtime/atn/ATN.java @@ -1,8 +1,7 @@ package org.antlr.v4.runtime.atn; -import org.antlr.v4.misc.IntervalSet; import org.antlr.v4.runtime.RuleContext; -import org.antlr.v4.tool.Rule; +import org.antlr.v4.runtime.misc.IntervalSet; import java.util.*; @@ -21,8 +20,12 @@ public class ATN { */ public List decisionToATNState = new ArrayList(); - public Map ruleToStartState = new LinkedHashMap(); - public Map ruleToStopState = new LinkedHashMap(); + public Map ruleToStartState = new LinkedHashMap(); + public Map ruleToStopState = new LinkedHashMap(); + +// public RuleStartState[] ruleToStartState = new LinkedHashMap(); +// public RuleStopState[] ruleToStopState = new LinkedHashMap(); + public Map modeNameToStartState = new LinkedHashMap(); @@ -38,8 +41,6 @@ public class ATN { int stateNumber = 0; - // TODO: for runtime all we need is states, decisionToATNState I think - /** Used for runtime deserialization of ATNs from strings */ public ATN() { } diff --git a/runtime/Java/src/org/antlr/v4/runtime/atn/ATNInterpreter.java b/runtime/Java/src/org/antlr/v4/runtime/atn/ATNInterpreter.java index c8985c80f..c1cec698d 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/atn/ATNInterpreter.java +++ b/runtime/Java/src/org/antlr/v4/runtime/atn/ATNInterpreter.java @@ -1,8 +1,9 @@ package org.antlr.v4.runtime.atn; -import org.antlr.v4.misc.*; +import org.antlr.v4.misc.OrderedHashSet; import org.antlr.v4.parse.ANTLRParser; import org.antlr.v4.runtime.dfa.DFAState; +import org.antlr.v4.runtime.misc.IntervalSet; import java.util.*; diff --git a/runtime/Java/src/org/antlr/v4/runtime/atn/AtomTransition.java b/runtime/Java/src/org/antlr/v4/runtime/atn/AtomTransition.java index 35356d20c..00a99f113 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/atn/AtomTransition.java +++ b/runtime/Java/src/org/antlr/v4/runtime/atn/AtomTransition.java @@ -1,6 +1,6 @@ package org.antlr.v4.runtime.atn; -import org.antlr.v4.misc.IntervalSet; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.tool.Grammar; /** TODO: make all transitions sets? no, should remove set edges */ diff --git a/runtime/Java/src/org/antlr/v4/runtime/atn/LL1Analyzer.java b/runtime/Java/src/org/antlr/v4/runtime/atn/LL1Analyzer.java index fdd2202e0..3734fe63e 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/atn/LL1Analyzer.java +++ b/runtime/Java/src/org/antlr/v4/runtime/atn/LL1Analyzer.java @@ -1,7 +1,7 @@ package org.antlr.v4.runtime.atn; -import org.antlr.v4.misc.IntervalSet; import org.antlr.v4.runtime.RuleContext; +import org.antlr.v4.runtime.misc.IntervalSet; import java.util.*; diff --git a/runtime/Java/src/org/antlr/v4/runtime/atn/NotSetTransition.java b/runtime/Java/src/org/antlr/v4/runtime/atn/NotSetTransition.java index 4c05fd2eb..041eb7464 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/atn/NotSetTransition.java +++ b/runtime/Java/src/org/antlr/v4/runtime/atn/NotSetTransition.java @@ -1,6 +1,6 @@ package org.antlr.v4.runtime.atn; -import org.antlr.v4.misc.IntervalSet; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.tool.*; public class NotSetTransition extends SetTransition { diff --git a/runtime/Java/src/org/antlr/v4/runtime/atn/RangeTransition.java b/runtime/Java/src/org/antlr/v4/runtime/atn/RangeTransition.java index ba20d4673..024ac5e2f 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/atn/RangeTransition.java +++ b/runtime/Java/src/org/antlr/v4/runtime/atn/RangeTransition.java @@ -1,6 +1,7 @@ package org.antlr.v4.runtime.atn; -import org.antlr.v4.misc.*; +import org.antlr.v4.misc.CharSupport; +import org.antlr.v4.runtime.misc.IntervalSet; public class RangeTransition extends Transition { public int from; @@ -15,7 +16,7 @@ public class RangeTransition extends Transition { } @Override - public IntervalSet label() { return IntervalSet.of(from,to); } + public IntervalSet label() { return IntervalSet.of(from, to); } @Override public String toString() { diff --git a/runtime/Java/src/org/antlr/v4/runtime/atn/SetTransition.java b/runtime/Java/src/org/antlr/v4/runtime/atn/SetTransition.java index bacddba96..d76acb855 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/atn/SetTransition.java +++ b/runtime/Java/src/org/antlr/v4/runtime/atn/SetTransition.java @@ -1,7 +1,7 @@ package org.antlr.v4.runtime.atn; -import org.antlr.v4.misc.IntervalSet; import org.antlr.v4.runtime.Token; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.tool.*; /** A transition containing a set of values */ diff --git a/runtime/Java/src/org/antlr/v4/runtime/atn/Transition.java b/runtime/Java/src/org/antlr/v4/runtime/atn/Transition.java index cb496d8c1..8f13c46a6 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/atn/Transition.java +++ b/runtime/Java/src/org/antlr/v4/runtime/atn/Transition.java @@ -1,6 +1,6 @@ package org.antlr.v4.runtime.atn; -import org.antlr.v4.misc.IntervalSet; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.tool.Grammar; import java.util.*; diff --git a/tool/src/org/antlr/v4/misc/IntervalSet.java b/runtime/Java/src/org/antlr/v4/runtime/misc/IntervalSet.java similarity index 99% rename from tool/src/org/antlr/v4/misc/IntervalSet.java rename to runtime/Java/src/org/antlr/v4/runtime/misc/IntervalSet.java index c774573f6..1b65d45ab 100644 --- a/tool/src/org/antlr/v4/misc/IntervalSet.java +++ b/runtime/Java/src/org/antlr/v4/runtime/misc/IntervalSet.java @@ -25,8 +25,9 @@ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -package org.antlr.v4.misc; +package org.antlr.v4.runtime.misc; +import org.antlr.v4.misc.*; import org.antlr.v4.runtime.Token; import org.antlr.v4.tool.Grammar; diff --git a/tool/playground/Test.java b/tool/playground/Test.java index fa25fe18d..e4a8c3fef 100644 --- a/tool/playground/Test.java +++ b/tool/playground/Test.java @@ -1,13 +1,9 @@ import org.antlr.v4.Tool; import org.antlr.v4.automata.ParserATNFactory; -import org.antlr.v4.runtime.CommonToken; -import org.antlr.v4.runtime.Token; -import org.antlr.v4.runtime.TokenSource; -import org.antlr.v4.runtime.TokenStream; +import org.antlr.v4.runtime.*; import org.antlr.v4.runtime.atn.ATN; import org.antlr.v4.semantics.SemanticPipeline; -import org.antlr.v4.tool.DOTGenerator; -import org.antlr.v4.tool.Grammar; +import org.antlr.v4.tool.*; import java.util.List; @@ -52,7 +48,7 @@ public class Test { ATN atn = f.createATN(); DOTGenerator dot = new DOTGenerator(g); - System.out.println(dot.getDOT(atn.ruleToStartState.get(g.getRule("d")))); + System.out.println(dot.getDOT(atn.ruleToStartState.get(g.getRule("d").index))); } public static class IntTokenStream implements TokenStream { diff --git a/tool/src/org/antlr/v4/Tool.java b/tool/src/org/antlr/v4/Tool.java index 2653f07f8..65533a880 100644 --- a/tool/src/org/antlr/v4/Tool.java +++ b/tool/src/org/antlr/v4/Tool.java @@ -410,7 +410,7 @@ public class Tool { for (Grammar ig : grammars) { for (Rule r : ig.rules.values()) { try { - String dot = dotGenerator.getDOT(g.atn.ruleToStartState.get(r)); + String dot = dotGenerator.getDOT(g.atn.ruleToStartState.get(r.index)); if (dot != null) { writeDOTFile(g, r, dot); } diff --git a/tool/src/org/antlr/v4/analysis/AnalysisPipeline.java b/tool/src/org/antlr/v4/analysis/AnalysisPipeline.java index 3f373cee0..cf9485278 100644 --- a/tool/src/org/antlr/v4/analysis/AnalysisPipeline.java +++ b/tool/src/org/antlr/v4/analysis/AnalysisPipeline.java @@ -1,7 +1,7 @@ package org.antlr.v4.analysis; -import org.antlr.v4.misc.IntervalSet; import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.tool.Grammar; import java.util.*; diff --git a/tool/src/org/antlr/v4/automata/ATNFactory.java b/tool/src/org/antlr/v4/automata/ATNFactory.java index f27b91efe..4c692661f 100644 --- a/tool/src/org/antlr/v4/automata/ATNFactory.java +++ b/tool/src/org/antlr/v4/automata/ATNFactory.java @@ -1,7 +1,7 @@ package org.antlr.v4.automata; -import org.antlr.v4.misc.IntervalSet; import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.tool.*; import java.util.List; diff --git a/tool/src/org/antlr/v4/automata/ATNSerializer.java b/tool/src/org/antlr/v4/automata/ATNSerializer.java index b3e894ea2..65f1a5caa 100644 --- a/tool/src/org/antlr/v4/automata/ATNSerializer.java +++ b/tool/src/org/antlr/v4/automata/ATNSerializer.java @@ -2,6 +2,7 @@ package org.antlr.v4.automata; import org.antlr.v4.misc.*; import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.tool.*; import java.util.*; diff --git a/tool/src/org/antlr/v4/automata/LexerATNFactory.java b/tool/src/org/antlr/v4/automata/LexerATNFactory.java index 40c3d5e13..3cf036eef 100644 --- a/tool/src/org/antlr/v4/automata/LexerATNFactory.java +++ b/tool/src/org/antlr/v4/automata/LexerATNFactory.java @@ -36,7 +36,7 @@ public class LexerATNFactory extends ParserATNFactory { TokensStartState startState = atn.modeNameToStartState.get(modeName); for (Rule r : rules) { if ( !r.isFragment() ) { - RuleStartState s = atn.ruleToStartState.get(r); + RuleStartState s = atn.ruleToStartState.get(r.index); epsilon(startState, s); } } diff --git a/tool/src/org/antlr/v4/automata/ParserATNFactory.java b/tool/src/org/antlr/v4/automata/ParserATNFactory.java index 3e275b805..07e9f240a 100644 --- a/tool/src/org/antlr/v4/automata/ParserATNFactory.java +++ b/tool/src/org/antlr/v4/automata/ParserATNFactory.java @@ -3,9 +3,10 @@ package org.antlr.v4.automata; import org.antlr.runtime.*; import org.antlr.runtime.tree.*; -import org.antlr.v4.misc.*; +import org.antlr.v4.misc.CharSupport; import org.antlr.v4.parse.*; import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.tool.*; import java.lang.reflect.Constructor; @@ -56,9 +57,9 @@ public class ParserATNFactory implements ATNFactory { /* start->ruleblock->end */ public Handle rule(GrammarAST ruleAST, String name, Handle blk) { Rule r = g.getRule(name); - RuleStartState start = atn.ruleToStartState.get(r); + RuleStartState start = atn.ruleToStartState.get(r.index); epsilon(start, blk.left); - RuleStopState stop = atn.ruleToStopState.get(r); + RuleStopState stop = atn.ruleToStopState.get(r.index); epsilon(blk.right, stop); Handle h = new Handle(start, stop); // FASerializer ser = new FASerializer(g, h.left); @@ -140,7 +141,7 @@ public class ParserATNFactory implements ATNFactory { public Handle _ruleRef(GrammarAST node) { Rule r = g.getRule(node.getText()); - RuleStartState start = atn.ruleToStartState.get(r); + RuleStartState start = atn.ruleToStartState.get(r.index); ATNState left = newState(node); ATNState right = newState(node); RuleTransition call = new RuleTransition(r, start, right); @@ -152,7 +153,7 @@ public class ParserATNFactory implements ATNFactory { public void addFollowLink(Rule r, ATNState right) { // add follow edge from end of invoked rule - RuleStopState stop = atn.ruleToStopState.get(r); + RuleStopState stop = atn.ruleToStopState.get(r.index); epsilon(stop, right); } @@ -393,7 +394,6 @@ public class ParserATNFactory implements ATNFactory { public Handle wildcard(GrammarAST node) { ATNState left = newState(node); ATNState right = newState(node); - int ttype = g.getTokenType(node.getText()); left.transition = new WildcardTransition(right); right.incidentTransition = left.transition; node.atnState = left; @@ -419,9 +419,9 @@ public class ParserATNFactory implements ATNFactory { start.stopState = stop; start.setRule(r); stop.setRule(r); - atn.ruleToStartState.put(r, start); + atn.ruleToStartState.put(r.index, start); atn.rules.add(start); - atn.ruleToStopState.put(r, stop); + atn.ruleToStopState.put(r.index, stop); } } @@ -437,7 +437,7 @@ public class ParserATNFactory implements ATNFactory { int n = 0; ATNState eofTarget = newState(null); // one unique EOF target for all rules for (Rule r : g.rules.values()) { - ATNState stop = atn.ruleToStopState.get(r); + ATNState stop = atn.ruleToStopState.get(r.index); if ( stop.getNumberOfTransitions()>0 ) continue; n++; Transition t = new AtomTransition(Token.EOF, eofTarget); diff --git a/tool/src/org/antlr/v4/codegen/DefaultOutputModelFactory.java b/tool/src/org/antlr/v4/codegen/DefaultOutputModelFactory.java index feed8d941..651b301fd 100644 --- a/tool/src/org/antlr/v4/codegen/DefaultOutputModelFactory.java +++ b/tool/src/org/antlr/v4/codegen/DefaultOutputModelFactory.java @@ -1,7 +1,7 @@ package org.antlr.v4.codegen; import org.antlr.v4.codegen.model.*; -import org.antlr.v4.misc.IntervalSet; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.tool.*; import java.util.*; diff --git a/tool/src/org/antlr/v4/codegen/OutputModelController.java b/tool/src/org/antlr/v4/codegen/OutputModelController.java index 47c7d9ff9..3597fb328 100644 --- a/tool/src/org/antlr/v4/codegen/OutputModelController.java +++ b/tool/src/org/antlr/v4/codegen/OutputModelController.java @@ -1,7 +1,7 @@ package org.antlr.v4.codegen; import org.antlr.v4.codegen.model.*; -import org.antlr.v4.misc.IntervalSet; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.tool.*; import java.util.*; diff --git a/tool/src/org/antlr/v4/codegen/ParserFactory.java b/tool/src/org/antlr/v4/codegen/ParserFactory.java index a588aabc9..493a8b2bd 100644 --- a/tool/src/org/antlr/v4/codegen/ParserFactory.java +++ b/tool/src/org/antlr/v4/codegen/ParserFactory.java @@ -3,9 +3,9 @@ package org.antlr.v4.codegen; import org.antlr.runtime.tree.CommonTreeNodeStream; import org.antlr.v4.analysis.AnalysisPipeline; import org.antlr.v4.codegen.model.*; -import org.antlr.v4.misc.IntervalSet; import org.antlr.v4.parse.*; import org.antlr.v4.runtime.atn.*; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.tool.*; import java.util.List; diff --git a/tool/src/org/antlr/v4/codegen/model/Choice.java b/tool/src/org/antlr/v4/codegen/model/Choice.java index 78ace1662..3e28cb5df 100644 --- a/tool/src/org/antlr/v4/codegen/model/Choice.java +++ b/tool/src/org/antlr/v4/codegen/model/Choice.java @@ -2,7 +2,8 @@ package org.antlr.v4.codegen.model; import org.antlr.v4.codegen.OutputModelFactory; import org.antlr.v4.codegen.model.decl.*; -import org.antlr.v4.misc.*; +import org.antlr.v4.misc.Utils; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.tool.GrammarAST; import java.util.*; diff --git a/tool/src/org/antlr/v4/codegen/model/LL1AltBlock.java b/tool/src/org/antlr/v4/codegen/model/LL1AltBlock.java index 590104ec1..7c4a82340 100644 --- a/tool/src/org/antlr/v4/codegen/model/LL1AltBlock.java +++ b/tool/src/org/antlr/v4/codegen/model/LL1AltBlock.java @@ -1,8 +1,8 @@ package org.antlr.v4.codegen.model; import org.antlr.v4.codegen.OutputModelFactory; -import org.antlr.v4.misc.IntervalSet; import org.antlr.v4.runtime.atn.DecisionState; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.tool.GrammarAST; import java.util.List; diff --git a/tool/src/org/antlr/v4/codegen/model/LL1Loop.java b/tool/src/org/antlr/v4/codegen/model/LL1Loop.java index c15c7bf82..ea3f822c2 100644 --- a/tool/src/org/antlr/v4/codegen/model/LL1Loop.java +++ b/tool/src/org/antlr/v4/codegen/model/LL1Loop.java @@ -1,7 +1,7 @@ package org.antlr.v4.codegen.model; import org.antlr.v4.codegen.OutputModelFactory; -import org.antlr.v4.misc.IntervalSet; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.tool.GrammarAST; import java.util.*; diff --git a/tool/src/org/antlr/v4/codegen/model/LL1OptionalBlockSingleAlt.java b/tool/src/org/antlr/v4/codegen/model/LL1OptionalBlockSingleAlt.java index 1eeda8a5d..d7c81ce8f 100644 --- a/tool/src/org/antlr/v4/codegen/model/LL1OptionalBlockSingleAlt.java +++ b/tool/src/org/antlr/v4/codegen/model/LL1OptionalBlockSingleAlt.java @@ -1,8 +1,8 @@ package org.antlr.v4.codegen.model; import org.antlr.v4.codegen.OutputModelFactory; -import org.antlr.v4.misc.IntervalSet; import org.antlr.v4.runtime.atn.DecisionState; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.tool.GrammarAST; import java.util.List; diff --git a/tool/src/org/antlr/v4/codegen/model/LL1PlusBlock.java b/tool/src/org/antlr/v4/codegen/model/LL1PlusBlock.java index 9ba309669..15b881c80 100644 --- a/tool/src/org/antlr/v4/codegen/model/LL1PlusBlock.java +++ b/tool/src/org/antlr/v4/codegen/model/LL1PlusBlock.java @@ -1,8 +1,8 @@ package org.antlr.v4.codegen.model; import org.antlr.v4.codegen.*; -import org.antlr.v4.misc.IntervalSet; import org.antlr.v4.runtime.atn.PlusBlockStartState; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.tool.*; import java.util.List; diff --git a/tool/src/org/antlr/v4/codegen/model/LL1PlusBlockSingleAlt.java b/tool/src/org/antlr/v4/codegen/model/LL1PlusBlockSingleAlt.java index 587b36706..933abdf1e 100644 --- a/tool/src/org/antlr/v4/codegen/model/LL1PlusBlockSingleAlt.java +++ b/tool/src/org/antlr/v4/codegen/model/LL1PlusBlockSingleAlt.java @@ -1,8 +1,8 @@ package org.antlr.v4.codegen.model; import org.antlr.v4.codegen.OutputModelFactory; -import org.antlr.v4.misc.IntervalSet; import org.antlr.v4.runtime.atn.PlusBlockStartState; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.tool.GrammarAST; import java.util.List; diff --git a/tool/src/org/antlr/v4/codegen/model/LL1StarBlock.java b/tool/src/org/antlr/v4/codegen/model/LL1StarBlock.java index e45cbbf53..506a1800e 100644 --- a/tool/src/org/antlr/v4/codegen/model/LL1StarBlock.java +++ b/tool/src/org/antlr/v4/codegen/model/LL1StarBlock.java @@ -1,8 +1,8 @@ package org.antlr.v4.codegen.model; import org.antlr.v4.codegen.OutputModelFactory; -import org.antlr.v4.misc.IntervalSet; import org.antlr.v4.runtime.atn.StarBlockStartState; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.tool.GrammarAST; import java.util.List; diff --git a/tool/src/org/antlr/v4/codegen/model/LL1StarBlockSingleAlt.java b/tool/src/org/antlr/v4/codegen/model/LL1StarBlockSingleAlt.java index 411a27523..b700ad936 100644 --- a/tool/src/org/antlr/v4/codegen/model/LL1StarBlockSingleAlt.java +++ b/tool/src/org/antlr/v4/codegen/model/LL1StarBlockSingleAlt.java @@ -1,8 +1,8 @@ package org.antlr.v4.codegen.model; import org.antlr.v4.codegen.OutputModelFactory; -import org.antlr.v4.misc.IntervalSet; import org.antlr.v4.runtime.atn.StarBlockStartState; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.tool.GrammarAST; import java.util.List; diff --git a/tool/src/org/antlr/v4/codegen/model/RuleFunction.java b/tool/src/org/antlr/v4/codegen/model/RuleFunction.java index c08cc1f97..a3876d53f 100644 --- a/tool/src/org/antlr/v4/codegen/model/RuleFunction.java +++ b/tool/src/org/antlr/v4/codegen/model/RuleFunction.java @@ -77,7 +77,7 @@ public class RuleFunction extends OutputModelObject { addLocalDecl(new KidsListDecl(factory, 0)); } - startState = factory.getGrammar().atn.ruleToStartState.get(r); + startState = factory.getGrammar().atn.ruleToStartState.get(r.index); } /** Add local var decl */ diff --git a/tool/src/org/antlr/v4/codegen/model/Sync.java b/tool/src/org/antlr/v4/codegen/model/Sync.java index 96b8f559b..13ca9ee05 100644 --- a/tool/src/org/antlr/v4/codegen/model/Sync.java +++ b/tool/src/org/antlr/v4/codegen/model/Sync.java @@ -1,7 +1,7 @@ package org.antlr.v4.codegen.model; import org.antlr.v4.codegen.OutputModelFactory; -import org.antlr.v4.misc.IntervalSet; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.tool.GrammarAST; /** */ diff --git a/tool/src/org/antlr/v4/codegen/model/TestSetInline.java b/tool/src/org/antlr/v4/codegen/model/TestSetInline.java index 937480572..6b60e0d7f 100644 --- a/tool/src/org/antlr/v4/codegen/model/TestSetInline.java +++ b/tool/src/org/antlr/v4/codegen/model/TestSetInline.java @@ -1,7 +1,7 @@ package org.antlr.v4.codegen.model; import org.antlr.v4.codegen.OutputModelFactory; -import org.antlr.v4.misc.IntervalSet; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.tool.GrammarAST; /** */ diff --git a/tool/src/org/antlr/v4/codegen/model/ThrowEarlyExitException.java b/tool/src/org/antlr/v4/codegen/model/ThrowEarlyExitException.java index e5f4cfd7f..92e0d4269 100644 --- a/tool/src/org/antlr/v4/codegen/model/ThrowEarlyExitException.java +++ b/tool/src/org/antlr/v4/codegen/model/ThrowEarlyExitException.java @@ -1,7 +1,7 @@ package org.antlr.v4.codegen.model; import org.antlr.v4.codegen.OutputModelFactory; -import org.antlr.v4.misc.IntervalSet; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.tool.GrammarAST; /** */ diff --git a/tool/src/org/antlr/v4/codegen/model/ThrowNoViableAlt.java b/tool/src/org/antlr/v4/codegen/model/ThrowNoViableAlt.java index 425c88de2..8fb943695 100644 --- a/tool/src/org/antlr/v4/codegen/model/ThrowNoViableAlt.java +++ b/tool/src/org/antlr/v4/codegen/model/ThrowNoViableAlt.java @@ -1,7 +1,7 @@ package org.antlr.v4.codegen.model; import org.antlr.v4.codegen.OutputModelFactory; -import org.antlr.v4.misc.IntervalSet; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.tool.GrammarAST; /** */ diff --git a/tool/src/org/antlr/v4/codegen/model/ThrowRecognitionException.java b/tool/src/org/antlr/v4/codegen/model/ThrowRecognitionException.java index 8dcf20382..aceb37486 100644 --- a/tool/src/org/antlr/v4/codegen/model/ThrowRecognitionException.java +++ b/tool/src/org/antlr/v4/codegen/model/ThrowRecognitionException.java @@ -1,7 +1,7 @@ package org.antlr.v4.codegen.model; import org.antlr.v4.codegen.OutputModelFactory; -import org.antlr.v4.misc.IntervalSet; +import org.antlr.v4.runtime.misc.IntervalSet; import org.antlr.v4.tool.GrammarAST; /** */ diff --git a/tool/src/org/antlr/v4/tool/Grammar.java b/tool/src/org/antlr/v4/tool/Grammar.java index 3c376238c..21e797819 100644 --- a/tool/src/org/antlr/v4/tool/Grammar.java +++ b/tool/src/org/antlr/v4/tool/Grammar.java @@ -8,6 +8,7 @@ import org.antlr.v4.parse.*; import org.antlr.v4.runtime.Token; import org.antlr.v4.runtime.atn.ATN; import org.antlr.v4.runtime.dfa.DFA; +import org.antlr.v4.runtime.misc.IntervalSet; import java.util.*; diff --git a/tool/src/org/antlr/v4/tool/GrammarAST.java b/tool/src/org/antlr/v4/tool/GrammarAST.java index 4b84ad595..2260355fe 100644 --- a/tool/src/org/antlr/v4/tool/GrammarAST.java +++ b/tool/src/org/antlr/v4/tool/GrammarAST.java @@ -2,9 +2,9 @@ package org.antlr.v4.tool; import org.antlr.runtime.*; import org.antlr.runtime.tree.*; -import org.antlr.v4.misc.IntervalSet; import org.antlr.v4.parse.ANTLRParser; import org.antlr.v4.runtime.atn.ATNState; +import org.antlr.v4.runtime.misc.IntervalSet; import java.util.*; diff --git a/tool/test/org/antlr/v4/test/BaseTest.java b/tool/test/org/antlr/v4/test/BaseTest.java index ba58723dc..01d6fc768 100644 --- a/tool/test/org/antlr/v4/test/BaseTest.java +++ b/tool/test/org/antlr/v4/test/BaseTest.java @@ -174,7 +174,7 @@ public abstract class BaseTest { ErrorQueue equeue = new ErrorQueue(); Grammar g = new Grammar(gtext, equeue); ATN atn = createATN(g); - ATNState s = atn.ruleToStartState.get(g.getRule(ruleName)); + ATNState s = atn.ruleToStartState.get(g.getRule(ruleName).index); if ( s==null ) { System.err.println("no such rule: "+ruleName); return null; diff --git a/tool/test/org/antlr/v4/test/TestATNConstruction.java b/tool/test/org/antlr/v4/test/TestATNConstruction.java index 8682621c4..c352f46a5 100644 --- a/tool/test/org/antlr/v4/test/TestATNConstruction.java +++ b/tool/test/org/antlr/v4/test/TestATNConstruction.java @@ -941,10 +941,10 @@ public class TestATNConstruction extends BaseTest { ATN atn = f.createATN(); DOTGenerator dot = new DOTGenerator(g); - System.out.println(dot.getDOT(atn.ruleToStartState.get(g.getRule(ruleName)))); + System.out.println(dot.getDOT(atn.ruleToStartState.get(g.getRule(ruleName).index))); Rule r = g.getRule(ruleName); - ATNState startState = atn.ruleToStartState.get(r); + ATNState startState = atn.ruleToStartState.get(r.index); ATNPrinter serializer = new ATNPrinter(g, startState); String result = serializer.toString(); diff --git a/tool/test/org/antlr/v4/test/TestATNInterpreter.java b/tool/test/org/antlr/v4/test/TestATNInterpreter.java index ba42cf48a..ae3174e12 100644 --- a/tool/test/org/antlr/v4/test/TestATNInterpreter.java +++ b/tool/test/org/antlr/v4/test/TestATNInterpreter.java @@ -274,14 +274,15 @@ public class TestATNInterpreter extends BaseTest { ParserInterpreter interp = new ParserInterpreter(atn); TokenStream input = new IntTokenStream(types); - ATNState startState = atn.ruleToStartState.get(g.getRule("a")); + ATNState startState = atn.ruleToStartState.get(g.getRule("a").index); if ( startState.transition(0).target instanceof BlockStartState ) { startState = startState.transition(0).target; } DOTGenerator dot = new DOTGenerator(g); - System.out.println(dot.getDOT(atn.ruleToStartState.get(g.getRule("a")))); - System.out.println(dot.getDOT(atn.ruleToStartState.get(g.getRule("e")))); + System.out.println(dot.getDOT(atn.ruleToStartState.get(g.getRule("a").index))); + Rule r = g.getRule("e"); + if ( r!=null ) System.out.println(dot.getDOT(atn.ruleToStartState.get(r.index))); int result = interp.matchATN(input, startState); assertEquals(expected, result); diff --git a/tool/test/org/antlr/v4/test/TestATNParserPrediction.java b/tool/test/org/antlr/v4/test/TestATNParserPrediction.java index 966cc1d4c..0c7f3eb73 100644 --- a/tool/test/org/antlr/v4/test/TestATNParserPrediction.java +++ b/tool/test/org/antlr/v4/test/TestATNParserPrediction.java @@ -269,9 +269,9 @@ public class TestATNParserPrediction extends BaseTest { ParserATNFactory f = new ParserATNFactory(g); ATN atn = f.createATN(); - RuleStartState aStart = atn.ruleToStartState.get(g.getRule("a")); - RuleStartState bStart = atn.ruleToStartState.get(g.getRule("b")); - RuleStartState eStart = atn.ruleToStartState.get(g.getRule("e")); + RuleStartState aStart = atn.ruleToStartState.get(g.getRule("a").index); + RuleStartState bStart = atn.ruleToStartState.get(g.getRule("b").index); + RuleStartState eStart = atn.ruleToStartState.get(g.getRule("e").index); ATNState a_e_invoke = aStart.transition(0).target; // ATNState b_e_invoke = bStart.transition(0).target; // RuleContext a_ctx = new RuleContext(null, -1, a_e_invoke.stateNumber); @@ -491,9 +491,11 @@ public class TestATNParserPrediction extends BaseTest { ATN atn = f.createATN(); DOTGenerator dot = new DOTGenerator(g); - System.out.println(dot.getDOT(atn.ruleToStartState.get(g.getRule("a")))); - System.out.println(dot.getDOT(atn.ruleToStartState.get(g.getRule("b")))); - System.out.println(dot.getDOT(atn.ruleToStartState.get(g.getRule("e")))); + System.out.println(dot.getDOT(atn.ruleToStartState.get(g.getRule("a").index))); + Rule r = g.getRule("b"); + if ( r!=null) System.out.println(dot.getDOT(atn.ruleToStartState.get(r.index))); + r = g.getRule("e"); + if ( r!=null) System.out.println(dot.getDOT(atn.ruleToStartState.get(r.index))); // Check ATN prediction ParserInterpreter interp = new ParserInterpreter(atn);