для подсветки синтаксиса в
ДосНавигаторе используются регулярные выражения.
Расцветка оригинальная (долго думал как лучше сделать) не знаю, подойдет ли к фару и другим редакторами использующим регулярные выражения для раскраски. Включены уникальные для Форка конструкции типа NOW .. SINCE .. TILL .
Хотя появилась сия фича давно, только сейчас более менее привел раскраску в порядок (раньше сильно тормозило на некоторых файлах).
Следующие строчки вставить в начало ndn.hlg.
<pre>
; 2007-12-30 ~mOleg
; Copyright [C] 2007 mOleg
mininoleg@yahoo.com
; подсветка исходных текстов языка Форт в NDN (
http://ndn.muxe.com/)
; для списков сообщений
FILES *.msg
RegKeyWords Color lightgreen (\s|^)(\d*)\s+
RegKeywords ColoR CYAN (\s|^)(;\s+).*$
RegKeyWords Color green .*$
END
FILES names.xrf;
GeneralFLAGS 31
STRINGFLAGS 96
RegKeyWords Color lightgreen ^.\\[\13-¤]*
RegKeyWords Color yellow ^\s\s[!-¤]*
RegKeyWords Color white ^[_]*,^\s*\|.*,^[-]*
RegKeyWords Color green ^\\\s.*
RegKeyWords Color blue \(\s.*-->.*\)
RegKeyWords Color white '.*'\s*-.*
RegKeyWords Color lightcyan \s*[0-9A-F]*\s,[0-9A-F]*$
RegKeyWords Color red Code,\:,Cons,Crt,Var,Val,Vect,--,wApi,wPrc,uCrt,User,uVal,uVct,Nick
ND
; расцветка FORTH исходных текстов
FILES *.f;*.voc;*.spf;*.wrd;*.trg;*.fts;fork.ini;*.fth
GeneralFLAGS 31
STRINGFLAGS 96
; убрать все лишние пробелы: перед каждым словом остается по одному пробелу
RegKeywords Color white/darkgray (^|\s+)(?=\s)
; коментарий до конца строки
RegKeywords ColoR CYAN (\s|^)\\\s.*$
; другие коментарии
RegKeyWords Color yellow/red (\s|^)\\EOF\s+.*
RegKeyWords Color yellow/blue (\s|^)\\\?[\13-¤]*$
; подключение библиотек
RegKeyWords Color lightgreen (\s|^)(\.\\|REQUIRE\s|INCLUDE\s)[!-¤]+(?=\s|$)
RegKeyWords Color lightgreen (\s|^)(math|branch|util|memory|stack|os)\/\s+[!-¤]+(\.fts)(?=\s|$)
RegKeyWords Color lightgreen (\s|^)(compat|list|vocs|transl|parser)\/\s+[!-¤]+(\.fts)(?=\s|$)
; строки
RegKeywords Color green/lightgray (\s|^)\.\"\s([\20-!#-¤]+)"(?=\s|$)
RegKeywords Color green (\s|^)(NOTICE|S|s|)"\s([\20-!#-¤]+)"(?=\s|$)
; короткий путь к папкам в ЦК: cp\ os\ vm\
RegKeyWords Color green (\s|^)(cp|os|vm)\\\s+[!-¤]+(?=\s|$)
; стековый коментарий
RegKeywords Color blue \s+\(\s+.*\)
; ?DEFINED и N?DEFINED
RegKeyWords Color RED/lightgray (\s|^)(\?|N?)(DEFINED)[\13-¤]*$
; конструкции с фигурными скобками
RegKeyWords Color brown (\s|^)[!-¤]+\{(?=\s|$),(\s|^)+\}[!-¤]*(?=\s|$)
; локалсы:
RegKeyWords Color blue \s+\{\s+.*\}(?=\s|$)
RegKeyWords Color blue \s+(LOCALS\|)\s+(.*)(\|)(?=\s|$)
; форматное прeобразование чисел
RegKeywords Color lightblue (\s|^)(HOLDS|HOLD|KEEPS|KEEP|BLANKS|BLANK|SIGN)(?=\s|$)
RegKeywords Color lightblue (\s|^)(<#|#>|\{#|#\}|<\||\|>|#S|#|\$|\$S)(?=\s|$)
; числа:
RegKeyWords Color lightgreen (\s|^)([+-]?)[0-9A-F]*\.[0-9A-F]+(?=\s|$)
RegKeyWords Color lightgreen (\s|^)(0x)[0-9A-F]+(?=\s|$)
RegKeyWords Color lightgreen (\s|^)([+-]?)([0-9]+)(?=\s|$)
; работа с VECT и VALUE словами
RegKeywords Color lightcyan (\s|^)(TO|IS|FROM|AT)\s+[!-¤]*(?=\s|$)
RegKeyWords Color lightcyan (\s|^)\([!-¤]+\)(?=\s|$)
; работа со словарями и сами словари
RegKeywords Color lightmagenta (\s|^)(ALSO|ONLY|only|PREVIOUS|DEFINITIONS)(?=\s|$)
RegKeywords Color lightmagenta (\s|^)(GET-ORDER|SET-ORDER|GET-CURRENT|SET-CURRENT)(?=\s|$)
RegKeywords Color lightmagenta (\s|^)(RECENT|SEAL|UNDER|WITH|THIS|CONTEXT|CURRENT)(?=\s|$)
RegKeywords Color lightmagenta (\s|^)(FORTH-WORDLIST|ROOT|FORTH|NUMBERS|HEAP)(?=\s|$)
; конструкции управления
RegKeywords Color White (\s|^)(;SWITCH|SWITCH:)(?=\s|$)
RegKeywords Color White (\s|^)(NOW|FOR|TILL|SINCE|NEXT)(?=\s|$)
RegKeywords Color White (\s|^)(BEGIN|WHILENOT|WHILE|REPEAT|UNTIL|AGAIN)(?=\s|$)
RegKeywords Color White (\s|^)(IFNOT|IF|ELSE|THEN)(?=\s|$)
RegKeywords Color White (\s|^)(\*IF|\*WHILE|\-IF|\-WHILE)(?=\s|$)
RegKeywords Color White (\s|^)(DO|LOOP|\?DO|\+LOOP)(?=\s|$)
RegKeywords Color White (\s|^)(CASE|OF|uOF|ENDOF|ENDCASE)(?=\s|$)
RegKeywords Color White (\s|^)(RECURSE)(?=\s|$)
; base constants
RegKeyWords Color lightgreen (\s|^)(CELL|ADDR|BYTE|CELLS|CHARS|TRUE|FALSE|CFL)(?=\s|$)
RegKeyWords Color lightgreen (\s|^)(off_[!-¤]+|\/[!-¤]+|to_[!-¤]+|\&[!-¤]+)(?=\s|$)
RegKeyWords Color lightgreen (\s|^)(S0|R0|BL|comma|point|imm_word|std_word)(?=\s|$)
RegKeyWords Color lightgreen (\s|^)(NewLine|C\/L)(?=\s|$)
; константы: R/W R/O W/O
RegKeyWords Color lightgreen (\s|^)(R|W)/(O|W)(?=\s|$)
; литеральные значения
RegKeyWords Color lightgreen (\s|^)(POSTPONE|COMPILE|\[COMPILE\]|\[\'\])\s+[!-¤]+(?=\s|$)
RegKeyWords Color lightgreen (\s|^)(|2|D)LITERAL(?=\s|$)
RegKeyWords Color lightgreen (\s|^)\[CHAR\]\s+[!-■]+
RegKeyWords Color lightgreen (\s|^)CHAR\"\s+[!-¤]+
; порождающие слова
RegKeywords Color yellow (\s|^)(<:|;>)(?=\s|$)
RegKeywords Color yellow (\s|^)[!-¤]*\:\s+[!-¤]+
RegKeywords Color yellow ^\s*\:NONAME(?=\s|$)
RegKeywords Color yellow (\s|^)(HEADER|SHEADER|SVOCAB|CREATED|EXIT|DOES\>|S:)(?=\s|$)
RegKeywords Color yellow (\s|^)\;[!-¤]*(?=\s|$)
RegKeywords Color yellow (\s|^):>\s[!-¤]*,(\s|^)ALIAS\s+[!-¤]+\s+[!-¤]+
RegKeywords Color yellow (\s|^)(CREATE|VECT|VARIABLE|VOCABULARY|fld)\s+[!-¤]*(?=\s|$)
RegKeywords Color yellow (\s|^)(USER-VECT|USER-VALUE|USER|USER-CREATE)\s+[!-¤]*(?=\s|$)
RegKeywords Color yellow (\s|^)(EndUnit)(?=\s|$)
RegKeywords Color yellow (\s|^)(VALUE|CONSTANT)\s+[!-¤]*(?=\s|$)
; структуры
RegKeywords Color yellow (\s|^)(struct)\s+[!-¤]+
RegKeywords Color yellow (\s|^)(\/struct)(?=\s|$)
RegKeywords Color brown (\s|^)(zero|cfl|byte|word|cell|scnt|fld|addr)(\[\])\s+[!-¤]+(?=\s|$)
RegKeywords Color yellow (\s|^)(--)\s+[!-¤]+
; работа со стеком возвратов
RegKeywords Color LIGHTRED (\s|^)(AR\x2B|R\x2B|AR>|>AR|AR\@|ARDROP|A>R)(?=\s|$)
RegKeywords Color LIGHTRED (\s|^)(DR@|2R@|R@|DR>|2R>|R>|RDROP)(?=\s|$)
RegKeywords Color LIGHTRED (\s|^)(D>R|2>R|>R|N>R|NR>)(?=\s|$)
; потенциально опасные слова
RegKeywords Color LIGHTRED (\s|^)(execute|tEXECUTE|PERFORM|CATCH|SP\!|RP\!)(?=\s|$)
RegKeyWords Color LIGHTRED (\s|^)(THROW|HALT|UNLOOP|LEAVE|SERROR|BYE|WARNING|STATE)(?=\s|$)
RegKeyWords Color LIGHTRED (\s|^)(IMMEDIATE|tIMMEDIATE|EXECUTE|unfeasible)(?=\s|$)
RegKeywords Color LIGHTRED (\s|^)'(?=\s|$),(\s+|^)\[[!-¤]*\](?=\s|$)
RegKeyWords Color LIGHTRED (\s|^)(ABORT|ERROR)\"\s+.+\"(?=\s|$)
; переключение основания текущей системы исчисления тоже опасно
RegKeyWords Color LIGHTRED (\s|^)(DECIMAL|HEX|BASE)(?=\s|$)
RegKeyWords Color RED (\s|^)(ON-ERROR|EXIT-ERROR)(?=\s|$)
; -- макросы -------------------------------------------------------------------------------------
Macro 1
GoToX 0
InsLine
Print '\ '
InsertDate
Print ' ~mOleg'^M
Print '\ Сopyright [C] 2009 mOleg
mininoleg@yahoo.com'^M
Print '\ ???'^M^M
Print ^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M
Print ^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M^M'\'
GotoY 2
GotoX 2
InsertOff
EndMacro
Macro 2
GoToX 0
InsLine
Print ^M'\ '^M': ( --> )'^M
Tab
Print ';'^M^E^E^S
EndMacro
Macro 3
Print 'BEGIN WHILE'^M
Print 'REPEAT'^M^E^E^F^S
EndMacro
END
</pre>