Sha256: f8b635e6ad4f64f4e9e43ab4dae2352980d925cbfb7ee358520cdb25aa33a07e
Contents?: true
Size: 1.73 KB
Versions: 47
Compression:
Stored size: 1.73 KB
Contents
/* Copyright (c) 2012-2017 The ANTLR Project. All rights reserved. * Use of this file is governed by the BSD 3-clause license that * can be found in the LICENSE.txt file in the project root. */ #include "Token.h" #include "CommonTokenStream.h" using namespace antlr4; CommonTokenStream::CommonTokenStream(TokenSource *tokenSource) : CommonTokenStream(tokenSource, Token::DEFAULT_CHANNEL) { } CommonTokenStream::CommonTokenStream(TokenSource *tokenSource, size_t channel_) : BufferedTokenStream(tokenSource), channel(channel_) { } ssize_t CommonTokenStream::adjustSeekIndex(size_t i) { return nextTokenOnChannel(i, channel); } Token* CommonTokenStream::LB(size_t k) { if (k == 0 || k > _p) { return nullptr; } ssize_t i = static_cast<ssize_t>(_p); size_t n = 1; // find k good tokens looking backwards while (n <= k) { // skip off-channel tokens i = previousTokenOnChannel(i - 1, channel); n++; } if (i < 0) { return nullptr; } return _tokens[i].get(); } Token* CommonTokenStream::LT(ssize_t k) { lazyInit(); if (k == 0) { return nullptr; } if (k < 0) { return LB(static_cast<size_t>(-k)); } size_t i = _p; ssize_t n = 1; // we know tokens[p] is a good one // find k good tokens while (n < k) { // skip off-channel tokens, but make sure to not look past EOF if (sync(i + 1)) { i = nextTokenOnChannel(i + 1, channel); } n++; } return _tokens[i].get(); } int CommonTokenStream::getNumberOfOnChannelTokens() { int n = 0; fill(); for (size_t i = 0; i < _tokens.size(); i++) { Token *t = _tokens[i].get(); if (t->getChannel() == channel) { n++; } if (t->getType() == Token::EOF) { break; } } return n; }
Version data entries
47 entries across 47 versions & 4 rubygems