stripWildCardAlts(disabledAlts);
if ( disabledAlts.size()>0 ) {
// nondeterminism; same input predicts multiple alts.
// but don't emit error if greedy=true explicitly set
boolean explicitlyGreedy = false;
GrammarAST blockAST =
d.dfa.nfa.grammar.getDecisionBlockAST(d.dfa.decisionNumber);
if ( blockAST!=null ) {
String greedyS = (String)blockAST.getBlockOption("greedy");
if ( greedyS!=null && greedyS.equals("true") ) explicitlyGreedy = true;
}
if ( !explicitlyGreedy) ErrorManager.nondeterminism(this,d);
}
}
}
}
Set<DFAState> danglingStates = getDanglingStates();
if ( danglingStates.size()>0 ) {
//System.err.println("no emanating edges for states: "+danglingStates);
for (DFAState d : danglingStates) {
ErrorManager.danglingState(this,d);
}
}
if ( !nonLLStarDecision ) {
List<Integer> unreachableAlts = dfa.getUnreachableAlts();
if ( unreachableAlts!=null && unreachableAlts.size()>0 ) {
// give different msg if it's an empty Tokens rule from delegate
boolean isInheritedTokensRule = false;
if ( dfa.isTokensRuleDecision() ) {
for (Integer altI : unreachableAlts) {
GrammarAST decAST = dfa.getDecisionASTNode();
GrammarAST altAST = (GrammarAST)decAST.getChild(altI-1);
GrammarAST delegatedTokensAlt =
(GrammarAST)altAST.getFirstChildWithType(ANTLRParser.DOT);
if ( delegatedTokensAlt !=null ) {
isInheritedTokensRule = true;
ErrorManager.grammarWarning(ErrorManager.MSG_IMPORTED_TOKENS_RULE_EMPTY,
dfa.nfa.grammar,
null,
dfa.nfa.grammar.name,
delegatedTokensAlt.getChild(0).getText());
}
}
}
if ( isInheritedTokensRule ) {
}