Search in sources :

Example 21 with Parser

use of org.wso2.ballerinalang.compiler.parser.Parser in project ballerina by ballerina-lang.

the class BallerinaParserErrorStrategy method reportError.

public void reportError(Parser parser, RecognitionException e) {
    if (inErrorRecoveryMode(parser)) {
        return;
    }
    beginErrorCondition(parser);
    if (e instanceof NoViableAltException) {
        reportNoViableAlternative(parser, (NoViableAltException) e);
    } else if (e instanceof InputMismatchException) {
        reportInputMismatch(parser, (InputMismatchException) e);
    } else if (e instanceof FailedPredicateException) {
        reportFailedPredicate(parser, (FailedPredicateException) e);
    } else {
        setContextException(parser);
        DiagnosticPos pos = getPosition(getMissingSymbol(parser));
        dlog.error(pos, DiagnosticCode.INVALID_TOKEN, e.getMessage());
    }
}
Also used : DiagnosticPos(org.wso2.ballerinalang.compiler.util.diagnotic.DiagnosticPos) NoViableAltException(org.antlr.v4.runtime.NoViableAltException) FailedPredicateException(org.antlr.v4.runtime.FailedPredicateException) InputMismatchException(org.antlr.v4.runtime.InputMismatchException)

Example 22 with Parser

use of org.wso2.ballerinalang.compiler.parser.Parser in project ballerina by ballerina-lang.

the class BallerinaParserErrorStrategy method reportFailedPredicate.

@Override
public void reportFailedPredicate(Parser parser, FailedPredicateException e) {
    setContextException(parser);
    DiagnosticPos pos = getPosition(getMissingSymbol(parser));
    dlog.error(pos, DiagnosticCode.FAILED_PREDICATE, e.getMessage());
}
Also used : DiagnosticPos(org.wso2.ballerinalang.compiler.util.diagnotic.DiagnosticPos)

Example 23 with Parser

use of org.wso2.ballerinalang.compiler.parser.Parser in project ballerina by ballerina-lang.

the class BallerinaParserErrorStrategy method reportMissingToken.

@Override
public void reportMissingToken(Parser parser) {
    if (parser.getContext().exception != null || inErrorRecoveryMode(parser)) {
        return;
    }
    beginErrorCondition(parser);
    setContextException(parser);
    Token token = parser.getCurrentToken();
    IntervalSet expecting = getExpectedTokens(parser);
    String missingToken = expecting.toString(parser.getVocabulary());
    DiagnosticPos pos = getPosition(getMissingSymbol(parser));
    dlog.error(pos, DiagnosticCode.MISSING_TOKEN, missingToken, getTokenErrorDisplay(token));
}
Also used : DiagnosticPos(org.wso2.ballerinalang.compiler.util.diagnotic.DiagnosticPos) IntervalSet(org.antlr.v4.runtime.misc.IntervalSet) Token(org.antlr.v4.runtime.Token)

Example 24 with Parser

use of org.wso2.ballerinalang.compiler.parser.Parser in project ballerina by ballerina-lang.

the class BallerinaParserErrorStrategy method reportNoViableAlternative.

@Override
public void reportNoViableAlternative(Parser parser, NoViableAltException e) {
    setContextException(parser);
    String offendingToken = e.getOffendingToken().getText();
    DiagnosticPos pos = getPosition(e.getOffendingToken());
    dlog.error(pos, DiagnosticCode.INVALID_TOKEN, escapeWSAndQuote(offendingToken));
}
Also used : DiagnosticPos(org.wso2.ballerinalang.compiler.util.diagnotic.DiagnosticPos)

Example 25 with Parser

use of org.wso2.ballerinalang.compiler.parser.Parser in project ballerina by ballerina-lang.

the class BLangParserListener method exitAnyJoinCondition.

@Override
public void exitAnyJoinCondition(BallerinaParser.AnyJoinConditionContext ctx) {
    if (ctx.exception != null) {
        return;
    }
    List<String> workerNames = new ArrayList<>();
    if (ctx.Identifier() != null) {
        workerNames = ctx.Identifier().stream().map(TerminalNode::getText).collect(Collectors.toList());
    }
    int joinCount = 0;
    Long longObject;
    if ((longObject = getIntegerLiteral(ctx, ctx.integerLiteral())) != null) {
        try {
            joinCount = longObject.intValue();
        } catch (NumberFormatException ex) {
        // When ctx.IntegerLiteral() is not a string or missing, compilation fails due to NumberFormatException.
        // Hence catching the error and ignore. Still Parser complains about missing IntegerLiteral.
        }
    }
    this.pkgBuilder.addJoinCondition(getWS(ctx), "SOME", workerNames, joinCount);
}
Also used : ArrayList(java.util.ArrayList) TerminalNode(org.antlr.v4.runtime.tree.TerminalNode) BLangAnnotationAttachmentPoint(org.wso2.ballerinalang.compiler.tree.BLangAnnotationAttachmentPoint)

Aggregations

ANTLRInputStream (org.antlr.v4.runtime.ANTLRInputStream)10 CommonTokenStream (org.antlr.v4.runtime.CommonTokenStream)10 ParseTree (org.antlr.v4.runtime.tree.ParseTree)9 SiddhiQLBaseVisitorImpl (org.wso2.siddhi.query.compiler.internal.SiddhiQLBaseVisitorImpl)9 DiagnosticPos (org.wso2.ballerinalang.compiler.util.diagnotic.DiagnosticPos)7 Token (org.antlr.v4.runtime.Token)4 JsonObject (com.google.gson.JsonObject)3 JsonParser (com.google.gson.JsonParser)3 Response (feign.Response)3 ArrayList (java.util.ArrayList)3 BallerinaParser (org.wso2.ballerinalang.compiler.parser.antlr4.BallerinaParser)3 IdentityProviderException (org.wso2.carbon.apimgt.core.exception.IdentityProviderException)3 JsonArray (com.google.gson.JsonArray)2 IOException (java.io.IOException)2 InputMismatchException (org.antlr.v4.runtime.InputMismatchException)2 ParserRuleContext (org.antlr.v4.runtime.ParserRuleContext)2 CompletionItem (org.eclipse.lsp4j.CompletionItem)2 BLangNode (org.wso2.ballerinalang.compiler.tree.BLangNode)2 BLangVariableDef (org.wso2.ballerinalang.compiler.tree.statements.BLangVariableDef)2 JsonParseException (com.fasterxml.jackson.core.JsonParseException)1