Class: CommonTokenStream

Inherits:
BufferedTokenStream show all
Defined in:
lib/antlr4/CommonTokenStream.rb

Instance Attribute Summary collapse

Attributes inherited from BufferedTokenStream

#fetchedEOF, #index, #tokenSource, #tokens

Instance Method Summary collapse

Methods inherited from BufferedTokenStream

#LA, #consume, #fetch, #fill, #filterForChannel, #get, #getHiddenTokensToLeft, #getHiddenTokensToRight, #getSourceName, #getText, #getTokens, #lazyInit, #mark, #nextTokenOnChannel, #previousTokenOnChannel, #release, #reset, #seek, #setTokenSource, #setup, #sync

Constructor Details

#initialize(lexer, _channel = Token::DEFAULT_CHANNEL) ⇒ CommonTokenStream

Returns a new instance of CommonTokenStream.



5
6
7
8
# File 'lib/antlr4/CommonTokenStream.rb', line 5

def initialize(lexer, _channel=Token::DEFAULT_CHANNEL)
    super(lexer)
    @channel = _channel
end

Instance Attribute Details

#channelObject

Returns the value of attribute channel.



4
5
6
# File 'lib/antlr4/CommonTokenStream.rb', line 4

def channel
  @channel
end

Instance Method Details

#adjustSeekIndex(i) ⇒ Object



10
11
12
# File 'lib/antlr4/CommonTokenStream.rb', line 10

def adjustSeekIndex(i)
    return self.nextTokenOnChannel(i, self.channel)
end

#getNumberOfOnChannelTokensObject

Count EOF just once.#/



44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/antlr4/CommonTokenStream.rb', line 44

def getNumberOfOnChannelTokens
    n = 0
    self.fill()
    for i in 0..self.tokens.length-1 do
        t = self.tokens[i]
        if t.channel==self.channel
            n = n + 1
        end
        break if t.type==Token::EOF
    end
    return n
end

#LB(k) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/antlr4/CommonTokenStream.rb', line 14

def LB(k)
    return nil if k==0 or (self.index-k)<0
    i = self.index
    n = 1
    # find k good tokens looking backwards
    while n <= k do 
        # skip off-channel tokens
        i = self.previousTokenOnChannel(i - 1, self.channel)
        n = n + 1
    end
    return nil if i < 0
    return self.tokens[i]
end

#LT(k) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/antlr4/CommonTokenStream.rb', line 27

def LT(k)
    self.lazyInit()
    return nil if k == 0
    return self.LB(-k) if k < 0
    i = self.index
    n = 1 # we know tokens[pos] is a good one
    # find k good tokens
    while n < k do 
        # skip off-channel tokens, but make sure to not look past EOF
        if self.sync(i + 1)
            i = self.nextTokenOnChannel(i + 1, self.channel)
        end
        n = n + 1
    end
    return self.tokens[i]
end