clang  6.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...
 
void Init (Token &Tok, SourceLocation ILEnd, MacroInfo *MI, MacroArgs *ActualArgs)
 Init - Initialize this TokenLexer to expand from the specified macro with the specified argument information. More...
 
 TokenLexer (const Token *TokArray, unsigned NumToks, bool DisableExpansion, bool ownsTokens, Preprocessor &pp)
 Create a TokenLexer for the specified token stream. More...
 
void Init (const Token *TokArray, unsigned NumToks, bool DisableMacroExpansion, bool OwnsTokens)
 Init - Initialize this TokenLexer with the specified token stream. More...
 
 ~TokenLexer ()
 
unsigned isNextTokenLParen () const
 isNextTokenLParen - If the next token lexed will pop this macro off the expansion stack, return 2. More...
 
bool Lex (Token &Tok)
 Lex - 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/2]

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 111 of file TokenLexer.h.

References Init(), and clang::format::Tok.

◆ TokenLexer() [2/2]

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 127 of file TokenLexer.h.

References Init().

◆ ~TokenLexer()

clang::TokenLexer::~TokenLexer ( )
inline

Member Function Documentation

◆ Init() [1/2]

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

Init - 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 27 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().

◆ Init() [2/2]

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

◆ isNextTokenLParen()

unsigned TokenLexer::isNextTokenLParen ( ) const

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 879 of file TokenLexer.cpp.

References clang::Token::is().

Referenced by ~TokenLexer().

◆ isParsingPreprocessorDirective()

bool TokenLexer::isParsingPreprocessorDirective ( ) const

◆ Lex()

bool TokenLexer::Lex ( Token Tok)

Friends And Related Function Documentation

◆ Preprocessor

friend class Preprocessor
friend

Definition at line 54 of file TokenLexer.h.


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