It currently supports:
- Strings
- Comments
- # statements (e.g. #include-once)
- Variables
- Macros
- Functions
- Numbers
- Comment block
- Operators
- Sent keys
- COM Objects
How it works?
Step 1: Split the string into lines.
Step 2: Loop through each lines.
Step 2.1: Loop through each characters to find strings, comments, and preprocessors. Highlight and enity it (Will change A to A)
Step 2.2: Close the unclosed tags
Step 2.3: Indent the code, so we can match the text at the beginning of the string.
Step 2.4: Highlight the keywords.
Step 2.5: Highlight the numbers, functions, macros, and variables.
The global variables.
I defined the global variables so I don't have to declare it each time.
It defines how the syntax will look.
; Set the global variable so we don't have to declare it each time. Global $stringStart = '<span style="color: #999">'; Global $stringEnd = '</span>'; Global $commentStart = '<span style="color: #090; font-style: italic">'; Global $commentEnd = '</span>'; Global $keywordStart = '<span style="color: #00f; font-weight: bold">'; Global $keywordEnd = '</span>'; Global $functionstart = '<span style="color: #009; font-weight: bold; font-style: italic">'; Global $functionend = '</span>'; Global $numberStart = '<span style="color: #909; font-weight: bold; font-style: italic">'; Global $numberEnd = '</span>'; Global $macroStart = '<span style="color: #f0f; font-weight: bold">'; Global $macroEnd = '</span>'; Global $variableStart = '<span style="color: #900; font-weight: bold">'; Global $variableEnd = '</span>'; Global $hashStart = '<span style="color: #f0f; font-style: italic">'; Global $hashEnd = '</span>';oÝ÷ Ù´áyû§rبڢ{Þ®Ûaz[`µ©Ýjjm8b±û§rبÊ'½êí²Ø^Ø-jwZhØ-jwZ®¶sc²W66W2FR DÔÂ6&7FW ¦gVæ2&WGW&äW66VD6"b33c¶2 bb33c¶2ÓÒb33²fÇC²b33²FVà &WGW&âb33²fÇC²b33³° VÇ6Tbb33c¶2ÓÒb33²fwC²b33²FVà &WGW&âb33²fwC²b33³° VÇ6Tbb33c¶2ÓÒb33²fײb33²FVà &WGW&âb33²fײb33³° VÇ6P &WGW&âb33c¶3° VæD`¦VæDgVæ0oÝ÷ Ù²Ë +v·©§"îËb¢ÛÓ~©ÊÞ}êÞÇ¢Ø^)Þjwm í7êȬ¶¤{,(ÔáÇîËb¢wâÛ- ì(Û)yÈçbØ^Ó~¬¶Ë.®º.×o&§¢v¥¦§ºg«Ç!j¶µêÚºÚ"µÍÈXÙÈHÙ^]ÛÜÂ[ÈXÙRÙ^]ÛÜÊTY ÌÍÜ ÌÍÜÊBIÌÍÜHÝ[ÔYÑ^XÙJ ÌÍÜ ÌÎNÊÚJJ×K^NW×JJ ÌÎNÈ [È ÌÍÜÈ [È ÌÎNÊJ×K^NW×JIÌÎNË ÌÎNÉÌLÌIÌÎNÈ [È ÌÍÚÙ^]ÛÜÝ [È ÌÎNÉÌLÌÌÎNÈ [È ÌÍÚÙ^]ÛÜ[ [È ÌÎNÉÌLÌÉÌÎNÊNÂ[[oÝ÷ Ù´ázf¢û§rب}ÿm«¢+Øì5 ¥¸Õ¹Ñ¥½¸)Õ¹}Må¹Ñ á!¥¡±¥¡Ð ÀÌØí¤oÝ÷ ØX«²×(÷«¶Ú.,ewاÊ"µÆ§²b¶Ø^)ÞrëyËeÉ©Ývay§-¹©l¦Xjëh×6 ; Windows line ending --> Unix line ending. $d = stringReplace($d, @CrLf, @Lf); ; Macintosh line ending --> Unix line ending. $d = stringReplace($d, @Cr, @Lf); ; Split into lines... $l = stringSplit($d, @Lf, 1);oÝ÷ Ø7ªÞ²½ªâi¹^±«¢+Ø$ÀÌØí¼ôÌäìÌäììQ¡½ÕÑÁÕÐ(%½ÈÀÌØí¤ôÄѼÀÌØí±lÁt($$ÀÌØíÀôÌäìÌäìì ÕÉɹÐÁ Éͱ¥¹¸($$ÀÌØíÐôÌäìÌäììQáй½Ñ Ñ¥½¸¸oÝ÷ ØX§vØ^ªê-zƧuÚ"´:'ßÛp¢ºòûazËkx!j÷ ç¬qª^v«¨µë«¨µÉbrJ®¢Ú®¢Ø^ꮢڮ¢Ú®¢Ò-Â)e²b¶)í¢f§ÊËkx,ªê-rX«¨¶«¨¶«z«¨µ©Ýªê-ªê-nëm êÞ²émË-Ym ëæ®¶s`²bvRf÷VæBFRF÷V&ÆRV÷FP bb33c¶66"ÓÒb33²gV÷C²b33²FVà ²bæòFWB÷VæVBFVâ÷VâFRFWBà bb33c·BÓÒb33²b33²FVà b33c·BÒb33²gV÷C²b33³° b33c·f׳Òb33c·7G&æu7F'Bfײb33²gV÷C²b33³° ²bFRFWB2÷VæVBW6ærFRgV÷C²FVâ6Æ÷6RFRFWBà VÇ6Tbb33c·BÓÒb33²gV÷C²b33²FVà b33c·BÒb33²b33³° b33c·f׳Òb33²gV÷C²b33²fײb33c·7G&ætVæC° ²VÇ6RRærâ÷VæVBW6ærFRb33²Â÷"6öÖÖVçBÖöFRÂ&çB2æ÷&ÖÂà VÇ6P b33c·f׳Òb33²gV÷C²b33³° VæD` ²'WBbvRf÷VæBFR6ævÆRV÷FP VÇ6Tbb33c¶66"ÓÒgV÷C²b33²gV÷C²FVà ²bæòFWB2÷VæVBFVâ÷VâFRFWBà bb33c·BÓÒb33²b33²FVà b33c·BÒgV÷C²b33²gV÷C³° b33c·f׳Òb33c·7G&æu7F'BfײgV÷C²b33²gV÷C³° ²bFRFWBb÷VæVBW6ærFRb33²FVâ6Æ÷6RFRFWBà VÇ6Tbb33c·BÓÒgV÷C²b33²gV÷C²FVà b33c·BÒb33²b33³° b33c·f׳ÒgV÷C²b33²gV÷C²fײb33c·7G&ætVæC° ²VÇ6RÂ&çB2æ÷&ÖÂà VÇ6P b33c·f׳ÒgV÷C²b33²gV÷C³° VæDoÝ÷ ØX§vØ^r¦z{ljw^±Æ©z+S ç(g§µÆ§ßÛ[yÉh±çZØZ²²Özg§¶Æ¥²(×hzÉ÷öÛZëh¢Z'Ú¡×¢µÊ{H¢éÝi©Ý^ÆØ¬¢§yØÆ¢i×¥±âãM7éÇ!joÝ÷ Ø)h±ëazéÜvÖ [(w^Ûaz×±¶Ê"µÆ§«Ø^!ö¶¬µªí¡ûazX§y«¢+Ø$$ì=- ä°Ý¥¹¥Í¡Ñ¡±½½À°Ý±½Íѡչ±½ÍÍÑÉ¥¹¸($%¥ ÀÌØíÐôôÌäìÅÕ½ÐìÌäì=ÈÀÌØíÐôôÅÕ½ÐìÌäìÅÕ½Ðì¤Ñ¡¸($$$ÀÌØíÀ µÀìôÀÌØíÍÑÉ¥¹¹ì($$츸 ¹Ý±½ÍÑ¡½µµ¹Ð¸($%±Í% ÀÌØíÐôôÌäììÌäì¤Ñ¡¸($$$ÀÌØíÀ µÀìôÀÌØí½µµ¹Ñ¹ì($$츸 ¹Ý±½ÍÑ¡¡ Í ¸($%±Í% ÀÌØíÐôôÌäìÌäì¤Ñ¡¸($$$ÀÌØíÀ µÀìôÀÌØí¡ Í¡¹ì($%¹%($$ì]¥¹¹ÐÑ¡Ñáаͼ¥ÐÌäíÌ Í¥ÈѼÁ É͸($$ÀÌØíÀôÌäìÌäì µÀìÀÌØíÀ µÀìÌäìÌäììoÝ÷ Øx X ÛazG²Âݱ«¢+Ø$$ì!¥¡±¥¡ÐÑ¡åݽɸÀÌØíÀ¥Ìåɸ($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäí¥Ìäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°ÌäíÑ¡¸Ìäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäí±Í¥Ìäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäí±ÍÌäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäí¹¥Ìäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°ÌäíͱÐÌäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°ÌäíÍÝ¥Ñ Ìäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäí ÍÌäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäí¹ÍÝ¥Ñ Ìäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäí¹Í±ÐÌäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäí½ÈÌäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäí¥¸Ìäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäí¹áÐÌäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°ÌäíÍÑÀÌäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°ÌäíÝ¥Ñ Ìäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäí¹Ý¥Ñ Ìäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°ÌäíÝ¡¥±Ìäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°ÌäíݹÌäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäí¼Ìäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäíչѥ°Ìäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°ÌäíÕ¹Ìäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäí¹Õ¹Ìäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäí½¹ÍÐÌäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäí½¹Ñ¥¹Õ ÍÌäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäí½¹Ñ¥¹Õ±½½ÀÌäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäí Õ±ÐÌäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäí¥´Ìäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäí¹Õ´Ìäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäíá¥ÐÌäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäíá¥Ñ±½½ÀÌäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäí ±ÍÌäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäí±½ °Ìäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°Ìäí±½ °Ìäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°ÌäíÉ¥´Ìäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°ÌäíÉÑÕɸÌäì¤ì($%ÉÁ± -åݽÉÌ ÀÌØíÀ°ÌäíÑÉÕÌäì¤ìoÝ÷ Øx X Ú- êì¶çßjëh×6 ; Highlight the number. $p = stringRegExpReplace($p, '([^A-Za-z0-9_#])([0-9]+)([^A-Za-z0-9_])', '\1' & $numberStart & '\2' & $numberEnd & '\3'); ; .. and the hexadecimal too. $p = stringRegExpReplace($p, '([^A-Za-z0-9_#])(0x)([0-9]+)([^A-Za-z0-9_])', '\1' & $numberStart & '\2\3' & $numberEnd & '\4'); ; Now, highlight the function. $p = stringRegExpReplace($p, '([A-Za-z0-9_]+)(\s*?)\(', $functionstart & '\1' & $functionend & '\2('); ; Then, highlight the macro. $p = stringRegExpReplace($p, '@([A-Za-z0-9_]+)', $macroStart & '@\1' & $macroEnd); ; And some variable. $p = stringRegExpReplace($p, '\$([A-Za-z0-9_]+)', $variableStart & '$\1' & $variableEnd); ; Finally, outdent the text. $p = stringMid($p, 2);oÝ÷ Ø]¶ayø§jZ.¶rí{¶¥¢^Ø¥¶Ú¶¬r¸©¶·º¹ÞÖ®¶s`b33c¶òf׳Òb33c·fײ7$Æc° æW@ &WGW&âb33c¶ó°¦VæDgVæoÝ÷ Ù:.±èq©eK)íkâbtß«®*m¶bbH¶ÈhºW[{ Ú¦{az[iè-µ¨ºÚ"µÍÈÝØÜÛÛÛÛUÜ]H ÌÎNÖTÝÙYPNHÌÎNÈ [ÈÜNÂÛÛÛÛUÜ]H ÌÎNÐÛÛ[UN^Ú[ ÌÎNÈ [ÈÜNÂÛÛÛÛUÜ]H ÜNÂÌÍÙ]HH[TXY ÌÎNÜÛÛYØÜ]LÉÌÎNÊNÂÛÛÛÛUÜ]H ÌÎNÉÜIÝÉÌÎNÈ [ÈÔÞ[^YÚYÚ ÌÍÙ]JH [È ÌÎNÉËÜIÝÉÌÎNÊN
It is a bit slow, but it does work!
See the result here.
The full code:
highlighter.au3 5.95K
295 downloads
Edited by the DtTvB, 10 October 2006 - 03:51 AM.





