clang API Documentation

Public Member Functions | Friends
clang::TokenLexer Class Reference

#include <TokenLexer.h>

List of all members.

Public Member Functions

 TokenLexer (Token &Tok, SourceLocation ILEnd, MacroInfo *MI, MacroArgs *ActualArgs, Preprocessor &pp)
void Init (Token &Tok, SourceLocation ILEnd, MacroInfo *MI, MacroArgs *ActualArgs)
 TokenLexer (const Token *TokArray, unsigned NumToks, bool DisableExpansion, bool ownsTokens, Preprocessor &pp)
void Init (const Token *TokArray, unsigned NumToks, bool DisableMacroExpansion, bool OwnsTokens)
 ~TokenLexer ()
unsigned isNextTokenLParen () const
bool Lex (Token &Tok)
 Lex - Lex and return a token from this macro stream.
bool isParsingPreprocessorDirective () const

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


Constructor & Destructor Documentation

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

References Init().

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

References Init().

Definition at line 139 of file TokenLexer.h.


Member Function Documentation

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. 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.

Create a TokenLexer for the specified macro with the specified actual arguments. Note that this ctor takes ownership of the ActualArgs pointer.

Definition at line 26 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::getNumArgs(), 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().

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

Init - Initialize this TokenLexer with the specified token stream. This does not take ownership of the specified token vector.

DisableExpansion is true when macro expansion of tokens lexed from this stream should be disabled.

Create a TokenLexer for the specified token stream. This does not take ownership of the specified token vector.

Definition at line 83 of file TokenLexer.cpp.

References clang::Token::hasLeadingSpace(), and clang::Token::isAtStartOfLine().

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

References clang::Token::is().

isParsingPreprocessorDirective - Return true if we are in the middle of a preprocessor directive.

Definition at line 690 of file TokenLexer.cpp.

References clang::Token::is().


Friends And Related Function Documentation

friend class Preprocessor [friend]

Definition at line 52 of file TokenLexer.h.


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