Bond 0.9
C++ Bond Runtime Library API Documentation
Loading...
Searching...
No Matches
Compiler

These classes form the parts of the Bond compiler. More...

Topics

 Parse Nodes
 These classes define all of the types of ParseNodes that form the parse trees generated by the Bond compiler.

Classes

class  Bond::CharStream
 An iterator over the contents of a stream of text. More...
class  Bond::CodeGenerator
 A code generator for the Bond scripting language. More...
class  Bond::CompilerError
 A container for error information reported by the various components of the Bond compiler. More...
class  Bond::CompilerErrorBuffer
 A container for CompilerError instances generated by the various components of the Bond compiler. More...
class  Bond::FrontEnd
 A compiler front end for the Bond scripting language. More...
class  Bond::Lexer
 A lexer for the Bond scripting language. More...
class  Bond::ParseNodeTraverser
 A concrete implementation of ParseNodeVisitor that, in addition to visiting a ParseNode, does a depth-first traversal of its children and visits them too. More...
class  Bond::CastVisitor< T >
class  Bond::ParseNodeVisitor
 An abstract interface that implements the Visitor pattern over all concrete types that derive from ParseNode. More...
class  Bond::ParseNodeVisitorAdapter
 A concrete implementation of ParseNodeVisitor with methods that do nothing. More...
class  Bond::Parser
 A parser for the Bond scripting language. More...
class  Bond::SemanticAnalyzer
 A semantic analyzer for a parse tree generated from the Bond scripting language. More...
struct  Bond::StreamPos
 A POD struct to contain the index, line and column of a token in source code. More...
class  Bond::SymbolTable
 A hierarchical symbol table used by the Bond compiler. More...
class  Bond::Token
 A token describing a syntactic unit of the Bond scripting language (e.g. keywords, identifiers, literal constants and operators). More...
class  Bond::TokenTypeSet
 Represents a collection of related TokenTypes. More...
class  Bond::TokenStream
 An iterator over the contents of a TokenCollection. More...
class  Bond::TokenCollection
 An ordered immutable collection of Tokens. More...
class  Bond::TypeAndValue
 Contains the information regarding the type and value of an expression as it is evaluated by the compiler. More...

Macros

#define BOND_COMPILER_ERROR_LIST
 An X-macro that lists every type of compiler error along with the format of its message.
#define BOND_TOKEN_LIST
 An X-macro that lists every type of Token.

Typedefs

typedef Allocator::Handle< const TokenCollection > Bond::TokenCollectionHandle
 An owning pointer to a dynamically allocated TokenCollection.
typedef Vector< TokenCollectionHandle > Bond::TokenCollectionStore
 A collection of dynamically allocated TokenCollection.
typedef Allocator::ObjectHandle< ParseNode > Bond::ParseNodeHandle
 An owning pointer to a dynamically allocated ParseNode.
typedef Vector< ParseNodeHandle > Bond::ParseNodeStore
 A collection of dynamically allocated ParseNodes.

Functions

BOND_API uint32_t Bond::GetLength (const ListParseNode *list)
 Counts and returns the length of a list of ListParseNodes.
template<typename NodeType>
NodeType * Bond::NextNode (NodeType *list)
 Returns the node that follows the given one in a list of ListParseNodes, cast to the same type, or null if it is the last node.
template<typename T>
T * Bond::CastNode (ParseNode *node)
 Returns the given ParseNode cast to the concrete type T, or null if its concrete type is not exactly T. The type is determined with a visitor rather than RTTI.
template<typename T>
const T * Bond::CastNode (const ParseNode *node)
 Returns the given ParseNode cast to the concrete type T, or null if its concrete type is not exactly T. The type is determined with a visitor rather than RTTI.
template<typename NodeType, typename Comparator>
NodeType * Bond::InsertNode (NodeType *head, NodeType *node, Comparator compare)
 Inserts a node into a sorted list of ListParseNodes, after any nodes that compare equal to it.
BOND_API bool Bond::AreComparableTypes (const TypeDescriptor &typeA, const TypeDescriptor &typeB)
 Returns whether values of the given types can be compared, i.e. whether both are pointers, both are numeric or both are bool.
BOND_API bool Bond::AreConvertibleTypes (const TypeDescriptor &fromType, const TypeDescriptor &toType)
 Returns whether a value of one type can be converted to another, i.e. whether the types are comparable or are the same struct or enum type.
BOND_API bool Bond::AreSameTypes (const TypeDescriptor &fromType, const TypeDescriptor &toType)
 Returns whether two types are the same, recursing through pointers and arrays, where array lengths must also match. The comparison is not symmetric with respect to const: it fails if fromType is const and toType is not, at any level of indirection, but succeeds if only toType is const.
BOND_API bool Bond::AreAssignableTypes (const TypeDescriptor &fromType, const TypeDescriptor &toType)
 Returns whether a value of one type can be assigned to an object of another type.
BOND_API bool Bond::IsLossyConversion (const TypeAndValue &fromTav, const TypeDescriptor &toType)
 Returns whether converting a numeric value to the given numeric type may lose data.
BOND_API TypeDescriptor Bond::PromoteType (const TypeDescriptor &type)
 Returns the type of an operand after C's integer promotions.
BOND_API TypeDescriptor Bond::CombineOperandTypes (const TypeDescriptor &typeA, const TypeDescriptor &typeB)
 Returns the type in which a binary operation on operands of the given types is performed, following C's usual arithmetic conversions.
BOND_API bool Bond::MayConvertNegativeToUnsigned (const TypeAndValue &operandTav, const TypeDescriptor &operationType)
 Returns true if the operand has a signed integer type, the operation in which it is used has an unsigned integer type and the operand is not a constant known to be non-negative.
BOND_API Value Bond::CastValue (const Token &fromValue, Token::TokenType toType)
 Converts the value of a constant literal Token to the given primitive type, as a C cast would.
BOND_API Value Bond::CastValue (const TypeAndValue &fromTav, const TypeDescriptor &toType)
 Converts a compile-time constant value to the given primitive type, as a C cast would.
BOND_API bool Bond::IsNegativeIntegerConstant (const Token &token)
 Returns whether the given Token is a signed integer constant literal whose value is negative.

Variables

BOND_API const Token Bond::VOID_TOKEN
 Constant Token of type KEY_VOID representing the void keyword.
BOND_API const Token Bond::BOOL_TOKEN
 Constant Token of type KEY_BOOL representing the bool keyword.
BOND_API const Token Bond::CHAR_TOKEN
 Constant Token of type KEY_CHAR representing the char keyword.
BOND_API const Token Bond::UCHAR_TOKEN
 Constant Token of type KEY_UCHAR representing the uchar keyword.
BOND_API const Token Bond::INT_TOKEN
 Constant Token of type KEY_INT representing the int keyword.
BOND_API const Token Bond::UINT_TOKEN
 Constant Token of type KEY_UINT representing the uint keyword.
BOND_API const Token Bond::LONG_TOKEN
 Constant Token of type KEY_LONG representing the long keyword.
BOND_API const Token Bond::ULONG_TOKEN
 Constant Token of type KEY_ULONG representing the ulong keyword.
BOND_API const Token Bond::FLOAT_TOKEN
 Constant Token of type KEY_FLOAT representing the float keyword.
BOND_API const Token Bond::DOUBLE_TOKEN
 Constant Token of type KEY_DOUBLE representing the double keyword.
BOND_API const TokenTypeSet Bond::PRIMITIVE_TYPE_SPECIFIERS_TYPESET
 Constant TokenTypeSet of all keywords representing Bond primitive types namely: KEY_BOOL, KEY_CHAR, KEY_UCHAR, KEY_SHORT, KEY_USHORT, KEY_INT, KEY_UINT, KEY_LONG, KEY_ULONG, KEY_FLOAT, KEY_DOUBLE and KEY_VOID.
BOND_API const TokenTypeSet Bond::BOOLEAN_TYPE_SPECIFIERS_TYPESET
 Constant TokenTypeSet containing only KEY_BOOL.
BOND_API const TokenTypeSet Bond::CHAR_TYPE_SPECIFIERS_TYPESET
 Constant TokenTypeSet of all keywords representing Bond character types, namely: KEY_CHAR and KEY_UCHAR.
BOND_API const TokenTypeSet Bond::INTEGER_TYPE_SPECIFIERS_TYPESET
 Constant TokenTypeSet of all keywords representing Bond integral types, namely: KEY_CHAR, KEY_UCHAR, KEY_SHORT, KEY_USHORT, KEY_INT, KEY_UINT, KEY_LONG and KEY_ULONG.
BOND_API const TokenTypeSet Bond::SIGNED_INTEGER_TYPE_SPECIFIERS_TYPESET
 Constant TokenTypeSet of all keywords representing Bond signed integral types, namely: KEY_CHAR, KEY_SHORT, KEY_INT and KEY_LONG.
BOND_API const TokenTypeSet Bond::UNSIGNED_INTEGER_TYPE_SPECIFIERS_TYPESET
 Constant TokenTypeSet of all keywords representing Bond unsigned integral types, namely: KEY_UCHAR, KEY_USHORT, KEY_UINT and KEY_ULONG.
BOND_API const TokenTypeSet Bond::LEAST32_INTEGER_TYPE_SPECIFIERS_TYPESET
 Constant TokenTypeSet of all keywords representing Bond integral types having at least 32 bits, namely: KEY_INT, KEY_UINT, KEY_LONG and KEY_ULONG.
BOND_API const TokenTypeSet Bond::MOST32_INTEGER_TYPE_SPECIFIERS_TYPESET
 Constant TokenTypeSet of all keywords representing Bond integral types having at most 32 bits, namely: KEY_CHAR, KEY_UCHAR, KEY_SHORT, KEY_USHORT, KEY_INT and KEY_UINT.
BOND_API const TokenTypeSet Bond::LONG_INTEGER_TYPE_SPECIFIERS_TYPESET
 Constant TokenTypeSet of all keywords representing Bond long integral types, namely: KEY_LONG and KEY_ULONG.
BOND_API const TokenTypeSet Bond::NUMERIC_TYPE_SPECIFIERS_TYPESET
 Constant TokenTypeSet of all keywords representing Bond numeric types, namely: KEY_CHAR, KEY_UCHAR, KEY_SHORT, KEY_USHORT, KEY_INT, KEY_UINT, KEY_LONG, KEY_ULONG, KEY_FLOAT and KEY_DOUBLE.
BOND_API const TokenTypeSet Bond::VOID_TYPE_SPECIFIERS_TYPESET
 Constant TokenTypeSet containing only KEY_VOID.
BOND_API const TokenTypeSet Bond::TYPE_DESCRIPTORS_TYPESET
 Constant TokenTypeSet of all punctuation token types used to begin a new level of indirection in type descriptors, namely: OP_STAR and OBRACKET.
BOND_API const TokenTypeSet Bond::MOST32_INTEGER_CONSTANTS_TYPESET
 Constant TokenTypeSet of all integral literal constants having at most 32 bits, namely: CONST_CHAR, CONST_INT and CONST_UINT.
BOND_API const TokenTypeSet Bond::SIGNED_INTEGER_CONSTANTS_TYPESET
 Constant TokenTypeSet of all signed integral literal constants, namely: CONST_CHAR, CONST_INT and CONST_LONG.
BOND_API const TokenTypeSet Bond::JUMP_KEYWORDS_TYPESET
 Constant TokenTypeSet of all keywords used for jumps in Bond source code, namely: KEY_BREAK, KEY_CONTINUE and KEY_RETURN.
BOND_API const TokenTypeSet Bond::SWITCH_LABELS_TYPESET
 Constant TokenTypeSet of all keywords used for defining case labels in Bond switch statements, namely: KEY_CASE and KEY_DEFAULT.
BOND_API const TokenTypeSet Bond::ASSIGNMENT_OPERATORS_TYPESET
 Constant TokenTypeSet of all Bond assignment operators, namely: ASSIGN, ASSIGN_LEFT, ASSIGN_RIGHT, ASSIGN_PLUS, ASSIGN_MINUS, ASSIGN_MULT, ASSIGN_DIV, ASSIGN_MOD, ASSIGN_AND, ASSIGN_OR and ASSIGN_XOR.
BOND_API const TokenTypeSet Bond::EQUALITY_OPERATORS_TYPESET
 Constant TokenTypeSet of all Bond equality operators, namely: OP_EQUAL, OP_NOT_EQUAL.
BOND_API const TokenTypeSet Bond::RELATIONAL_OPERATORS_TYPESET
 Constant TokenTypeSet of all Bond relational operators, namely: OP_LT, OP_LTE, OP_GT and OP_GTE.
BOND_API const TokenTypeSet Bond::SHIFT_OPERATORS_TYPESET
 Constant TokenTypeSet of all Bond shift operators, namely: OP_LEFT and OP_RIGHT.
BOND_API const TokenTypeSet Bond::ADDITIVE_OPERATORS_TYPESET
 Constant TokenTypeSet of all Bond additive arithmetic operators, namely: OP_PLUS and OP_MINUS.
BOND_API const TokenTypeSet Bond::MULTIPLICATIVE_OPERATORS_TYPESET
 Constant TokenTypeSet of all Bond multiplicative arithmetic operators, namely: OP_STAR, OP_DIV and OP_MOD.
BOND_API const TokenTypeSet Bond::UNARY_OPERATORS_TYPESET
 Constant TokenTypeSet of all Bond prefix unary operators, namely: OP_PLUS, OP_MINUS, OP_STAR, OP_INC, OP_DEC, OP_NOT, OP_AMP and OP_BIT_NOT.
BOND_API const TokenTypeSet Bond::POSTFIX_OPERATORS_TYPESET
 Constant TokenTypeSet of all Bond postfix unary operators, namely: OP_INC, OP_DEC, OP_ARROW, OPAREN, OBRACKET and PERIOD.
BOND_API const TokenTypeSet Bond::PROPERTYOF_OPERATORS_TYPESET
 Constant TokenTypeSet of all Bond operators for retrieving type properties, namely: KEY_ALIGNOFand KEY_SIZEOF.
BOND_API const TokenTypeSet Bond::CONSTANT_LITERALS_TYPESET
 Constant TokenTypeSet of all Bond constant literals, namely: CONST_BOOL, CONST_CHAR, CONST_INT, CONST_UINT, CONST_LONG, CONST_ULONG, CONST_FLOAT, CONST_DOUBLE, CONST_STRING and CONST_NULL.
BOND_API const TokenTypeSet Bond::BLOCK_DELIMITERS_TYPESET
 Constant TokenTypeSet of tokens delimiting the end of a block of Bond source, namely: CBRACE and END.
BOND_API const TokenTypeSet Bond::DECLARATION_DELIMITERS_TYPESET
 Constant TokenTypeSet of tokens delimiting the end of Bond declarations, namely: KEY_ENUM, KEY_NAMESPACE, KEY_NATIVE, KEY_STRUCT, CBRACE, SEMICOLON, and END.
BOND_API const TokenTypeSet Bond::INCLUDE_AND_DECLARATION_DELIMITERS_TYPESET
 Constant TokenTypeSet of tokens delimiting the end of Bond declarations and includes, namely: KEY_ENUM, KEY_INCLUDE, KEY_NAMESPACE, KEY_NATIVE, KEY_STRUCT, CBRACE, SEMICOLON, and END.
BOND_API const TokenTypeSet Bond::ENUM_DELIMITERS_TYPESET
 Constant TokenTypeSet of tokens delimiting the end of Bond enum declarations, namely: CBRACE, SEMICOLON, and END.
BOND_API const TokenTypeSet Bond::ENUMERATOR_DELIMITERS_TYPESET
 Constant TokenTypeSet of tokens delimiting the end of Bond enumerator declarations, namely: CBRACE, SEMICOLON, and COMMA.
BOND_API const TokenTypeSet Bond::STRUCT_MEMBER_DELIMITERS_TYPESET
 Constant TokenTypeSet of tokens delimiting the end of Bond struct member declarations, namely: CBRACE and SEMICOLON.
BOND_API const TokenTypeSet Bond::INITIALIZER_DELIMITERS_TYPESET
 Constant TokenTypeSet of tokens delimiting the end of Bond initializers, namely: CBRACE, OBRACE and COMMA.
BOND_API const TokenTypeSet Bond::SWITCH_SECTION_DELIMITERS_TYPESET
 Constant TokenTypeSet of tokens delimiting the end of Bond switch statement sections, namely: KEY_CASE, KEY_DEFAULT, CBRACE and END.
BOND_API const TokenTypeSet Bond::STATEMENT_DELIMITERS_TYPESET
 Constant TokenTypeSet of tokens delimiting the end of Bond statements, namely: KEY_BREAK, KEY_CASE, KEY_CONTINUE, KEY_DEFAULT, KEY_DO, KEY_IF, KEY_FOR, KEY_RETURN, KEY_SWITCH, KEY_USING, KEY_WHILE, OBRACE, CBRACE and SEMICOLON.
BOND_API const TokenTypeSet Bond::LABEL_DELIMITERS_TYPESET
 Constant TokenTypeSet of tokens delimiting the end of Bond switch labels, namely: KEY_BREAK, KEY_CASE, KEY_CONTINUE, KEY_DEFAULT, KEY_DO, KEY_IF, KEY_FOR, KEY_RETURN, KEY_SWITCH, KEY_USING, KEY_WHILE, OBRACE, CBRACE, SEMICOLON and COLON.

Detailed Description

These classes form the parts of the Bond compiler.

Macro Definition Documentation

◆ BOND_COMPILER_ERROR_LIST

#define BOND_COMPILER_ERROR_LIST

An X-macro that lists every type of compiler error along with the format of its message.

To use it, define BOND_COMPILER_ERROR(type, format), expand BOND_COMPILER_ERROR_LIST and then undefine BOND_COMPILER_ERROR.

The format strings are not printf format strings. CompilerError::Print interprets the following directives, where an argument is arg0 unless the directive is preceded by a 0 or a 1 that selects arg0 or arg1 explicitly, e.g. "%1n":

  • %c: The text of the context Token.
  • %d: The argument as a signed integer.
  • %f: The file name of the argument, which is a Token.
  • %l: The line number of the argument, which is a Token.
  • %n: The argument, which is a ParseNode, pretty printed.
  • %s: The argument, which is a C-style string.
  • %t: The text of the argument, which is a Token.
  • %u: The argument as a Unicode code point, e.g. U+00E9.

◆ BOND_TOKEN_LIST

#define BOND_TOKEN_LIST

An X-macro that lists every type of Token.

To use it, define BOND_TOKEN_ITEM(item), expand BOND_TOKEN_LIST and then undefine BOND_TOKEN_ITEM. The argument of each item is the name of a Token::TokenType enumerator. INVALID is the type of a Token that could not be scanned, END is the type of the last Token of every TokenCollection, and NUM_TOKEN_TYPES is the number of types, not a valid type.

Typedef Documentation

◆ ParseNodeHandle

An owning pointer to a dynamically allocated ParseNode.

◆ ParseNodeStore

A collection of dynamically allocated ParseNodes.

◆ TokenCollectionHandle

An owning pointer to a dynamically allocated TokenCollection.

◆ TokenCollectionStore

A collection of dynamically allocated TokenCollection.

Function Documentation

◆ AreAssignableTypes()

BOND_API bool Bond::AreAssignableTypes ( const TypeDescriptor & fromType,
const TypeDescriptor & toType )

Returns whether a value of one type can be assigned to an object of another type.

The destination type must be assignable, i.e. a non-const lvalue that is not an array. Pointers can be assigned if the source is null or a void pointer, if the destination is a void pointer, or if they point to the same type. Values can be assigned if their types are convertible.

◆ AreComparableTypes()

BOND_API bool Bond::AreComparableTypes ( const TypeDescriptor & typeA,
const TypeDescriptor & typeB )

Returns whether values of the given types can be compared, i.e. whether both are pointers, both are numeric or both are bool.

◆ AreConvertibleTypes()

BOND_API bool Bond::AreConvertibleTypes ( const TypeDescriptor & fromType,
const TypeDescriptor & toType )

Returns whether a value of one type can be converted to another, i.e. whether the types are comparable or are the same struct or enum type.

◆ AreSameTypes()

BOND_API bool Bond::AreSameTypes ( const TypeDescriptor & fromType,
const TypeDescriptor & toType )

Returns whether two types are the same, recursing through pointers and arrays, where array lengths must also match. The comparison is not symmetric with respect to const: it fails if fromType is const and toType is not, at any level of indirection, but succeeds if only toType is const.

◆ CastNode() [1/2]

template<typename T>
const T * Bond::CastNode ( const ParseNode * node)

Returns the given ParseNode cast to the concrete type T, or null if its concrete type is not exactly T. The type is determined with a visitor rather than RTTI.

Parameters
nodeThe node to be cast, or null.

◆ CastNode() [2/2]

template<typename T>
T * Bond::CastNode ( ParseNode * node)

Returns the given ParseNode cast to the concrete type T, or null if its concrete type is not exactly T. The type is determined with a visitor rather than RTTI.

Parameters
nodeThe node to be cast, or null.

◆ CastValue() [1/2]

BOND_API Value Bond::CastValue ( const Token & fromValue,
Token::TokenType toType )

Converts the value of a constant literal Token to the given primitive type, as a C cast would.

Parameters
fromValueA Token whose type is a numeric or bool constant literal.
toTypeThe keyword Token type of the primitive type to convert to, e.g. KEY_INT.
Returns
The converted value, or a zero Value if the conversion is not supported.

◆ CastValue() [2/2]

BOND_API Value Bond::CastValue ( const TypeAndValue & fromTav,
const TypeDescriptor & toType )

Converts a compile-time constant value to the given primitive type, as a C cast would.

Parameters
fromTavThe type and value to convert. The value must be defined.
toTypeThe primitive type to convert to.
Returns
The converted value, or a zero Value if the conversion is not supported.

◆ CombineOperandTypes()

BOND_API TypeDescriptor Bond::CombineOperandTypes ( const TypeDescriptor & typeA,
const TypeDescriptor & typeB )

Returns the type in which a binary operation on operands of the given types is performed, following C's usual arithmetic conversions.

If either operand is a pointer, the result is that pointer type as an rvalue. Otherwise, double takes precedence over float, which takes precedence over the promoted integer types, among which the wider one wins and unsigned wins when the widths are equal.

◆ GetLength()

BOND_API uint32_t Bond::GetLength ( const ListParseNode * list)

Counts and returns the length of a list of ListParseNodes.

Parameters
listPointer to the list of nodes to be counted, or null.

◆ InsertNode()

template<typename NodeType, typename Comparator>
NodeType * Bond::InsertNode ( NodeType * head,
NodeType * node,
Comparator compare )

Inserts a node into a sorted list of ListParseNodes, after any nodes that compare equal to it.

Parameters
headThe first node of the list, or null if the list is empty.
nodeThe node to be inserted.
compareA strict weak ordering that returns whether its first argument precedes its second.
Returns
The first node of the resulting list.

◆ IsLossyConversion()

BOND_API bool Bond::IsLossyConversion ( const TypeAndValue & fromTav,
const TypeDescriptor & toType )

Returns whether converting a numeric value to the given numeric type may lose data.

If the value is a compile-time constant, the conversion is lossy only if the value is not exactly representable by the destination type. Otherwise, it is lossy if the destination type cannot represent every value of the source type. Conversions involving non-numeric types are never reported as lossy.

Parameters
fromTavThe type and value being converted.
toTypeThe type to which the value is converted.

◆ IsNegativeIntegerConstant()

BOND_API bool Bond::IsNegativeIntegerConstant ( const Token & token)

Returns whether the given Token is a signed integer constant literal whose value is negative.

◆ MayConvertNegativeToUnsigned()

BOND_API bool Bond::MayConvertNegativeToUnsigned ( const TypeAndValue & operandTav,
const TypeDescriptor & operationType )

Returns true if the operand has a signed integer type, the operation in which it is used has an unsigned integer type and the operand is not a constant known to be non-negative.

Parameters
operandTavThe type and value of the operand prior to promotion.
operationTypeThe type in which the operation is performed, as returned by CombineOperandTypes.

◆ NextNode()

template<typename NodeType>
NodeType * Bond::NextNode ( NodeType * list)

Returns the node that follows the given one in a list of ListParseNodes, cast to the same type, or null if it is the last node.

Parameters
listThe current node. It must not be null.

◆ PromoteType()

BOND_API TypeDescriptor Bond::PromoteType ( const TypeDescriptor & type)

Returns the type of an operand after C's integer promotions.

Integer types narrower than int are promoted to int, other numeric types and bool are unchanged, and pointers and arrays become pointer rvalues.

Variable Documentation

◆ ADDITIVE_OPERATORS_TYPESET

BOND_API const TokenTypeSet Bond::ADDITIVE_OPERATORS_TYPESET
extern

Constant TokenTypeSet of all Bond additive arithmetic operators, namely: OP_PLUS and OP_MINUS.

◆ ASSIGNMENT_OPERATORS_TYPESET

BOND_API const TokenTypeSet Bond::ASSIGNMENT_OPERATORS_TYPESET
extern

Constant TokenTypeSet of all Bond assignment operators, namely: ASSIGN, ASSIGN_LEFT, ASSIGN_RIGHT, ASSIGN_PLUS, ASSIGN_MINUS, ASSIGN_MULT, ASSIGN_DIV, ASSIGN_MOD, ASSIGN_AND, ASSIGN_OR and ASSIGN_XOR.

◆ BLOCK_DELIMITERS_TYPESET

BOND_API const TokenTypeSet Bond::BLOCK_DELIMITERS_TYPESET
extern

Constant TokenTypeSet of tokens delimiting the end of a block of Bond source, namely: CBRACE and END.

◆ BOOL_TOKEN

BOND_API const Token Bond::BOOL_TOKEN
extern

Constant Token of type KEY_BOOL representing the bool keyword.

◆ BOOLEAN_TYPE_SPECIFIERS_TYPESET

BOND_API const TokenTypeSet Bond::BOOLEAN_TYPE_SPECIFIERS_TYPESET
extern

Constant TokenTypeSet containing only KEY_BOOL.

◆ CHAR_TOKEN

BOND_API const Token Bond::CHAR_TOKEN
extern

Constant Token of type KEY_CHAR representing the char keyword.

◆ CHAR_TYPE_SPECIFIERS_TYPESET

BOND_API const TokenTypeSet Bond::CHAR_TYPE_SPECIFIERS_TYPESET
extern

Constant TokenTypeSet of all keywords representing Bond character types, namely: KEY_CHAR and KEY_UCHAR.

◆ CONSTANT_LITERALS_TYPESET

BOND_API const TokenTypeSet Bond::CONSTANT_LITERALS_TYPESET
extern

Constant TokenTypeSet of all Bond constant literals, namely: CONST_BOOL, CONST_CHAR, CONST_INT, CONST_UINT, CONST_LONG, CONST_ULONG, CONST_FLOAT, CONST_DOUBLE, CONST_STRING and CONST_NULL.

◆ DECLARATION_DELIMITERS_TYPESET

BOND_API const TokenTypeSet Bond::DECLARATION_DELIMITERS_TYPESET
extern

Constant TokenTypeSet of tokens delimiting the end of Bond declarations, namely: KEY_ENUM, KEY_NAMESPACE, KEY_NATIVE, KEY_STRUCT, CBRACE, SEMICOLON, and END.

◆ DOUBLE_TOKEN

BOND_API const Token Bond::DOUBLE_TOKEN
extern

Constant Token of type KEY_DOUBLE representing the double keyword.

◆ ENUM_DELIMITERS_TYPESET

BOND_API const TokenTypeSet Bond::ENUM_DELIMITERS_TYPESET
extern

Constant TokenTypeSet of tokens delimiting the end of Bond enum declarations, namely: CBRACE, SEMICOLON, and END.

◆ ENUMERATOR_DELIMITERS_TYPESET

BOND_API const TokenTypeSet Bond::ENUMERATOR_DELIMITERS_TYPESET
extern

Constant TokenTypeSet of tokens delimiting the end of Bond enumerator declarations, namely: CBRACE, SEMICOLON, and COMMA.

◆ EQUALITY_OPERATORS_TYPESET

BOND_API const TokenTypeSet Bond::EQUALITY_OPERATORS_TYPESET
extern

Constant TokenTypeSet of all Bond equality operators, namely: OP_EQUAL, OP_NOT_EQUAL.

◆ FLOAT_TOKEN

BOND_API const Token Bond::FLOAT_TOKEN
extern

Constant Token of type KEY_FLOAT representing the float keyword.

◆ INCLUDE_AND_DECLARATION_DELIMITERS_TYPESET

BOND_API const TokenTypeSet Bond::INCLUDE_AND_DECLARATION_DELIMITERS_TYPESET
extern

Constant TokenTypeSet of tokens delimiting the end of Bond declarations and includes, namely: KEY_ENUM, KEY_INCLUDE, KEY_NAMESPACE, KEY_NATIVE, KEY_STRUCT, CBRACE, SEMICOLON, and END.

◆ INITIALIZER_DELIMITERS_TYPESET

BOND_API const TokenTypeSet Bond::INITIALIZER_DELIMITERS_TYPESET
extern

Constant TokenTypeSet of tokens delimiting the end of Bond initializers, namely: CBRACE, OBRACE and COMMA.

◆ INT_TOKEN

BOND_API const Token Bond::INT_TOKEN
extern

Constant Token of type KEY_INT representing the int keyword.

◆ INTEGER_TYPE_SPECIFIERS_TYPESET

BOND_API const TokenTypeSet Bond::INTEGER_TYPE_SPECIFIERS_TYPESET
extern

Constant TokenTypeSet of all keywords representing Bond integral types, namely: KEY_CHAR, KEY_UCHAR, KEY_SHORT, KEY_USHORT, KEY_INT, KEY_UINT, KEY_LONG and KEY_ULONG.

◆ JUMP_KEYWORDS_TYPESET

BOND_API const TokenTypeSet Bond::JUMP_KEYWORDS_TYPESET
extern

Constant TokenTypeSet of all keywords used for jumps in Bond source code, namely: KEY_BREAK, KEY_CONTINUE and KEY_RETURN.

◆ LABEL_DELIMITERS_TYPESET

BOND_API const TokenTypeSet Bond::LABEL_DELIMITERS_TYPESET
extern

Constant TokenTypeSet of tokens delimiting the end of Bond switch labels, namely: KEY_BREAK, KEY_CASE, KEY_CONTINUE, KEY_DEFAULT, KEY_DO, KEY_IF, KEY_FOR, KEY_RETURN, KEY_SWITCH, KEY_USING, KEY_WHILE, OBRACE, CBRACE, SEMICOLON and COLON.

◆ LEAST32_INTEGER_TYPE_SPECIFIERS_TYPESET

BOND_API const TokenTypeSet Bond::LEAST32_INTEGER_TYPE_SPECIFIERS_TYPESET
extern

Constant TokenTypeSet of all keywords representing Bond integral types having at least 32 bits, namely: KEY_INT, KEY_UINT, KEY_LONG and KEY_ULONG.

◆ LONG_INTEGER_TYPE_SPECIFIERS_TYPESET

BOND_API const TokenTypeSet Bond::LONG_INTEGER_TYPE_SPECIFIERS_TYPESET
extern

Constant TokenTypeSet of all keywords representing Bond long integral types, namely: KEY_LONG and KEY_ULONG.

◆ LONG_TOKEN

BOND_API const Token Bond::LONG_TOKEN
extern

Constant Token of type KEY_LONG representing the long keyword.

◆ MOST32_INTEGER_CONSTANTS_TYPESET

BOND_API const TokenTypeSet Bond::MOST32_INTEGER_CONSTANTS_TYPESET
extern

Constant TokenTypeSet of all integral literal constants having at most 32 bits, namely: CONST_CHAR, CONST_INT and CONST_UINT.

◆ MOST32_INTEGER_TYPE_SPECIFIERS_TYPESET

BOND_API const TokenTypeSet Bond::MOST32_INTEGER_TYPE_SPECIFIERS_TYPESET
extern

Constant TokenTypeSet of all keywords representing Bond integral types having at most 32 bits, namely: KEY_CHAR, KEY_UCHAR, KEY_SHORT, KEY_USHORT, KEY_INT and KEY_UINT.

◆ MULTIPLICATIVE_OPERATORS_TYPESET

BOND_API const TokenTypeSet Bond::MULTIPLICATIVE_OPERATORS_TYPESET
extern

Constant TokenTypeSet of all Bond multiplicative arithmetic operators, namely: OP_STAR, OP_DIV and OP_MOD.

◆ NUMERIC_TYPE_SPECIFIERS_TYPESET

BOND_API const TokenTypeSet Bond::NUMERIC_TYPE_SPECIFIERS_TYPESET
extern

Constant TokenTypeSet of all keywords representing Bond numeric types, namely: KEY_CHAR, KEY_UCHAR, KEY_SHORT, KEY_USHORT, KEY_INT, KEY_UINT, KEY_LONG, KEY_ULONG, KEY_FLOAT and KEY_DOUBLE.

◆ POSTFIX_OPERATORS_TYPESET

BOND_API const TokenTypeSet Bond::POSTFIX_OPERATORS_TYPESET
extern

Constant TokenTypeSet of all Bond postfix unary operators, namely: OP_INC, OP_DEC, OP_ARROW, OPAREN, OBRACKET and PERIOD.

◆ PRIMITIVE_TYPE_SPECIFIERS_TYPESET

BOND_API const TokenTypeSet Bond::PRIMITIVE_TYPE_SPECIFIERS_TYPESET
extern

Constant TokenTypeSet of all keywords representing Bond primitive types namely: KEY_BOOL, KEY_CHAR, KEY_UCHAR, KEY_SHORT, KEY_USHORT, KEY_INT, KEY_UINT, KEY_LONG, KEY_ULONG, KEY_FLOAT, KEY_DOUBLE and KEY_VOID.

◆ PROPERTYOF_OPERATORS_TYPESET

BOND_API const TokenTypeSet Bond::PROPERTYOF_OPERATORS_TYPESET
extern

Constant TokenTypeSet of all Bond operators for retrieving type properties, namely: KEY_ALIGNOFand KEY_SIZEOF.

◆ RELATIONAL_OPERATORS_TYPESET

BOND_API const TokenTypeSet Bond::RELATIONAL_OPERATORS_TYPESET
extern

Constant TokenTypeSet of all Bond relational operators, namely: OP_LT, OP_LTE, OP_GT and OP_GTE.

◆ SHIFT_OPERATORS_TYPESET

BOND_API const TokenTypeSet Bond::SHIFT_OPERATORS_TYPESET
extern

Constant TokenTypeSet of all Bond shift operators, namely: OP_LEFT and OP_RIGHT.

◆ SIGNED_INTEGER_CONSTANTS_TYPESET

BOND_API const TokenTypeSet Bond::SIGNED_INTEGER_CONSTANTS_TYPESET
extern

Constant TokenTypeSet of all signed integral literal constants, namely: CONST_CHAR, CONST_INT and CONST_LONG.

◆ SIGNED_INTEGER_TYPE_SPECIFIERS_TYPESET

BOND_API const TokenTypeSet Bond::SIGNED_INTEGER_TYPE_SPECIFIERS_TYPESET
extern

Constant TokenTypeSet of all keywords representing Bond signed integral types, namely: KEY_CHAR, KEY_SHORT, KEY_INT and KEY_LONG.

◆ STATEMENT_DELIMITERS_TYPESET

BOND_API const TokenTypeSet Bond::STATEMENT_DELIMITERS_TYPESET
extern

Constant TokenTypeSet of tokens delimiting the end of Bond statements, namely: KEY_BREAK, KEY_CASE, KEY_CONTINUE, KEY_DEFAULT, KEY_DO, KEY_IF, KEY_FOR, KEY_RETURN, KEY_SWITCH, KEY_USING, KEY_WHILE, OBRACE, CBRACE and SEMICOLON.

◆ STRUCT_MEMBER_DELIMITERS_TYPESET

BOND_API const TokenTypeSet Bond::STRUCT_MEMBER_DELIMITERS_TYPESET
extern

Constant TokenTypeSet of tokens delimiting the end of Bond struct member declarations, namely: CBRACE and SEMICOLON.

◆ SWITCH_LABELS_TYPESET

BOND_API const TokenTypeSet Bond::SWITCH_LABELS_TYPESET
extern

Constant TokenTypeSet of all keywords used for defining case labels in Bond switch statements, namely: KEY_CASE and KEY_DEFAULT.

◆ SWITCH_SECTION_DELIMITERS_TYPESET

BOND_API const TokenTypeSet Bond::SWITCH_SECTION_DELIMITERS_TYPESET
extern

Constant TokenTypeSet of tokens delimiting the end of Bond switch statement sections, namely: KEY_CASE, KEY_DEFAULT, CBRACE and END.

◆ TYPE_DESCRIPTORS_TYPESET

BOND_API const TokenTypeSet Bond::TYPE_DESCRIPTORS_TYPESET
extern

Constant TokenTypeSet of all punctuation token types used to begin a new level of indirection in type descriptors, namely: OP_STAR and OBRACKET.

◆ UCHAR_TOKEN

BOND_API const Token Bond::UCHAR_TOKEN
extern

Constant Token of type KEY_UCHAR representing the uchar keyword.

◆ UINT_TOKEN

BOND_API const Token Bond::UINT_TOKEN
extern

Constant Token of type KEY_UINT representing the uint keyword.

◆ ULONG_TOKEN

BOND_API const Token Bond::ULONG_TOKEN
extern

Constant Token of type KEY_ULONG representing the ulong keyword.

◆ UNARY_OPERATORS_TYPESET

BOND_API const TokenTypeSet Bond::UNARY_OPERATORS_TYPESET
extern

Constant TokenTypeSet of all Bond prefix unary operators, namely: OP_PLUS, OP_MINUS, OP_STAR, OP_INC, OP_DEC, OP_NOT, OP_AMP and OP_BIT_NOT.

◆ UNSIGNED_INTEGER_TYPE_SPECIFIERS_TYPESET

BOND_API const TokenTypeSet Bond::UNSIGNED_INTEGER_TYPE_SPECIFIERS_TYPESET
extern

Constant TokenTypeSet of all keywords representing Bond unsigned integral types, namely: KEY_UCHAR, KEY_USHORT, KEY_UINT and KEY_ULONG.

◆ VOID_TOKEN

BOND_API const Token Bond::VOID_TOKEN
extern

Constant Token of type KEY_VOID representing the void keyword.

◆ VOID_TYPE_SPECIFIERS_TYPESET

BOND_API const TokenTypeSet Bond::VOID_TYPE_SPECIFIERS_TYPESET
extern

Constant TokenTypeSet containing only KEY_VOID.