<html>
<head>
<title>Оглавление</title>
<meta http-equiv="content-type" content="text/html; charset=WINDOWS-1251">
<style>
body
{
font-size: 15px;
font-family: "Bookman Old Style";
color: black;
text-align: justify;
}
h1 { color: green; font-size: 23px; }
h2 { color: green; font-size: 21px; }
h3 { color: green; font-size: 19px; }
h4 { color: #803f00; font-size: 17px; }
i { color: #0099cc; }
b { color: #0099cc; }
p {
text-indent: 1em;
margin-top: 3px;
margin-bottom: 2px;
margin-left: 0px;
margin-right: 0px;
}
ol, ul, dl{
margin-top: 3px;
margin-bottom: 2px;
}
pre
{
padding: 2px;
padding-left: 20px;
margin-top: 5px;
margin-bottom: 5px;
margin-left: 0px;
margin-right: 0px;
font-family: "Courier New";
font-size: 15px;
color: #004000;
background-color: #ffd0ff;
}
table
{
font-size: 15px;
}
</style>
</head>
<body>
<h1>TextEditor syntax file converter версия от 31.05.2010</h1>
<h2>О программе</h2>
<p>Программа для работы с файлами текстового редактора формата <b>*.syn</b>.</p>
<p><img src="te_syntax.png"></p>
<p>Лицензия свободная.</p>
<h2>Алгоритм работы программы</h2>
<p>Перед использованием записать файл <b>te_synt.kex</b> в папку с редактором <b>t_edit.kex</b>.</p>
<p>1) загрузить файл синтаксиса <b>.syn</b></p>
<p>2) ввести путь и новое имя для сохранения в формате <b>.asm</b></p>
<p>3) изменить в файле <b>.asm</b> интересующие пользователя параметры, это могут быть:</p>
<ul>
<li>цвета интерфейса</li>
<li>подсвечиваемые слова (должны ити в порядке следования ascii кодов)</li>
<li>справка по словам</li>
</ul>
<p>4) компилировать в <b>fasm</b></p>
<p>5) исправить расширение <b>.bin</b> на <b>.syn</b></p>
<p>Если пропустить 3-й пункт, то в результате пользователь должен получить такой же файл синтаксиса, который был изначально.</p>
<h3>Формат преобразованого файла подсветки *.asm</h3>
<p><b>count_colors_text</b> - колличество цветов для текста</p>
<p><b>count_key_words</b> - колличество подсвечиваемых слов</p>
<p>Цветовые параметры:</p>
<p><b>color_cursor</b> - цвет курсора</p>
<p><b>color_wnd_capt</b> - цвет полей вокруг окна</p>
<p><b>color_wnd_work</b> - цвет фона в окне</p>
<p><b>color_wnd_bord</b> - цвет текста на полях</p>
<p><b>color_select</b> - цвет выделения</p>
<p><b>color_cur_text</b> - цвет символа под курсором</p>
<p><b>color_wnd_text</b> - метка после которой идут цвета текста в окне</p>
<p><b>text</b> - метка после которой идут описания ключевых слов. Для более компактного описания ключевого слова используется макрос <b>wo</b>:</p>
<pre>macro wo txt,f1,p1,p2,p3{
@@: db txt
rb @b+40-$
dd f1+0
db p1
dw p2+0
db p3
}</pre>
<p>параметры макроса:</p>
<p><b>txt</b> - <i>подсвечиваемое слово</i></p>
<p><b>f1</b> - <i>смещение начала справки</i> по данному слову относительно метки <b>f1</b> (если справки нет то параметр можно оставить пустым)</p>
<p><b>p1</b> - <i>опции</i> влияющие на выделение слова. Возможно всего 5 опций, каждая из которых включается определенным битом:</p>
<ul>
<li>2<sup>0</sup>=1 - слева не текст,</li>
<li>2<sup>1</sup>=2 - справа не текст,</li>
<li>2<sup>2</sup>=4 - использовать конечный символ,</li>
<li>2<sup>3</sup>=8 - слева любая цифра,</li>
<li>2<sup>4</sup>=16 - справа любая цифра.</li>
</ul>
<p><b>p2</b> - <i>(ascii код экранирующего символа * 256) + ascii код конечного символа</i>. Используется в случаях, когда нужно задать выделение заранее не известной длинны, например: комментарии, строки в кавычках. Для его использования предыдущий параметр должен содержать 2-й бит или цифру 4 = 2<sup>2</sup>.</p>
<p><b>p3</b> - <i>номер цвета</i> из массива <b>color_wnd_text</b>, которым будет выделятся слово</p>
<p><b>Пример 1.</b> Нужно задать слово <i>or</i>, что-бы по ошибке комбинации из символов входящих в слово не выделялись в других словах, например: <i>f<b>or</b>m</i>, <i>col<b>or</b></i> используем в <b>p2</b> биты 0 и 1 получаем число 3 = 2<sup>0</sup>+2<sup>1</sup> = 1+2.</p>
<p><b>Пример 2.</b> Фрагмент файла, полученого в результате работы программы:</p>
<pre>wo<'word'>,f1.600-f1,<b>3</b>,,8
wo<'xadd'>,,<b>3</b>,,1
wo<'xchg'>,f1.602-f1,<b>3</b>,,1
wo<'xlat'>,,<b>3</b>,,1
wo<'xlatb'>,,<b>3</b>,,1
wo<'xmm0'>,,<b>3</b>,,2
wo<'xmm1'>,,<b>3</b>,,2
wo<'xmm2'>,,<b>3</b>,,2
wo<'xmm3'>,,<b>3</b>,,2
wo<'xmm4'>,,<b>3</b>,,2
wo<'xmm5'>,,<b>3</b>,,2
wo<'xmm6'>,,<b>3</b>,,2
wo<'xmm7'>,,<b>3</b>,,2
wo<'xor'>,f1.613-f1,<b>3</b>,,1
wo<'zf'>,f1.614-f1,<b>3</b>,,2
wo<'||'>,,<b>0</b>,,1</pre>
<p>Параметры <b>p2</b> почти во всех словах равны 3-м, а в последнем слове 0, потому что для последнего слова не важно какие символы будут слева и справа от него.</p>
<h3>Формат файла подсветки *.syn</h3>
<table>
<tr><th>Элемент</th><th>Размер (байт)</th></tr>
<tr><td>Количество цветов текста</td>
<td><pre>4</pre></td></tr>
<tr><td>Количество подсвечиваемых слов</td>
<td><pre>4</pre></td></tr>
<tr><td>Цвета интерфейса</td>
<td><pre>4*6</pre></td></tr>
<tr><td>Цвета для текста</td>
<td><pre>4*(кол. цв. текста)</pre></td></tr>
<tr><td>Структуры со свойствами и описаниями слов</td>
<td><pre>sizeof(TexColViv)*(кол. слов)</pre></td></tr>
<tr><td>Разделительный символ, означающий начало описаний слов (всегда равен 0)</td>
<td><pre>1 байт</pre></td></tr>
<tr><td>Описания слов (строки текста с 0-ми в конце)</td>
<td><pre>(длинна справочного текста + 1)</pre></td></tr>
</table>
<h4>Замечания.</h4>
<ul>
<li>Все слова должны быть расположены в порядке следования их ASCII кодов.
Возможно в будущих версиях формат файлов подсветки будет изменен.</li>
</ul>
<hr>
<h2>Автор</h2>
<p>Игорь А. (IgorA) - разработка программы.</p>
</body>
</html>