Notepad++: Подсветка синтаксиса для TurboProlog

Однажды в начале этой записи было несколько параграфов личной предистории с отсылками, что лишь немного младше самого Turbo Prolog. Если они вам, зачем-то, нужны, всегда есть Internet Archive. Но, к делу,


Если ваша судьба каким-то образом занесла вас к использованию оригинального, 16-битного Turbo Prolog, вы, наверное, уже заметили, что встроенный в программе редактор кода не очень хорошо прошел пробу временем.

Поэтому я в очередной раз (рус., англ.) решил проблему написанием User Defined Language для Notepad++.

Данный файл подсветки включает в себя стандартные директивы, типы, и функции. Для упрощения восприятия также поддерживается сворачивание строк (code folding) для правил и препроцессоров. К сожалению, из-за использования схожего синтаксиса для правил и других структур в Prolog, обозначения охваченных строк кода не всегда отображаются верно (возможно, это баг NP++), хотя непосредственное сворачивание/разворачивание кода продолжает работать исправно.

Скачать XML

Или содержимое файла (для сохранения как TProlog.xml):

<NotepadPlus>
    <UserLang name="TProlog" ext="pro" udlVersion="2.0">
        <Settings>
            <Global caseIgnored="yes" allowFoldOfComments="no" forceLineCommentsAtBOL="no" foldCompact="no" />
            <Prefix Keywords1="no" Keywords2="no" Keywords3="no" Keywords4="no" Keywords5="no" Keywords6="no" Keywords7="no" Keywords8="no" />
        </Settings>
        <KeywordLists>
            <Keywords name="Comments" id="0">00% 01 02 03/* 04*/</Keywords>
            <Keywords name="Numbers, additional" id="1"></Keywords>
            <Keywords name="Numbers, prefixes" id="2">$</Keywords>
            <Keywords name="Numbers, extras with prefixes" id="3">a b c d e f A B C D E F</Keywords>
            <Keywords name="Numbers, suffixes" id="4"></Keywords>
            <Keywords name="Operators1" id="5">( ) , ; = + - * / \ &lt; &gt; ! [ | ]</Keywords>
            <Keywords name="Operators2" id="6"></Keywords>
            <Keywords name="Folders in code1, open" id="7">:-</Keywords>
            <Keywords name="Folders in code1, middle" id="8"></Keywords>
            <Keywords name="Folders in code1, close" id="9">.</Keywords>
            <Keywords name="Folders in code2, open" id="10">ifdef</Keywords>
            <Keywords name="Folders in code2, middle" id="11"></Keywords>
            <Keywords name="Folders in code2, close" id="12">enddef</Keywords>
            <Keywords name="Folders in comment, open" id="13"></Keywords>
            <Keywords name="Folders in comment, middle" id="14"></Keywords>
            <Keywords name="Folders in comment, close" id="15"></Keywords>
            <Keywords name="Keywords1" id="16">include config constants domains predicates database clauses goal _ fail cut true false</Keywords>
            <Keywords name="Keywords2" id="17">int var cmp list nill atom str char integer string symbol real reference</Keywords>
            <Keywords name="Keywords3" id="18">readln readint readreal readchar file_str inkey keypressed unreadchar readterm write nl writef openread openwrite openappend openmodify readdevice writedevice filemode closefile filepos eof flush existfile deletefile renamefile disk scr_char scr_attr field_str field_attr cursor cursorform attribute textmode snowcheck makewindow makewindow shiftwindow gotowindow resizewindow resizewindow colorsetup existwindow removewindow removewindow clearwindow window_str window_attr scroll framewindow framewindow frontchar fronttoken frontstr concat str_len isname format char_int str_int str_char str_real upper_lower upper_lower consult consult save save assert asserta assertz retractall retractall readterm db_create db_open db_openinvalid db_close db_delete db_flush db_garbagecollect db_copy db_statistics chain_inserta chain_insertz chain_insertafter chain_delete chain_first chain_last chain_next chain_prev term_delete term_replace ref_term bt_create bt_open bt_close bt_delete bt_statistics key_insert key_delete key_first key_last key_search key_next key_prev key_current arc bar bar3d circle cleardevice clearviewport closegraph detectgraph drawpoly ellipse fillellipse fillpoly floodfill getarccoords getaspectratio getbkcolor getcolor getdrivername getdefaultpalette getfillpattern getfillsettings getgraphmode getimage getlinesettings getmaxcolor getmaxx getmaxy getmaxmode getmodename getmoderange getpalette getpalettesize getpixel gettextsettings getviewsettings getx gety graphdefaults imagesize initgraph line linerel lineto moverel moveto outtext outtextxy pieslice putimage putpixel rectangle restorecrtmode setactivepage setallpalette setaspectratio setbkcolor setcolor setfillpattern setfillstyle setgraphmode setgraphbufsize setlinestyle setpalette settextjustify settextstyle setusercharsize setviewport setvisualpage setwritemode textheight textwidth graphics dot line text pendown penup pencolor forward back right left penpos display edit edit editmsg system system dir dir comline envsymbol port_byte ptr_dword memword membyte bitand bitor bitxor bitnot bitleft bitright bios bios debug trap exit exit break breakpressed errormsg readtermerror consulterror FileError CriticalError random random storage sound beep date time trace findall not free bound getbacktrack cutbacktrack diagnostics</Keywords>
            <Keywords name="Keywords4" id="19"></Keywords>
            <Keywords name="Keywords5" id="20"></Keywords>
            <Keywords name="Keywords6" id="21"></Keywords>
            <Keywords name="Keywords7" id="22"></Keywords>
            <Keywords name="Keywords8" id="23"></Keywords>
            <Keywords name="Delimiters" id="24">00&quot; 01\ 02&quot; 03&apos; 04\ 05&apos; 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23</Keywords>
        </KeywordLists>
        <Styles>
            <WordsStyle name="DEFAULT" styleID="0" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="COMMENTS" styleID="1" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="LINE COMMENTS" styleID="2" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="2" nesting="0" />
            <WordsStyle name="NUMBERS" styleID="3" fgColor="FA3232" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS1" styleID="4" fgColor="3264FA" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS2" styleID="5" fgColor="1E7882" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS3" styleID="6" fgColor="800080" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS4" styleID="7" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS5" styleID="8" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS6" styleID="9" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS7" styleID="10" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="KEYWORDS8" styleID="11" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="OPERATORS" styleID="12" fgColor="8080C0" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="FOLDER IN CODE1" styleID="13" fgColor="8080C0" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="FOLDER IN CODE2" styleID="14" fgColor="3264FA" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="FOLDER IN COMMENT" styleID="15" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS1" styleID="16" fgColor="821E1E" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS2" styleID="17" fgColor="821E1E" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS3" styleID="18" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS4" styleID="19" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS5" styleID="20" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS6" styleID="21" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS7" styleID="22" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
            <WordsStyle name="DELIMITERS8" styleID="23" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
        </Styles>
    </UserLang>
</NotepadPlus>


Удачи!

Похожие записи

Notepad++: Подсветка синтаксиса для TurboProlog: 2 комментария

Добавить комментарий

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.