List of usage examples for org.antlr.v4.runtime CommonToken getLine
@Override public int getLine()
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(); }