diff options
| author | Neil <nyamatongwe@gmail.com> | 2018-05-22 16:39:23 +1000 | 
|---|---|---|
| committer | Neil <nyamatongwe@gmail.com> | 2018-05-22 16:39:23 +1000 | 
| commit | 18e8facccc354accf959e4921c5127aac3c3a8ac (patch) | |
| tree | 3a9bd642e6f1ab80eabf86b7dbbe2631c022fcc7 /lexers/LexHTML.cxx | |
| parent | c8bb8d0fbba6d41ac0cb83a62ae805a466ce4f99 (diff) | |
| download | scintilla-mirror-18e8facccc354accf959e4921c5127aac3c3a8ac.tar.gz | |
Move static functions into anonymous namespace and drop "static".
Move data tables to end of local functions.
These changes have no strong effect - this change set just tries to simplify
the following change set which makes more significant changes.
Diffstat (limited to 'lexers/LexHTML.cxx')
| -rw-r--r-- | lexers/LexHTML.cxx | 450 | 
1 files changed, 225 insertions, 225 deletions
| diff --git a/lexers/LexHTML.cxx b/lexers/LexHTML.cxx index 948617184..5551277e5 100644 --- a/lexers/LexHTML.cxx +++ b/lexers/LexHTML.cxx @@ -26,6 +26,8 @@  using namespace Scintilla; +namespace { +  #define SCE_HA_JS (SCE_HJA_START - SCE_HJ_START)  #define SCE_HA_VBS (SCE_HBA_START - SCE_HB_START)  #define SCE_HA_PYTHON (SCE_HPA_START - SCE_HP_START) @@ -33,11 +35,11 @@ using namespace Scintilla;  enum script_type { eScriptNone = 0, eScriptJS, eScriptVBS, eScriptPython, eScriptPHP, eScriptXML, eScriptSGML, eScriptSGMLblock, eScriptComment };  enum script_mode { eHtml = 0, eNonHtmlScript, eNonHtmlPreProc, eNonHtmlScriptPreProc }; -static inline bool IsAWordChar(const int ch) { +inline bool IsAWordChar(const int ch) {  	return (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_');  } -static inline bool IsAWordStart(const int ch) { +inline bool IsAWordStart(const int ch) {  	return (ch < 0x80) && (isalnum(ch) || ch == '_');  } @@ -55,7 +57,7 @@ inline bool IsOperator(int ch) {  	return false;  } -static void GetTextSegment(Accessor &styler, Sci_PositionU start, Sci_PositionU end, char *s, size_t len) { +void GetTextSegment(Accessor &styler, Sci_PositionU start, Sci_PositionU end, char *s, size_t len) {  	Sci_PositionU i = 0;  	for (; (i < end - start + 1) && (i < len-1); i++) {  		s[i] = MakeLowerCase(styler[start + i]); @@ -63,7 +65,7 @@ static void GetTextSegment(Accessor &styler, Sci_PositionU start, Sci_PositionU  	s[i] = '\0';  } -static const char *GetNextWord(Accessor &styler, Sci_PositionU start, char *s, size_t sLen) { +const char *GetNextWord(Accessor &styler, Sci_PositionU start, char *s, size_t sLen) {  	Sci_PositionU i = 0;  	for (; i < sLen-1; i++) { @@ -79,7 +81,7 @@ static const char *GetNextWord(Accessor &styler, Sci_PositionU start, char *s, s  	return s;  } -static script_type segIsScriptingIndicator(Accessor &styler, Sci_PositionU start, Sci_PositionU end, script_type prevValue) { +script_type segIsScriptingIndicator(Accessor &styler, Sci_PositionU start, Sci_PositionU end, script_type prevValue) {  	char s[100];  	GetTextSegment(styler, start, end, s, sizeof(s));  	//Platform::DebugPrintf("Scripting indicator [%s]\n", s); @@ -108,7 +110,7 @@ static script_type segIsScriptingIndicator(Accessor &styler, Sci_PositionU start  	return prevValue;  } -static int PrintScriptingIndicatorOffset(Accessor &styler, Sci_PositionU start, Sci_PositionU end) { +int PrintScriptingIndicatorOffset(Accessor &styler, Sci_PositionU start, Sci_PositionU end) {  	int iResult = 0;  	char s[100];  	GetTextSegment(styler, start, end, s, sizeof(s)); @@ -119,7 +121,7 @@ static int PrintScriptingIndicatorOffset(Accessor &styler, Sci_PositionU start,  	return iResult;  } -static script_type ScriptOfState(int state) { +script_type ScriptOfState(int state) {  	if ((state >= SCE_HP_START) && (state <= SCE_HP_IDENTIFIER)) {  		return eScriptPython;  	} else if ((state >= SCE_HB_START) && (state <= SCE_HB_STRINGEOL)) { @@ -137,7 +139,7 @@ static script_type ScriptOfState(int state) {  	}  } -static int statePrintForState(int state, script_mode inScriptType) { +int statePrintForState(int state, script_mode inScriptType) {  	int StateToPrint = state;  	if (state >= SCE_HJ_START) { @@ -153,7 +155,7 @@ static int statePrintForState(int state, script_mode inScriptType) {  	return StateToPrint;  } -static int stateForPrintState(int StateToPrint) { +int stateForPrintState(int StateToPrint) {  	int state;  	if ((StateToPrint >= SCE_HPA_START) && (StateToPrint <= SCE_HPA_IDENTIFIER)) { @@ -169,12 +171,12 @@ static int stateForPrintState(int StateToPrint) {  	return state;  } -static inline bool IsNumber(Sci_PositionU start, Accessor &styler) { +inline bool IsNumber(Sci_PositionU start, Accessor &styler) {  	return IsADigit(styler[start]) || (styler[start] == '.') ||  	       (styler[start] == '-') || (styler[start] == '#');  } -static inline bool isStringState(int state) { +inline bool isStringState(int state) {  	bool bResult;  	switch (state) { @@ -205,7 +207,7 @@ static inline bool isStringState(int state) {  	return bResult;  } -static inline bool stateAllowsTermination(int state) { +inline bool stateAllowsTermination(int state) {  	bool allowTermination = !isStringState(state);  	if (allowTermination) {  		switch (state) { @@ -220,7 +222,7 @@ static inline bool stateAllowsTermination(int state) {  }  // not really well done, since it's only comments that should lex the %> and <% -static inline bool isCommentASPState(int state) { +inline bool isCommentASPState(int state) {  	bool bResult;  	switch (state) { @@ -240,7 +242,7 @@ static inline bool isCommentASPState(int state) {  	return bResult;  } -static void classifyAttribHTML(Sci_PositionU start, Sci_PositionU end, WordList &keywords, Accessor &styler) { +void classifyAttribHTML(Sci_PositionU start, Sci_PositionU end, WordList &keywords, Accessor &styler) {  	bool wordIsNumber = IsNumber(start, styler);  	char chAttr = SCE_H_ATTRIBUTEUNKNOWN;  	if (wordIsNumber) { @@ -257,7 +259,7 @@ static void classifyAttribHTML(Sci_PositionU start, Sci_PositionU end, WordList  	styler.ColourTo(end, chAttr);  } -static int classifyTagHTML(Sci_PositionU start, Sci_PositionU end, +int classifyTagHTML(Sci_PositionU start, Sci_PositionU end,                             WordList &keywords, Accessor &styler, bool &tagDontFold,  			   bool caseSensitive, bool isXml, bool allowScripts) {  	char withSpace[30 + 2] = " "; @@ -316,7 +318,7 @@ static int classifyTagHTML(Sci_PositionU start, Sci_PositionU end,  	return chAttr;  } -static void classifyWordHTJS(Sci_PositionU start, Sci_PositionU end, +void classifyWordHTJS(Sci_PositionU start, Sci_PositionU end,                               WordList &keywords, Accessor &styler, script_mode inScriptType) {  	char s[30 + 1];  	Sci_PositionU i = 0; @@ -335,7 +337,7 @@ static void classifyWordHTJS(Sci_PositionU start, Sci_PositionU end,  	styler.ColourTo(end, statePrintForState(chAttr, inScriptType));  } -static int classifyWordHTVB(Sci_PositionU start, Sci_PositionU end, WordList &keywords, Accessor &styler, script_mode inScriptType) { +int classifyWordHTVB(Sci_PositionU start, Sci_PositionU end, WordList &keywords, Accessor &styler, script_mode inScriptType) {  	char chAttr = SCE_HB_IDENTIFIER;  	bool wordIsNumber = IsADigit(styler[start]) || (styler[start] == '.');  	if (wordIsNumber) { @@ -356,7 +358,7 @@ static int classifyWordHTVB(Sci_PositionU start, Sci_PositionU end, WordList &ke  		return SCE_HB_DEFAULT;  } -static void classifyWordHTPy(Sci_PositionU start, Sci_PositionU end, WordList &keywords, Accessor &styler, char *prevWord, script_mode inScriptType, bool isMako) { +void classifyWordHTPy(Sci_PositionU start, Sci_PositionU end, WordList &keywords, Accessor &styler, char *prevWord, script_mode inScriptType, bool isMako) {  	bool wordIsNumber = IsADigit(styler[start]);  	char s[30 + 1];  	Sci_PositionU i = 0; @@ -381,7 +383,7 @@ static void classifyWordHTPy(Sci_PositionU start, Sci_PositionU end, WordList &k  // Update the word colour to default or keyword  // Called when in a PHP word -static void classifyWordHTPHP(Sci_PositionU start, Sci_PositionU end, WordList &keywords, Accessor &styler) { +void classifyWordHTPHP(Sci_PositionU start, Sci_PositionU end, WordList &keywords, Accessor &styler) {  	char chAttr = SCE_HPHP_DEFAULT;  	bool wordIsNumber = IsADigit(styler[start]) || (styler[start] == '.' && start+1 <= end && IsADigit(styler[start+1]));  	if (wordIsNumber) { @@ -395,7 +397,7 @@ static void classifyWordHTPHP(Sci_PositionU start, Sci_PositionU end, WordList &  	styler.ColourTo(end, chAttr);  } -static bool isWordHSGML(Sci_PositionU start, Sci_PositionU end, WordList &keywords, Accessor &styler) { +bool isWordHSGML(Sci_PositionU start, Sci_PositionU end, WordList &keywords, Accessor &styler) {  	char s[30 + 1];  	Sci_PositionU i = 0;  	for (; i < end - start + 1 && i < 30; i++) { @@ -405,7 +407,7 @@ static bool isWordHSGML(Sci_PositionU start, Sci_PositionU end, WordList &keywor  	return keywords.InList(s);  } -static bool isWordCdata(Sci_PositionU start, Sci_PositionU end, Accessor &styler) { +bool isWordCdata(Sci_PositionU start, Sci_PositionU end, Accessor &styler) {  	char s[30 + 1];  	Sci_PositionU i = 0;  	for (; i < end - start + 1 && i < 30; i++) { @@ -416,7 +418,7 @@ static bool isWordCdata(Sci_PositionU start, Sci_PositionU end, Accessor &styler  }  // Return the first state to reach when entering a scripting language -static int StateForScript(script_type scriptLanguage) { +int StateForScript(script_type scriptLanguage) {  	int Result;  	switch (scriptLanguage) {  	case eScriptVBS: @@ -444,20 +446,20 @@ static int StateForScript(script_type scriptLanguage) {  	return Result;  } -static inline bool issgmlwordchar(int ch) { +inline bool issgmlwordchar(int ch) {  	return !IsASCII(ch) ||  		(isalnum(ch) || ch == '.' || ch == '_' || ch == ':' || ch == '!' || ch == '#' || ch == '[');  } -static inline bool IsPhpWordStart(int ch) { +inline bool IsPhpWordStart(int ch) {  	return (IsASCII(ch) && (isalpha(ch) || (ch == '_'))) || (ch >= 0x7f);  } -static inline bool IsPhpWordChar(int ch) { +inline bool IsPhpWordChar(int ch) {  	return IsADigit(ch) || IsPhpWordStart(ch);  } -static bool InTagState(int state) { +bool InTagState(int state) {  	return state == SCE_H_TAG || state == SCE_H_TAGUNKNOWN ||  	       state == SCE_H_SCRIPT ||  	       state == SCE_H_ATTRIBUTE || state == SCE_H_ATTRIBUTEUNKNOWN || @@ -465,20 +467,20 @@ static bool InTagState(int state) {  	       state == SCE_H_DOUBLESTRING || state == SCE_H_SINGLESTRING;  } -static bool IsCommentState(const int state) { +bool IsCommentState(const int state) {  	return state == SCE_H_COMMENT || state == SCE_H_SGML_COMMENT;  } -static bool IsScriptCommentState(const int state) { +bool IsScriptCommentState(const int state) {  	return state == SCE_HJ_COMMENT || state == SCE_HJ_COMMENTLINE || state == SCE_HJA_COMMENT ||  		   state == SCE_HJA_COMMENTLINE || state == SCE_HB_COMMENTLINE || state == SCE_HBA_COMMENTLINE;  } -static bool isLineEnd(int ch) { +bool isLineEnd(int ch) {  	return ch == '\r' || ch == '\n';  } -static bool isMakoBlockEnd(const int ch, const int chNext, const char *blockType) { +bool isMakoBlockEnd(const int ch, const int chNext, const char *blockType) {  	if (strlen(blockType) == 0) {  		return ((ch == '%') && (chNext == '>'));  	} else if ((0 == strcmp(blockType, "inherit")) || @@ -498,7 +500,7 @@ static bool isMakoBlockEnd(const int ch, const int chNext, const char *blockType  	}  } -static bool isDjangoBlockEnd(const int ch, const int chNext, const char *blockType) { +bool isDjangoBlockEnd(const int ch, const int chNext, const char *blockType) {  	if (strlen(blockType) == 0) {  		return false;  	} else if (0 == strcmp(blockType, "%")) { @@ -510,7 +512,7 @@ static bool isDjangoBlockEnd(const int ch, const int chNext, const char *blockTy  	}  } -static bool isPHPStringState(int state) { +bool isPHPStringState(int state) {  	return  	    (state == SCE_HPHP_HSTRING) ||  	    (state == SCE_HPHP_SIMPLESTRING) || @@ -518,7 +520,7 @@ static bool isPHPStringState(int state) {  	    (state == SCE_HPHP_COMPLEX_VARIABLE);  } -static Sci_Position FindPhpStringDelimiter(char *phpStringDelimiter, const int phpStringDelimiterSize, Sci_Position i, const Sci_Position lengthDoc, Accessor &styler, bool &isSimpleString) { +Sci_Position FindPhpStringDelimiter(char *phpStringDelimiter, const int phpStringDelimiterSize, Sci_Position i, const Sci_Position lengthDoc, Accessor &styler, bool &isSimpleString) {  	Sci_Position j;  	const Sci_Position beginning = i - 1;  	bool isValidSimpleString = false; @@ -565,6 +567,196 @@ static Sci_Position FindPhpStringDelimiter(char *phpStringDelimiter, const int p  	return j - 1;  } +static const char * const htmlWordListDesc[] = { +	"HTML elements and attributes", +	"JavaScript keywords", +	"VBScript keywords", +	"Python keywords", +	"PHP keywords", +	"SGML and DTD keywords", +	0, +}; + +static const char * const phpscriptWordListDesc[] = { +	"", //Unused +	"", //Unused +	"", //Unused +	"", //Unused +	"PHP keywords", +	"", //Unused +	0, +}; + +LexicalClass lexicalClassesHTML[] = { +	// Lexer HTML SCLEX_HTML SCE_H_ SCE_HJ_ SCE_HJA_ SCE_HB_ SCE_HBA_ SCE_HP_ SCE_HPHP_ SCE_HPA_: +	0, "SCE_H_DEFAULT", "default", "Text", +	1, "SCE_H_TAG", "tag", "Tags", +	2, "SCE_H_ERRORTAGUNKNOWN", "error tag", "Unknown Tags", +	3, "SCE_H_ATTRIBUTE", "attribute", "Attributes", +	4, "SCE_H_ATTRIBUTEUNKNOWN", "error attribute", "Unknown Attributes", +	5, "SCE_H_NUMBER", "literal numeric", "Numbers", +	6, "SCE_H_DOUBLESTRING", "literal string", "Double quoted strings", +	7, "SCE_H_SINGLESTRING", "literal string", "Single quoted strings", +	8, "SCE_H_OTHER", "tag operator", "Other inside tag, including space and '='", +	9, "SCE_H_COMMENT", "comment", "Comment", +	10, "SCE_H_ENTITY", "literal", "Entities", +	11, "SCE_H_TAGEND", "tag", "XML style tag ends '/>'", +	12, "SCE_H_XMLSTART", "identifier", "XML identifier start '<?'", +	13, "SCE_H_XMLEND", "identifier", "XML identifier end '?>'", +	14, "SCE_H_SCRIPT", "error", "Internal state which should never be visible", +	15, "SCE_H_ASP", "preprocessor", "ASP <% ... %>", +	16, "SCE_H_ASPAT", "preprocessor", "ASP <% ... %>", +	17, "SCE_H_CDATA", "literal", "CDATA", +	18, "SCE_H_QUESTION", "preprocessor", "PHP", +	19, "SCE_H_VALUE", "literal string", "Unquoted values", +	20, "SCE_H_XCCOMMENT", "comment", "JSP Comment <%-- ... --%>", +	21, "SCE_H_SGML_DEFAULT", "default", "SGML tags <! ... >", +	22, "SCE_H_SGML_COMMAND", "preprocessor", "SGML command", +	23, "SCE_H_SGML_1ST_PARAM", "preprocessor", "SGML 1st param", +	24, "SCE_H_SGML_DOUBLESTRING", "literal string", "SGML double string", +	25, "SCE_H_SGML_SIMPLESTRING", "literal string", "SGML single string", +	26, "SCE_H_SGML_ERROR", "error", "SGML error", +	27, "SCE_H_SGML_SPECIAL", "literal", "SGML special (#XXXX type)", +	28, "SCE_H_SGML_ENTITY", "literal", "SGML entity", +	29, "SCE_H_SGML_COMMENT", "comment", "SGML comment", +	30, "SCE_H_SGML_1ST_PARAM_COMMENT", "error comment", "SGML first parameter - lexer internal. It is an error if any text is in this style.", +	31, "SCE_H_SGML_BLOCK_DEFAULT", "default", "SGML block", +	32, "", "predefined", "", +	33, "", "predefined", "", +	34, "", "predefined", "", +	35, "", "predefined", "", +	36, "", "predefined", "", +	37, "", "predefined", "", +	38, "", "predefined", "", +	39, "", "predefined", "", +	40, "SCE_HJ_START", "client javascript default", "JS Start - allows eol filled background to not start on same line as SCRIPT tag", +	41, "SCE_HJ_DEFAULT", "client javascript default", "JS Default", +	42, "SCE_HJ_COMMENT", "client javascript comment", "JS Comment", +	43, "SCE_HJ_COMMENTLINE", "client javascript comment line", "JS Line Comment", +	44, "SCE_HJ_COMMENTDOC", "client javascript comment documentation", "JS Doc comment", +	45, "SCE_HJ_NUMBER", "client javascript literal numeric", "JS Number", +	46, "SCE_HJ_WORD", "client javascript identifier", "JS Word", +	47, "SCE_HJ_KEYWORD", "client javascript keyword", "JS Keyword", +	48, "SCE_HJ_DOUBLESTRING", "client javascript literal string", "JS Double quoted string", +	49, "SCE_HJ_SINGLESTRING", "client javascript literal string", "JS Single quoted string", +	50, "SCE_HJ_SYMBOLS", "client javascript operator", "JS Symbols", +	51, "SCE_HJ_STRINGEOL", "client javascript error literal string", "JavaScript EOL", +	52, "SCE_HJ_REGEX", "client javascript literal regex", "JavaScript RegEx", +	53, "", "unused", "", +	54, "", "unused", "", +	55, "SCE_HJA_START", "server javascript default", "JS Start - allows eol filled background to not start on same line as SCRIPT tag", +	56, "SCE_HJA_DEFAULT", "server javascript default", "JS Default", +	57, "SCE_HJA_COMMENT", "server javascript comment", "JS Comment", +	58, "SCE_HJA_COMMENTLINE", "server javascript comment line", "JS Line Comment", +	59, "SCE_HJA_COMMENTDOC", "server javascript comment documentation", "JS Doc comment", +	60, "SCE_HJA_NUMBER", "server javascript literal numeric", "JS Number", +	61, "SCE_HJA_WORD", "server javascript identifier", "JS Word", +	62, "SCE_HJA_KEYWORD", "server javascript keyword", "JS Keyword", +	63, "SCE_HJA_DOUBLESTRING", "server javascript literal string", "JS Double quoted string", +	64, "SCE_HJA_SINGLESTRING", "server javascript literal string", "JS Single quoted string", +	65, "SCE_HJA_SYMBOLS", "server javascript operator", "JS Symbols", +	66, "SCE_HJA_STRINGEOL", "server javascript error literal string", "JavaScript EOL", +	67, "SCE_HJA_REGEX", "server javascript literal regex", "JavaScript RegEx", +	68, "", "unused", "", +	69, "", "unused", "", +	70, "SCE_HB_START", "client basic default", "Start", +	71, "SCE_HB_DEFAULT", "client basic default", "Default", +	72, "SCE_HB_COMMENTLINE", "client basic comment line", "Comment", +	73, "SCE_HB_NUMBER", "client basic literal numeric", "Number", +	74, "SCE_HB_WORD", "client basic keyword", "KeyWord", +	75, "SCE_HB_STRING", "client basic literal string", "String", +	76, "SCE_HB_IDENTIFIER", "client basic identifier", "Identifier", +	77, "SCE_HB_STRINGEOL", "client basic literal string", "Unterminated string", +	78, "", "unused", "", +	79, "", "unused", "", +	80, "SCE_HBA_START", "server basic default", "Start", +	81, "SCE_HBA_DEFAULT", "server basic default", "Default", +	82, "SCE_HBA_COMMENTLINE", "server basic comment line", "Comment", +	83, "SCE_HBA_NUMBER", "server basic literal numeric", "Number", +	84, "SCE_HBA_WORD", "server basic keyword", "KeyWord", +	85, "SCE_HBA_STRING", "server basic literal string", "String", +	86, "SCE_HBA_IDENTIFIER", "server basic identifier", "Identifier", +	87, "SCE_HBA_STRINGEOL", "server basic literal string", "Unterminated string", +	88, "", "unused", "", +	89, "", "unused", "", +	90, "SCE_HP_START", "client python default", "Embedded Python", +	91, "SCE_HP_DEFAULT", "client python default", "Embedded Python", +	92, "SCE_HP_COMMENTLINE", "client python comment line", "Comment", +	93, "SCE_HP_NUMBER", "client python literal numeric", "Number", +	94, "SCE_HP_STRING", "client python literal string", "String", +	95, "SCE_HP_CHARACTER", "client python literal string character", "Single quoted string", +	96, "SCE_HP_WORD", "client python keyword", "Keyword", +	97, "SCE_HP_TRIPLE", "client python literal string", "Triple quotes", +	98, "SCE_HP_TRIPLEDOUBLE", "client python literal string", "Triple double quotes", +	99, "SCE_HP_CLASSNAME", "client python identifier", "Class name definition", +	100, "SCE_HP_DEFNAME", "client python identifier", "Function or method name definition", +	101, "SCE_HP_OPERATOR", "client python operator", "Operators", +	102, "SCE_HP_IDENTIFIER", "client python identifier", "Identifiers", +	103, "", "unused", "", +	104, "SCE_HPHP_COMPLEX_VARIABLE", "server php identifier", "PHP complex variable", +	105, "SCE_HPA_START", "server python default", "ASP Python", +	106, "SCE_HPA_DEFAULT", "server python default", "ASP Python", +	107, "SCE_HPA_COMMENTLINE", "server python comment line", "Comment", +	108, "SCE_HPA_NUMBER", "server python literal numeric", "Number", +	109, "SCE_HPA_STRING", "server python literal string", "String", +	110, "SCE_HPA_CHARACTER", "server python literal string character", "Single quoted string", +	111, "SCE_HPA_WORD", "server python keyword", "Keyword", +	112, "SCE_HPA_TRIPLE", "server python literal string", "Triple quotes", +	113, "SCE_HPA_TRIPLEDOUBLE", "server python literal string", "Triple double quotes", +	114, "SCE_HPA_CLASSNAME", "server python identifier", "Class name definition", +	115, "SCE_HPA_DEFNAME", "server python identifier", "Function or method name definition", +	116, "SCE_HPA_OPERATOR", "server python operator", "Operators", +	117, "SCE_HPA_IDENTIFIER", "server python identifier", "Identifiers", +	118, "SCE_HPHP_DEFAULT", "server php default", "Default", +	119, "SCE_HPHP_HSTRING", "server php literal string", "Double quoted String", +	120, "SCE_HPHP_SIMPLESTRING", "server php literal string", "Single quoted string", +	121, "SCE_HPHP_WORD", "server php keyword", "Keyword", +	122, "SCE_HPHP_NUMBER", "server php literal numeric", "Number", +	123, "SCE_HPHP_VARIABLE", "server php identifier", "Variable", +	124, "SCE_HPHP_COMMENT", "server php comment", "Comment", +	125, "SCE_HPHP_COMMENTLINE", "server php comment line", "One line comment", +	126, "SCE_HPHP_HSTRING_VARIABLE", "server php literal string identifier", "PHP variable in double quoted string", +	127, "SCE_HPHP_OPERATOR", "server php operator", "PHP operator", +}; + +LexicalClass lexicalClassesXML[] = { +	// Lexer.Secondary XML SCLEX_XML SCE_H_: +	0, "SCE_H_DEFAULT", "default", "Default", +	1, "SCE_H_TAG", "tag", "Tags", +	2, "SCE_H_TAGUNKNOWN", "error tag", "Unknown Tags", +	3, "SCE_H_ATTRIBUTE", "attribute", "Attributes", +	4, "SCE_H_ERRORATTRIBUTEUNKNOWN", "error attribute", "Unknown Attributes", +	5, "SCE_H_NUMBER", "literal numeric", "Numbers", +	6, "SCE_H_DOUBLESTRING", "literal string", "Double quoted strings", +	7, "SCE_H_SINGLESTRING", "literal string", "Single quoted strings", +	8, "SCE_H_OTHER", "tag operator", "Other inside tag, including space and '='", +	9, "SCE_H_COMMENT", "comment", "Comment", +	10, "SCE_H_ENTITY", "literal", "Entities", +	11, "SCE_H_TAGEND", "tag", "XML style tag ends '/>'", +	12, "SCE_H_XMLSTART", "identifier", "XML identifier start '<?'", +	13, "SCE_H_XMLEND", "identifier", "XML identifier end '?>'", +	14, "", "unused", "", +	15, "", "unused", "", +	16, "", "unused", "", +	17, "SCE_H_CDATA", "literal", "CDATA", +	18, "SCE_H_QUESTION", "preprocessor", "Question", +	19, "SCE_H_VALUE", "literal string", "Unquoted Value", +	20, "", "unused", "", +	21, "SCE_H_SGML_DEFAULT", "default", "SGML tags <! ... >", +	22, "SCE_H_SGML_COMMAND", "preprocessor", "SGML command", +	23, "SCE_H_SGML_1ST_PARAM", "preprocessor", "SGML 1st param", +	24, "SCE_H_SGML_DOUBLESTRING", "literal string", "SGML double string", +	25, "SCE_H_SGML_SIMPLESTRING", "literal string", "SGML single string", +	26, "SCE_H_SGML_ERROR", "error", "SGML error", +	27, "SCE_H_SGML_SPECIAL", "literal", "SGML special (#XXXX type)", +	28, "SCE_H_SGML_ENTITY", "literal", "SGML entity", +	29, "SCE_H_SGML_COMMENT", "comment", "SGML comment", +	30, "", "unused", "", +	31, "SCE_H_SGML_BLOCK_DEFAULT", "default", "SGML block", +}; + +} +  static void ColouriseHyperTextDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],                                    Accessor &styler, bool isXml) {  	WordList &keywords = *keywordlists[0]; @@ -2176,198 +2368,6 @@ static void ColourisePHPScriptDoc(Sci_PositionU startPos, Sci_Position length, i  	ColouriseHTMLDoc(startPos, length, initStyle, keywordlists, styler);  } -static const char * const htmlWordListDesc[] = { -	"HTML elements and attributes", -	"JavaScript keywords", -	"VBScript keywords", -	"Python keywords", -	"PHP keywords", -	"SGML and DTD keywords", -	0, -}; - -static const char * const phpscriptWordListDesc[] = { -	"", //Unused -	"", //Unused -	"", //Unused -	"", //Unused -	"PHP keywords", -	"", //Unused -	0, -}; - -namespace { - -LexicalClass lexicalClassesHTML[] = { -	// Lexer HTML SCLEX_HTML SCE_H_ SCE_HJ_ SCE_HJA_ SCE_HB_ SCE_HBA_ SCE_HP_ SCE_HPHP_ SCE_HPA_: -	0, "SCE_H_DEFAULT", "default", "Text", -	1, "SCE_H_TAG", "tag", "Tags", -	2, "SCE_H_ERRORTAGUNKNOWN", "error tag", "Unknown Tags", -	3, "SCE_H_ATTRIBUTE", "attribute", "Attributes", -	4, "SCE_H_ATTRIBUTEUNKNOWN", "error attribute", "Unknown Attributes", -	5, "SCE_H_NUMBER", "literal numeric", "Numbers", -	6, "SCE_H_DOUBLESTRING", "literal string", "Double quoted strings", -	7, "SCE_H_SINGLESTRING", "literal string", "Single quoted strings", -	8, "SCE_H_OTHER", "tag operator", "Other inside tag, including space and '='", -	9, "SCE_H_COMMENT", "comment", "Comment", -	10, "SCE_H_ENTITY", "literal", "Entities", -	11, "SCE_H_TAGEND", "tag", "XML style tag ends '/>'", -	12, "SCE_H_XMLSTART", "identifier", "XML identifier start '<?'", -	13, "SCE_H_XMLEND", "identifier", "XML identifier end '?>'", -	14, "SCE_H_SCRIPT", "error", "Internal state which should never be visible", -	15, "SCE_H_ASP", "preprocessor", "ASP <% ... %>", -	16, "SCE_H_ASPAT", "preprocessor", "ASP <% ... %>", -	17, "SCE_H_CDATA", "literal", "CDATA", -	18, "SCE_H_QUESTION", "preprocessor", "PHP", -	19, "SCE_H_VALUE", "literal string", "Unquoted values", -	20, "SCE_H_XCCOMMENT", "comment", "JSP Comment <%-- ... --%>", -	21, "SCE_H_SGML_DEFAULT", "default", "SGML tags <! ... >", -	22, "SCE_H_SGML_COMMAND", "preprocessor", "SGML command", -	23, "SCE_H_SGML_1ST_PARAM", "preprocessor", "SGML 1st param", -	24, "SCE_H_SGML_DOUBLESTRING", "literal string", "SGML double string", -	25, "SCE_H_SGML_SIMPLESTRING", "literal string", "SGML single string", -	26, "SCE_H_SGML_ERROR", "error", "SGML error", -	27, "SCE_H_SGML_SPECIAL", "literal", "SGML special (#XXXX type)", -	28, "SCE_H_SGML_ENTITY", "literal", "SGML entity", -	29, "SCE_H_SGML_COMMENT", "comment", "SGML comment", -	30, "SCE_H_SGML_1ST_PARAM_COMMENT", "error comment", "SGML first parameter - lexer internal. It is an error if any text is in this style.", -	31, "SCE_H_SGML_BLOCK_DEFAULT", "default", "SGML block", -	32, "", "predefined", "", -	33, "", "predefined", "", -	34, "", "predefined", "", -	35, "", "predefined", "", -	36, "", "predefined", "", -	37, "", "predefined", "", -	38, "", "predefined", "", -	39, "", "predefined", "", -	40, "SCE_HJ_START", "client javascript default", "JS Start - allows eol filled background to not start on same line as SCRIPT tag", -	41, "SCE_HJ_DEFAULT", "client javascript default", "JS Default", -	42, "SCE_HJ_COMMENT", "client javascript comment", "JS Comment", -	43, "SCE_HJ_COMMENTLINE", "client javascript comment line", "JS Line Comment", -	44, "SCE_HJ_COMMENTDOC", "client javascript comment documentation", "JS Doc comment", -	45, "SCE_HJ_NUMBER", "client javascript literal numeric", "JS Number", -	46, "SCE_HJ_WORD", "client javascript identifier", "JS Word", -	47, "SCE_HJ_KEYWORD", "client javascript keyword", "JS Keyword", -	48, "SCE_HJ_DOUBLESTRING", "client javascript literal string", "JS Double quoted string", -	49, "SCE_HJ_SINGLESTRING", "client javascript literal string", "JS Single quoted string", -	50, "SCE_HJ_SYMBOLS", "client javascript operator", "JS Symbols", -	51, "SCE_HJ_STRINGEOL", "client javascript error literal string", "JavaScript EOL", -	52, "SCE_HJ_REGEX", "client javascript literal regex", "JavaScript RegEx", -	53, "", "unused", "", -	54, "", "unused", "", -	55, "SCE_HJA_START", "server javascript default", "JS Start - allows eol filled background to not start on same line as SCRIPT tag", -	56, "SCE_HJA_DEFAULT", "server javascript default", "JS Default", -	57, "SCE_HJA_COMMENT", "server javascript comment", "JS Comment", -	58, "SCE_HJA_COMMENTLINE", "server javascript comment line", "JS Line Comment", -	59, "SCE_HJA_COMMENTDOC", "server javascript comment documentation", "JS Doc comment", -	60, "SCE_HJA_NUMBER", "server javascript literal numeric", "JS Number", -	61, "SCE_HJA_WORD", "server javascript identifier", "JS Word", -	62, "SCE_HJA_KEYWORD", "server javascript keyword", "JS Keyword", -	63, "SCE_HJA_DOUBLESTRING", "server javascript literal string", "JS Double quoted string", -	64, "SCE_HJA_SINGLESTRING", "server javascript literal string", "JS Single quoted string", -	65, "SCE_HJA_SYMBOLS", "server javascript operator", "JS Symbols", -	66, "SCE_HJA_STRINGEOL", "server javascript error literal string", "JavaScript EOL", -	67, "SCE_HJA_REGEX", "server javascript literal regex", "JavaScript RegEx", -	68, "", "unused", "", -	69, "", "unused", "", -	70, "SCE_HB_START", "client basic default", "Start", -	71, "SCE_HB_DEFAULT", "client basic default", "Default", -	72, "SCE_HB_COMMENTLINE", "client basic comment line", "Comment", -	73, "SCE_HB_NUMBER", "client basic literal numeric", "Number", -	74, "SCE_HB_WORD", "client basic keyword", "KeyWord", -	75, "SCE_HB_STRING", "client basic literal string", "String", -	76, "SCE_HB_IDENTIFIER", "client basic identifier", "Identifier", -	77, "SCE_HB_STRINGEOL", "client basic literal string", "Unterminated string", -	78, "", "unused", "", -	79, "", "unused", "", -	80, "SCE_HBA_START", "server basic default", "Start", -	81, "SCE_HBA_DEFAULT", "server basic default", "Default", -	82, "SCE_HBA_COMMENTLINE", "server basic comment line", "Comment", -	83, "SCE_HBA_NUMBER", "server basic literal numeric", "Number", -	84, "SCE_HBA_WORD", "server basic keyword", "KeyWord", -	85, "SCE_HBA_STRING", "server basic literal string", "String", -	86, "SCE_HBA_IDENTIFIER", "server basic identifier", "Identifier", -	87, "SCE_HBA_STRINGEOL", "server basic literal string", "Unterminated string", -	88, "", "unused", "", -	89, "", "unused", "", -	90, "SCE_HP_START", "client python default", "Embedded Python", -	91, "SCE_HP_DEFAULT", "client python default", "Embedded Python", -	92, "SCE_HP_COMMENTLINE", "client python comment line", "Comment", -	93, "SCE_HP_NUMBER", "client python literal numeric", "Number", -	94, "SCE_HP_STRING", "client python literal string", "String", -	95, "SCE_HP_CHARACTER", "client python literal string character", "Single quoted string", -	96, "SCE_HP_WORD", "client python keyword", "Keyword", -	97, "SCE_HP_TRIPLE", "client python literal string", "Triple quotes", -	98, "SCE_HP_TRIPLEDOUBLE", "client python literal string", "Triple double quotes", -	99, "SCE_HP_CLASSNAME", "client python identifier", "Class name definition", -	100, "SCE_HP_DEFNAME", "client python identifier", "Function or method name definition", -	101, "SCE_HP_OPERATOR", "client python operator", "Operators", -	102, "SCE_HP_IDENTIFIER", "client python identifier", "Identifiers", -	103, "", "unused", "", -	104, "SCE_HPHP_COMPLEX_VARIABLE", "server php identifier", "PHP complex variable", -	105, "SCE_HPA_START", "server python default", "ASP Python", -	106, "SCE_HPA_DEFAULT", "server python default", "ASP Python", -	107, "SCE_HPA_COMMENTLINE", "server python comment line", "Comment", -	108, "SCE_HPA_NUMBER", "server python literal numeric", "Number", -	109, "SCE_HPA_STRING", "server python literal string", "String", -	110, "SCE_HPA_CHARACTER", "server python literal string character", "Single quoted string", -	111, "SCE_HPA_WORD", "server python keyword", "Keyword", -	112, "SCE_HPA_TRIPLE", "server python literal string", "Triple quotes", -	113, "SCE_HPA_TRIPLEDOUBLE", "server python literal string", "Triple double quotes", -	114, "SCE_HPA_CLASSNAME", "server python identifier", "Class name definition", -	115, "SCE_HPA_DEFNAME", "server python identifier", "Function or method name definition", -	116, "SCE_HPA_OPERATOR", "server python operator", "Operators", -	117, "SCE_HPA_IDENTIFIER", "server python identifier", "Identifiers", -	118, "SCE_HPHP_DEFAULT", "server php default", "Default", -	119, "SCE_HPHP_HSTRING", "server php literal string", "Double quoted String", -	120, "SCE_HPHP_SIMPLESTRING", "server php literal string", "Single quoted string", -	121, "SCE_HPHP_WORD", "server php keyword", "Keyword", -	122, "SCE_HPHP_NUMBER", "server php literal numeric", "Number", -	123, "SCE_HPHP_VARIABLE", "server php identifier", "Variable", -	124, "SCE_HPHP_COMMENT", "server php comment", "Comment", -	125, "SCE_HPHP_COMMENTLINE", "server php comment line", "One line comment", -	126, "SCE_HPHP_HSTRING_VARIABLE", "server php literal string identifier", "PHP variable in double quoted string", -	127, "SCE_HPHP_OPERATOR", "server php operator", "PHP operator", -}; - -LexicalClass lexicalClassesXML[] = { -	// Lexer.Secondary XML SCLEX_XML SCE_H_: -	0, "SCE_H_DEFAULT", "default", "Default", -	1, "SCE_H_TAG", "tag", "Tags", -	2, "SCE_H_TAGUNKNOWN", "error tag", "Unknown Tags", -	3, "SCE_H_ATTRIBUTE", "attribute", "Attributes", -	4, "SCE_H_ERRORATTRIBUTEUNKNOWN", "error attribute", "Unknown Attributes", -	5, "SCE_H_NUMBER", "literal numeric", "Numbers", -	6, "SCE_H_DOUBLESTRING", "literal string", "Double quoted strings", -	7, "SCE_H_SINGLESTRING", "literal string", "Single quoted strings", -	8, "SCE_H_OTHER", "tag operator", "Other inside tag, including space and '='", -	9, "SCE_H_COMMENT", "comment", "Comment", -	10, "SCE_H_ENTITY", "literal", "Entities", -	11, "SCE_H_TAGEND", "tag", "XML style tag ends '/>'", -	12, "SCE_H_XMLSTART", "identifier", "XML identifier start '<?'", -	13, "SCE_H_XMLEND", "identifier", "XML identifier end '?>'", -	14, "", "unused", "", -	15, "", "unused", "", -	16, "", "unused", "", -	17, "SCE_H_CDATA", "literal", "CDATA", -	18, "SCE_H_QUESTION", "preprocessor", "Question", -	19, "SCE_H_VALUE", "literal string", "Unquoted Value", -	20, "", "unused", "", -	21, "SCE_H_SGML_DEFAULT", "default", "SGML tags <! ... >", -	22, "SCE_H_SGML_COMMAND", "preprocessor", "SGML command", -	23, "SCE_H_SGML_1ST_PARAM", "preprocessor", "SGML 1st param", -	24, "SCE_H_SGML_DOUBLESTRING", "literal string", "SGML double string", -	25, "SCE_H_SGML_SIMPLESTRING", "literal string", "SGML single string", -	26, "SCE_H_SGML_ERROR", "error", "SGML error", -	27, "SCE_H_SGML_SPECIAL", "literal", "SGML special (#XXXX type)", -	28, "SCE_H_SGML_ENTITY", "literal", "SGML entity", -	29, "SCE_H_SGML_COMMENT", "comment", "SGML comment", -	30, "", "unused", "", -	31, "SCE_H_SGML_BLOCK_DEFAULT", "default", "SGML block", -}; - -} -  LexerModule lmHTML(SCLEX_HTML, ColouriseHTMLDoc, "hypertext", 0, htmlWordListDesc, lexicalClassesHTML, ELEMENTS(lexicalClassesHTML));  LexerModule lmXML(SCLEX_XML, ColouriseXMLDoc, "xml", 0, htmlWordListDesc, lexicalClassesXML, ELEMENTS(lexicalClassesXML));  LexerModule lmPHPSCRIPT(SCLEX_PHPSCRIPT, ColourisePHPScriptDoc, "phpscript", 0, phpscriptWordListDesc); | 
