MCPcopy Create free account
hub / github.com/dynjs/dynjs / TokenQueue

Class TokenQueue

src/main/java/org/dynjs/parser/js/TokenQueue.java:6–98  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4import java.util.ListIterator;
5
6public class TokenQueue implements TokenStream {
7
8 private Lexer lexer;
9 private LinkedList<Token> queue = new LinkedList<>();
10
11 public TokenQueue(Lexer lexer) {
12 this.lexer = lexer;
13 }
14
15 public Token peekToken() {
16 return peekToken(true, 1);
17 }
18
19 @Override
20 public TokenType peek() {
21 return peek(true, 1);
22 }
23
24 public Token peekToken(int pos) {
25 return peekToken(true, pos);
26 }
27
28 @Override
29 public TokenType peek(int pos) {
30 return peek(true, pos);
31 }
32
33 @Override
34 public Token consume() {
35 return consume(true);
36 }
37
38 public Token peekToken(boolean skipSkippable) {
39 return peekToken(skipSkippable, 1);
40 }
41
42 @Override
43 public TokenType peek(boolean skipSkippable) {
44 return peek(skipSkippable, 1);
45 }
46
47 public Token peekToken(boolean skipSkippable, int pos) {
48 int count = 0;
49 for (Token each : queue) {
50 if (skipSkippable && each.isSkippable()) {
51 continue;
52 }
53 ++count;
54 if (count == pos) {
55 return each;
56 }
57 }
58
59 while (true) {
60 Token nextToken = lexer.nextToken();
61 queue.add(nextToken);
62 if (skipSkippable && nextToken.isSkippable()) {
63 continue;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected