Example usage for org.antlr.v4.runtime CommonToken getLine

List of usage examples for org.antlr.v4.runtime CommonToken getLine

Introduction

In this page you can find the example usage for org.antlr.v4.runtime CommonToken getLine.

Prototype

@Override
    public int getLine() 

Source Link

Usage

From source file:com.github.jknack.handlebars.internal.TemplateBuilder.java

License:Apache License

/**
 * Report a semantic error.//from ww w.j  a  va 2  s  . c  om
 *
 * @param offendingToken The offending token.
 * @param message An error message.
 */
protected void reportError(final CommonToken offendingToken, final String message) {
    reportError(offendingToken, offendingToken.getLine(), offendingToken.getCharPositionInLine(), message);
}

From source file:com.github.s4ke.moar.regex.parser.RegexCompiler.java

License:Open Source License

public static Regex compile(String regexStr) {
    StringBuilder additionalMessage = new StringBuilder();
    RegexParser parser = regexParser(regexStr);
    parser.getErrorListeners().clear();/* www  .jav a 2 s.  co m*/
    parser.addErrorListener(new BaseErrorListener() {
        @Override
        public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int line,
                int charPositionInLine, String msg, RecognitionException e) {
            additionalMessage.append("SyntaxEception in Regex: \"").append(regexStr).append("\": ").append(msg);
            if (offendingSymbol instanceof CommonToken) {
                CommonToken token = (CommonToken) offendingSymbol;
                if (token.getText().equals("*") || token.getText().equals("+") || token.getText().equals("?")) {
                    additionalMessage.append(", dangling metacharacter: '")
                            .append(((CommonToken) offendingSymbol).getText()).append("' at line ")
                            .append(token.getLine()).append(", pos ").append(token.getCharPositionInLine());
                }
            }
        }
    });
    RegexParser.RegexContext regexTree = parser.regex();
    if (parser.getNumberOfSyntaxErrors() > 0) {
        throw new IllegalArgumentException(
                "malformed regex found : " + regexStr + "\n" + additionalMessage.toString());
    }
    ParseTreeWalker walker = new ParseTreeWalker();
    RegexGroupNameListener nameListener = new RegexGroupNameListener();
    walker.walk(nameListener, regexTree);

    RegexTreeListener listener = new RegexTreeListener(nameListener.getGroupNames());
    walker.walk(listener, regexTree);

    return listener.finalRegex();
}