clang  8.0.0svn
Public Member Functions | Friends | List of all members
clang::TokenLexer Class Reference

TokenLexer - This implements a lexer that returns tokens from a macro body or token stream instead of lexing from a character buffer. More...

#include "clang/Lex/TokenLexer.h"

Public Member Functions

 TokenLexer (Token &Tok, SourceLocation ILEnd, MacroInfo *MI, MacroArgs *ActualArgs, Preprocessor &pp)
 Create a TokenLexer for the specified macro with the specified actual arguments. More...
 
 TokenLexer (const Token *TokArray, unsigned NumToks, bool DisableExpansion, bool ownsTokens, Preprocessor &pp)
 Create a TokenLexer for the specified token stream. More...
 
 TokenLexer (const TokenLexer &)=delete
 
TokenLexeroperator= (const TokenLexer &)=delete
 
 ~TokenLexer ()
 
void Init (Token &Tok, SourceLocation ELEnd, MacroInfo *MI, MacroArgs *Actuals)
 Initialize this TokenLexer to expand from the specified macro with the specified argument information. More...
 
void Init (const Token *TokArray, unsigned NumToks, bool DisableMacroExpansion, bool OwnsTokens)
 Initialize this TokenLexer with the specified token stream. More...
 
unsigned isNextTokenLParen () const
 If the next token lexed will pop this macro off the expansion stack, return 2. More...
 
bool Lex (Token &Tok)
 Lex and return a token from this macro stream. More...
 
bool isParsingPreprocessorDirective () const
 isParsingPreprocessorDirective - Return true if we are in the middle of a preprocessor directive. More...
 

Friends

class Preprocessor
 

Detailed Description

TokenLexer - This implements a lexer that returns tokens from a macro body or token stream instead of lexing from a character buffer.

This is used for macro expansion and _Pragma handling, for example.

Definition at line 31 of file TokenLexer.h.

Constructor & Destructor Documentation

◆ TokenLexer() [1/3]

clang::TokenLexer::TokenLexer ( Token Tok,
SourceLocation  ILEnd,
MacroInfo MI,
MacroArgs ActualArgs,
Preprocessor pp 
)
inline

Create a TokenLexer for the specified macro with the specified actual arguments.

Note that this ctor takes ownership of the ActualArgs pointer. ILEnd specifies the location of the ')' for a function-like macro or the identifier for an object-like macro.

Definition at line 105 of file TokenLexer.h.

References Init().

Referenced by TokenLexer().

◆ TokenLexer() [2/3]

clang::TokenLexer::TokenLexer ( const Token TokArray,
unsigned  NumToks,
bool  DisableExpansion,
bool  ownsTokens,
Preprocessor pp 
)
inline

Create a TokenLexer for the specified token stream.

If 'OwnsTokens' is specified, this takes ownership of the tokens and delete[]'s them when the token lexer is empty.

Definition at line 114 of file TokenLexer.h.

References Init(), operator=(), and TokenLexer().

◆ TokenLexer() [3/3]

clang::TokenLexer::TokenLexer ( const TokenLexer )
delete

◆ ~TokenLexer()

clang::TokenLexer::~TokenLexer ( )
inline

Member Function Documentation

◆ Init() [1/2]

void TokenLexer::Init ( Token Tok,
SourceLocation  ELEnd,
MacroInfo MI,
MacroArgs Actuals 
)

Initialize this TokenLexer to expand from the specified macro with the specified argument information.

Create a TokenLexer for the specified macro with the specified actual arguments.

Note that this ctor takes ownership of the ActualArgs pointer. ILEnd specifies the location of the ')' for a function-like macro or the identifier for an object-like macro.

Note that this ctor takes ownership of the ActualArgs pointer.

Definition at line 39 of file TokenLexer.cpp.

References clang::SourceManager::createExpansionLoc(), clang::MacroInfo::DisableMacro(), clang::MacroInfo::getDefinitionLength(), clang::SourceManager::getExpansionLoc(), clang::Token::getLocation(), clang::SourceManager::getNextLocalOffset(), clang::MacroInfo::getNumParams(), clang::Preprocessor::getSourceManager(), clang::Token::hasLeadingSpace(), clang::Token::isAtStartOfLine(), clang::MacroInfo::isFunctionLike(), clang::SourceLocation::isValid(), SM, clang::MacroInfo::tokens_begin(), and clang::MacroInfo::tokens_end().

Referenced by TokenLexer(), and ~TokenLexer().

◆ Init() [2/2]

void TokenLexer::Init ( const Token TokArray,
unsigned  NumToks,
bool  disableMacroExpansion,
bool  ownsTokens 
)

◆ isNextTokenLParen()

unsigned TokenLexer::isNextTokenLParen ( ) const

If the next token lexed will pop this macro off the expansion stack, return 2.

isNextTokenLParen - If the next token lexed will pop this macro off the expansion stack, return 2.

If the next unexpanded token is a '(', return 1, otherwise return 0.

Definition at line 889 of file TokenLexer.cpp.

References clang::Token::is().

Referenced by ~TokenLexer().

◆ isParsingPreprocessorDirective()

bool TokenLexer::isParsingPreprocessorDirective ( ) const

◆ Lex()

bool TokenLexer::Lex ( Token Tok)

◆ operator=()

TokenLexer& clang::TokenLexer::operator= ( const TokenLexer )
delete

Referenced by TokenLexer().

Friends And Related Function Documentation

◆ Preprocessor

friend class Preprocessor
friend

Definition at line 32 of file TokenLexer.h.


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