// *INDENT-OFF*

#include "token_enum.h"

//! type that stores two chunks between those no space shall occur
struct no_space_table_t
{
   E_Token first;  //! first  chunk
   E_Token second; //! second chunk
};

/**
 * this table lists out all combos where a space MUST be present
 * E_Token::CT_UNKNOWN is a wildcard.
 *
 * TODO: some of these are no longer needed.
 */
const no_space_table_t add_space_table[] =
{
   { E_Token::CT_ACCESS,                E_Token::CT_TYPE                  },
   { E_Token::CT_ACCESS,                E_Token::CT_WORD                  },
   { E_Token::CT_ALIGN,                 E_Token::CT_PAREN_OPEN            },
   { E_Token::CT_AMP,                   E_Token::CT_WORD                  },
   { E_Token::CT_ANGLE_CLOSE,           E_Token::CT_BRACE_OPEN            },
   { E_Token::CT_ANNOTATION,            E_Token::CT_ANNOTATION            },
   { E_Token::CT_ANNOTATION,            E_Token::CT_TYPE                  },
   { E_Token::CT_ASM_COLON,             E_Token::CT_ASM_COLON             },
   { E_Token::CT_ASM_COLON,             E_Token::CT_STRING                },
   { E_Token::CT_ASM,                   E_Token::CT_FUNC_CALL             },
   { E_Token::CT_ASM,                   E_Token::CT_PAREN_OPEN            },
   { E_Token::CT_ASM,                   E_Token::CT_QUALIFIER             },
   { E_Token::CT_ASSERT,                E_Token::CT_PAREN_OPEN            },
   { E_Token::CT_ASSIGN_FUNC_PROTO,     E_Token::CT_DEFAULT               },
   { E_Token::CT_ASSIGN_FUNC_PROTO,     E_Token::CT_DELETE                },
   { E_Token::CT_ASSIGN_FUNC_PROTO,     E_Token::CT_NUMBER                },
   { E_Token::CT_ATTRIBUTE,             E_Token::CT_ATTRIBUTE             },
   { E_Token::CT_ATTRIBUTE,             E_Token::CT_BRACE_OPEN            },
   { E_Token::CT_ATTRIBUTE,             E_Token::CT_CASE                  },
   { E_Token::CT_ATTRIBUTE,             E_Token::CT_QUALIFIER             },
   { E_Token::CT_ATTRIBUTE,             E_Token::CT_TYPE                  },
   { E_Token::CT_ATTRIBUTE,             E_Token::CT_WORD                  },
   { E_Token::CT_AUTORELEASEPOOL,       E_Token::CT_BRACE_OPEN            },
   { E_Token::CT_BODY,                  E_Token::CT_BRACE_OPEN            },
   { E_Token::CT_BRACE_CLOSE,           E_Token::CT_BRACE_OPEN            },
   { E_Token::CT_BRACE_CLOSE,           E_Token::CT_CLASS                 },
   { E_Token::CT_BRACE_CLOSE,           E_Token::CT_FUNC_CALL             },
   { E_Token::CT_BRACE_CLOSE,           E_Token::CT_GETSET                },
   { E_Token::CT_BRACE_CLOSE,           E_Token::CT_IF                    },
   { E_Token::CT_BRACE_CLOSE,           E_Token::CT_OC_MSG_NAME           },
   { E_Token::CT_BRACE_CLOSE,           E_Token::CT_PAREN_OPEN            },
   { E_Token::CT_BRACE_CLOSE,           E_Token::CT_QUALIFIER             },
   { E_Token::CT_BRACE_CLOSE,           E_Token::CT_RETURN                },
   { E_Token::CT_BRACE_CLOSE,           E_Token::CT_TYPE                  },
   { E_Token::CT_BRACE_CLOSE,           E_Token::CT_WORD                  },
   { E_Token::CT_BREAK,                 E_Token::CT_WORD                  },
   { E_Token::CT_BYREF,                 E_Token::CT_INV                   },
   { E_Token::CT_CASE_COLON,            E_Token::CT_ATTRIBUTE             },
   { E_Token::CT_CASE_COLON,            E_Token::CT_BRACE_OPEN            },
   { E_Token::CT_CASE_COLON,            E_Token::CT_BREAK                 },
   { E_Token::CT_CASE_COLON,            E_Token::CT_RETURN                },
   { E_Token::CT_CASE_COLON,            E_Token::CT_WORD                  },
   { E_Token::CT_CASE,                  E_Token::CT_NEG                   },
   { E_Token::CT_CASE,                  E_Token::CT_PAREN_OPEN            },
   { E_Token::CT_CASE,                  E_Token::CT_STRING                },
   { E_Token::CT_CATCH,                 E_Token::CT_FUNC_CALL             },
   { E_Token::CT_CLASS_COLON,           E_Token::CT_FUNC_CALL             },
   { E_Token::CT_CLASS_COLON,           E_Token::CT_QUALIFIER             },
   { E_Token::CT_CLASS_COLON,           E_Token::CT_TYPE                  },
   { E_Token::CT_CLASS_COLON,           E_Token::CT_WORD                  },
   { E_Token::CT_COLON,                 E_Token::CT_COLON                 },
   { E_Token::CT_COLON,                 E_Token::CT_NUMBER                },
   { E_Token::CT_COLON,                 E_Token::CT_QUALIFIER             },
   { E_Token::CT_COLON,                 E_Token::CT_STRING                },
   { E_Token::CT_COLON,                 E_Token::CT_TYPE                  },
   { E_Token::CT_COLON,                 E_Token::CT_WORD                  },
   { E_Token::CT_COMMENT_EMBED,         E_Token::CT_FUNC_CLASS_PROTO      },
   { E_Token::CT_COMMENT_MULTI,         E_Token::CT_ELSE                  },
   { E_Token::CT_CONCAT,                E_Token::CT_STRING                },
   { E_Token::CT_CONCAT,                E_Token::CT_WORD                  },
   { E_Token::CT_COND_COLON,            E_Token::CT_FUNC_CALL             },
   { E_Token::CT_COND_COLON,            E_Token::CT_STRING                },
   { E_Token::CT_COND_COLON,            E_Token::CT_WORD                  },
   { E_Token::CT_CONSTRUCT,             E_Token::CT_TYPE                  },
   { E_Token::CT_CONTINUE,              E_Token::CT_WORD                  },
   { E_Token::CT_CS_PROPERTY,           E_Token::CT_BRACE_OPEN            },
   { E_Token::CT_DEFAULT,               E_Token::CT_STRING                },
   { E_Token::CT_DEFAULT,               E_Token::CT_WORD                  },
   { E_Token::CT_DELEGATE,              E_Token::CT_BRACE_OPEN            },
   { E_Token::CT_D_MODULE,              E_Token::CT_WORD                  },
   { E_Token::CT_ELLIPSIS,              E_Token::CT_NUMBER                },
   { E_Token::CT_ELSE,                  E_Token::CT_FOR                   },
   { E_Token::CT_ELSE,                  E_Token::CT_IF                    },
   { E_Token::CT_ELSE,                  E_Token::CT_PAREN_OPEN            },
   { E_Token::CT_ELSE,                  E_Token::CT_WORD                  },
   { E_Token::CT_ELSEIF,                E_Token::CT_CONSTEXPR             },
   { E_Token::CT_ENUM_CLASS,            E_Token::CT_ATTRIBUTE             },
   { E_Token::CT_ENUM_CLASS,            E_Token::CT_TYPE                  },
   { E_Token::CT_ENUM,                  E_Token::CT_ATTRIBUTE             },
   { E_Token::CT_ENUM,                  E_Token::CT_BRACE_OPEN            },
   { E_Token::CT_ENUM,                  E_Token::CT_ENUM_CLASS            },
   { E_Token::CT_ENUM,                  E_Token::CT_FPAREN_OPEN           },
   { E_Token::CT_ENUM,                  E_Token::CT_FUNCTION              },
   { E_Token::CT_ENUM,                  E_Token::CT_TYPE                  },
   { E_Token::CT_ENUM,                  E_Token::CT_WORD                  },
   { E_Token::CT_EXECUTION_CONTEXT,     E_Token::CT_EXECUTION_CONTEXT     },
   { E_Token::CT_EXECUTION_CONTEXT,     E_Token::CT_FPAREN_OPEN           },
   { E_Token::CT_EXTERN,                E_Token::CT_STRING                },
   { E_Token::CT_FPAREN_CLOSE,          E_Token::CT_ASSIGN_FUNC_PROTO     },
   { E_Token::CT_FPAREN_CLOSE,          E_Token::CT_ATTRIBUTE             },
   { E_Token::CT_FPAREN_CLOSE,          E_Token::CT_CLASS_COLON           },
   { E_Token::CT_FPAREN_CLOSE,          E_Token::CT_COND_COLON            },
   { E_Token::CT_FPAREN_CLOSE,          E_Token::CT_DEFAULT               },
   { E_Token::CT_FPAREN_CLOSE,          E_Token::CT_FUNC_CALL             },
   { E_Token::CT_FPAREN_CLOSE,          E_Token::CT_NEG                   },
   { E_Token::CT_FPAREN_CLOSE,          E_Token::CT_NOT                   },
   { E_Token::CT_FPAREN_CLOSE,          E_Token::CT_OC_MSG_NAME           },
   { E_Token::CT_FPAREN_CLOSE,          E_Token::CT_QUESTION              },
   { E_Token::CT_FPAREN_CLOSE,          E_Token::CT_STRING                },
   { E_Token::CT_FPAREN_CLOSE,          E_Token::CT_THROW                 },
   { E_Token::CT_FPAREN_CLOSE,          E_Token::CT_TYPE                  },
   { E_Token::CT_FPAREN_CLOSE,          E_Token::CT_WHERE_SPEC            },
   { E_Token::CT_FPAREN_CLOSE,          E_Token::CT_WORD                  },
   { E_Token::CT_FRIEND,                E_Token::CT_CLASS                 },
   { E_Token::CT_FRIEND,                E_Token::CT_STRUCT                },
   { E_Token::CT_FRIEND,                E_Token::CT_TYPE                  },
   { E_Token::CT_FUNCTION,              E_Token::CT_PAREN_OPEN            },
   { E_Token::CT_FUNC_VAR,              E_Token::CT_PPAREN_CLOSE          },
   { E_Token::CT_GOTO,                  E_Token::CT_WORD                  },
   { E_Token::CT_IF,                    E_Token::CT_CONSTEXPR             },
   { E_Token::CT_IGNORED,               E_Token::CT_IGNORED               },
   { E_Token::CT_IMPORT,                E_Token::CT_WORD                  },
   { E_Token::CT_INCDEC_AFTER,          E_Token::CT_DEREF                 },
   { E_Token::CT_IN,                    E_Token::CT_TYPE                  },
   { E_Token::CT_IN,                    E_Token::CT_WORD                  },
   { E_Token::CT_LABEL_COLON,           E_Token::CT_CS_PROPERTY           },
   { E_Token::CT_LABEL_COLON,           E_Token::CT_FUNC_CALL             },
   { E_Token::CT_LABEL_COLON,           E_Token::CT_NEW                   },
   { E_Token::CT_LABEL_COLON,           E_Token::CT_PAREN_OPEN            },
   { E_Token::CT_LABEL_COLON,           E_Token::CT_RETURN                },
   { E_Token::CT_LABEL_COLON,           E_Token::CT_STRING                },
   { E_Token::CT_LABEL_COLON,           E_Token::CT_TYPE                  },
   { E_Token::CT_LABEL_COLON,           E_Token::CT_WORD                  },
   { E_Token::CT_LOCK,                  E_Token::CT_PAREN_OPEN            },
   { E_Token::CT_NAMESPACE,             E_Token::CT_BRACE_OPEN            },
   { E_Token::CT_NAMESPACE,             E_Token::CT_TYPE                  },
   { E_Token::CT_NAMESPACE,             E_Token::CT_WORD                  },
   { E_Token::CT_NATIVE,                E_Token::CT_TAG                   },
   { E_Token::CT_NUMBER,                E_Token::CT_CHAR                  },
   { E_Token::CT_NUMBER,                E_Token::CT_COLON                 },
   { E_Token::CT_NUMBER,                E_Token::CT_ELLIPSIS              },
   { E_Token::CT_NUMBER,                E_Token::CT_OC_MSG_NAME           },
   { E_Token::CT_NUMBER,                E_Token::CT_PAREN_OPEN            },
   { E_Token::CT_NUMBER,                E_Token::CT_WORD                  },
   { E_Token::CT_NUMBER_FP,             E_Token::CT_NUMBER                },
   { E_Token::CT_NUMBER_FP,             E_Token::CT_OC_MSG_NAME           },
   { E_Token::CT_NUMBER_FP,             E_Token::CT_WORD                  },
   { E_Token::CT_OC_CLASS,              E_Token::CT_CLASS_COLON           },
   { E_Token::CT_OC_CLASS,              E_Token::CT_PAREN_OPEN            },
   { E_Token::CT_OC_DYNAMIC,            E_Token::CT_WORD                  },
   { E_Token::CT_OC_IMPL,               E_Token::CT_OC_CLASS              },
   { E_Token::CT_OC_INTF,               E_Token::CT_OC_CLASS              },
   { E_Token::CT_OC_MSG_DECL,           E_Token::CT_BRACE_OPEN            },
   { E_Token::CT_OC_PROTOCOL,           E_Token::CT_OC_CLASS              },
   { E_Token::CT_PACKAGE,               E_Token::CT_WORD                  },
   { E_Token::CT_PAREN_CLOSE,           E_Token::CT_ASM_COLON             },
   { E_Token::CT_PAREN_CLOSE,           E_Token::CT_COLON                 },
   { E_Token::CT_PAREN_CLOSE,           E_Token::CT_COND_COLON            },
   { E_Token::CT_PAREN_CLOSE,           E_Token::CT_CS_PROPERTY           },
   { E_Token::CT_PAREN_CLOSE,           E_Token::CT_DEREF                 },
   { E_Token::CT_PAREN_CLOSE,           E_Token::CT_NOT                   },
   { E_Token::CT_PAREN_CLOSE,           E_Token::CT_NUMBER                },
   { E_Token::CT_PAREN_CLOSE,           E_Token::CT_OC_MSG_NAME           },
   { E_Token::CT_PAREN_CLOSE,           E_Token::CT_POS                   },
   { E_Token::CT_PAREN_CLOSE,           E_Token::CT_QUALIFIER             },
   { E_Token::CT_PAREN_CLOSE,           E_Token::CT_TYPE                  },
   { E_Token::CT_PP_DEFINE,             E_Token::CT_MACRO                 },
   { E_Token::CT_PP_DEFINE,             E_Token::CT_MACRO_FUNC            },
   { E_Token::CT_PP_DEFINE,             E_Token::CT_NUMBER                },
   { E_Token::CT_PP_DEFINE,             E_Token::CT_PP_IGNORE             },
   { E_Token::CT_PP_DEFINED,            E_Token::CT_TYPE                  },
   { E_Token::CT_PP_DEFINED,            E_Token::CT_WORD                  },
   { E_Token::CT_PP_ELSE,               E_Token::CT_FUNC_CALL             },
   { E_Token::CT_PP_ELSE,               E_Token::CT_NOT                   },
   { E_Token::CT_PP_ELSE,               E_Token::CT_NUMBER                },
   { E_Token::CT_PP_ELSE,               E_Token::CT_PAREN_OPEN            },
   { E_Token::CT_PP_ELSE,               E_Token::CT_PP_DEFINED            },
   { E_Token::CT_PP_ELSE,               E_Token::CT_WORD                  },
   { E_Token::CT_PP_EMIT,               E_Token::CT_MACRO                 },
   { E_Token::CT_PP_ENDIF,              E_Token::CT_WORD                  },
   { E_Token::CT_PP_ENDREGION,          E_Token::CT_PREPROC_BODY          },
   { E_Token::CT_PP_IF,                 E_Token::CT_CNG_HASINC            },
   { E_Token::CT_PP_IF,                 E_Token::CT_FUNC_CALL             },
   { E_Token::CT_PP_IF,                 E_Token::CT_NOT                   },
   { E_Token::CT_PP_IF,                 E_Token::CT_NUMBER                },
   { E_Token::CT_PP_IF,                 E_Token::CT_PAREN_OPEN            },
   { E_Token::CT_PP_IF,                 E_Token::CT_PP_ASM                },
   { E_Token::CT_PP_IF,                 E_Token::CT_PP_DEFINE             },
   { E_Token::CT_PP_IF,                 E_Token::CT_PP_DEFINED            },
   { E_Token::CT_PP_IF,                 E_Token::CT_TYPE                  },
   { E_Token::CT_PP_IF,                 E_Token::CT_WORD                  },
   { E_Token::CT_PP_INCLUDE,            E_Token::CT_STRING                },
   { E_Token::CT_PP_INCLUDE,            E_Token::CT_WORD                  },
   { E_Token::CT_PP_OTHER,              E_Token::CT_PREPROC_BODY          },
   { E_Token::CT_PP_PRAGMA,             E_Token::CT_PP_ENDASM             },
   { E_Token::CT_PP_PRAGMA,             E_Token::CT_PP_ENDREGION          },
   { E_Token::CT_PP_PRAGMA,             E_Token::CT_PP_REGION             },
   { E_Token::CT_PP_PROPERTY,           E_Token::CT_WORD                  },
   { E_Token::CT_PP_REGION,             E_Token::CT_IGNORED               },
   { E_Token::CT_PP_REGION,             E_Token::CT_PREPROC_BODY          },
   { E_Token::CT_PP_UNDEF,              E_Token::CT_TYPE                  },
   { E_Token::CT_PP_UNDEF,              E_Token::CT_WORD                  },
   { E_Token::CT_Q_EMIT,                E_Token::CT_FUNC_CALL             },
   { E_Token::CT_Q_FOREVER,             E_Token::CT_BRACE_OPEN            },
   { E_Token::CT_QUESTION,              E_Token::CT_FUNC_CALL             },
   { E_Token::CT_QUESTION,              E_Token::CT_PAREN_OPEN            },
   { E_Token::CT_QUESTION,              E_Token::CT_STRING                },
   { E_Token::CT_QUESTION,              E_Token::CT_WORD                  },
   { E_Token::CT_SBOOL,                 E_Token::CT_TYPE                  },
   { E_Token::CT_SCOMPARE,              E_Token::CT_WORD                  },
   { E_Token::CT_SPAREN_CLOSE,          E_Token::CT_ATTRIBUTE             },
   { E_Token::CT_SPAREN_CLOSE,          E_Token::CT_AUTORELEASEPOOL       },
   { E_Token::CT_SPAREN_CLOSE,          E_Token::CT_BRACE_OPEN            },
   { E_Token::CT_SPAREN_CLOSE,          E_Token::CT_FUNC_CALL             },
   { E_Token::CT_SPAREN_CLOSE,          E_Token::CT_WORD                  },
   { E_Token::CT_SQL_ASSIGN,            E_Token::CT_FUNC_CALL             },
   { E_Token::CT_SQL_ASSIGN,            E_Token::CT_WORD                  },
   { E_Token::CT_SQL_BEGIN,             E_Token::CT_SQL_WORD              },
   { E_Token::CT_SQL_END,               E_Token::CT_SQL_WORD              },
   { E_Token::CT_SQL_EXEC,              E_Token::CT_SQL_WORD              },
   { E_Token::CT_SQL_WORD,              E_Token::CT_COLON                 },
   { E_Token::CT_SQL_WORD,              E_Token::CT_PAREN_OPEN            },
   { E_Token::CT_SQL_WORD,              E_Token::CT_SQL_WORD              },
   { E_Token::CT_SQUARE_CLOSE,          E_Token::CT_ATTRIBUTE             },
   { E_Token::CT_SQUARE_CLOSE,          E_Token::CT_BRACE_OPEN            },
   { E_Token::CT_SQUARE_CLOSE,          E_Token::CT_COLON                 },
   { E_Token::CT_SQUARE_CLOSE,          E_Token::CT_EXECUTION_CONTEXT     },
   { E_Token::CT_SQUARE_CLOSE,          E_Token::CT_OC_MSG_NAME           },
   { E_Token::CT_SQUARE_CLOSE,          E_Token::CT_STRING                },
   { E_Token::CT_SQUARE_CLOSE,          E_Token::CT_WORD                  },
   { E_Token::CT_STATE,                 E_Token::CT_TYPE                  },
   { E_Token::CT_STOCK,                 E_Token::CT_QUALIFIER             },
   { E_Token::CT_STOCK,                 E_Token::CT_TAG                   },
   { E_Token::CT_STRING,                E_Token::CT_ATTRIBUTE             },
   { E_Token::CT_STRING,                E_Token::CT_BRACE_OPEN            },
   { E_Token::CT_STRING,                E_Token::CT_COLON                 },
   { E_Token::CT_STRING,                E_Token::CT_CONCAT                },
   { E_Token::CT_STRING,                E_Token::CT_OC_MSG_NAME           },
   { E_Token::CT_STRING,                E_Token::CT_PAREN_OPEN            },
   { E_Token::CT_STRING,                E_Token::CT_STRUCT                },
   { E_Token::CT_STRING,                E_Token::CT_TYPE                  },
   { E_Token::CT_STRING,                E_Token::CT_WORD                  },
   { E_Token::CT_STRUCT,                E_Token::CT_BRACE_OPEN            },
   { E_Token::CT_STRUCT,                E_Token::CT_CLASS_COLON           },
   { E_Token::CT_STRUCT,                E_Token::CT_MACRO_FUNC_CALL       },
   { E_Token::CT_STRUCT,                E_Token::CT_WORD                  },
   { E_Token::CT_TEMPLATE,              E_Token::CT_CLASS                 },
   { E_Token::CT_TEMPLATE,              E_Token::CT_TYPE                  },
   { E_Token::CT_THIS,                  E_Token::CT_OC_MSG_NAME           },
   { E_Token::CT_THIS,                  E_Token::CT_TYPE                  },
   { E_Token::CT_TSQUARE,               E_Token::CT_BRACE_OPEN            },
   { E_Token::CT_TSQUARE,               E_Token::CT_PAREN_OPEN            },
   { E_Token::CT_TSQUARE,               E_Token::CT_WORD                  },
   { E_Token::CT_TYPEDEF,               E_Token::CT_ENUM                  },
   { E_Token::CT_TYPEDEF,               E_Token::CT_FUNC_TYPE             },
   { E_Token::CT_TYPEDEF,               E_Token::CT_PAREN_OPEN            },
   { E_Token::CT_TYPEDEF,               E_Token::CT_QUALIFIER             },
   { E_Token::CT_TYPEDEF,               E_Token::CT_STRUCT                },
   { E_Token::CT_TYPEDEF,               E_Token::CT_TYPE                  },
   { E_Token::CT_TYPEDEF,               E_Token::CT_TYPENAME              },
   { E_Token::CT_TYPEDEF,               E_Token::CT_UNION                 },
   { E_Token::CT_TYPENAME,              E_Token::CT_ELLIPSIS              },
   { E_Token::CT_TYPENAME,              E_Token::CT_WORD                  },
   { E_Token::CT_UNION,                 E_Token::CT_BRACE_OPEN            },
   { E_Token::CT_UNION,                 E_Token::CT_TYPE                  },
   { E_Token::CT_UNION,                 E_Token::CT_WORD                  },
   { E_Token::CT_USING,                 E_Token::CT_NAMESPACE             },
   { E_Token::CT_USING,                 E_Token::CT_TYPE                  },
   { E_Token::CT_USING,                 E_Token::CT_WORD                  },
   { E_Token::CT_USING_STMT,            E_Token::CT_PAREN_OPEN            },
   { E_Token::CT_VOLATILE,              E_Token::CT_BRACE_OPEN            },
   { E_Token::CT_WHERE_COLON,           E_Token::CT_CS_PROPERTY           },
   { E_Token::CT_WHERE_COLON,           E_Token::CT_NEW                   },
   { E_Token::CT_WHERE_COLON,           E_Token::CT_TYPE                  },
   { E_Token::CT_WHERE_COLON,           E_Token::CT_WORD                  },
   { E_Token::CT_WHERE_SPEC,            E_Token::CT_WORD                  },
   { E_Token::CT_WORD,                  E_Token::CT_ATTRIBUTE             },
   { E_Token::CT_WORD,                  E_Token::CT_BRACE_OPEN            },
   { E_Token::CT_WORD,                  E_Token::CT_CLASS_COLON           },
   { E_Token::CT_WORD,                  E_Token::CT_COLON                 },
   { E_Token::CT_WORD,                  E_Token::CT_COMMENT_CPP           },
   { E_Token::CT_WORD,                  E_Token::CT_CONCAT                },
   { E_Token::CT_WORD,                  E_Token::CT_ELLIPSIS              },
   { E_Token::CT_WORD,                  E_Token::CT_IN                    },
   { E_Token::CT_WORD,                  E_Token::CT_NEW                   },
   { E_Token::CT_WORD,                  E_Token::CT_NOT                   },
   { E_Token::CT_WORD,                  E_Token::CT_NUMBER                },
   { E_Token::CT_WORD,                  E_Token::CT_NUMBER_FP             },
   { E_Token::CT_WORD,                  E_Token::CT_OPERATOR              },
   { E_Token::CT_WORD,                  E_Token::CT_QUALIFIER             },
   { E_Token::CT_WORD,                  E_Token::CT_QUESTION              },
   { E_Token::CT_WORD,                  E_Token::CT_SCOMPARE              },
   { E_Token::CT_WORD,                  E_Token::CT_SQL_ASSIGN            },
   { E_Token::CT_WORD,                  E_Token::CT_STRING                },
   { E_Token::CT_WORD,                  E_Token::CT_STRUCT                },
   { E_Token::CT_WORD,                  E_Token::CT_TYPE                  },
   { E_Token::CT_WORD,                  E_Token::CT_TYPE_CAST             },
   { E_Token::CT_WORD,                  E_Token::CT_TYPEDEF               },
   { E_Token::CT_WORD,                  E_Token::CT_WHERE_COLON           },
   { E_Token::CT_WORD,                  E_Token::CT_WHERE_SPEC            },
   { E_Token::CT_WORD,                  E_Token::CT_WORD                  },
};

/**
 * this table lists out all combos where a space should NOT be present
 * E_Token::CT_UNKNOWN is a wildcard.
 *
 * TODO: some of these are no longer needed.
 */
const no_space_table_t no_space_table[] =
{
   { E_Token::CT_OC_AT,          E_Token::CT_UNKNOWN      },
   { E_Token::CT_INCDEC_BEFORE,  E_Token::CT_WORD         },
   { E_Token::CT_UNKNOWN,        E_Token::CT_INCDEC_AFTER },
   { E_Token::CT_UNKNOWN,        E_Token::CT_LABEL_COLON  },
   { E_Token::CT_UNKNOWN,        E_Token::CT_ACCESS_COLON },
   { E_Token::CT_UNKNOWN,        E_Token::CT_SEMICOLON    },
   { E_Token::CT_UNKNOWN,        E_Token::CT_D_TEMPLATE   },
   { E_Token::CT_D_TEMPLATE,     E_Token::CT_UNKNOWN      },
   { E_Token::CT_MACRO_FUNC,     E_Token::CT_FPAREN_OPEN  },
   { E_Token::CT_PAREN_OPEN,     E_Token::CT_UNKNOWN      },
   { E_Token::CT_UNKNOWN,        E_Token::CT_PAREN_CLOSE  },
   { E_Token::CT_FPAREN_OPEN,    E_Token::CT_UNKNOWN      },
   { E_Token::CT_UNKNOWN,        E_Token::CT_SPAREN_CLOSE },
   { E_Token::CT_SPAREN_OPEN,    E_Token::CT_UNKNOWN      },
   { E_Token::CT_UNKNOWN,        E_Token::CT_FPAREN_CLOSE },
   { E_Token::CT_UNKNOWN,        E_Token::CT_COMMA        },
   { E_Token::CT_POS,            E_Token::CT_UNKNOWN      },
   { E_Token::CT_STAR,           E_Token::CT_UNKNOWN      },
   { E_Token::CT_VBRACE_CLOSE,   E_Token::CT_UNKNOWN      },
   { E_Token::CT_VBRACE_OPEN,    E_Token::CT_UNKNOWN      },
   { E_Token::CT_UNKNOWN,        E_Token::CT_VBRACE_CLOSE },
   { E_Token::CT_UNKNOWN,        E_Token::CT_VBRACE_OPEN  },
   { E_Token::CT_PREPROC,        E_Token::CT_UNKNOWN      },
   { E_Token::CT_PREPROC_INDENT, E_Token::CT_UNKNOWN      },
   { E_Token::CT_NEG,            E_Token::CT_UNKNOWN      },
   { E_Token::CT_UNKNOWN,        E_Token::CT_SQUARE_OPEN  },
   { E_Token::CT_UNKNOWN,        E_Token::CT_SQUARE_CLOSE },
   { E_Token::CT_SQUARE_OPEN,    E_Token::CT_UNKNOWN      },
   { E_Token::CT_PAREN_CLOSE,    E_Token::CT_WORD         },
   { E_Token::CT_PAREN_CLOSE,    E_Token::CT_FUNC_DEF     },
   { E_Token::CT_PAREN_CLOSE,    E_Token::CT_FUNC_CALL    },
   { E_Token::CT_PAREN_CLOSE,    E_Token::CT_ADDR         },
   { E_Token::CT_PAREN_CLOSE,    E_Token::CT_FPAREN_OPEN  },
   { E_Token::CT_OC_SEL_NAME,    E_Token::CT_OC_SEL_NAME  },
   { E_Token::CT_TYPENAME,       E_Token::CT_TYPE         },
};

/**
 * this table lists out all combos where nothing is to do
 * E_Token::CT_UNKNOWN is a wildcard.
 *
 * TODO: some of these are no longer needed.
 */
const no_space_table_t IGNORE_space_table[] =
{
   { E_Token::CT_NUMBER_FP,    E_Token::CT_PAREN_OPEN},
   { E_Token::CT_PAREN_CLOSE,    E_Token::CT_SIZEOF},
   { E_Token::CT_SQUARE_CLOSE,   E_Token::CT_INCDEC_BEFORE},
};


// *INDENT-ON*
