Skip to content

Commit

Permalink
Поддержка аннотаций расширений (#165)
Browse files Browse the repository at this point in the history
  • Loading branch information
tsukanov-as committed Apr 26, 2020
1 parent 3cd12d4 commit fdee906
Show file tree
Hide file tree
Showing 4 changed files with 263 additions and 25 deletions.
1 change: 1 addition & 0 deletions book.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@
* Токены(): Структура - возвращает перечисление допустимых токенов (например: `Токены.ЗнакСложения`).
* Узлы(): Структура - возвращает перечисление допустимых типов узлов AST (например: `Узлы.ОператорПрисваивания`).
* Директивы(): Структура - возвращает перечисление допустимых директив (например: `Директивы.НаСервереБезКонтекста`).
* Аннотации(): Структура - возвращает перечисление допустимых аннотаций (например: `Аннотации.Вместо`).
* ИнструкцииПрепроцессора(): Структура - возвращает перечисление допустимых инструкций препроцессора (например: `ИнструкцииПрепроцессора.КонецОбласти`).
* СимволыПрепроцессора(): Структура - возвращает перечисление допустимых символов препроцессора (например: `СимволыПрепроцессора.ТолстыйКлиентОбычноеПриложение`).
* Стек(): Структура - возвращает вершину стека узлов, которая меняется во время обхода AST и позволяет получить текущие родительские узлы в подписках плагинов.
Expand Down
85 changes: 81 additions & 4 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ <h3 id='Узлы'>Узлы</h3>
<li>"<a href='#ГлобальныйОбъект'>ГлобальныйОбъект</a>"</li>
<li>"<a href='#ГлобальныйМетод'>ГлобальныйМетод</a>"</li>
<li>"<a href='#ОбъявлениеДирективы'>ОбъявлениеДирективы</a>"</li>
<li>"<a href='#ОбъявлениеАннотации'>ОбъявлениеАннотации</a>"</li>
<li>"<a href='#ОбъявлениеПеременнойМодуля'>ОбъявлениеПеременнойМодуля</a>"</li>
<li>"<a href='#ОбъявлениеСпискаПеременныхМодуля'>ОбъявлениеСпискаПеременныхМодуля</a>"</li>
<li>"<a href='#ОбъявлениеСпискаЛокальныхПеременных'>ОбъявлениеСпискаЛокальныхПеременных</a>"</li>
Expand Down Expand Up @@ -190,6 +191,10 @@ <h3 id='Узлы'>Узлы</h3>
<li>"<a href='#ИнструкцияПрепроцессораКонецЕсли'>ИнструкцияПрепроцессораКонецЕсли</a>"</li>
<li>"<a href='#ИнструкцияПрепроцессораОбласть'>ИнструкцияПрепроцессораОбласть</a>"</li>
<li>"<a href='#ИнструкцияПрепроцессораКонецОбласти'>ИнструкцияПрепроцессораКонецОбласти</a>"</li>
<li>"<a href='#ИнструкцияПрепроцессораВставка'>ИнструкцияПрепроцессораВставка</a>"</li>
<li>"<a href='#ИнструкцияПрепроцессораКонецВставки'>ИнструкцияПрепроцессораКонецВставки</a>"</li>
<li>"<a href='#ИнструкцияПрепроцессораУдаление'>ИнструкцияПрепроцессораУдаление</a>"</li>
<li>"<a href='#ИнструкцияПрепроцессораКонецУдаления'>ИнструкцияПрепроцессораКонецУдаления</a>"</li>
<li>"<a href='#ВыражениеПрепроцессораБинарное'>ВыражениеПрепроцессораБинарное</a>"</li>
<li>"<a href='#ВыражениеПрепроцессораНе'>ВыражениеПрепроцессораНе</a>"</li>
<li>"<a href='#ВыражениеПрепроцессораСимвол'>ВыражениеПрепроцессораСимвол</a>"</li>
Expand Down Expand Up @@ -224,6 +229,17 @@ <h3 id='ОбъявлениеДирективы'>ОбъявлениеДирект
<li><strong>Начало</strong>: число</li>
<li><strong>Конец</strong>: число</li>
</ul>
<h3 id='ОбъявлениеАннотации'>ОбъявлениеАннотации<a class='permalink' href='#ОбъявлениеАннотации'></a></h3>
<ul>
<i> Хранит информацию об объявлении аннотации.</i><br>
<i> Пример:</i><br>
<pre>
&Перед("ЗаполнитьТовары")</pre> <p> <li><strong>Тип</strong>: строка (один из <a href='#Узлы'>Узлы</a>) = Узлы.ОбъявлениеАннотации</li>
<li><strong>Аннотация</strong>: строка (один из <a href='#Аннотации'>Аннотации</a>)</li>
<li><strong>ИмяМетода</strong>: строка</li>
<li><strong>Начало</strong>: число</li>
<li><strong>Конец</strong>: число</li>
</ul>
<h3 id='ОбъявлениеСпискаПеременныхМодуля'>ОбъявлениеСпискаПеременныхМодуля<a class='permalink' href='#ОбъявлениеСпискаПеременныхМодуля'></a></h3>
<ul>
<i> Хранит информацию об инструкции объявления переменных уровня модуля.</i><br>
Expand Down Expand Up @@ -332,6 +348,7 @@ <h3 id='СигнатураПроцедуры'>СигнатураПроцедур
Процедура Тест(П1, П2) Экспорт</pre> <p> <li><strong>Тип</strong>: строка (один из <a href='#Узлы'>Узлы</a>) = Узлы.СигнатураПроцедуры</li>
<li><strong>Имя</strong>: строка</li>
<li><strong>Директивы</strong>: массив (<a href='#ОбъявлениеДирективы'>ОбъявлениеДирективы</a>)</li>
<li><strong>Аннотации</strong>: массив (<a href='#ОбъявлениеАннотации'>ОбъявлениеАннотации</a>)</li>
<li><strong>Параметры</strong>: массив (<a href='#ОбъявлениеПараметра'>ОбъявлениеПараметра</a>)</li>
<li><strong>Экспорт</strong>: булево</li>
<li><strong>Начало</strong>: число</li>
Expand All @@ -346,6 +363,7 @@ <h3 id='СигнатураФункции'>СигнатураФункции<a cla
Функция Тест(П1, П2) Экспорт</pre> <p> <li><strong>Тип</strong>: строка (один из <a href='#Узлы'>Узлы</a>) = Узлы.СигнатураФункции</li>
<li><strong>Имя</strong>: строка</li>
<li><strong>Директивы</strong>: массив (<a href='#ОбъявлениеДирективы'>ОбъявлениеДирективы</a>)</li>
<li><strong>Аннотации</strong>: массив (<a href='#ОбъявлениеАннотации'>ОбъявлениеАннотации</a>)</li>
<li><strong>Параметры</strong>: массив (<a href='#ОбъявлениеПараметра'>ОбъявлениеПараметра</a>)</li>
<li><strong>Экспорт</strong>: булево</li>
<li><strong>Начало</strong>: число</li>
Expand Down Expand Up @@ -787,7 +805,7 @@ <h3 id='ИнструкцияПрепроцессораОбласть'>Инстр
</ul>
<h3 id='ИнструкцияПрепроцессораКонецОбласти'>ИнструкцияПрепроцессораКонецОбласти<a class='permalink' href='#ИнструкцияПрепроцессораКонецОбласти'></a></h3>
<ul>
<i> Хранит информацию об инструкции препроцессора#КонецОбласти,</i><br>
<i> Хранит информацию об инструкции препроцессора #КонецОбласти,</i><br>
<i> Пример:</i><br>
<pre>
...
Expand All @@ -796,6 +814,50 @@ <h3 id='ИнструкцияПрепроцессораКонецОбласти'>
<li><strong>Начало</strong>: число</li>
<li><strong>Конец</strong>: число</li>
</ul>
<h3 id='ИнструкцияПрепроцессораВставка'>ИнструкцияПрепроцессораВставка<a class='permalink' href='#ИнструкцияПрепроцессораВставка'></a></h3>
<ul>
<i> Хранит информацию об инструкции препроцессора #Вставка,</i><br>
<i> Пример:</i><br>
<pre>
...
#Вставка
...</pre> <p> <li><strong>Тип</strong>: строка (один из <a href='#Узлы'>Узлы</a>) = Узлы.ИнструкцияПрепроцессораВставка</li>
<li><strong>Начало</strong>: число</li>
<li><strong>Конец</strong>: число</li>
</ul>
<h3 id='ИнструкцияПрепроцессораКонецВставки'>ИнструкцияПрепроцессораКонецВставки<a class='permalink' href='#ИнструкцияПрепроцессораКонецВставки'></a></h3>
<ul>
<i> Хранит информацию об инструкции препроцессора #КонецВставки,</i><br>
<i> Пример:</i><br>
<pre>
...
#КонецВставки
...</pre> <p> <li><strong>Тип</strong>: строка (один из <a href='#Узлы'>Узлы</a>) = Узлы.ИнструкцияПрепроцессораКонецВставки</li>
<li><strong>Начало</strong>: число</li>
<li><strong>Конец</strong>: число</li>
</ul>
<h3 id='ИнструкцияПрепроцессораУдаление'>ИнструкцияПрепроцессораУдаление<a class='permalink' href='#ИнструкцияПрепроцессораУдаление'></a></h3>
<ul>
<i> Хранит информацию об инструкции препроцессора #Удаление,</i><br>
<i> Пример:</i><br>
<pre>
...
#Удаление
...</pre> <p> <li><strong>Тип</strong>: строка (один из <a href='#Узлы'>Узлы</a>) = Узлы.ИнструкцияПрепроцессораУдаление</li>
<li><strong>Начало</strong>: число</li>
<li><strong>Конец</strong>: число</li>
</ul>
<h3 id='ИнструкцияПрепроцессораКонецУдаления'>ИнструкцияПрепроцессораКонецУдаления<a class='permalink' href='#ИнструкцияПрепроцессораКонецУдаления'></a></h3>
<ul>
<i> Хранит информацию об инструкции препроцессора #КонецУдаления,</i><br>
<i> Пример:</i><br>
<pre>
...
#КонецУдаления
...</pre> <p> <li><strong>Тип</strong>: строка (один из <a href='#Узлы'>Узлы</a>) = Узлы.ИнструкцияПрепроцессораКонецУдаления</li>
<li><strong>Начало</strong>: число</li>
<li><strong>Конец</strong>: число</li>
</ul>
<h2 id='#ВыражениеПрепроцессора'>#ВыражениеПрепроцессора</h2>
<h3 id='ВыражениеПрепроцессораБинарное'>ВыражениеПрепроцессораБинарное<a class='permalink' href='#ВыражениеПрепроцессораБинарное'></a></h3>
<ul>
Expand Down Expand Up @@ -871,13 +933,23 @@ <h3 id='Доступность'>Доступность</h3>
<li>"НаКлиентеНаСервереБезКонтекста"</li>
<li>"НаКлиентеНаСервере"</li>
</ul>
<h3 id='Аннотации'>Аннотации</h3>
<ul><li>"Перед"</li>
<li>"После"</li>
<li>"Вместо"</li>
<li>"ИзменениеИКонтроль"</li>
</ul>
<h3 id='ИнструкцииПрепроцессора'>ИнструкцииПрепроцессора</h3>
<ul><li>"Если"</li>
<li>"ИначеЕсли"</li>
<li>"Иначе"</li>
<li>"КонецЕсли"</li>
<li>"Область"</li>
<li>"КонецОбласти"</li>
<li>"Вставка"</li>
<li>"КонецВставки"</li>
<li>"Удаление"</li>
<li>"КонецУдаления"</li>
</ul>
<h3 id='Токены'>Токены</h3>
<ul><li>"Если"</li>
Expand Down Expand Up @@ -951,9 +1023,14 @@ <h3 id='Токены'>Токены</h3>
<li>"_КонецЕсли"</li>
<li>"_Область"</li>
<li>"_КонецОбласти"</li>
<li>"НачалоТекста"</li>
<li>"КонецТекста"</li>
<li>"_Вставка"</li>
<li>"_КонецВставки"</li>
<li>"_Удаление"</li>
<li>"_КонецУдаления"</li>
<li>"Комментарий"</li>
<li>"Директива"</li>
<li>"Метка"</li>
<li>"Аннотация"</li>
<li>"Директива"</li>
<li>"НачалоТекста"</li>
<li>"КонецТекста"</li>
</ul>
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

// Генератор технической документации по парсеру

Перем Токены, Узлы, Директивы, ИнструкцииПрепроцессора, ТаблицаТокенов, Исходник;
Перем Токены, Узлы, Директивы, Аннотации, ИнструкцииПрепроцессора, ТаблицаТокенов, Исходник;
Перем Область, Подобласть, УровеньОбласти;
Перем Комментарии;
Перем Результат;
Expand All @@ -10,6 +10,7 @@
Токены = Парсер.Токены();
Узлы = Парсер.Узлы();
Директивы = Парсер.Директивы();
Аннотации = Парсер.Аннотации();
ИнструкцииПрепроцессора = Парсер.ИнструкцииПрепроцессора();
ТаблицаТокенов = Парсер.ТаблицаТокенов();
Исходник = Парсер.Исходник();
Expand Down Expand Up @@ -181,6 +182,7 @@
);
Результат.Добавить("<h2 id='#Перечисления'>#Перечисления</h2>");
Результат.Добавить(СгенерироватьПеречисление("Директивы", Директивы));
Результат.Добавить(СгенерироватьПеречисление("Аннотации", Аннотации));
Результат.Добавить(СгенерироватьПеречисление("ИнструкцииПрепроцессора", ИнструкцииПрепроцессора));
//Результат.Добавить(СгенерироватьПеречисление("Узлы", Узлы, Истина));
Результат.Добавить(СгенерироватьПеречисление("Токены", Токены));
Expand Down
Loading

0 comments on commit fdee906

Please sign in to comment.