The Psyche Project
|
#include <Lexeme.h>
Classes | |
struct | BitFields |
Public Types | |
enum | LexemeKind : std::uint16_t { Identifier, IntegerConstant, FloatingConstant, CharacterConstant, ImaginaryIntegerConstant, ImaginaryFloatingConstant, StringLiteral } |
The LexemeKind enumeraiton. | |
![]() | |
typedef const char * | iterator |
typedef iterator | const_iterator |
Public Member Functions | |
LexemeKind | kind () const |
std::string | valueText () const |
template<class ValueT > | |
ValueT | value () const |
template<> | |
int | value () const |
template<> | |
long | value () const |
template<> | |
long long | value () const |
template<> | |
unsigned long | value () const |
template<> | |
unsigned long long | value () const |
template<> | |
float | value () const |
template<> | |
double | value () const |
template<> | |
long double | value () const |
template<> | |
unsigned char | value () const |
template<> | |
wchar_t | value () const |
template<> | |
char16_t | value () const |
template<> | |
char32_t | value () const |
virtual Identifier * | asIdentifier () |
virtual const Identifier * | asIdentifier () const |
virtual IntegerConstant * | asIntegerConstant () |
virtual const IntegerConstant * | asIntegerConstant () const |
virtual FloatingConstant * | asFloatingConstant () |
virtual const FloatingConstant * | asFloatingConstant () const |
virtual CharacterConstant * | asCharacterConstant () |
virtual const CharacterConstant * | asCharacterConstant () const |
virtual ImaginaryIntegerConstant * | asImaginaryIntegerConstant () |
virtual const ImaginaryIntegerConstant * | asImaginaryIntegerConstant () const |
virtual ImaginaryFloatingConstant * | asImaginaryFloatingConstant () |
virtual const ImaginaryFloatingConstant * | asImaginaryFloatingConstant () const |
virtual StringLiteral * | asStringLiteral () |
virtual const StringLiteral * | asStringLiteral () const |
![]() | |
TextElement (const char *c_str, unsigned int size) | |
TextElement (const TextElement &other)=delete | |
void | operator= (const TextElement &other)=delete |
iterator | begin () const |
iterator | end () const |
char | at (unsigned int idx) const |
const char * | c_str () const |
unsigned int | size () const |
unsigned int | length () const |
Protected Member Functions | |
Lexeme (const Lexeme &)=delete | |
Lexeme & | operator= (const Lexeme &)=delete |
Lexeme (const char *chars, unsigned int size, LexemeKind kind) | |
Protected Attributes | |
union { | |
std::uint16_t BF_all_ | |
BitFields BF_ | |
}; | |
The Lexeme class.
|
inlinevirtual |
Cast this
Lexeme.
Reimplemented in psy::C::CharacterConstant.
|
inlinevirtual |
Cast this
Lexeme.
Reimplemented in psy::C::CharacterConstant.
|
inlinevirtual |
Cast this
Lexeme.
Reimplemented in psy::C::FloatingConstant.
|
inlinevirtual |
Cast this
Lexeme.
Reimplemented in psy::C::FloatingConstant.
|
inlinevirtual |
Cast this
Lexeme.
Reimplemented in psy::C::Identifier.
|
inlinevirtual |
Cast this
Lexeme.
Reimplemented in psy::C::Identifier.
|
inlinevirtual |
Cast this
Lexeme.
Reimplemented in psy::C::ImaginaryFloatingConstant.
|
inlinevirtual |
Cast this
Lexeme.
Reimplemented in psy::C::ImaginaryFloatingConstant.
|
inlinevirtual |
Cast this
Lexeme.
Reimplemented in psy::C::ImaginaryIntegerConstant.
|
inlinevirtual |
Cast this
Lexeme.
Reimplemented in psy::C::ImaginaryIntegerConstant.
|
inlinevirtual |
Cast this
Lexeme.
Reimplemented in psy::C::IntegerConstant.
|
inlinevirtual |
Cast this
Lexeme.
Reimplemented in psy::C::IntegerConstant.
|
inlinevirtual |
Cast this
Lexeme.
Reimplemented in psy::C::StringLiteral.
|
inlinevirtual |
Cast this
Lexeme.
Reimplemented in psy::C::StringLiteral.
Lexeme::LexemeKind Lexeme::kind | ( | ) | const |
The LexemeKind of this
Lexeme.
ValueT psy::C::Lexeme::value | ( | ) | const |
The value of this
Lexeme. Template parameter ValueT
must be substituted, as an argument, by the C type corresponding to the lexeme in question. Therefore, prior to calling Lexeme::value, one must check the speficic kind of a lexeme, and any variant it might have. Consider the snippet below, which stores in i
the C value of 42UL
of a given Lexeme, named lexeme
.
std::string Lexeme::valueText | ( | ) | const |
The value of this
Lexeme represented as text, by an std::string
.
this
Lexeme was obtained.