org.antlr.v4.runtime.Parser类的使用及代码示例

x33g5p2x  于2022-01-26 转载在 其他  
字(10.4k)|赞(0)|评价(0)|浏览(203)

本文整理了Java中org.antlr.v4.runtime.Parser类的一些代码示例,展示了Parser类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Parser类的具体详情如下:
包路径:org.antlr.v4.runtime.Parser
类名称:Parser

Parser介绍

[英]This is all the parsing support code essentially; most of it is error recovery stuff.
[中]这是所有解析支持代码的本质;大部分都是错误恢复的东西。

代码示例

代码示例来源:origin: graphql-java/graphql-java

  1. private InvalidSyntaxException mkException(Parser recognizer, RecognitionException cause) {
  2. String sourcePreview = null;
  3. String offendingToken = null;
  4. SourceLocation sourceLocation = null;
  5. Token currentToken = recognizer.getCurrentToken();
  6. if (currentToken != null) {
  7. int line = currentToken.getLine();
  8. int column = currentToken.getCharPositionInLine();
  9. offendingToken = currentToken.getText();
  10. sourcePreview = mkPreview(line);
  11. sourceLocation = new SourceLocation(line, column, sourceName);
  12. }
  13. return new InvalidSyntaxException(sourceLocation, null, sourcePreview, offendingToken, cause);
  14. }

代码示例来源:origin: org.antlr/antlr4-runtime

  1. /** Consume tokens until one matches the given token set. */
  2. protected void consumeUntil(Parser recognizer, IntervalSet set) {
  3. // System.err.println("consumeUntil("+set.toString(recognizer.getTokenNames())+")");
  4. int ttype = recognizer.getInputStream().LA(1);
  5. while (ttype != Token.EOF && !set.contains(ttype) ) {
  6. //System.out.println("consume during recover LA(1)="+getTokenNames()[input.LA(1)]);
  7. // recognizer.getInputStream().consume();
  8. recognizer.consume();
  9. ttype = recognizer.getInputStream().LA(1);
  10. }
  11. }
  12. }

代码示例来源:origin: prestodb/presto

  1. Parser parser = (Parser) recognizer;
  2. ATN atn = parser.getATN();
  3. currentState = atn.states.get(parser.getState());
  4. currentToken = parser.getCurrentToken();
  5. context = parser.getContext();
  6. Analyzer analyzer = new Analyzer(atn, parser.getVocabulary(), specialRules, specialTokens, ignoredRules, parser.getTokenStream());
  7. Multimap<Integer, String> candidates = analyzer.process(currentState, currentToken.getTokenIndex(), context);
  8. .collect(Collectors.joining(", "));
  9. message = String.format("mismatched input '%s'. Expecting: %s", ((Token) offendingSymbol).getText(), expected);

代码示例来源:origin: apache/incubator-shardingsphere

  1. /**
  2. * Get matched token by token type.
  3. *
  4. * @param tokenType token type
  5. * @return matched token
  6. * @throws RecognitionException mismatch throw exception
  7. */
  8. public Token getMatchedToken(final int tokenType) throws RecognitionException {
  9. Token result = parser.getCurrentToken();
  10. boolean isIdentifierCompatible = false;
  11. if (identifierTokenIndex == tokenType && identifierTokenIndex > result.getType()) {
  12. isIdentifierCompatible = true;
  13. }
  14. if (result.getType() == tokenType || isIdentifierCompatible) {
  15. if (Token.EOF != tokenType && isIdentifierCompatible && result instanceof CommonToken) {
  16. ((CommonToken) result).setType(identifierTokenIndex);
  17. }
  18. parser.getErrorHandler().reportMatch(parser);
  19. parser.consume();
  20. } else {
  21. result = parser.getErrorHandler().recoverInline(parser);
  22. if (parser.getBuildParseTree() && -1 == result.getTokenIndex()) {
  23. parser.getContext().addErrorNode(parser.createErrorNode(parser.getContext(), result));
  24. }
  25. }
  26. return result;
  27. }
  28. }

代码示例来源:origin: apache/incubator-shardingsphere

  1. TokenStream tokens = recognizer.getInputStream();
  2. Token token = tokens.LT(1);
  3. ATNState state = recognizer.getInterpreter().atn.states.get(recognizer.getState());
  4. IntervalSet nextTokens = recognizer.getATN().nextTokens(state);
  5. if (nextTokens.contains(token.getType())) {
  6. nextTokensContext = null;
  7. nextTokensState = ATNState.INVALID_STATE_NUMBER;
  8. return;
  9. if (nextTokens.contains(Token.EPSILON)) {
  10. if (null == nextTokensContext) {
  11. nextTokensContext = recognizer.getContext();
  12. nextTokensState = recognizer.getState();
  13. if (nextTokens.contains(identifierTokenIndex)) {
  14. ((CommonToken) token).setType(identifierTokenIndex);

代码示例来源:origin: confluentinc/ksql

  1. protected void reportMissingToken(final Parser recognizer) {
  2. if (!this.inErrorRecoveryMode(recognizer)) {
  3. this.beginErrorCondition(recognizer);
  4. final Token t = recognizer.getCurrentToken();
  5. final IntervalSet expecting = this.getExpectedTokens(recognizer);
  6. final String msg =
  7. "missing " + expecting.toString(recognizer.getVocabulary()) + " at " + this
  8. .getTokenErrorDisplay(t);
  9. recognizer.notifyErrorListeners(t, msg, (RecognitionException) null);
  10. }
  11. }
  12. }

代码示例来源:origin: org.antlr/antlr4-runtime

  1. @Override
  2. public void enterEveryRule(ParserRuleContext ctx) {
  3. System.out.println("enter " + getRuleNames()[ctx.getRuleIndex()] +
  4. ", LT(1)=" + _input.LT(1).getText());
  5. }

代码示例来源:origin: org.antlr/antlr4-runtime

  1. Token currentSymbol = recognizer.getCurrentToken();
  2. IntervalSet expecting = getExpectedTokens(recognizer);
  3. int expectedTokenType = Token.INVALID_TYPE;
  4. if ( !expecting.isNil() ) {
  5. expectedTokenType = expecting.getMinElement(); // get any element
  6. else tokenText = "<missing "+recognizer.getVocabulary().getDisplayName(expectedTokenType)+">";
  7. Token current = currentSymbol;
  8. Token lookback = recognizer.getInputStream().LT(-1);
  9. if ( current.getType() == Token.EOF && lookback!=null ) {
  10. current = lookback;
  11. recognizer.getTokenFactory().create(new Pair<TokenSource, CharStream>(current.getTokenSource(), current.getTokenSource().getInputStream()), expectedTokenType, tokenText,
  12. Token.DEFAULT_CHANNEL,
  13. -1, -1,

代码示例来源:origin: org.antlr/antlr4-runtime

  1. ATNState s = recognizer.getInterpreter().atn.states.get(recognizer.getState());
  2. TokenStream tokens = recognizer.getInputStream();
  3. int la = tokens.LA(1);
  4. IntervalSet nextTokens = recognizer.getATN().nextTokens(s);
  5. if (nextTokens.contains(la)) {
  6. if (nextTokens.contains(Token.EPSILON)) {
  7. if (nextTokensContext == null) {
  8. nextTokensContext = recognizer.getContext();
  9. nextTokensState = recognizer.getState();
  10. throw new InputMismatchException(recognizer);
  11. IntervalSet expecting = recognizer.getExpectedTokens();
  12. IntervalSet whatFollowsLoopIterationOrRule =
  13. expecting.or(getErrorRecoverySet(recognizer));
  14. consumeUntil(recognizer, whatFollowsLoopIterationOrRule);
  15. break;

代码示例来源:origin: org.antlr/antlr4-runtime

  1. int currentSymbolType = recognizer.getInputStream().LA(1);
  2. ATNState currentState = recognizer.getInterpreter().atn.states.get(recognizer.getState());
  3. ATNState next = currentState.transition(0).target;
  4. ATN atn = recognizer.getInterpreter().atn;
  5. IntervalSet expectingAtLL2 = atn.nextTokens(next, recognizer._ctx);
  6. if ( expectingAtLL2.contains(currentSymbolType) ) {
  7. reportMissingToken(recognizer);
  8. return true;

代码示例来源:origin: javamonkey/beetl2.0

  1. protected void reportInputMismatch(@NotNull Parser recognizer, @NotNull InputMismatchException e)
  2. {
  3. Token t1 = recognizer.getInputStream().LT(-1);
  4. String msg = "缺少输入在 " + getTokenErrorDisplay(t1) + " 后面, 期望 "
  5. + e.getExpectedTokens().toString(recognizer.getTokenNames());
  6. BeetlException exception = new BeetlParserException(BeetlException.PARSER_MISS_ERROR, msg, e);
  7. // exception.token = this.getGrammarToken(e.getOffendingToken());
  8. exception.pushToken(this.getGrammarToken(t1));
  9. throw exception;
  10. }

代码示例来源:origin: org.antlr/antlr4-runtime

  1. Token t = getCurrentToken();
  2. if (t.getType() > 0) {
  3. _errHandler.reportMatch(this);
  4. consume();
  5. if (_buildParseTrees && t.getTokenIndex() == -1) {
  6. _ctx.addErrorNode(createErrorNode(_ctx,t));

代码示例来源:origin: confluentinc/ksql

  1. protected void reportNoViableAlternative(final Parser recognizer, final NoViableAltException e) {
  2. final TokenStream tokens = recognizer.getInputStream();
  3. final String input;
  4. if (tokens != null) {
  5. if (e.getStartToken().getType() == -1) {
  6. input = "<EOF>";
  7. } else {
  8. input = tokens.getText(e.getStartToken(), e.getOffendingToken());
  9. }
  10. } else {
  11. input = "<unknown input>";
  12. }
  13. final String msg = "no viable alternative at input " + this.escapeWSAndQuote(input);
  14. recognizer.notifyErrorListeners(e.getOffendingToken(), msg, e);
  15. }

代码示例来源:origin: org.antlr/antlr4-runtime

  1. System.out.println("adaptivePredict decision "+decision+
  2. " exec LA(1)=="+ getLookaheadName(input)+
  3. " line "+input.LT(1).getLine()+":"+input.LT(1).getCharPositionInLine());
  4. _startIndex = input.index();
  5. _outerContext = outerContext;
  6. DFA dfa = decisionToDFA[decision];
  7. s0 = dfa.getPrecedenceStartState(parser.getPrecedence());
  8. dfa.setPrecedenceStartState(parser.getPrecedence(), s0);
  9. if ( debug ) System.out.println("DFA after predictATN: "+ dfa.toString(parser.getVocabulary()));
  10. return alt;

代码示例来源:origin: org.antlr/antlr4-runtime

  1. Token o = getCurrentToken();
  2. if (o.getType() != EOF) {
  3. getInputStream().consume();
  4. ErrorNode node = _ctx.addErrorNode(createErrorNode(_ctx,o));
  5. if (_parseListeners != null) {
  6. for (ParseTreeListener listener : _parseListeners) {
  7. TerminalNode node = _ctx.addChild(createTerminalNode(_ctx,o));
  8. if (_parseListeners != null) {
  9. for (ParseTreeListener listener : _parseListeners) {

代码示例来源:origin: org.antlr/antlr4-runtime

  1. @Override
  2. public void reportAttemptingFullContext(Parser recognizer,
  3. DFA dfa,
  4. int startIndex,
  5. int stopIndex,
  6. BitSet conflictingAlts,
  7. ATNConfigSet configs)
  8. {
  9. String format = "reportAttemptingFullContext d=%s, input='%s'";
  10. String decision = getDecisionDescription(recognizer, dfa);
  11. String text = recognizer.getTokenStream().getText(Interval.of(startIndex, stopIndex));
  12. String message = String.format(format, decision, text);
  13. recognizer.notifyErrorListeners(message);
  14. }

代码示例来源:origin: org.antlr/antlr4

  1. parser.addErrorListener(new DiagnosticErrorListener());
  2. parser.getInterpreter().setPredictionMode(PredictionMode.LL_EXACT_AMBIG_DETECTION);
  3. parser.setBuildParseTree(true);
  4. parser.getInterpreter().setPredictionMode(PredictionMode.SLL);
  5. parser.setTokenStream(tokens);
  6. parser.setTrace(trace);
  7. System.out.println(tree.toStringTree(parser));

代码示例来源:origin: org.antlr/antlr4-runtime

  1. if ( lastErrorIndex==recognizer.getInputStream().index() &&
  2. lastErrorStates != null &&
  3. lastErrorStates.contains(recognizer.getState()) ) {
  4. recognizer.consume();
  5. lastErrorIndex = recognizer.getInputStream().index();
  6. if ( lastErrorStates==null ) lastErrorStates = new IntervalSet();
  7. lastErrorStates.add(recognizer.getState());
  8. IntervalSet followSet = getErrorRecoverySet(recognizer);
  9. consumeUntil(recognizer, followSet);

代码示例来源:origin: org.antlr/antlr4-runtime

  1. /**
  2. * This is called by {@link #reportError} when the exception is an
  3. * {@link InputMismatchException}.
  4. *
  5. * @see #reportError
  6. *
  7. * @param recognizer the parser instance
  8. * @param e the recognition exception
  9. */
  10. protected void reportInputMismatch(Parser recognizer,
  11. InputMismatchException e)
  12. {
  13. String msg = "mismatched input "+getTokenErrorDisplay(e.getOffendingToken())+
  14. " expecting "+e.getExpectedTokens().toString(recognizer.getVocabulary());
  15. recognizer.notifyErrorListeners(e.getOffendingToken(), msg, e);
  16. }

代码示例来源:origin: org.antlr/antlr4

  1. @Override
  2. public void recover(Parser recognizer, RecognitionException e) {
  3. int errIndex = recognizer.getInputStream().index();
  4. if ( firstErrorTokenIndex == -1 ) {
  5. firstErrorTokenIndex = errIndex; // latch
  6. }
  7. // System.err.println("recover: error at " + errIndex);
  8. TokenStream input = recognizer.getInputStream();
  9. if ( input.index()<input.size()-1 ) { // don't consume() eof
  10. recognizer.consume(); // just kill this bad token and let it continue.
  11. }
  12. }

相关文章