Search in sources :

Example 1 with AdlParser

use of com.nedap.archie.adlparser.antlr.AdlParser in project archetype-languageserver by nedap.

the class ADL2SymbolExtractor method extractSymbols.

public DocumentInformation extractSymbols(String uri, String text) throws IOException {
    AdlLexer lexer = new AdlLexer(CharStreams.fromString(text));
    AdlParser parser = new AdlParser(new CommonTokenStream(lexer));
    ArchieErrorListener listener = new ArchieErrorListener();
    parser.addErrorListener(listener);
    SymbolInformationExtractingListener symbolExtractingListener = new SymbolInformationExtractingListener(uri, lexer);
    // DocumentSymbolExtractingListener symbolExtractingListener = new DocumentSymbolExtractingListener();
    try {
        new ParseTreeWalker().walk(symbolExtractingListener, parser.adl());
    } catch (Exception e) {
        // this is fine. for now
        e.printStackTrace();
    }
    archetypeId = symbolExtractingListener.getArchetypeId();
    return new DocumentInformation(archetypeId, ADLVersion.VERSION_2, listener.getErrors(), symbolExtractingListener.getSymbols(), symbolExtractingListener.getFoldingRanges(), symbolExtractingListener.getDocumentLinks(), symbolExtractingListener.getCTerminologyCodes());
}
Also used : CommonTokenStream(org.antlr.v4.runtime.CommonTokenStream) ArchieErrorListener(com.nedap.archie.antlr.errors.ArchieErrorListener) AdlLexer(com.nedap.archie.adlparser.antlr.AdlLexer) DocumentInformation(com.nedap.openehr.lsp.document.DocumentInformation) AdlParser(com.nedap.archie.adlparser.antlr.AdlParser) ParseTreeWalker(org.antlr.v4.runtime.tree.ParseTreeWalker) IOException(java.io.IOException)

Aggregations

AdlLexer (com.nedap.archie.adlparser.antlr.AdlLexer)1 AdlParser (com.nedap.archie.adlparser.antlr.AdlParser)1 ArchieErrorListener (com.nedap.archie.antlr.errors.ArchieErrorListener)1 DocumentInformation (com.nedap.openehr.lsp.document.DocumentInformation)1 IOException (java.io.IOException)1 CommonTokenStream (org.antlr.v4.runtime.CommonTokenStream)1 ParseTreeWalker (org.antlr.v4.runtime.tree.ParseTreeWalker)1