private void computeRuleError(GrammarError error, GrammarNonDeterminismMessage message) { List nonDetAlts = message.probe.getNonDeterministicAltsForState(message.problemState); Set disabledAlts = message.probe.getDisabledAlternatives(message.problemState); int firstAlt = 0; for (Object nonDetAlt : nonDetAlts) { Integer displayAltI = (Integer) nonDetAlt; NFAState nfaStart = message.probe.dfa.getNFADecisionStartState(); int tracePathAlt = nfaStart.translateDisplayAltToWalkAlt(displayAltI); if (firstAlt == 0) firstAlt = tracePathAlt; List path = message.probe.getNFAPathStatesForAlt(firstAlt, tracePathAlt, error.getLabels()); error.addPath(path, disabledAlts.contains(displayAltI)); error.addStates(path); // Find all rules enclosing each state (because a path can extend over multiple rules) for (Object aPath : path) { NFAState state = (NFAState) aPath; error.addRule(state.enclosingRule.name); } } }
if ( DecisionProbe.verbose ) { int tracePathAlt = nfaStart.translateDisplayAltToWalkAlt(displayAltI.intValue()); if ( firstAlt == 0 ) { firstAlt = tracePathAlt;
protected SemanticContext.Predicate getSynPredForAlt(NFAState decisionStartState, int alt) { int walkAlt = decisionStartState.translateDisplayAltToWalkAlt(alt); NFAState altLeftEdge = nfa.grammar.getNFAStateForAltOfDecision(decisionStartState, walkAlt); NFAState altStartState = (NFAState)altLeftEdge.transition[0].target; //System.out.println("alt "+alt+" start state = "+altStartState.stateNumber); if ( altStartState.transition[0].isSemanticPredicate() ) { SemanticContext ctx = altStartState.transition[0].label.getSemanticContext(); if ( ctx.isSyntacticPredicate() ) { SemanticContext.Predicate p = (SemanticContext.Predicate)ctx; if ( p.predicateAST.getType() == ANTLRParser.BACKTRACK_SEMPRED ) { /* System.out.println("syn pred for alt "+walkAlt+" "+ ((SemanticContext.Predicate)altStartState.transition[0].label.getSemanticContext()).predicateAST); */ if ( ctx.isSyntacticPredicate() ) { nfa.grammar.synPredUsedInDFA(this, ctx); } return (SemanticContext.Predicate)altStartState.transition[0].label.getSemanticContext(); } } } return null; } }
protected SemanticContext.Predicate getSynPredForAlt(NFAState decisionStartState, int alt) { int walkAlt = decisionStartState.translateDisplayAltToWalkAlt(alt); NFAState altLeftEdge = nfa.grammar.getNFAStateForAltOfDecision(decisionStartState, walkAlt); NFAState altStartState = (NFAState)altLeftEdge.transition[0].target; //System.out.println("alt "+alt+" start state = "+altStartState.stateNumber); if ( altStartState.transition[0].isSemanticPredicate() ) { SemanticContext ctx = altStartState.transition[0].label.getSemanticContext(); if ( ctx.isSyntacticPredicate() ) { SemanticContext.Predicate p = (SemanticContext.Predicate)ctx; if ( p.predicateAST.getType() == ANTLRParser.BACKTRACK_SEMPRED ) { /* System.out.println("syn pred for alt "+walkAlt+" "+ ((SemanticContext.Predicate)altStartState.transition[0].label.getSemanticContext()).predicateAST); */ if ( ctx.isSyntacticPredicate() ) { nfa.grammar.synPredUsedInDFA(this, ctx); } return (SemanticContext.Predicate)altStartState.transition[0].label.getSemanticContext(); } } } return null; } }
protected SemanticContext.Predicate getSynPredForAlt(NFAState decisionStartState, int alt) { int walkAlt = decisionStartState.translateDisplayAltToWalkAlt(alt); NFAState altLeftEdge = nfa.grammar.getNFAStateForAltOfDecision(decisionStartState, walkAlt); NFAState altStartState = (NFAState)altLeftEdge.transition[0].target; //System.out.println("alt "+alt+" start state = "+altStartState.stateNumber); if ( altStartState.transition[0].isSemanticPredicate() ) { SemanticContext ctx = altStartState.transition[0].label.getSemanticContext(); if ( ctx.isSyntacticPredicate() ) { SemanticContext.Predicate p = (SemanticContext.Predicate)ctx; if ( p.predicateAST.getType() == ANTLRParser.BACKTRACK_SEMPRED ) { /* System.out.println("syn pred for alt "+walkAlt+" "+ ((SemanticContext.Predicate)altStartState.transition[0].label.getSemanticContext()).predicateAST); */ if ( ctx.isSyntacticPredicate() ) { nfa.grammar.synPredUsedInDFA(this, ctx); } return (SemanticContext.Predicate)altStartState.transition[0].label.getSemanticContext(); } } } return null; } }
protected SemanticContext.Predicate getSynPredForAlt(NFAState decisionStartState, int alt) { int walkAlt = decisionStartState.translateDisplayAltToWalkAlt(alt); NFAState altLeftEdge = nfa.grammar.getNFAStateForAltOfDecision(decisionStartState, walkAlt); NFAState altStartState = (NFAState)altLeftEdge.transition[0].target; //System.out.println("alt "+alt+" start state = "+altStartState.stateNumber); if ( altStartState.transition[0].isSemanticPredicate() ) { SemanticContext ctx = altStartState.transition[0].label.getSemanticContext(); if ( ctx.isSyntacticPredicate() ) { SemanticContext.Predicate p = (SemanticContext.Predicate)ctx; if ( p.predicateAST.getType() == ANTLRParser.BACKTRACK_SEMPRED ) { /* System.out.println("syn pred for alt "+walkAlt+" "+ ((SemanticContext.Predicate)altStartState.transition[0].label.getSemanticContext()).predicateAST); */ if ( ctx.isSyntacticPredicate() ) { nfa.grammar.synPredUsedInDFA(this, ctx); } return (SemanticContext.Predicate)altStartState.transition[0].label.getSemanticContext(); } } } return null; } }
if ( DecisionProbe.verbose ) { int tracePathAlt = nfaStart.translateDisplayAltToWalkAlt(displayAltI.intValue()); if ( firstAlt == 0 ) { firstAlt = tracePathAlt;
for (int alt = 1; alt <= numAlts; alt++) { int walkAlt = decisionStartState.translateDisplayAltToWalkAlt(alt); NFAState altLeftEdge = getNFAStateForAltOfDecision(decisionStartState, walkAlt); NFAState altStartState = (NFAState)altLeftEdge.transition[0].target;
for (int alt = 1; alt <= numAlts; alt++) { int walkAlt = decisionStartState.translateDisplayAltToWalkAlt(alt); NFAState altLeftEdge = getNFAStateForAltOfDecision(decisionStartState, walkAlt); NFAState altStartState = (NFAState)altLeftEdge.transition[0].target;
for (int alt = 1; alt <= numAlts; alt++) { int walkAlt = decisionStartState.translateDisplayAltToWalkAlt(alt); NFAState altLeftEdge = getNFAStateForAltOfDecision(decisionStartState, walkAlt); NFAState altStartState = (NFAState)altLeftEdge.transition[0].target;
for (int alt = 1; alt <= numAlts; alt++) { int walkAlt = decisionStartState.translateDisplayAltToWalkAlt(alt); NFAState altLeftEdge = getNFAStateForAltOfDecision(decisionStartState, walkAlt); NFAState altStartState = (NFAState)altLeftEdge.transition[0].target;
dfa.decisionNFAStartState.translateDisplayAltToWalkAlt(alt); NFAState altLeftEdge = dfa.nfa.grammar.getNFAStateForAltOfDecision(dfa.decisionNFAStartState,walkAlt);
dfa.decisionNFAStartState.translateDisplayAltToWalkAlt(alt); NFAState altLeftEdge = dfa.nfa.grammar.getNFAStateForAltOfDecision(dfa.decisionNFAStartState,walkAlt);
dfa.decisionNFAStartState.translateDisplayAltToWalkAlt(alt); NFAState altLeftEdge = dfa.nfa.grammar.getNFAStateForAltOfDecision(dfa.decisionNFAStartState,walkAlt);
s.translateDisplayAltToWalkAlt(predictedAlt);
s.translateDisplayAltToWalkAlt(predictedAlt);
s.translateDisplayAltToWalkAlt(predictedAlt);
s.translateDisplayAltToWalkAlt(predictedAlt);
if ( DecisionProbe.verbose ) { int tracePathAlt = nfaStart.translateDisplayAltToWalkAlt(displayAltI); if ( firstAlt == 0 ) { firstAlt = tracePathAlt;
if ( DecisionProbe.verbose ) { int tracePathAlt = nfaStart.translateDisplayAltToWalkAlt(displayAltI); if ( firstAlt == 0 ) { firstAlt = tracePathAlt;