clang API Documentation

Public Member Functions | Static Public Member Functions | Public Attributes
clang::NumericLiteralParser Class Reference

#include <LiteralSupport.h>

Collaboration diagram for clang::NumericLiteralParser:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 NumericLiteralParser (StringRef TokSpelling, SourceLocation TokLoc, Preprocessor &PP)
bool isIntegerLiteral () const
bool isFloatingLiteral () const
bool hasUDSuffix () const
StringRef getUDSuffix () const
unsigned getUDSuffixOffset () const
unsigned getRadix () const
bool GetIntegerValue (llvm::APInt &Val)
llvm::APFloat::opStatus GetFloatValue (llvm::APFloat &Result)

Static Public Member Functions

static bool isValidUDSuffix (const LangOptions &LangOpts, StringRef Suffix)

Public Attributes

bool hadError
bool isUnsigned
bool isLong
bool isLongLong
bool isFloat
bool isImaginary
uint8_t MicrosoftInteger

Detailed Description

NumericLiteralParser - This performs strict semantic analysis of the content of a ppnumber, classifying it as either integer, floating, or erroneous, determines the radix of the value and can convert it to a useful value.

Definition at line 42 of file LiteralSupport.h.


Constructor & Destructor Documentation

NumericLiteralParser::NumericLiteralParser ( StringRef  TokSpelling,
SourceLocation  TokLoc,
Preprocessor PP 
)

integer-constant: [C99 6.4.4.1] decimal-constant integer-suffix octal-constant integer-suffix hexadecimal-constant integer-suffix binary-literal integer-suffix [GNU, C++1y] user-defined-integer-literal: [C++11 lex.ext] decimal-literal ud-suffix octal-literal ud-suffix hexadecimal-literal ud-suffix binary-literal ud-suffix [GNU, C++1y] decimal-constant: nonzero-digit decimal-constant digit octal-constant: 0 octal-constant octal-digit hexadecimal-constant: hexadecimal-prefix hexadecimal-digit hexadecimal-constant hexadecimal-digit hexadecimal-prefix: one of 0x 0X binary-literal: 0b binary-digit 0B binary-digit binary-literal binary-digit integer-suffix: unsigned-suffix [long-suffix] unsigned-suffix [long-long-suffix] long-suffix [unsigned-suffix] long-long-suffix [unsigned-sufix] nonzero-digit: 1 2 3 4 5 6 7 8 9 octal-digit: 0 1 2 3 4 5 6 7 hexadecimal-digit: 0 1 2 3 4 5 6 7 8 9 a b c d e f A B C D E F binary-digit: 0 1 unsigned-suffix: one of u U long-suffix: one of l L long-long-suffix: one of ll LL

floating-constant: [C99 6.4.4.2] TODO: add rules...

Definition at line 506 of file LiteralSupport.cpp.

References clang::Preprocessor::AdvanceToTokenCharacter(), clang::Preprocessor::Diag(), clang::expandUCNs(), clang::Preprocessor::getLangOpts(), hadError, isFloat, isFloatingLiteral(), clang::isHexDigit(), isImaginary, isLong, isLongLong, clang::isPreprocessingNumberBody(), isUnsigned, isValidUDSuffix(), and MicrosoftInteger.


Member Function Documentation

llvm::APFloat::opStatus NumericLiteralParser::GetFloatValue ( llvm::APFloat &  Result)

GetFloatValue - Convert this numeric literal to a floating value, using the specified APFloat fltSemantics (specifying float, double, etc). The optional bool isExact (passed-by-reference) has its value set to true if the returned APFloat can represent the number in the literal exactly, and false otherwise.

Definition at line 968 of file LiteralSupport.cpp.

Referenced by BuildFloatingLiteral().

GetIntegerValue - Convert this numeric literal value to an APInt that matches Val's input width. If there is an overflow (i.e., if the unsigned value read is larger than the APInt's bits will hold), set Val to the low bits of the result and return true. Otherwise, return false.

GetIntegerValue - Convert this numeric literal value to an APInt that matches Val's input width. If there is an overflow, set Val to the low bits of the result and return true. Otherwise, return false.

Definition at line 910 of file LiteralSupport.cpp.

References alwaysFitsInto64Bits(), and AttributeLangSupport::C.

Definition at line 89 of file LiteralSupport.h.

StringRef clang::NumericLiteralParser::getUDSuffix ( ) const [inline]

Definition at line 78 of file LiteralSupport.h.

Definition at line 82 of file LiteralSupport.h.

Definition at line 75 of file LiteralSupport.h.

Definition at line 71 of file LiteralSupport.h.

Referenced by NumericLiteralParser().

Definition at line 68 of file LiteralSupport.h.

bool NumericLiteralParser::isValidUDSuffix ( const LangOptions LangOpts,
StringRef  Suffix 
) [static]

Determine whether a suffix is a valid ud-suffix. We avoid treating reserved suffixes as ud-suffixes, because the diagnostic experience is better if we treat it as an invalid suffix.

Definition at line 710 of file LiteralSupport.cpp.

Referenced by clang::Sema::CheckLiteralOperatorDeclaration(), and NumericLiteralParser().


Member Data Documentation

Definition at line 60 of file LiteralSupport.h.

Referenced by NumericLiteralParser().

Definition at line 64 of file LiteralSupport.h.

Referenced by NumericLiteralParser().

Definition at line 65 of file LiteralSupport.h.

Referenced by NumericLiteralParser().

Definition at line 62 of file LiteralSupport.h.

Referenced by NumericLiteralParser().

Definition at line 63 of file LiteralSupport.h.

Referenced by NumericLiteralParser().

Definition at line 61 of file LiteralSupport.h.

Referenced by NumericLiteralParser().

Definition at line 66 of file LiteralSupport.h.

Referenced by NumericLiteralParser().


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