diff --git a/ide/languages.toml/src/org/netbeans/modules/languages/toml/TomlLexer.java b/ide/languages.toml/src/org/netbeans/modules/languages/toml/TomlLexer.java index 6b2414749c06..451242b8f02a 100644 --- a/ide/languages.toml/src/org/netbeans/modules/languages/toml/TomlLexer.java +++ b/ide/languages.toml/src/org/netbeans/modules/languages/toml/TomlLexer.java @@ -32,8 +32,8 @@ */ public final class TomlLexer extends AbstractAntlrLexerBridge { - public TomlLexer(LexerRestartInfo info, org.tomlj.internal.TomlLexer lexer) { - super(info, lexer); + public TomlLexer(LexerRestartInfo info) { + super(info, org.tomlj.internal.TomlLexer::new); } @Override @@ -122,6 +122,7 @@ private static class LexerState extends AbstractAntlrLexerBridge.LexerState createTokenIds() { @Override protected Lexer createLexer(LexerRestartInfo info) { - return new TomlLexer(info, new org.tomlj.internal.TomlLexer(new LexerInputCharStream(info.input()))); + return new TomlLexer(info); } @Override diff --git a/ide/lexer.antlr4/src/org/netbeans/spi/lexer/antlr4/AbstractAntlrLexerBridge.java b/ide/lexer.antlr4/src/org/netbeans/spi/lexer/antlr4/AbstractAntlrLexerBridge.java index 112936af59b5..45ba32978df2 100644 --- a/ide/lexer.antlr4/src/org/netbeans/spi/lexer/antlr4/AbstractAntlrLexerBridge.java +++ b/ide/lexer.antlr4/src/org/netbeans/spi/lexer/antlr4/AbstractAntlrLexerBridge.java @@ -18,6 +18,8 @@ */ package org.netbeans.spi.lexer.antlr4; +import java.util.function.Function; +import org.antlr.v4.runtime.CharStream; import org.antlr.v4.runtime.misc.IntegerList; import org.netbeans.api.lexer.Token; import org.antlr.v4.runtime.Lexer; @@ -38,24 +40,24 @@ public abstract class AbstractAntlrLexerBridge tokenFactory; protected final L lexer; - protected final LexerInputCharStream input; + private final LexerInputCharStream input; /** * Constructor for the lexer bridge, usually used as: *
{@code
      * public SomeLexer(LexerRestartInfo info) {
-     *     super(info, new SomeANTLRLexer(new LexerInputCharStream(info.input())));
+     *     super(info, SomeANTLRLexer::new);
      * }
      * }
      * 
* @param info The lexer restart info - * @param lexer The ANTLR generated Lexer + * @param lexerCreator A function to create an ANTLR from a {@code CharSteram}. */ @SuppressWarnings("unchecked") - public AbstractAntlrLexerBridge(LexerRestartInfo info, L lexer) { + public AbstractAntlrLexerBridge(LexerRestartInfo info, Function lexerCreator) { this.tokenFactory = info.tokenFactory(); - this.lexer = lexer; - this.input = (LexerInputCharStream) lexer.getInputStream(); + this.input = new LexerInputCharStream(info.input()); + this.lexer = lexerCreator.apply(input); if (info.state() != null) { ((LexerState) info.state()).restore(lexer); } diff --git a/ide/lexer.antlr4/src/org/netbeans/spi/lexer/antlr4/LexerInputCharStream.java b/ide/lexer.antlr4/src/org/netbeans/spi/lexer/antlr4/LexerInputCharStream.java index a0853ba63adc..2f782bb27554 100644 --- a/ide/lexer.antlr4/src/org/netbeans/spi/lexer/antlr4/LexerInputCharStream.java +++ b/ide/lexer.antlr4/src/org/netbeans/spi/lexer/antlr4/LexerInputCharStream.java @@ -28,7 +28,7 @@ * * @author Laszlo Kishalmi */ -public class LexerInputCharStream implements CharStream { +final class LexerInputCharStream implements CharStream { private final LexerInput input; private int tokenMark = Integer.MAX_VALUE; diff --git a/java/languages.antlr/src/org/netbeans/modules/languages/antlr/v3/Antlr3Lexer.java b/java/languages.antlr/src/org/netbeans/modules/languages/antlr/v3/Antlr3Lexer.java index 5238858e17bc..876c59f57cb1 100644 --- a/java/languages.antlr/src/org/netbeans/modules/languages/antlr/v3/Antlr3Lexer.java +++ b/java/languages.antlr/src/org/netbeans/modules/languages/antlr/v3/Antlr3Lexer.java @@ -26,7 +26,6 @@ import org.netbeans.modules.languages.antlr.AntlrTokenId; import static org.netbeans.modules.languages.antlr.AntlrTokenId.*; import org.netbeans.spi.lexer.antlr4.AbstractAntlrLexerBridge; -import org.netbeans.spi.lexer.antlr4.LexerInputCharStream; /** * @@ -36,7 +35,7 @@ public final class Antlr3Lexer extends AbstractAntlrLexerBridge info) { - super(info, new ANTLRv3Lexer(new LexerInputCharStream(info.input()))); + super(info, ANTLRv3Lexer::new); } @Override diff --git a/java/languages.antlr/src/org/netbeans/modules/languages/antlr/v4/Antlr4Lexer.java b/java/languages.antlr/src/org/netbeans/modules/languages/antlr/v4/Antlr4Lexer.java index e366210d4a7a..0dabcb6a7106 100644 --- a/java/languages.antlr/src/org/netbeans/modules/languages/antlr/v4/Antlr4Lexer.java +++ b/java/languages.antlr/src/org/netbeans/modules/languages/antlr/v4/Antlr4Lexer.java @@ -26,7 +26,6 @@ import org.netbeans.modules.languages.antlr.AntlrTokenId; import static org.netbeans.modules.languages.antlr.AntlrTokenId.*; import org.netbeans.spi.lexer.antlr4.AbstractAntlrLexerBridge; -import org.netbeans.spi.lexer.antlr4.LexerInputCharStream; /** * @@ -36,7 +35,7 @@ public final class Antlr4Lexer extends AbstractAntlrLexerBridge info) { - super(info, new ANTLRv4Lexer(new LexerInputCharStream(info.input()))); + super(info, ANTLRv4Lexer::new); } @Override