VapourSynth-llvmexpr
Loading...
Searching...
No Matches
infix2postfix::preprocessor::TokenStream Class Reference

Public Member Functions

 TokenStream (std::vector< Token > p_tokens)
bool is_eof () const
Token peek (size_t offset=0) const
Token consume ()
void prepend (const std::vector< Token > &tokens)
void skipWhitespace ()

Detailed Description

Definition at line 519 of file Preprocessor.cpp.

Constructor & Destructor Documentation

◆ TokenStream()

infix2postfix::preprocessor::TokenStream::TokenStream ( std::vector< Token > p_tokens)
inlineexplicit

Definition at line 521 of file Preprocessor.cpp.

521 {
522 for (auto&& tok : p_tokens) {
523 tokens.push_back(std::move(tok));
524 }
525 }

Member Function Documentation

◆ consume()

Token infix2postfix::preprocessor::TokenStream::consume ( )
inline

Definition at line 539 of file Preprocessor.cpp.

539 {
540 if (is_eof()) {
541 static Token eof_token{TokenType::EndOfFile, "", 0, 0};
542 return eof_token;
543 }
544 Token tok = std::move(tokens.front());
545 tokens.pop_front();
546 return tok;
547 }
preprocessor_detail::Token Token

References is_eof().

Referenced by infix2postfix::preprocessor::Expander::expand(), and skipWhitespace().

◆ is_eof()

bool infix2postfix::preprocessor::TokenStream::is_eof ( ) const
inlinenodiscard

Definition at line 527 of file Preprocessor.cpp.

527 {
528 return tokens.empty() || tokens.front().type == TokenType::EndOfFile;
529 }

Referenced by consume(), infix2postfix::preprocessor::Expander::expand(), and skipWhitespace().

◆ peek()

Token infix2postfix::preprocessor::TokenStream::peek ( size_t offset = 0) const
inlinenodiscard

Definition at line 531 of file Preprocessor.cpp.

531 {
532 if (offset >= tokens.size()) {
533 static Token eof_token{TokenType::EndOfFile, "", 0, 0};
534 return eof_token;
535 }
536 return tokens[offset];
537 }

Referenced by infix2postfix::preprocessor::Expander::expand(), and skipWhitespace().

◆ prepend()

void infix2postfix::preprocessor::TokenStream::prepend ( const std::vector< Token > & tokens)
inline

Definition at line 549 of file Preprocessor.cpp.

549 {
550 for (const auto& tok : std::views::reverse(tokens)) {
551 this->tokens.push_front(tok);
552 }
553 }

◆ skipWhitespace()

void infix2postfix::preprocessor::TokenStream::skipWhitespace ( )
inline

The documentation for this class was generated from the following file: