java类org.antlr.v4.runtime.tree.ParseTree的实例源码

PluginHelper.java 文件源码 项目:sonar-tsql-plugin 阅读 22 收藏 0 点赞 0 评论 0
public static FillerRequest createRequest(final SourceLinesProvider linesProvider, final InputFile file, final Charset encoding)
        throws IOException, FileNotFoundException {
    final CharStream mainStream = CharStreams.fromPath(file.path(), encoding);
    final CharStream charStream = new CaseChangingCharStream(mainStream, true);
    final TSqlLexer lexer = new TSqlLexer(charStream);

    lexer.removeErrorListeners();

    final CommonTokenStream stream = new CommonTokenStream(lexer);

    stream.fill();
    final TSqlParser parser = new TSqlParser(stream);
    parser.removeErrorListeners();
    final ParseTree root = parser.tsql_file();
    final FillerRequest antrlFile = new FillerRequest(file, stream, root,
            linesProvider.getLines(new FileInputStream(file.file()), encoding));
    return antrlFile;
}
ExpressionParser.java 文件源码 项目:Squid 阅读 34 收藏 0 点赞 0 评论 0
private void printTree(ExpressionsForSquid2Parser parser, ParseTree tree, List<String> parsed) {
    if (tree.getChildCount() < 1) {
        parsed.add(tree.toStringTree(parser));
    } else {
        for (int i = 0; i < tree.getChildCount(); i++) {
            printTree(parser, tree.getChild(i), parsed);
        }
    }
}
AntlrParser.java 文件源码 项目:rapidminer 阅读 25 收藏 0 点赞 0 评论 0
/**
 * Parses the expression using antlr, aborts the parsing on the first error.
 *
 * @param expression
 *            an expression, not {@code null}
 * @return a {@link ParseTree} for further processing
 * @throws ExpressionException
 */
ParseTree parseExpression(String expression) throws ExpressionException {
    if (expression == null) {
        throw new IllegalArgumentException("expression must not be null");
    }
    ANTLRInputStream in = new ANTLRInputStream(expression);
    FunctionExpressionLexer lexer = new CapitulatingFunctionExpressionLexer(in);
    CommonTokenStream tokens = new CommonTokenStream(lexer);
    FunctionExpressionParser parser = new FunctionExpressionParser(tokens);

    parser.removeErrorListeners();
    lexer.removeErrorListeners();
    ExpressionErrorListener listener = new ExpressionErrorListener();
    parser.addErrorListener(listener);
    lexer.addErrorListener(listener);
    parser.setErrorHandler(new CapitulatingErrorStrategy());

    try {
        ParseTree tree = parser.operationExp();
        if (listener.containsError()) {
            throw new ExpressionException(listener.getErrorMessage(), listener.getErrorLine());
        } else {
            return tree;
        }
    } catch (CapitulatingRuntimeException e) {
        if (listener.containsError()) {
            throw new ExpressionException(listener.getErrorMessage(), listener.getErrorLine());
        } else {
            // cannot happen since the parser and lexer always register the error before trying
            // to recover
            throw new ExpressionException("Unknown error");
        }
    }

}
AntlrParser.java 文件源码 项目:rapidminer 阅读 24 收藏 0 点赞 0 评论 0
@Override
public void checkSyntax(String expression) throws ExpressionException {
    ParseTree tree = parseExpression(expression);
    ParseTreeWalker walker = new ParseTreeWalker();
    FunctionListener listener = new FunctionListener(lookup);
    try {
        walker.walk(listener, tree);
    } catch (ExpressionParsingException e) {
        throw new ExpressionException(e);
    }
}
BooleanExpEditorVariableErrorFinder.java 文件源码 项目:BEAST 阅读 16 收藏 0 点赞 0 评论 0
@Override
public ArrayList<CodeError> getErrors() {
    ParseTree tree = antlrHandler.getParseTree();
    ParseTreeWalker walker = new ParseTreeWalker();
    try {
        walker.walk(lis, tree);
    } catch (Exception e) {
        e.printStackTrace();
        return new ArrayList<CodeError>();
    }

    return lis.getErrors();
}
CAntlrHandler.java 文件源码 项目:BEAST 阅读 21 收藏 0 点赞 0 评论 0
/**
 * gives the parse tree
 * @return the parse tree
*/
public ParseTree getCParseTree() {
    try {
        String code = pane.getStyledDocument().getText(0, pane.getStyledDocument().getLength());
        lexer.setInputStream(new ANTLRInputStream(code));
        CommonTokenStream commonTokenStream = new CommonTokenStream(lexer);
        cParser.setTokenStream(commonTokenStream);
        return cParser.compilationUnit();
    } catch (BadLocationException ex) {
        Logger.getLogger(CAntlrHandler.class.getName()).log(Level.SEVERE, null, ex);
    }
    return null;
}
ANTLRTest.java 文件源码 项目:BEAST 阅读 15 收藏 0 点赞 0 评论 0
static void showGuiTreeView(final String code) {
    final org.antlr.v4.runtime.CharStream stream = new ANTLRInputStream(code);
    final FormalPropertyDescriptionLexer lexer = new FormalPropertyDescriptionLexer(stream);
    final CommonTokenStream tokens = new CommonTokenStream(lexer);
    final FormalPropertyDescriptionParser parser = new FormalPropertyDescriptionParser(tokens);
    final ParseTree tree = parser.booleanExpList();
    final List<String> ruleNames = Arrays.asList(FormalPropertyDescriptionParser.ruleNames);
    final TreeViewer view = new TreeViewer(ruleNames, tree);
    view.open();
}
ANTLRTest.java 文件源码 项目:BEAST 阅读 15 收藏 0 点赞 0 评论 0
static void showGuiTreeView(final String code) {
    final org.antlr.v4.runtime.CharStream stream = new ANTLRInputStream(code);
    final CLexer lexer = new CLexer(stream);
    final CommonTokenStream tokens = new CommonTokenStream(lexer);
    final CParser parser = new CParser(tokens);
    final ParseTree tree = parser.declaration();
    final List<String> ruleNames = Arrays.asList(CParser.ruleNames);
    final TreeViewer view = new TreeViewer(ruleNames, tree);
    view.open();
}
CypherCstToAstVisitor.java 文件源码 项目:memory-graph 阅读 23 收藏 0 点赞 0 评论 0
private <T extends ParseTree> CypherBinaryExpression toBinaryExpressions(List<ParseTree> children, Function<T, CypherAstBase> itemTransform) {
    CypherAstBase left = null;
    CypherBinaryExpression.Op op = null;
    for (int i = 0; i < children.size(); i++) {
        ParseTree child = children.get(i);
        if (child instanceof TerminalNode) {
            CypherBinaryExpression.Op newOp = CypherBinaryExpression.Op.parseOrNull(child.getText());
            if (newOp != null) {
                if (op == null) {
                    op = newOp;
                } else {
                    throw new MemgraphException("unexpected op, found too many ops in a row");
                }
            }
        } else {
            //noinspection unchecked
            CypherAstBase childObj = itemTransform.apply((T) child);
            if (left == null) {
                left = childObj;
            } else {
                if (op == null) {
                    throw new MemgraphException("unexpected binary expression. expected an op between expressions");
                }
                left = new CypherBinaryExpression(left, op, childObj);
            }
            op = null;
        }
    }
    return (CypherBinaryExpression) left;
}
CypherCstToAstVisitor.java 文件源码 项目:memory-graph 阅读 26 收藏 0 点赞 0 评论 0
@Override
public CypherAstBase visitExpression4(CypherParser.Expression4Context ctx) {
    int neg = 0;
    for (ParseTree child : ctx.children) {
        if (child instanceof TerminalNode && child.getText().equals("-")) {
            neg++;
        }
    }
    CypherAstBase expr = visitExpression3(ctx.expression3());
    if (neg % 2 == 1) {
        return new CypherNegateExpression(expr);
    } else {
        return expr;
    }
}


问题


面经


文章

微信
公众号

扫码关注公众号