| 49 | } |
| 50 | |
| 51 | static char classifyWordSQL(unsigned int start, |
| 52 | unsigned int end, |
| 53 | WordList *keywordlists[], |
| 54 | Accessor &styler, |
| 55 | unsigned int actualState, |
| 56 | unsigned int prevState) { |
| 57 | char s[256]; |
| 58 | bool wordIsNumber = isdigit(styler[start]) || (styler[start] == '.'); |
| 59 | |
| 60 | WordList &kwStatements = *keywordlists[KW_MSSQL_STATEMENTS]; |
| 61 | WordList &kwDataTypes = *keywordlists[KW_MSSQL_DATA_TYPES]; |
| 62 | WordList &kwSystemTables = *keywordlists[KW_MSSQL_SYSTEM_TABLES]; |
| 63 | WordList &kwGlobalVariables = *keywordlists[KW_MSSQL_GLOBAL_VARIABLES]; |
| 64 | WordList &kwFunctions = *keywordlists[KW_MSSQL_FUNCTIONS]; |
| 65 | WordList &kwStoredProcedures = *keywordlists[KW_MSSQL_STORED_PROCEDURES]; |
| 66 | WordList &kwOperators = *keywordlists[KW_MSSQL_OPERATORS]; |
| 67 | |
| 68 | for (unsigned int i = 0; i < end - start + 1 && i < 128; i++) { |
| 69 | s[i] = static_cast<char>(tolower(styler[start + i])); |
| 70 | s[i + 1] = '\0'; |
| 71 | } |
| 72 | char chAttr = SCE_MSSQL_IDENTIFIER; |
| 73 | |
| 74 | if (actualState == SCE_MSSQL_GLOBAL_VARIABLE) { |
| 75 | |
| 76 | if (kwGlobalVariables.InList(&s[2])) |
| 77 | chAttr = SCE_MSSQL_GLOBAL_VARIABLE; |
| 78 | |
| 79 | } else if (wordIsNumber) { |
| 80 | chAttr = SCE_MSSQL_NUMBER; |
| 81 | |
| 82 | } else if (prevState == SCE_MSSQL_DEFAULT_PREF_DATATYPE) { |
| 83 | // Look first in datatypes |
| 84 | if (kwDataTypes.InList(s)) |
| 85 | chAttr = SCE_MSSQL_DATATYPE; |
| 86 | else if (kwOperators.InList(s)) |
| 87 | chAttr = SCE_MSSQL_OPERATOR; |
| 88 | else if (kwStatements.InList(s)) |
| 89 | chAttr = SCE_MSSQL_STATEMENT; |
| 90 | else if (kwSystemTables.InList(s)) |
| 91 | chAttr = SCE_MSSQL_SYSTABLE; |
| 92 | else if (kwFunctions.InList(s)) |
| 93 | chAttr = SCE_MSSQL_FUNCTION; |
| 94 | else if (kwStoredProcedures.InList(s)) |
| 95 | chAttr = SCE_MSSQL_STORED_PROCEDURE; |
| 96 | |
| 97 | } else { |
| 98 | if (kwOperators.InList(s)) |
| 99 | chAttr = SCE_MSSQL_OPERATOR; |
| 100 | else if (kwStatements.InList(s)) |
| 101 | chAttr = SCE_MSSQL_STATEMENT; |
| 102 | else if (kwSystemTables.InList(s)) |
| 103 | chAttr = SCE_MSSQL_SYSTABLE; |
| 104 | else if (kwFunctions.InList(s)) |
| 105 | chAttr = SCE_MSSQL_FUNCTION; |
| 106 | else if (kwStoredProcedures.InList(s)) |
| 107 | chAttr = SCE_MSSQL_STORED_PROCEDURE; |
| 108 | else if (kwDataTypes.InList(s)) |
no test coverage detected