clang  3.7.0
Public Member Functions | Public Attributes | List of all members
clang::StringLiteralParser Class Reference

#include <LiteralSupport.h>

Collaboration diagram for clang::StringLiteralParser:
[legend]

Public Member Functions

 StringLiteralParser (ArrayRef< Token > StringToks, Preprocessor &PP, bool Complain=true)
 
 StringLiteralParser (ArrayRef< Token > StringToks, const SourceManager &sm, const LangOptions &features, const TargetInfo &target, DiagnosticsEngine *diags=nullptr)
 
StringRef GetString () const
 
unsigned GetStringLength () const
 
unsigned GetNumStringChars () const
 
unsigned getOffsetOfStringByte (const Token &TheTok, unsigned ByteNo) const
 
bool isAscii () const
 
bool isWide () const
 
bool isUTF8 () const
 
bool isUTF16 () const
 
bool isUTF32 () const
 
bool isPascal () const
 
StringRef getUDSuffix () const
 
unsigned getUDSuffixToken () const
 Get the index of a token containing a ud-suffix. More...
 
unsigned getUDSuffixOffset () const
 Get the spelling offset of the first byte of the ud-suffix. More...
 

Public Attributes

bool hadError
 
bool Pascal
 

Detailed Description

StringLiteralParser - This decodes string escape characters and performs wide string analysis and Translation Phase #6 (concatenation of string literals) (C99 5.1.1.2p1).

Definition at line 183 of file LiteralSupport.h.

Constructor & Destructor Documentation

StringLiteralParser::StringLiteralParser ( ArrayRef< Token StringToks,
Preprocessor PP,
bool  Complain = true 
)
///       string-literal: [C++0x lex.string]
///         encoding-prefix " [s-char-sequence] "
///         encoding-prefix R raw-string
///       encoding-prefix:
///         u8
///         u
///         U
///         L
///       s-char-sequence:
///         s-char
///         s-char-sequence s-char
///       s-char:
///         any member of the source character set except the double-quote ",
///           backslash \, or new-line character
///         escape-sequence
///         universal-character-name
///       raw-string:
///         " d-char-sequence ( r-char-sequence ) d-char-sequence "
///       r-char-sequence:
///         r-char
///         r-char-sequence r-char
///       r-char:
///         any member of the source character set, except a right parenthesis )
///           followed by the initial d-char-sequence (which may be empty)
///           followed by a double quote ".
///       d-char-sequence:
///         d-char
///         d-char-sequence d-char
///       d-char:
///         any member of the basic source character set except:
///           space, the left parenthesis (, the right parenthesis ),
///           the backslash \, and the control characters representing horizontal
///           tab, vertical tab, form feed, and newline.
///       escape-sequence: [C++0x lex.ccon]
///         simple-escape-sequence
///         octal-escape-sequence
///         hexadecimal-escape-sequence
///       simple-escape-sequence:
///         one of \' \" \? \\ \a \b \f \n \r \t \v
///       octal-escape-sequence:
///         \ octal-digit
///         \ octal-digit octal-digit
///         \ octal-digit octal-digit octal-digit
///       hexadecimal-escape-sequence:
///         \x hexadecimal-digit
///         hexadecimal-escape-sequence hexadecimal-digit
///       universal-character-name:
///         \u hex-quad
///         \U hex-quad hex-quad
///       hex-quad:
///         hex-digit hex-digit hex-digit hex-digit
/// 

Definition at line 1256 of file LiteralSupport.cpp.

clang::StringLiteralParser::StringLiteralParser ( ArrayRef< Token StringToks,
const SourceManager sm,
const LangOptions features,
const TargetInfo target,
DiagnosticsEngine diags = nullptr 
)
inline

Definition at line 201 of file LiteralSupport.h.

Member Function Documentation

unsigned clang::StringLiteralParser::GetNumStringChars ( ) const
inline

Definition at line 220 of file LiteralSupport.h.

References GetStringLength().

unsigned StringLiteralParser::getOffsetOfStringByte ( const Token Tok,
unsigned  ByteNo 
) const

getOffsetOfStringByte - This function returns the offset of the specified byte of the string data represented by Token. This handles advancing over escape sequences in the string.

If the Diagnostics pointer is non-null, then this will do semantic checking of the string literal and emit errors and warnings.

getOffsetOfStringByte - This function returns the offset of the specified byte of the string data represented by Token. This handles advancing over escape sequences in the string.

Definition at line 1602 of file LiteralSupport.cpp.

References clang::Token::getLength(), clang::Token::getLocation(), clang::Lexer::getSpelling(), MeasureUCNEscape(), and ProcessCharEscape().

Referenced by clang::StringLiteral::getLocationOfByte().

StringRef clang::StringLiteralParser::GetString ( ) const
inline

Definition at line 215 of file LiteralSupport.h.

References GetStringLength().

Referenced by clang::Preprocessor::FinishLexStringLiteral().

unsigned clang::StringLiteralParser::GetStringLength ( ) const
inline
StringRef clang::StringLiteralParser::getUDSuffix ( ) const
inline

Definition at line 238 of file LiteralSupport.h.

unsigned clang::StringLiteralParser::getUDSuffixOffset ( ) const
inline

Get the spelling offset of the first byte of the ud-suffix.

Definition at line 246 of file LiteralSupport.h.

unsigned clang::StringLiteralParser::getUDSuffixToken ( ) const
inline

Get the index of a token containing a ud-suffix.

Definition at line 241 of file LiteralSupport.h.

bool clang::StringLiteralParser::isAscii ( ) const
inline

Definition at line 231 of file LiteralSupport.h.

Referenced by clang::Preprocessor::FinishLexStringLiteral().

bool clang::StringLiteralParser::isPascal ( ) const
inline

Definition at line 236 of file LiteralSupport.h.

References Pascal.

bool clang::StringLiteralParser::isUTF16 ( ) const
inline

Definition at line 234 of file LiteralSupport.h.

bool clang::StringLiteralParser::isUTF32 ( ) const
inline

Definition at line 235 of file LiteralSupport.h.

bool clang::StringLiteralParser::isUTF8 ( ) const
inline

Definition at line 233 of file LiteralSupport.h.

bool clang::StringLiteralParser::isWide ( ) const
inline

Definition at line 232 of file LiteralSupport.h.

Member Data Documentation

bool clang::StringLiteralParser::hadError

Definition at line 212 of file LiteralSupport.h.

Referenced by clang::Preprocessor::FinishLexStringLiteral().

bool clang::StringLiteralParser::Pascal

Definition at line 213 of file LiteralSupport.h.

Referenced by clang::Preprocessor::FinishLexStringLiteral(), and isPascal().


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