@Override
protected void reportAttemptingFullContext(DFA dfa, BitSet conflictingAlts, SimulatorState conflictState, int startIndex, int stopIndex) {
super.reportAttemptingFullContext(dfa, conflictingAlts, conflictState, startIndex, stopIndex);
int k;
if (startIndex == stopIndex) {
k = 1;
} else if (startIndex == stopIndex - 1) {
k = 2;
} else {
k = 0;
for (int i = startIndex; i <= stopIndex; i++) {
parser.getInputStream().seek(i);
if (parser.getInputStream().LT(1).getChannel() == Token.DEFAULT_CHANNEL) {
k++;
}
}
}
fullContextFallback[dfa.decision]++;
totalLookaheadSll[dfa.decision] += k;
minLookaheadSll[dfa.decision] = Math.min(minLookaheadSll[dfa.decision], k);
maxLookaheadSll[dfa.decision] = Math.max(maxLookaheadSll[dfa.decision], k);
}
java类org.antlr.v4.runtime.dfa.DFA的实例源码
StatisticsParserATNSimulator.java 文件源码
项目:goworks
阅读 23
收藏 0
点赞 0
评论 0
LexerInterpreter.java 文件源码
项目:Scratch-ApuC
阅读 26
收藏 0
点赞 0
评论 0
public LexerInterpreter(String grammarFileName, Collection<String> tokenNames, Collection<String> ruleNames, Collection<String> modeNames, ATN atn, CharStream input) {
super(input);
if (atn.grammarType != ATNType.LEXER) {
throw new IllegalArgumentException("The ATN must be a lexer ATN.");
}
this.grammarFileName = grammarFileName;
this.atn = atn;
this.tokenNames = tokenNames.toArray(new String[tokenNames.size()]);
this.ruleNames = ruleNames.toArray(new String[ruleNames.size()]);
this.modeNames = modeNames.toArray(new String[modeNames.size()]);
this._decisionToDFA = new DFA[atn.getNumberOfDecisions()];
for (int i = 0; i < _decisionToDFA.length; i++) {
_decisionToDFA[i] = new DFA(atn.getDecisionState(i), i);
}
this._interp = new LexerATNSimulator(this,atn,_decisionToDFA,_sharedContextCache);
}
DiagnosticErrorListener.java 文件源码
项目:Scratch-ApuC
阅读 24
收藏 0
点赞 0
评论 0
@Override
public void reportAmbiguity(@NotNull Parser recognizer,
@NotNull DFA dfa,
int startIndex,
int stopIndex,
boolean exact,
@Nullable BitSet ambigAlts,
@NotNull ATNConfigSet configs)
{
if (exactOnly && !exact) {
return;
}
String format = "reportAmbiguity d=%s: ambigAlts=%s, input='%s'";
String decision = getDecisionDescription(recognizer, dfa);
BitSet conflictingAlts = getConflictingAlts(ambigAlts, configs);
String text = recognizer.getTokenStream().getText(Interval.of(startIndex, stopIndex));
String message = String.format(format, decision, conflictingAlts, text);
recognizer.notifyErrorListeners(message);
}
DiagnosticErrorListener.java 文件源码
项目:Scratch-ApuC
阅读 21
收藏 0
点赞 0
评论 0
protected String getDecisionDescription(@NotNull Parser recognizer, @NotNull DFA dfa) {
int decision = dfa.decision;
int ruleIndex = dfa.atnStartState.ruleIndex;
String[] ruleNames = recognizer.getRuleNames();
if (ruleIndex < 0 || ruleIndex >= ruleNames.length) {
return String.valueOf(decision);
}
String ruleName = ruleNames[ruleIndex];
if (ruleName == null || ruleName.isEmpty()) {
return String.valueOf(decision);
}
return String.format("%d (%s)", decision, ruleName);
}
ParserATNSimulator.java 文件源码
项目:Scratch-ApuC
阅读 26
收藏 0
点赞 0
评论 0
/**
* Add state {@code D} to the DFA if it is not already present, and return
* the actual instance stored in the DFA. If a state equivalent to {@code D}
* is already in the DFA, the existing state is returned. Otherwise this
* method returns {@code D} after adding it to the DFA.
*
* <p>If {@code D} is {@link #ERROR}, this method returns {@link #ERROR} and
* does not change the DFA.</p>
*
* @param dfa The dfa
* @param D The DFA state to add
* @return The state stored in the DFA. This will be either the existing
* state if {@code D} is already in the DFA, or {@code D} itself if the
* state was not already present.
*/
@NotNull
protected DFAState addDFAState(@NotNull DFA dfa, @NotNull DFAState D) {
if (D == ERROR) {
return D;
}
synchronized (dfa.states) {
DFAState existing = dfa.states.get(D);
if ( existing!=null ) return existing;
D.stateNumber = dfa.states.size();
if (!D.configs.isReadonly()) {
D.configs.optimizeConfigs(this);
D.configs.setReadonly(true);
}
dfa.states.put(D, D);
if ( debug ) System.out.println("adding new DFA state: "+D);
return D;
}
}
ProfilingATNSimulator.java 文件源码
项目:Scratch-ApuC
阅读 20
收藏 0
点赞 0
评论 0
@Override
protected void reportAmbiguity(@NotNull DFA dfa, DFAState D, int startIndex, int stopIndex, boolean exact,
@Nullable BitSet ambigAlts, @NotNull ATNConfigSet configs)
{
int prediction;
if ( ambigAlts!=null ) {
prediction = ambigAlts.nextSetBit(0);
}
else {
prediction = configs.getAlts().nextSetBit(0);
}
if ( configs.fullCtx && prediction != conflictingAltResolvedBySLL ) {
// Even though this is an ambiguity we are reporting, we can
// still detect some context sensitivities. Both SLL and LL
// are showing a conflict, hence an ambiguity, but if they resolve
// to different minimum alternatives we have also identified a
// context sensitivity.
decisions[currentDecision].contextSensitivities.add(
new ContextSensitivityInfo(currentDecision, configs, _input, startIndex, stopIndex)
);
}
decisions[currentDecision].ambiguities.add(
new AmbiguityInfo(currentDecision, configs, _input, startIndex, stopIndex, configs.fullCtx)
);
super.reportAmbiguity(dfa, D, startIndex, stopIndex, exact, ambigAlts, configs);
}
LexerATNSimulator.java 文件源码
项目:Scratch-ApuC
阅读 24
收藏 0
点赞 0
评论 0
public int match(@NotNull CharStream input, int mode) {
match_calls++;
this.mode = mode;
int mark = input.mark();
try {
this.startIndex = input.index();
this.prevAccept.reset();
DFA dfa = decisionToDFA[mode];
if ( dfa.s0==null ) {
return matchATN(input);
}
else {
return execATN(input, dfa.s0);
}
}
finally {
input.release(mark);
}
}
StatisticsParserATNSimulator.java 文件源码
项目:antlrworks2
阅读 23
收藏 0
点赞 0
评论 0
@Override
protected void reportAttemptingFullContext(DFA dfa, BitSet conflictingAlts, SimulatorState conflictState, int startIndex, int stopIndex) {
super.reportAttemptingFullContext(dfa, conflictingAlts, conflictState, startIndex, stopIndex);
int k;
if (startIndex == stopIndex) {
k = 1;
} else if (startIndex == stopIndex - 1) {
k = 2;
} else {
k = 0;
for (int i = startIndex; i <= stopIndex; i++) {
parser.getInputStream().seek(i);
if (parser.getInputStream().LT(1).getChannel() == Token.DEFAULT_CHANNEL) {
k++;
}
}
}
fullContextFallback[dfa.decision]++;
totalLookaheadSll[dfa.decision] += k;
minLookaheadSll[dfa.decision] = Math.min(minLookaheadSll[dfa.decision], k);
maxLookaheadSll[dfa.decision] = Math.max(maxLookaheadSll[dfa.decision], k);
}
GraphParser.java 文件源码
项目:digraph-parser
阅读 22
收藏 0
点赞 0
评论 0
@Override
public void reportAmbiguity(@NotNull Parser recognizer,
@NotNull DFA dfa,
int startIndex,
int stopIndex,
boolean exact,
@Nullable BitSet ambigAlts,
@NotNull ATNConfigSet configs)
{
}
GraphParser.java 文件源码
项目:digraph-parser
阅读 25
收藏 0
点赞 0
评论 0
@Override
public void reportAttemptingFullContext(@NotNull Parser recognizer,
@NotNull DFA dfa,
int startIndex,
int stopIndex,
@Nullable BitSet conflictingAlts,
@NotNull ATNConfigSet configs)
{
}
GraphParser.java 文件源码
项目:digraph-parser
阅读 31
收藏 0
点赞 0
评论 0
@Override
public void reportContextSensitivity(@NotNull Parser recognizer,
@NotNull DFA dfa,
int startIndex,
int stopIndex,
int prediction,
@NotNull ATNConfigSet configs)
{
}
UserAgent.java 文件源码
项目:yauaa
阅读 35
收藏 0
点赞 0
评论 0
@Override
public void reportAmbiguity(
Parser recognizer,
DFA dfa,
int startIndex,
int stopIndex,
boolean exact,
BitSet ambigAlts,
ATNConfigSet configs) {
hasAmbiguity = true;
ambiguityCount++;
// allFields.put("__Ambiguity__",new AgentField("true"));
}
UserAgent.java 文件源码
项目:yauaa
阅读 24
收藏 0
点赞 0
评论 0
@Override
public void reportAttemptingFullContext(
Parser recognizer,
DFA dfa,
int startIndex,
int stopIndex,
BitSet conflictingAlts,
ATNConfigSet configs) {
}
UserAgent.java 文件源码
项目:yauaa
阅读 21
收藏 0
点赞 0
评论 0
@Override
public void reportContextSensitivity(
Parser recognizer,
DFA dfa,
int startIndex,
int stopIndex,
int prediction,
ATNConfigSet configs) {
}
MatcherAction.java 文件源码
项目:yauaa
阅读 39
收藏 0
点赞 0
评论 0
@Override
public void reportAmbiguity(
Parser recognizer,
DFA dfa,
int startIndex,
int stopIndex,
boolean exact,
BitSet ambigAlts,
ATNConfigSet configs) {
// Ignore this type of problem
}
MatcherAction.java 文件源码
项目:yauaa
阅读 27
收藏 0
点赞 0
评论 0
@Override
public void reportAttemptingFullContext(
Parser recognizer,
DFA dfa,
int startIndex,
int stopIndex,
BitSet conflictingAlts,
ATNConfigSet configs) {
// Ignore this type of problem
}
MatcherAction.java 文件源码
项目:yauaa
阅读 25
收藏 0
点赞 0
评论 0
@Override
public void reportContextSensitivity(
Parser recognizer,
DFA dfa,
int startIndex,
int stopIndex,
int prediction,
ATNConfigSet configs) {
// Ignore this type of problem
}
JSSDReader.java 文件源码
项目:libraries
阅读 21
收藏 0
点赞 0
评论 0
@Override
public void reportContextSensitivity(
final Parser recognizer,
final DFA dfa,
final int startIndex,
final int stopIndex,
final int prediction,
final ATNConfigSet configs) {
this.messages
.add("Context sensitivity violation, at " + startIndex + " until " + stopIndex + ", " + recognizer.getTokenStream().getText(Interval.of(startIndex, stopIndex))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
JSSDReader.java 文件源码
项目:libraries
阅读 51
收藏 0
点赞 0
评论 0
@Override
public void reportAmbiguity(
final Parser recognizer,
final DFA dfa,
final int startIndex,
final int stopIndex,
final boolean exact,
final BitSet ambigAlts,
final ATNConfigSet configs) {
this.messages
.add("ambiguity, at " + startIndex + " until " + stopIndex + ", " + recognizer.getTokenStream().getText(Interval.of(startIndex, stopIndex))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
}
InmemantlrErrorListener.java 文件源码
项目:inmemantlr
阅读 26
收藏 0
点赞 0
评论 0
@Override
public void reportAmbiguity(Parser recognizer,
DFA dfa,
int startIndex,
int stopIndex,
boolean exact,
BitSet ambigAlts,
ATNConfigSet configs)
{
log.put(Type.AMBIGUITY, "Ambiguity " + startIndex + " " + stopIndex);
}
InmemantlrErrorListener.java 文件源码
项目:inmemantlr
阅读 22
收藏 0
点赞 0
评论 0
@Override
public void reportAttemptingFullContext(Parser recognizer,
DFA dfa,
int startIndex,
int stopIndex,
BitSet conflictingAlts,
ATNConfigSet configs)
{
log.put(Type.FULL_CTX, "Attempting full Context " + startIndex + " " +
stopIndex);
}
InmemantlrErrorListener.java 文件源码
项目:inmemantlr
阅读 22
收藏 0
点赞 0
评论 0
@Override
public void reportContextSensitivity(Parser recognizer,
DFA dfa,
int startIndex,
int stopIndex,
int prediction,
ATNConfigSet configs)
{
log.put(Type.CTX_SSTV, "Context Sensitivity " + startIndex + " " +
stopIndex);
}
QueryErrorListener.java 文件源码
项目:antioch
阅读 23
收藏 0
点赞 0
评论 0
@Override
public void reportAmbiguity(Parser recognizer, DFA dfa, int startIndex, int stopIndex, boolean exact, BitSet ambigAlts, ATNConfigSet configs) {
LOG.warn("reportAmbiguity:");
LOG.warn("recognizer={}", recognizer);
LOG.warn("dfa={}", dfa);
LOG.warn("startIndex={}", startIndex);
LOG.warn("stopIndex={}", stopIndex);
LOG.warn("exact={}", exact);
LOG.warn("ambigAlts={}", ambigAlts);
LOG.warn("configs={}", configs);
parseErrors.add("ambiguity at (" + startIndex + ".." + stopIndex + ")");
}
QueryErrorListener.java 文件源码
项目:antioch
阅读 24
收藏 0
点赞 0
评论 0
@Override
public void reportContextSensitivity(Parser recognizer, DFA dfa, int startIndex, int stopIndex, int prediction, ATNConfigSet configs) {
LOG.warn("reportContextSensitivity:");
LOG.warn("recognizer={}", recognizer);
LOG.warn("dfa={}", dfa);
LOG.warn("startIndex={}", startIndex);
LOG.warn("stopIndex={}", stopIndex);
LOG.warn("prediction={}", prediction);
LOG.warn("configs={}", configs);
parseErrors.add("contextSensitivity at (" + startIndex + ".." + stopIndex + ")");
}
QueryErrorListener.java 文件源码
项目:antioch
阅读 26
收藏 0
点赞 0
评论 0
@Override
public void reportAttemptingFullContext(Parser recognizer, DFA dfa, int startIndex, int stopIndex, BitSet conflictingAlts, ATNConfigSet configs) {
LOG.warn("reportAttemptingFullContext:");
LOG.warn("recognizer={}", recognizer);
LOG.warn("dfa={}", dfa);
LOG.warn("startIndex={}", startIndex);
LOG.warn("stopIndex={}", stopIndex);
LOG.warn("conflictingAlts={}", conflictingAlts);
LOG.warn("configs={}", configs);
parseErrors.add("attemptingFullContext at (" + startIndex + ".." + stopIndex + ")");
}
DefaultErrorListener.java 文件源码
项目:srclib-basic
阅读 28
收藏 0
点赞 0
评论 0
@Override
public void reportAmbiguity(Parser parser,
DFA dfa,
int i,
int i1,
boolean b,
BitSet bitSet,
ATNConfigSet atnConfigSet) {
}
DefaultErrorListener.java 文件源码
项目:srclib-basic
阅读 25
收藏 0
点赞 0
评论 0
@Override
public void reportAttemptingFullContext(Parser parser,
DFA dfa,
int i,
int i1,
BitSet bitSet,
ATNConfigSet atnConfigSet) {
}
ADLErrorListener.java 文件源码
项目:archie
阅读 22
收藏 0
点赞 0
评论 0
@Override
public void reportAmbiguity(Parser recognizer, DFA dfa, int startIndex, int stopIndex, boolean exact, BitSet ambigAlts, ATNConfigSet configs) {
String input = recognizer.getInputStream().getText(new Interval(startIndex, stopIndex));
String warning = String.format("FULL AMBIGUITY: %d-%d, exact: %b, input: %s", startIndex, stopIndex, exact, input);
logger.debug(warning);
errors.addWarning(warning);
}
Parser.java 文件源码
项目:MiniJCompiler
阅读 19
收藏 0
点赞 0
评论 0
@Override
public void reportAttemptingFullContext(
org.antlr.v4.runtime.Parser recognizer, DFA dfa,
int startIndex, int stopIndex, BitSet conflictingAlts,
ATNConfigSet configs) {
errorOccurred = true;
}
Parser.java 文件源码
项目:MiniJCompiler
阅读 20
收藏 0
点赞 0
评论 0
@Override
public void reportContextSensitivity(
org.antlr.v4.runtime.Parser recognizer, DFA dfa,
int startIndex, int stopIndex, int prediction,
ATNConfigSet configs) {
errorOccurred = true;
}