1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package uk.co.badgersinfoil.metaas.impl.antlr;
20
21 import org.antlr.runtime.Token;
22 import org.antlr.runtime.TokenSource;
23
24
25 public class LinkedListTokenSource implements TokenSource {
26 private TokenSource delegate;
27 private LinkedListToken last = null;
28
29 public LinkedListTokenSource(TokenSource delegate) {
30 this.delegate = delegate;
31 }
32
33 public Token nextToken() {
34 LinkedListToken curr = createToken(delegate.nextToken());
35 if (last != null) {
36 last.setNext(curr);
37 }
38 curr.setPrev(last);
39 last = curr;
40 return curr;
41 }
42
43 private LinkedListToken createToken(Token tok) {
44 LinkedListToken result = new LinkedListToken(tok.getType(), tok.getText());
45 result.setLine(tok.getLine());
46 result.setCharPositionInLine(tok.getCharPositionInLine());
47 result.setChannel(tok.getChannel());
48 result.setTokenIndex(tok.getTokenIndex());
49 return result;
50 }
51
52
53
54
55
56
57 public void setDelegate(TokenSource delegate) {
58 this.delegate = delegate;
59 }
60
61
62
63
64
65 public void setLast(LinkedListToken tok) {
66 }
67 }