This is an automated email from the ASF dual-hosted git repository. mariofusco pushed a commit to branch dev-new-parser in repository https://gitbox.apache.org/repos/asf/incubator-kie-drools.git
commit 09334edd0f51f650f4ae6d9680f707b348d3af47 Author: Toshiya Kobayashi <[email protected]> AuthorDate: Tue Dec 5 16:48:44 2023 +0900 [DROOLS-7591] Experiment branch : migrate a new drools-lsp parser into drools (#44) - Add some methods to call from drools code base --- .../java/org/drools/parser/DRLParserHelper.java | 21 +++++++++++++++++++-- .../java/org/drools/parser/DRLParserWrapper.java | 13 +++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLParserHelper.java b/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLParserHelper.java index bee7a6e96d..bd95c3033c 100644 --- a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLParserHelper.java +++ b/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLParserHelper.java @@ -1,5 +1,9 @@ package org.drools.parser; +import java.io.IOException; +import java.io.InputStream; +import java.io.UncheckedIOException; + import org.antlr.v4.runtime.CharStream; import org.antlr.v4.runtime.CharStreams; import org.antlr.v4.runtime.CommonTokenStream; @@ -28,8 +32,21 @@ public class DRLParserHelper { } public static DRLParser createDrlParser(String drl) { - CharStream inputStream = CharStreams.fromString(drl); - DRLLexer drlLexer = new DRLLexer(inputStream); + CharStream charStream = CharStreams.fromString(drl); + return createDrlParser(charStream); + } + + public static DRLParser createDrlParser(InputStream is) { + try { + CharStream charStream = CharStreams.fromStream(is); + return createDrlParser(charStream); + } catch (IOException e) { + throw new UncheckedIOException(e); + } + } + + private static DRLParser createDrlParser(CharStream charStream) { + DRLLexer drlLexer = new DRLLexer(charStream); CommonTokenStream commonTokenStream = new CommonTokenStream(drlLexer); return new DRLParser(commonTokenStream); } diff --git a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLParserWrapper.java b/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLParserWrapper.java index 8f24bf1d3f..88ae36c12f 100644 --- a/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLParserWrapper.java +++ b/drools-drl/drools-drl10-parser/src/main/java/org/drools/parser/DRLParserWrapper.java @@ -1,5 +1,6 @@ package org.drools.parser; +import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -24,6 +25,18 @@ public class DRLParserWrapper { */ public PackageDescr parse(String drl) { DRLParser drlParser = DRLParserHelper.createDrlParser(drl); + return parse(drlParser); + } + + /** + * Main entry point for parsing DRL + */ + public PackageDescr parse(InputStream is) { + DRLParser drlParser = DRLParserHelper.createDrlParser(is); + return parse(drlParser); + } + + private PackageDescr parse(DRLParser drlParser) { DRLErrorListener errorListener = new DRLErrorListener(); drlParser.addErrorListener(errorListener); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
