You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

376 lines
19 KiB

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