You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by lk...@apache.org on 2023/01/09 07:22:32 UTC
[netbeans] branch master updated: Move ANTLR Lexers to lexer.antlr4
This is an automated email from the ASF dual-hosted git repository.
lkishalmi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new 6f472b51ca Move ANTLR Lexers to lexer.antlr4
6f472b51ca is described below
commit 6f472b51caa5ae24ddcb63c4ca5965c3404253dd
Author: Laszlo Kishalmi <la...@gmail.com>
AuthorDate: Sun Jan 8 19:26:52 2023 -0800
Move ANTLR Lexers to lexer.antlr4
---
java/languages.antlr/nbproject/project.xml | 22 +--
.../languages/antlr/AbstractAntlrLexer.java | 82 ----------
.../languages/antlr/AntlrTokenSequence.java | 172 ---------------------
.../languages/antlr/LexerInputCharStream.java | 134 ----------------
.../modules/languages/antlr/v3/Antlr3Lexer.java | 40 ++---
.../antlr/v4/Antlr4CompletionProvider.java | 3 +-
.../modules/languages/antlr/v4/Antlr4Lexer.java | 40 ++---
.../languages/antlr/v4/Antlr4ParserResult.java | 3 +
.../languages/antlr/AntlrTokenSequenceTest.java | 162 -------------------
9 files changed, 35 insertions(+), 623 deletions(-)
diff --git a/java/languages.antlr/nbproject/project.xml b/java/languages.antlr/nbproject/project.xml
index 73729c3315..05c1ef1db2 100644
--- a/java/languages.antlr/nbproject/project.xml
+++ b/java/languages.antlr/nbproject/project.xml
@@ -141,6 +141,14 @@
<specification-version>1.80</specification-version>
</run-dependency>
</dependency>
+ <dependency>
+ <code-name-base>org.netbeans.modules.lexer.antlr4</code-name-base>
+ <build-prerequisite/>
+ <compile-dependency/>
+ <run-dependency>
+ <specification-version>1.0</specification-version>
+ </run-dependency>
+ </dependency>
<dependency>
<code-name-base>org.netbeans.modules.parsing.api</code-name-base>
<build-prerequisite/>
@@ -231,20 +239,6 @@
</run-dependency>
</dependency>
</module-dependencies>
- <test-dependencies>
- <test-type>
- <name>unit</name>
- <test-dependency>
- <code-name-base>org.netbeans.libs.junit4</code-name-base>
- <compile-dependency/>
- </test-dependency>
- <test-dependency>
- <code-name-base>org.netbeans.modules.nbjunit</code-name-base>
- <recursive/>
- <compile-dependency/>
- </test-dependency>
- </test-type>
- </test-dependencies>
<public-packages/>
</data>
</configuration>
diff --git a/java/languages.antlr/src/org/netbeans/modules/languages/antlr/AbstractAntlrLexer.java b/java/languages.antlr/src/org/netbeans/modules/languages/antlr/AbstractAntlrLexer.java
deleted file mode 100644
index 9f76582b2e..0000000000
--- a/java/languages.antlr/src/org/netbeans/modules/languages/antlr/AbstractAntlrLexer.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.netbeans.modules.languages.antlr;
-
-import org.antlr.v4.runtime.misc.IntegerList;
-import org.netbeans.api.lexer.Token;
-import org.netbeans.spi.lexer.Lexer;
-import org.netbeans.spi.lexer.LexerRestartInfo;
-import org.netbeans.spi.lexer.TokenFactory;
-
-
-/**
- *
- * @author lkishalmi
- */
-public abstract class AbstractAntlrLexer<T extends org.antlr.v4.runtime.Lexer> implements Lexer<AntlrTokenId> {
-
- private final TokenFactory<AntlrTokenId> tokenFactory;
- protected final T lexer;
- private final LexerInputCharStream input;
-
- public AbstractAntlrLexer(LexerRestartInfo<AntlrTokenId> info, T lexer) {
- this.tokenFactory = info.tokenFactory();
- this.lexer = lexer;
- this.input = (LexerInputCharStream) lexer.getInputStream();
- if (info.state() != null) {
- ((LexerState) info.state()).restore(lexer);
- }
- input.markToken();
- }
-
-
- @Override
- public void release() {
- }
-
- protected final Token<AntlrTokenId> token(AntlrTokenId id) {
- input.markToken();
- return tokenFactory.createToken(id);
- }
-
- public static class LexerState<T extends org.antlr.v4.runtime.Lexer> {
- final int state;
- final int mode;
- final IntegerList modes;
-
- public LexerState(T lexer) {
- this.state= lexer.getState();
-
- this.mode = lexer._mode;
- this.modes = new IntegerList(lexer._modeStack);
- }
-
- public void restore(T lexer) {
- lexer.setState(state);
- lexer._modeStack.addAll(modes);
- lexer._mode = mode;
- }
-
- @Override
- public String toString() {
- return String.valueOf(state);
- }
-
- }
-}
diff --git a/java/languages.antlr/src/org/netbeans/modules/languages/antlr/AntlrTokenSequence.java b/java/languages.antlr/src/org/netbeans/modules/languages/antlr/AntlrTokenSequence.java
deleted file mode 100644
index 60db9b31f3..0000000000
--- a/java/languages.antlr/src/org/netbeans/modules/languages/antlr/AntlrTokenSequence.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.netbeans.modules.languages.antlr;
-
-import java.util.ArrayList;
-import java.util.ListIterator;
-import java.util.Optional;
-import java.util.function.Predicate;
-import org.antlr.v4.runtime.Lexer;
-import static org.antlr.v4.runtime.Recognizer.EOF;
-import org.antlr.v4.runtime.Token;
-import org.antlr.v4.runtime.TokenSource;
-
-/**
- *
- * @author lkishalmi
- */
-public final class AntlrTokenSequence {
-
- private final TokenSource tokens;
- private boolean eofRead = false;
- private int readIndex;
- private int cursorOffset;
- private ListIterator<Token> cursor;
-
- private final ArrayList<Token> tokenList = new ArrayList<>(200);
-
- public static final Predicate<Token> DEFAULT_CHANNEL = new ChannelFilter(Lexer.DEFAULT_TOKEN_CHANNEL);
-
- public static final class ChannelFilter implements Predicate<Token> {
- private final int channel;
-
- public ChannelFilter(int channel) {
- this.channel = channel;
- }
-
- @Override
- public boolean test(Token t) {
- return channel == t.getChannel();
- }
- }
-
- public AntlrTokenSequence(TokenSource tokens) {
- this.tokens = tokens;
- this.cursor = tokenList.listIterator();
- }
-
- public void seekTo(int offset) {
- if (offset > readIndex) {
- if (cursor.hasNext()) {
- //replace the cursor if it is not at the end of the list.
- cursor = tokenList.listIterator(tokenList.size());
- }
- Token t = read();
- while ((t != null) && (t.getStopIndex() + 1 < offset)) {
- t = read();
- }
- if (t != null && (offset < t.getStopIndex() + 1)) {
- cursor.previous();
- cursorOffset = t.getStartIndex();
- } else {
- cursorOffset = readIndex;
- }
- } else {
- if (offset > getOffset()) {
- next((t) -> t.getStopIndex() > offset);
- if (cursor.hasPrevious()) {
- cursor.previous();
- }
-
- } else {
- previous((t) -> t.getStartIndex() < offset);
- }
- }
-
- }
-
- public boolean isEmpty() {
- return tokenList.isEmpty() && !hasNext();
- }
-
- public boolean hasNext() {
- if (!eofRead && (cursorOffset == readIndex) && !cursor.hasNext()) {
- Token t = read();
- if (t != null) {
- cursor.previous();
- }
- }
- return !(eofRead && !cursor.hasNext());
- }
-
- public boolean hasPrevious() {
- return cursor.hasPrevious();
- }
-
- public int getOffset() {
- return cursorOffset;
- }
-
- public Optional<Token> previous() {
- Optional<Token> ret = cursor.hasPrevious() ? Optional.of(cursor.previous()) : Optional.empty();
- cursorOffset = cursor.hasPrevious() ? ret.get().getStartIndex() : 0;
- return ret;
-
- }
-
- public Optional<Token> previous(Predicate<Token> filter) {
- Optional<Token> ot = previous();
- while (ot.isPresent() && !filter.test(ot.get())) {
- ot = previous();
- }
- return ot;
- }
-
- public Optional<Token> previous(int tokenType){
- return previous((Token t) -> t.getType() == tokenType);
- }
-
- public Optional<Token> next() {
- if (hasNext()) {
- Token t = cursor.next();
- cursorOffset = t.getStopIndex() + 1;
- return Optional.of(t);
- } else {
- return Optional.empty();
- }
- }
-
- public Optional<Token> next(Predicate<Token> filter) {
- Optional<Token> ot = next();
- while (ot.isPresent() && !filter.test(ot.get())) {
- ot = next();
- }
- return ot;
- }
-
- public Optional<Token> next(int tokenType){
- return next((Token t) -> t.getType() == tokenType);
- }
-
- private Token read() {
- if (eofRead) {
- return null;
- }
- Token t = tokens.nextToken();
- if (t.getType() != EOF) {
- cursor.add(t);
- readIndex = t.getStopIndex() + 1;
- return t;
- } else {
- eofRead = true;
- return null;
- }
- }
-
-}
diff --git a/java/languages.antlr/src/org/netbeans/modules/languages/antlr/LexerInputCharStream.java b/java/languages.antlr/src/org/netbeans/modules/languages/antlr/LexerInputCharStream.java
deleted file mode 100644
index e2892462e6..0000000000
--- a/java/languages.antlr/src/org/netbeans/modules/languages/antlr/LexerInputCharStream.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.netbeans.modules.languages.antlr;
-
-import org.antlr.v4.runtime.CharStream;
-import org.antlr.v4.runtime.misc.Interval;
-import org.netbeans.spi.lexer.*;
-
-/**
- *
- * @author lkishalmi
- */
-public class LexerInputCharStream implements CharStream {
- private final LexerInput input;
-
- private int tokenMark = Integer.MAX_VALUE;
- private int index = 0;
-
- public LexerInputCharStream(LexerInput input) {
- this.input = input;
- }
-
- @Override
- public String getText(Interval intrvl) {
- if (intrvl.a < tokenMark) {
- throw new UnsupportedOperationException("Can't read before the last token end: " + tokenMark);
- }
- int start = intrvl.a - tokenMark;
- int end = intrvl.b - tokenMark + 1;
- int toread = end - start - input.readLength();
- for (int i = 0; i < toread; i++) {
- input.read();
- }
- String ret = String.valueOf(input.readText(start, end));
- if (toread > 0) {
- input.backup(toread);
- }
- return ret;
- }
-
- @Override
- public void consume() {
- read();
- }
-
- @Override
- public int LA(int count) {
- if (count == 0) {
- return 0; //the behaviour is not defined
- }
-
- int c = 0;
- if (count > 0) {
- for (int i = 0; i < count; i++) {
- c = read();
- }
- backup(count);
- } else {
- backup(count);
- c = read();
- }
- return c;
- }
-
- //Marks are for buffering in ANTLR4, we do not really need them
- @Override
- public int mark() {
- return -1;
- }
-
- public void markToken() {
- tokenMark = index;
- }
-
- @Override
- public void release(int marker) {
- }
-
- @Override
- public int index() {
- return index;
- }
-
- @Override
- public void seek(int i) {
- if (i < index()) {
- backup(index() - i);
- } else {
- while (index() < i) {
- if (read() == LexerInput.EOF) {
- break;
- }
- }
- }
- }
-
-
- private int read() {
- int ret = input.read();
- index += 1;
- return ret;
- }
-
- private void backup(int count) {
- index -= count;
- input.backup(count);
- }
-
- @Override
- public int size() {
- throw new UnsupportedOperationException("Stream size is unknown.");
- }
-
- @Override
- public String getSourceName() {
- return UNKNOWN_SOURCE_NAME;
- }
-}
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 34f43875db..5238858e17 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
@@ -23,38 +23,30 @@ import org.netbeans.api.lexer.Token;
import org.netbeans.spi.lexer.LexerRestartInfo;
import static org.antlr.parser.antlr3.ANTLRv3Lexer.*;
-import org.netbeans.modules.languages.antlr.AbstractAntlrLexer;
import org.netbeans.modules.languages.antlr.AntlrTokenId;
import static org.netbeans.modules.languages.antlr.AntlrTokenId.*;
-import org.netbeans.modules.languages.antlr.LexerInputCharStream;
+import org.netbeans.spi.lexer.antlr4.AbstractAntlrLexerBridge;
+import org.netbeans.spi.lexer.antlr4.LexerInputCharStream;
/**
*
* @author lkishalmi
*/
-public final class Antlr3Lexer extends AbstractAntlrLexer<ANTLRv3Lexer> {
+public final class Antlr3Lexer extends AbstractAntlrLexerBridge<ANTLRv3Lexer, AntlrTokenId> {
public Antlr3Lexer(LexerRestartInfo<AntlrTokenId> info) {
super(info, new ANTLRv3Lexer(new LexerInputCharStream(info.input())));
}
- private org.antlr.v4.runtime.Token preFetchedToken = null;
+ @Override
+ public Object state() {
+ return new State(lexer);
+ }
@Override
- public Token<AntlrTokenId> nextToken() {
- org.antlr.v4.runtime.Token nextToken;
- if (preFetchedToken != null) {
- nextToken = preFetchedToken;
- lexer.getInputStream().seek(preFetchedToken.getStopIndex() + 1);
- preFetchedToken = null;
- } else {
- nextToken = lexer.nextToken();
- }
- if (nextToken.getType() == EOF) {
- return null;
- }
- switch (nextToken.getType()) {
+ protected Token<AntlrTokenId> mapToken(int antlrTokenType) {
+ switch (antlrTokenType) {
case TOKEN_REF:
return token(AntlrTokenId.TOKEN);
case RULE_REF:
@@ -130,24 +122,14 @@ public final class Antlr3Lexer extends AbstractAntlrLexer<ANTLRv3Lexer> {
return token(WHITESPACE);
case ACTION_CONTENT:
- preFetchedToken = lexer.nextToken();
- while (preFetchedToken.getType() == ACTION_CONTENT) {
- preFetchedToken = lexer.nextToken();
- }
- lexer.getInputStream().seek(preFetchedToken.getStartIndex());
- return token(ACTION);
+ return groupToken(ACTION, ACTION_CONTENT);
default:
return token(ERROR);
}
}
- @Override
- public Object state() {
- return new State(lexer);
- }
-
- public static class State extends AbstractAntlrLexer.LexerState<ANTLRv3Lexer> {
+ private static class State extends AbstractAntlrLexerBridge.LexerState<ANTLRv3Lexer> {
final int currentRuleType;
public State(ANTLRv3Lexer lexer) {
diff --git a/java/languages.antlr/src/org/netbeans/modules/languages/antlr/v4/Antlr4CompletionProvider.java b/java/languages.antlr/src/org/netbeans/modules/languages/antlr/v4/Antlr4CompletionProvider.java
index 85fecab22e..ac82c13e84 100644
--- a/java/languages.antlr/src/org/netbeans/modules/languages/antlr/v4/Antlr4CompletionProvider.java
+++ b/java/languages.antlr/src/org/netbeans/modules/languages/antlr/v4/Antlr4CompletionProvider.java
@@ -50,7 +50,8 @@ import org.netbeans.api.annotations.common.StaticResource;
import static org.antlr.parser.antlr4.ANTLRv4Lexer.*;
import org.netbeans.modules.languages.antlr.AntlrParserResult.ReferenceType;
-import static org.netbeans.modules.languages.antlr.AntlrTokenSequence.DEFAULT_CHANNEL;
+import org.netbeans.spi.lexer.antlr4.AntlrTokenSequence;
+import static org.netbeans.spi.lexer.antlr4.AntlrTokenSequence.DEFAULT_CHANNEL;
import org.openide.util.NbBundle;
/**
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 79efbc5cf5..e366210d4a 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
@@ -23,38 +23,30 @@ import org.netbeans.api.lexer.Token;
import org.netbeans.spi.lexer.LexerRestartInfo;
import static org.antlr.parser.antlr4.ANTLRv4Lexer.*;
-import org.netbeans.modules.languages.antlr.AbstractAntlrLexer;
import org.netbeans.modules.languages.antlr.AntlrTokenId;
import static org.netbeans.modules.languages.antlr.AntlrTokenId.*;
-import org.netbeans.modules.languages.antlr.LexerInputCharStream;
+import org.netbeans.spi.lexer.antlr4.AbstractAntlrLexerBridge;
+import org.netbeans.spi.lexer.antlr4.LexerInputCharStream;
/**
*
* @author lkishalmi
*/
-public final class Antlr4Lexer extends AbstractAntlrLexer<ANTLRv4Lexer> {
+public final class Antlr4Lexer extends AbstractAntlrLexerBridge<ANTLRv4Lexer, AntlrTokenId> {
public Antlr4Lexer(LexerRestartInfo<AntlrTokenId> info) {
super(info, new ANTLRv4Lexer(new LexerInputCharStream(info.input())));
}
- private org.antlr.v4.runtime.Token preFetchedToken = null;
+ @Override
+ public Object state() {
+ return new State(lexer);
+ }
@Override
- public Token<AntlrTokenId> nextToken() {
- org.antlr.v4.runtime.Token nextToken;
- if (preFetchedToken != null) {
- nextToken = preFetchedToken;
- lexer.getInputStream().seek(preFetchedToken.getStopIndex() + 1);
- preFetchedToken = null;
- } else {
- nextToken = lexer.nextToken();
- }
- if (nextToken.getType() == EOF) {
- return null;
- }
- switch (nextToken.getType()) {
+ protected Token<AntlrTokenId> mapToken(int antlrTokenType) {
+ switch (antlrTokenType) {
case TOKEN_REF:
return token(TOKEN);
case RULE_REF:
@@ -125,24 +117,14 @@ public final class Antlr4Lexer extends AbstractAntlrLexer<ANTLRv4Lexer> {
return token(WHITESPACE);
case ACTION_CONTENT:
- preFetchedToken = lexer.nextToken();
- while (preFetchedToken.getType() == ACTION_CONTENT) {
- preFetchedToken = lexer.nextToken();
- }
- lexer.getInputStream().seek(preFetchedToken.getStartIndex());
- return token(ACTION);
+ return groupToken(ACTION, ACTION_CONTENT);
default:
return token(ERROR);
}
}
- @Override
- public Object state() {
- return new State(lexer);
- }
-
- public static class State extends AbstractAntlrLexer.LexerState<ANTLRv4Lexer> {
+ private static class State extends AbstractAntlrLexerBridge.LexerState<ANTLRv4Lexer> {
final int currentRuleType;
public State(ANTLRv4Lexer lexer) {
diff --git a/java/languages.antlr/src/org/netbeans/modules/languages/antlr/v4/Antlr4ParserResult.java b/java/languages.antlr/src/org/netbeans/modules/languages/antlr/v4/Antlr4ParserResult.java
index ace5b430e8..7c9683b9e4 100644
--- a/java/languages.antlr/src/org/netbeans/modules/languages/antlr/v4/Antlr4ParserResult.java
+++ b/java/languages.antlr/src/org/netbeans/modules/languages/antlr/v4/Antlr4ParserResult.java
@@ -58,11 +58,14 @@ public final class Antlr4ParserResult extends AntlrParserResult<ANTLRv4Parser> {
private static final Logger LOG = Logger.getLogger(Antlr4ParserResult.class.getName());
public static final Reference HIDDEN = new Reference(ReferenceType.CHANNEL, "HIDDEN", OffsetRange.NONE);
+ public static final Reference DEFAULT_MODE = new Reference(ReferenceType.MODE, "DEFAULT_MODE", OffsetRange.NONE);
+
final Set<String> unknownReferences = new HashSet<>();
public Antlr4ParserResult(Snapshot snapshot) {
super(snapshot);
references.put(HIDDEN.name, HIDDEN);
+ references.put(DEFAULT_MODE.name, DEFAULT_MODE);
}
@Override
diff --git a/java/languages.antlr/test/unit/src/org/netbeans/modules/languages/antlr/AntlrTokenSequenceTest.java b/java/languages.antlr/test/unit/src/org/netbeans/modules/languages/antlr/AntlrTokenSequenceTest.java
deleted file mode 100644
index 216a918201..0000000000
--- a/java/languages.antlr/test/unit/src/org/netbeans/modules/languages/antlr/AntlrTokenSequenceTest.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.netbeans.modules.languages.antlr;
-
-import org.antlr.parser.antlr4.ANTLRv4Lexer;
-import org.antlr.v4.runtime.CharStreams;
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-import static org.netbeans.modules.languages.antlr.AntlrTokenSequence.DEFAULT_CHANNEL;
-/**
- *
- * @author lkishalmi
- */
-public class AntlrTokenSequenceTest {
-
- public AntlrTokenSequenceTest() {
- }
-
- /**
- * Test of seekTo method, of class AntlrTokenSequence.
- */
- @Test
- public void testSeekTo1() {
- int offset = 0;
- AntlrTokenSequence instance = sequence("");
- instance.seekTo(offset);
- assertTrue(instance.isEmpty());
- }
-
- @Test
- public void testSeekTo2() {
- int offset = 0;
- AntlrTokenSequence instance = sequence("/**/");
- instance.seekTo(offset);
- assertFalse(instance.isEmpty());
- assertTrue(instance.next().isPresent());
- }
-
- @Test
- public void testSeekTo3() {
- int offset = 4;
- AntlrTokenSequence instance = sequence("/**/");
- instance.seekTo(offset);
- assertFalse(instance.isEmpty());
- assertFalse(instance.next().isPresent());
- assertTrue(instance.hasPrevious());
- }
-
- @Test
- public void testSeekTo4() {
- int offset = 5;
- AntlrTokenSequence instance = sequence("/* */lexer");
- instance.seekTo(offset);
- assertFalse(instance.isEmpty());
- assertTrue(instance.next().isPresent());
- assertTrue(instance.hasPrevious());
- }
-
- @Test
- public void testSeekTo5() {
- AntlrTokenSequence instance = sequence("/* */lexer");
- instance.seekTo(10);
- assertFalse(instance.next().isPresent());
- instance.seekTo(5);
- assertFalse(instance.isEmpty());
- assertTrue(instance.next().isPresent());
- assertTrue(instance.previous().isPresent());
- assertFalse(instance.hasPrevious());
- }
-
- /**
- * Test of isEmpty method, of class AntlrTokenSequence.
- */
- @Test
- public void testIsEmpty() {
- AntlrTokenSequence instance = sequence("");
- assertTrue(instance.isEmpty());
- }
-
- @Test
- public void testHasNext1() {
- AntlrTokenSequence instance = sequence("lexer");
- assertTrue(instance.hasNext());
- }
-
- @Test
- public void testHasNext2() {
- AntlrTokenSequence instance = sequence("");
- assertFalse(instance.hasNext());
- }
-
- @Test
- public void testHasNext3() {
- AntlrTokenSequence instance = sequence("lexer");
- assertTrue(instance.hasNext());
- instance.next();
- assertFalse(instance.hasNext());
- }
-
- @Test
- public void testHasPrevious1() {
- AntlrTokenSequence instance = sequence("lexer");
- instance.next();
- assertTrue(instance.hasPrevious());
- }
-
- @Test
- public void testHasPrevious2() {
- AntlrTokenSequence instance = sequence("");
- assertFalse(instance.hasPrevious());
- }
-
- @Test
- public void testGetOffset1() {
- AntlrTokenSequence instance = sequence("/* */lexer");
- instance.seekTo(7);
- assertTrue(instance.hasNext());
- assertEquals(5, instance.getOffset());
- instance.previous();
- assertEquals(0, instance.getOffset());
- }
-
- @Test
- public void testNextPredicate1() {
- AntlrTokenSequence instance = sequence("/* */lexer grammar");
- assertTrue(instance.hasNext());
- instance.next(DEFAULT_CHANNEL).ifPresent((t) -> assertEquals("lexer", t.getText()));
- instance.next(DEFAULT_CHANNEL).ifPresent((t) -> assertEquals("grammar", t.getText()));
- assertFalse(instance.hasNext());
- }
-
- @Test
- public void testPreviousPredicate1() {
- AntlrTokenSequence instance = sequence("/* */lexer grammar");
- instance.seekTo(18);
- assertFalse(instance.hasNext());
- instance.previous(DEFAULT_CHANNEL).ifPresent((t) -> assertEquals("grammar", t.getText()));
- instance.previous(DEFAULT_CHANNEL).ifPresent((t) -> assertEquals("lexer", t.getText()));
- assertTrue(instance.hasPrevious());
- }
-
- private AntlrTokenSequence sequence(String s) {
- return new AntlrTokenSequence(new ANTLRv4Lexer(CharStreams.fromString(s)));
- }
-}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists