Example usage for org.antlr.v4.runtime ANTLRInputStream ANTLRInputStream

List of usage examples for org.antlr.v4.runtime ANTLRInputStream ANTLRInputStream

Introduction

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

Prototype

public ANTLRInputStream(InputStream input, int initialSize) throws IOException 

Source Link

Usage

From source file:com.cisco.yangide.core.parser.YangParserUtil.java

License:Open Source License

public static YangContext parseYangSource(char[] content, final IYangValidationListener validationListener) {
    final ANTLRInputStream input = new ANTLRInputStream(content, content.length);
    final YangLexer lexer = new YangLexer(input);
    final CommonTokenStream tokens = new CommonTokenStream(lexer);
    final YangParser parser = new YangParser(tokens);
    parser.removeErrorListeners();/*from w ww .  j a v  a 2  s.com*/
    if (validationListener != null) {
        parser.addErrorListener(new BaseErrorListener() {
            @Override
            public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int line,
                    int charPositionInLine, String msg, RecognitionException e) {

                int charStart = 0;
                int charEnd = 0;
                if (offendingSymbol != null && offendingSymbol instanceof Token) {
                    charStart = ((Token) offendingSymbol).getStartIndex();
                    charEnd = ((Token) offendingSymbol).getStopIndex() + 1;
                }
                validationListener.syntaxError(msg, line, charStart, charEnd);
            }
        });
    }
    return parser.yang();
}

From source file:com.cisco.yangide.core.parser.YangParserUtil.java

License:Open Source License

public static String formatYangSource(YangFormattingPreferences preferences, char[] content,
        int indentationLevel, String lineSeparator) {
    ANTLRInputStream input = new ANTLRInputStream(content, content.length);
    final YangLexer lexer = new YangLexer(input) {
        @Override//  w w w .j  a v  a2s  .  c  om
        public void skip() {
            // disable skipping of comment tokens
        }
    };
    LexerErrorListener errorListener = new LexerErrorListener();
    lexer.addErrorListener(errorListener);
    final BufferedTokenStream tokens = new BufferedTokenStream(lexer);
    final ITokenFormatter formatter = new YangTokenFormatter(preferences, indentationLevel, lineSeparator);
    while (tokens.LT(1).getType() != IntStream.EOF) {
        formatter.process(tokens.LT(1));
        tokens.consume();
    }
    if (errorListener.isErrorDetected()) {
        // Source that contains parsing errors should never be formatted
        return String.valueOf(content);
    }
    return formatter.getFormattedContent();
}

From source file:jetbrick.template.JetTemplate.java

License:Open Source License

private String generateJavaSource(Resource resource) {
    char[] source = resource.getSource();
    ANTLRInputStream is = new ANTLRInputStream(source, source.length);
    is.name = resource.getAbsolutePath(); // set source file name, it will be displayed in error report.

    JetTemplateParser parser = new JetTemplateParser(new CommonTokenStream(new JetTemplateLexer(is)));
    parser.removeErrorListeners(); // remove ConsoleErrorListener
    parser.addErrorListener(new JetTemplateErrorListener());
    parser.setErrorHandler(new JetTemplateErrorStrategy());

    JetTemplateCodeVisitor visitor = new JetTemplateCodeVisitor(engine, engine.getVariableResolver(), parser,
            resource);//from   w  w  w . j  av  a 2s . co m
    Code code = parser.template().accept(visitor);
    return code.getSource();
}

From source file:jetbrick.template.parser.AstBuilder.java

License:Open Source License

public static AstTemplate create(Source source, ParserContext ctx) {
    char[] contents = source.getContents();
    ANTLRInputStream is = new ANTLRInputStream(contents, contents.length);
    is.name = source.getFilename(); // set source file name, it will be displayed in error report.

    JetTemplateLexer lexer = new JetTemplateLexer(is);
    lexer.removeErrorListeners(); // remove default ConsoleErrorListener
    lexer.addErrorListener(AstErrorListener.instance);

    JetTemplateParser parser = new JetTemplateParser(new CommonTokenStream(lexer));
    parser.removeErrorListeners(); // remove default ConsoleErrorListener
    parser.addErrorListener(AstErrorListener.instance);
    parser.setErrorHandler(new AstErrorStrategy());

    try {/*from   w w w. j  a  v a2 s  .  c  om*/
        AstCodeVisitor visitor = new AstCodeVisitor(ctx);
        return visitor.visitTemplate(parser.template());
    } catch (SyntaxException e) {
        // ???
        throw e.set(source);
    }
}

From source file:oracle.kv.impl.query.compiler.parser.KVParser.java

License:Open Source License

/**
 * Parse String input.//from   w w w  . ja  v a2 s  .co m
 */
public void parse(String input) throws QueryException {

    ANTLRInputStream antlrStream = new ANTLRInputStream(input.toCharArray(), input.length());

    parse(antlrStream);
}

From source file:org.diqube.diql.DiqlParseUtil.java

License:Open Source License

private static DiqlParser createParser(String diql) {
    // TODO #20 make ANTLR provide better error messages, show error if not the while diql was parsed (e.g. WHERE after
    // ORDER)./* w  w w .  j av  a2s. c o  m*/
    ANTLRInputStream input = new ANTLRInputStream(diql.toCharArray(), diql.length());
    DiqlLexer lexer = new DiqlLexer(input);
    lexer.addErrorListener(new BaseErrorListener() {

        @Override
        public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int line,
                int charPositionInLine, String msg, RecognitionException e) {
            throw new ParseException("Syntax error (" + line + ":" + charPositionInLine + "): " + msg);
        }

    });
    CommonTokenStream tokens = new CommonTokenStream(lexer);
    DiqlParser parser = new DiqlParser(tokens);
    parser.setBuildParseTree(true);
    parser.addErrorListener(new BaseErrorListener() {

        @Override
        public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int line,
                int charPositionInLine, String msg, RecognitionException e) {
            throw new ParseException(
                    "Syntax error while parsing (" + line + ":" + charPositionInLine + "): " + msg);
        }

    });
    return parser;
}

From source file:org.jruby.truffle.core.format.parser.PrintfCompiler.java

License:Open Source License

public CallTarget compile(ByteList format) {
    final PackErrorListener errorListener = new PackErrorListener(context, currentNode);

    final ANTLRInputStream input = new ANTLRInputStream(bytesToChars(format.bytes()), format.realSize());

    final PrintfLexer lexer = new PrintfLexer(input);
    lexer.removeErrorListeners();//from  www  .  java 2 s . c  o  m
    lexer.addErrorListener(errorListener);

    final CommonTokenStream tokens = new CommonTokenStream(lexer);

    final PrintfParser parser = new PrintfParser(tokens);

    final PrintfTreeBuilder builder = new PrintfTreeBuilder(context, format);
    parser.addParseListener(builder);

    parser.removeErrorListeners();
    parser.addErrorListener(errorListener);

    parser.sequence();

    return Truffle.getRuntime().createCallTarget(new PackRootNode(PackCompiler.describe(format.toString()),
            PackEncoding.DEFAULT, builder.getNode()));
}

From source file:org.jruby.truffle.core.format.printf.PrintfCompiler.java

License:Open Source License

public CallTarget compile(String formatString, byte[] format) {
    final FormatErrorListener errorListener = new FormatErrorListener(context, currentNode);

    final ANTLRInputStream input = new ANTLRInputStream(bytesToChars(format), format.length);

    final PrintfLexer lexer = new PrintfLexer(input);
    lexer.removeErrorListeners();//  ww w  .j av  a2  s .  co m
    lexer.addErrorListener(errorListener);

    final CommonTokenStream tokens = new CommonTokenStream(lexer);

    final PrintfParser parser = new PrintfParser(tokens);

    final PrintfTreeBuilder builder = new PrintfTreeBuilder(context, format);
    parser.addParseListener(builder);

    parser.removeErrorListeners();
    parser.addErrorListener(errorListener);

    parser.sequence();

    return Truffle.getRuntime().createCallTarget(new FormatRootNode(DescriptionTruncater.trunate(formatString),
            FormatEncoding.DEFAULT, builder.getNode()));
}