java类org.antlr.v4.runtime.atn.ATNState的实例源码

GoParserFactory.java 文件源码 项目:goworks 阅读 22 收藏 0 点赞 0 评论 0
public static int getQidDecision(@NonNull ATN atn) {
    ATNState decisionState = atn.ruleToStartState[GoParser.RULE_qualifiedIdentifier].transition(0).target;
    if (decisionState instanceof DecisionState) {
        return ((DecisionState)decisionState).decision;
    } else {
        return -1;
    }
}
TreeCorrectionParserATNSimulator.java 文件源码 项目:goworks 阅读 38 收藏 0 点赞 0 评论 0
@Override
public ATNState getReachableTarget(ATNConfig source, Transition trans, int ttype) {
    if (trans instanceof RuleTransition) {
        IntervalSet suppressed = getSuppressedSet(startIndex);
        if (suppressed.contains(((RuleTransition)trans).ruleIndex)) {
            return null;
        }
    }

    return super.getReachableTarget(source, trans, ttype);
}
ParserInterpreter.java 文件源码 项目:Scratch-ApuC 阅读 21 收藏 0 点赞 0 评论 0
public ParserInterpreter(String grammarFileName, Collection<String> tokenNames,
                         Collection<String> ruleNames, ATN atn, TokenStream input)
{
    super(input);
    this.grammarFileName = grammarFileName;
    this.atn = atn;
    this.tokenNames = tokenNames.toArray(new String[tokenNames.size()]);
    this.ruleNames = ruleNames.toArray(new String[ruleNames.size()]);
    this.decisionToDFA = new DFA[atn.getNumberOfDecisions()];
    for (int i = 0; i < decisionToDFA.length; i++) {
        decisionToDFA[i] = new DFA(atn.getDecisionState(i), i);
    }

    // identify the ATN states where pushNewRecursionContext must be called
    this.pushRecursionContextStates = new BitSet(atn.states.size());
    for (ATNState state : atn.states) {
        if (!(state instanceof StarLoopEntryState)) {
            continue;
        }

        if (((StarLoopEntryState)state).precedenceRuleDecision) {
            this.pushRecursionContextStates.set(state.stateNumber);
        }
    }

    // get atn simulator that knows how to do predictions
    setInterpreter(new ParserATNSimulator(this, atn,
                                          decisionToDFA,
                                          sharedContextCache));
}
ParserInterpreter.java 文件源码 项目:Scratch-ApuC 阅读 19 收藏 0 点赞 0 评论 0
protected void visitRuleStopState(ATNState p) {
    RuleStartState ruleStartState = atn.ruleToStartState[p.ruleIndex];
    if (ruleStartState.isPrecedenceRule) {
        Pair<ParserRuleContext, Integer> parentContext = _parentContextStack.pop();
        unrollRecursionContexts(parentContext.a);
        setState(parentContext.b);
    }
    else {
        exitRule();
    }

    RuleTransition ruleTransition = (RuleTransition)atn.states.get(getState()).transition(0);
    setState(ruleTransition.followState.stateNumber);
}
CSSErrorStrategy.java 文件源码 项目:jStyleParser 阅读 22 收藏 0 点赞 0 评论 0
public void sync(Parser recognizer) throws RecognitionException {
    ATNState s = recognizer.getInterpreter().atn.states.get(recognizer.getState());
    if (!this.inErrorRecoveryMode(recognizer)) {
        TokenStream tokens = recognizer.getInputStream();
        int la = tokens.LA(1);
        if (!recognizer.getATN().nextTokens(s).contains(la) && la != -1) {
            if (!recognizer.isExpectedToken(la)) {
                switch (s.getStateType()) {
                    case 3:
                    case 4:
                    case 5:
                    case 10:
                        throw new RecognitionException(recognizer, tokens, recognizer.getContext());
                    case 9:
                    case 11:
                        //added
                        this.reportUnwantedToken(recognizer);
                        throw new RecognitionException(recognizer, tokens, recognizer.getContext());
                    case 6:
                    case 7:
                    case 8:
                    default:
                }
            }
        }
    }
}
GroupHighlighterLexer.java 文件源码 项目:antlrworks2 阅读 16 收藏 0 点赞 0 评论 0
private static Transition createSetTransition(ATNState target, IntervalSet set) {
    if (set.getIntervals().size() == 1) {
        Interval interval = set.getIntervals().get(0);
        if (interval.a == interval.b) {
            return new AtomTransition(target, interval.a);
        } else {
            return new RangeTransition(target, interval.a, interval.b);
        }
    } else {
        return new SetTransition(target, set);
    }
}
TemplateLexer.java 文件源码 项目:antlrworks2 阅读 16 收藏 0 点赞 0 评论 0
private static Transition createSetTransition(ATNState target, IntervalSet set) {
    if (set.getIntervals().size() == 1) {
        Interval interval = set.getIntervals().get(0);
        if (interval.a == interval.b) {
            return new AtomTransition(target, interval.a);
        } else {
            return new RangeTransition(target, interval.a, interval.b);
        }
    } else {
        return new SetTransition(target, set);
    }
}
DOTGenerator.java 文件源码 项目:codebuff 阅读 21 收藏 0 点赞 0 评论 0
public String getDOT(ATNState startState) {
    return getDOT(startState, false);
}
ATNPrinter.java 文件源码 项目:codebuff 阅读 63 收藏 0 点赞 0 评论 0
public ATNPrinter(Grammar g, ATNState start) {
    this.g = g;
    this.start = start;
}
ATNVisitor.java 文件源码 项目:codebuff 阅读 15 收藏 0 点赞 0 评论 0
public void visit(ATNState s) {
    visit_(s, new HashSet<Integer>());
}


问题


面经


文章

微信
公众号

扫码关注公众号