|
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. | |
Public Types inherited from psy::TextElement | |
| 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 |
Public Member Functions inherited from psy::TextElement | |
| 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.
1.8.18