changes to ATN simulator just before I try adding context back in.
[git-p4: depot-paths = "//depot/code/antlr4/main/": change = 8903]
This commit is contained in:
parent
66da1f723a
commit
1fcc12a7ad
|
@ -463,16 +463,23 @@ public class ParserATNSimulator extends ATNSimulator {
|
|||
ATNConfig c = null;
|
||||
if ( t instanceof RuleTransition ) {
|
||||
ATNState p = config.state;
|
||||
RuleContext newContext =
|
||||
new RuleContext(config.context, p.stateNumber, t.target.stateNumber);
|
||||
// RuleContext xx = parser.args(config.context, t.target.stateNumber, t.target.ruleIndex, -999);
|
||||
// xx.invokingState = p.stateNumber;
|
||||
RuleContext newContext;
|
||||
if ( parser != null ) {
|
||||
System.out.println("rule trans to rule "+parser.getRuleNames()[t.target.ruleIndex]);
|
||||
newContext = parser.args(config.context, t.target.stateNumber, t.target.ruleIndex, -999);
|
||||
newContext.invokingState = p.stateNumber;
|
||||
System.out.println("new ctx type is "+newContext.getClass().getSimpleName());
|
||||
}
|
||||
else {
|
||||
newContext = new RuleContext(config.context, p.stateNumber, t.target.stateNumber);
|
||||
}
|
||||
c = new ATNConfig(config, t.target, newContext);
|
||||
// c = new ATNConfig(config, t.target, xx);
|
||||
}
|
||||
else if ( t instanceof PredicateTransition ) {
|
||||
PredicateTransition pt = (PredicateTransition)t;
|
||||
if ( debug ) System.out.println("PRED (eval="+evalPreds+") "+pt.ruleIndex+":"+pt.predIndex);
|
||||
if ( parser != null ) System.out.println("rule surrounding pred is "+
|
||||
parser.getRuleNames()[pt.ruleIndex]);
|
||||
// preds are epsilon if we're not doing preds.
|
||||
// if we are doing preds, pred must eval to true
|
||||
if ( !evalPreds ||
|
||||
|
|
|
@ -114,7 +114,7 @@ case <index> : return new <r.actions.(index).ctxType>(_localctx, s, <actions.(in
|
|||
>>
|
||||
|
||||
RuleActionFunction(r, actions) ::= <<
|
||||
public void <r.name>_action(<r.ctxType> _localctx, int s, int actionIndex) {
|
||||
public void <r.name>_action(<r.ctxType> _localctx, int actionIndex) {
|
||||
switch ( actionIndex ) {
|
||||
<actions:{index|
|
||||
case <index> : <actions.(index)> break;}; separator="\n">
|
||||
|
@ -141,7 +141,7 @@ public QStack\<<currentRule.ctxType>\> <currentRule.name>_stk = new QStack\<<cur
|
|||
_ctx = _localctx;
|
||||
<currentRule.name>_stk.push(_localctx);
|
||||
_localctx.start = input.LT(1);
|
||||
//System.out.println("enter "+ruleNames[<currentRule.index>]);
|
||||
System.out.println("enter "+ruleNames[<currentRule.index>]);
|
||||
<namedActions.init>
|
||||
<locals; separator="\n">
|
||||
try {
|
||||
|
@ -158,7 +158,7 @@ public QStack\<<currentRule.ctxType>\> <currentRule.name>_stk = new QStack\<<cur
|
|||
<currentRule.name>_stk.pop();
|
||||
_ctx = (ParserRuleContext)_ctx.parent;
|
||||
<finallyAction>
|
||||
//System.out.println("exit "+ruleNames[<currentRule.index>]);
|
||||
System.out.println("exit "+ruleNames[<currentRule.index>]);
|
||||
}
|
||||
return _localctx;
|
||||
}
|
||||
|
@ -611,7 +611,8 @@ public static final ATN _ATN =
|
|||
ATNSimulator.deserialize(_serializedATN.toCharArray());
|
||||
static {
|
||||
org.antlr.v4.tool.DOTGenerator dot = new org.antlr.v4.tool.DOTGenerator(null);
|
||||
//System.out.println(dot.getDOT(_ATN.decisionToState.get(0), rulesNames));
|
||||
//System.out.println(dot.getDOT(_ATN.decisionToState.get(0), ruleNames));
|
||||
//System.out.println(dot.getDOT(_ATN.ruleToStartState[2], ruleNames));
|
||||
}
|
||||
>>
|
||||
|
||||
|
|
Loading…
Reference in New Issue