Example usage for org.antlr.v4.runtime.tree Trees toStringTree

List of usage examples for org.antlr.v4.runtime.tree Trees toStringTree

Introduction

In this page you can find the example usage for org.antlr.v4.runtime.tree Trees toStringTree.

Prototype

public static String toStringTree(final Tree t, final List<String> ruleNames) 

Source Link

Document

Print out a whole tree in LISP form.

Usage

From source file:es.ucm.fdi.ac.parser.AntlrTokenizer.java

License:Open Source License

public void tokenize(String source, String sourceFile, PrintWriter out) {
    Writer debugWriter = null;/*from w ww .  j a va2 s .  c o  m*/
    try {
        Lexer lexer = (Lexer) language.lexerConstructor.newInstance(new ANTLRInputStream(source));
        final CommonTokenStream tokens = new CommonTokenStream(lexer);
        tokens.fill();

        if (log.isDebugEnabled()) {
            try {
                debugWriter = new BufferedWriter(
                        new FileWriter(Files.createTempFile("tokens-" + NDC.get() + "-", ".txt").toFile()));
            } catch (IOException ioe) {
                log.warn("Could not create debugWriter", ioe);
            }
        }

        for (final Token tok : tokens.getTokens()) {
            out.print(tokenToString(tok));
            if (log.isDebugEnabled()) {
                log.debug(tok);
                if (debugWriter != null) {
                    debugWriter.write(tokenToString(tok));
                }
            }
        }

        if (parse) {
            Parser parser = (Parser) language.parserConstructor.newInstance(tokens);
            parser.setErrorHandler(new BailErrorStrategy());
            ParserRuleContext parserRuleContext = (ParserRuleContext) language.parserMethod.invoke(parser);

            if (log.isDebugEnabled()) {
                log.debug(Trees.toStringTree(parserRuleContext, parser));
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
        throw new IllegalArgumentException("Bad token in source, or failed to parse", e);
    } finally {
        out.flush();
        if (log.isDebugEnabled() && debugWriter != null) {
            try {
                debugWriter.close();
            } catch (IOException ioe) {
                log.warn("Could not close debugWriter", ioe);
            }
        }
    }
}

From source file:io.proleap.cobol.runner.impl.CobolParseTestRunnerImpl.java

License:Open Source License

protected void doCompareParseTree(final File treeFile, final StartRuleContext startRule,
        final CobolParser parser) throws IOException {
    final String treeFileData = FileUtils.readFileToString(treeFile, StandardCharsets.UTF_8);

    if (!StringUtils.isEmpty(treeFileData)) {
        LOG.info("Comparing parse tree with file {}.", treeFile.getName());

        final String inputFileTree = Trees.toStringTree(startRule, parser);
        final String cleanedInputFileTree = io.proleap.cobol.util.CobolTestStringUtils
                .cleanFileTree(inputFileTree);
        final String cleanedTreeFileData = io.proleap.cobol.util.CobolTestStringUtils
                .cleanFileTree(treeFileData);

        assertEquals(cleanedTreeFileData, cleanedInputFileTree);
    } else {/*ww  w  . jav a 2  s . c  om*/
        LOG.info("Ignoring empty parse tree file {}.", treeFile.getName());
    }
}

From source file:io.proleap.vb6.runner.impl.VbParseTestRunnerImpl.java

License:Open Source License

protected void doCompareParseTree(final File treeFile, final StartRuleContext startRule,
        final VisualBasic6Parser parser) throws IOException {

    final String treeFileData = FileUtils.readFileToString(treeFile);

    if (!Strings.isBlank(treeFileData)) {
        LOG.info("Comparing parse tree with file {}.", treeFile.getName());

        final String inputFileTree = Trees.toStringTree(startRule, parser);
        final String cleanedInputFileTree = io.proleap.vb6.util.StringUtils.cleanFileTree(inputFileTree);
        final String cleanedTreeFileData = io.proleap.vb6.util.StringUtils.cleanFileTree(treeFileData);

        assertEquals(cleanedTreeFileData, cleanedInputFileTree);
    } else {//from  w w w  . j a  v a2 s  .co m
        LOG.info("Ignoring empty parse tree file {}.", treeFile.getName());
    }
}