/** * Initializes logical expression lexer and parser, add error listener that converts all * syntax error into {@link org.apache.drill.common.exceptions.ExpressionParsingException}. * Parses given expression into logical expression instance. * * @param expr expression to be parsed * @return logical expression instance */ public static LogicalExpression parse(String expr) { ExprLexer lexer = new ExprLexer(CharStreams.fromString(expr)); lexer.removeErrorListeners(); // need to remove since default listener will output warning lexer.addErrorListener(ErrorListener.INSTANCE); CommonTokenStream tokens = new CommonTokenStream(lexer); ExprParser parser = new ExprParser(tokens); parser.removeErrorListeners(); // need to remove since default listener will output warning parser.addErrorListener(ErrorListener.INSTANCE); ExprParser.ParseContext parseContext = parser.parse(); logger.trace("Tokens: [{}]. Parsing details: [{}].", tokens.getText(), parseContext.toInfoString(parser)); return parseContext.e; }
private String getSourceText(ParserRuleContext c) { return this.processor.tokenStream.getText(c.getSourceInterval()); }
public static ASTWalkException from(String message, CommonTokenStream tokenStream, RuleContext parseTree) { return new ASTWalkException(message + " in text '" + tokenStream.getText(parseTree) + "'"); }
public static ASTWalkException from(String message, CommonTokenStream tokenStream, RuleContext parseTree) { return new ASTWalkException(message + " in text '" + tokenStream.getText(parseTree) + "'"); }
private String getSourceText(ParserRuleContext c) { return this.processor.tokenStream.getText(c.getSourceInterval()); }
@Override public String visitText(ObjectiveCPreprocessorParser.TextContext context) { String result = _tokensStream.getText(context); boolean directive = false; if (context.directive() != null) { _compilied = visit(context.directive()) == Boolean.toString(true); directive = true; } if (!_compilied || directive) { StringBuilder sb = new StringBuilder(result.length()); char[] charArray = result.toCharArray(); for (char c : charArray) { sb.append((c == '\r' || c == '\n') ? c : ' '); } result = sb.toString(); } return result; }
private static String rewriteScripts(List<UniformPair<Integer>> ranges, CommonTokenStream tokens) { if (ranges.isEmpty()) { return tokens.getText();
private static String rewriteScripts(List<UniformPair<Integer>> ranges, CommonTokenStream tokens) { if (ranges.isEmpty()) { return tokens.getText();
/** * Initializes logical expression lexer and parser, add error listener that converts all * syntax error into {@link org.apache.drill.common.exceptions.ExpressionParsingException}. * Parses given expression into logical expression instance. * * @param expr expression to be parsed * @return logical expression instance */ public static LogicalExpression parse(String expr) { ExprLexer lexer = new ExprLexer(CharStreams.fromString(expr)); lexer.removeErrorListeners(); // need to remove since default listener will output warning lexer.addErrorListener(ErrorListener.INSTANCE); CommonTokenStream tokens = new CommonTokenStream(lexer); ExprParser parser = new ExprParser(tokens); parser.removeErrorListeners(); // need to remove since default listener will output warning parser.addErrorListener(ErrorListener.INSTANCE); ExprParser.ParseContext parseContext = parser.parse(); logger.trace("Tokens: [{}]. Parsing details: [{}].", tokens.getText(), parseContext.toInfoString(parser)); return parseContext.e; }
throw ASTWalkException.from("For expression alias '" + name + "' expecting no parameters but received '" + tokenStream.getText(ctx.columnList()) + "'"); throw ASTWalkException.from("For expression alias '" + name + "' expecting an expression without parameters but received '" + tokenStream.getText(ctx.expressionDef().expressionLambdaDecl()) + "'");
throw ASTWalkException.from("For expression alias '" + name + "' expecting no parameters but received '" + tokenStream.getText(ctx.columnList()) + "'"); throw ASTWalkException.from("For expression alias '" + name + "' expecting an expression without parameters but received '" + tokenStream.getText(ctx.expressionDef().expressionLambdaDecl()) + "'");
/** Get start/stop of an entire rule including semi and then clean up * WS at end. */ public static String getRuleText(CommonTokenStream tokens, ParserRuleContext ruleDefNode) { Token stop = ruleDefNode.getStop(); Token semi = stop; TerminalNode colonNode = ruleDefNode.getToken(ANTLRv4Parser.COLON, 0); Token colon = colonNode.getSymbol(); Token beforeSemi = tokens.get(stop.getTokenIndex()-1); Token afterColon = tokens.get(colon.getTokenIndex()+1); // trim whitespace/comments before / after rule text List<Token> ignoreBefore = tokens.getHiddenTokensToRight(colon.getTokenIndex()); List<Token> ignoreAfter = tokens.getHiddenTokensToLeft(semi.getTokenIndex()); Token textStart = afterColon; Token textStop = beforeSemi; if ( ignoreBefore!=null ) { Token lastWSAfterColon = ignoreBefore.get(ignoreBefore.size()-1); textStart = tokens.get(lastWSAfterColon.getTokenIndex()+1); } if ( ignoreAfter!=null ) { int firstWSAtEndOfRule = ignoreAfter.get(0).getTokenIndex()-1; textStop = tokens.get(firstWSAtEndOfRule); // stop before 1st ignore token at end } return tokens.getText(textStart, textStop); }
tableNode = new ExprTableAccessNodeSubprop(table.getTableName(), column); } else { throw ASTWalkException.from("Invalid table expression '" + tokenStream.getText(ctx));
tableNode = new ExprTableAccessNodeSubprop(table.getTableName(), column); } else { throw ASTWalkException.from("Invalid table expression '" + tokenStream.getText(ctx));