<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://pascalabc.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ibond</id>
	<title>Вики проекта PascalABC.NET - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://pascalabc.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ibond"/>
	<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Ibond"/>
	<updated>2026-04-18T08:34:01Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=2271</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=2271"/>
		<updated>2012-01-23T16:52:51Z</updated>

		<summary type="html">&lt;p&gt;Ibond: Правки Criss22 (обсуждение) откачены к версии Ibond&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cтатьи==&lt;br /&gt;
* [[FAQ по PascalABC.NET]]&lt;br /&gt;
&lt;br /&gt;
== Примеры==&lt;br /&gt;
* [[Программы для начинающих|Программы и алгоритмы для начинающих]]&lt;br /&gt;
* [[Особенности языка: базовый уровень]]&lt;br /&gt;
* [[Стандартные модули: базовый уровень]]&lt;br /&gt;
* [[Особенности языка: продвинутый уровень]]&lt;br /&gt;
* [[Стандартные модули: продвинутый уровень]]&lt;br /&gt;
* [[Алгоритмы для студентов|Программы и алгоритмы для студентов ИТ]]&lt;br /&gt;
* [[Алгоритмы средней сложности]] (пока не реализовано)&lt;br /&gt;
&lt;br /&gt;
== Обучение==&lt;br /&gt;
* [[GPLex + GPPG|Задания по курсу &amp;quot;Методы построения компиляторов&amp;quot;]]&lt;br /&gt;
* [[Комплект юного разработчика парсеров]]&lt;br /&gt;
* [[Как создать компилятор]]&lt;br /&gt;
* [[Построение синтаксического дерева программы на языке Паскаль]]&lt;br /&gt;
* [[МПОК 2011]]&lt;br /&gt;
&lt;br /&gt;
== Web-среда разработки PascalABC.NET ==&lt;br /&gt;
&lt;br /&gt;
*[[Основная страница проекта WDE PascalABC.NET|Основная страница проекта]]&lt;br /&gt;
&lt;br /&gt;
==Другие проекты==&lt;br /&gt;
&lt;br /&gt;
* [[Идеи курсовых 2011]]&lt;br /&gt;
*[[Обзор реализации основных возможностей функционального языка программирования в среде PascalABC.NET|Проект &amp;quot;Реализация основных возможностей функционального языка программирования в среде PascalABC.NET&amp;quot; (Бушманова Н.)]]&lt;br /&gt;
*[[Рефакторинг|Проект &amp;quot;Рефакторинг по семантическому дереву PascalABC.NET&amp;quot; (Малеванный М., Коноплев Е.)]]&lt;br /&gt;
*[[Аспектно-ориентированное программирование|Проект &amp;quot;Аспектно-ориентированное программирование&amp;quot; (Зарубин М.)]]&lt;br /&gt;
* [[Реализация языка программирования Оберон на базе PascalABC.NET]]&lt;br /&gt;
&lt;br /&gt;
* [[Проект Optimus - учебная система оптимизации программ]]&lt;br /&gt;
&lt;br /&gt;
== Для разработчика PascalABC.NET ==&lt;br /&gt;
&lt;br /&gt;
* [[Что менять при переходе к новой версии PascalABC.NET]]&lt;br /&gt;
* [[Архитектура PascalABC.NET]]&lt;br /&gt;
* [[Создание нового языка программирования - с чего начать]]&lt;br /&gt;
* [[Интерфейс подключения нового языка программирования|Интерфейс подключения нового языка программирования (проект)]]&lt;br /&gt;
* [[Директивы компилятора]]&lt;br /&gt;
* [[Синтаксическое дерево]]&lt;br /&gt;
* [[Семантическое дерево]]&lt;br /&gt;
* [[Формат PCU]]&lt;br /&gt;
* [[Отладчик]]&lt;br /&gt;
* [[Intellisense]]&lt;br /&gt;
* [[Шаблоны кода]]&lt;br /&gt;
* [[Создание нового стандартного модуля (для разработчика)]]&lt;br /&gt;
&lt;br /&gt;
== Статьи по программированию в PascalABC.NET ==&lt;br /&gt;
* [[Локализация приложений]]&lt;br /&gt;
* [[Плагины для PascalABC.NET]]&lt;br /&gt;
* [[Отслеживание изменений в файловой системе]]&lt;br /&gt;
* [[OpenGL]]&lt;br /&gt;
&lt;br /&gt;
== Разное ==&lt;br /&gt;
* [[GPPG+GPLex - что исправить для русской кодировки]]&lt;br /&gt;
[[Ош]]&lt;br /&gt;
[[Ош1]]&lt;br /&gt;
[[ОшWDE2]]&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=2268</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=2268"/>
		<updated>2012-01-20T20:34:30Z</updated>

		<summary type="html">&lt;p&gt;Ibond: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cтатьи==&lt;br /&gt;
* [[FAQ по PascalABC.NET]]&lt;br /&gt;
&lt;br /&gt;
== Примеры==&lt;br /&gt;
* [[Программы для начинающих|Программы и алгоритмы для начинающих]]&lt;br /&gt;
* [[Особенности языка: базовый уровень]]&lt;br /&gt;
* [[Стандартные модули: базовый уровень]]&lt;br /&gt;
* [[Особенности языка: продвинутый уровень]]&lt;br /&gt;
* [[Стандартные модули: продвинутый уровень]]&lt;br /&gt;
* [[Алгоритмы для студентов|Программы и алгоритмы для студентов ИТ]]&lt;br /&gt;
* [[Алгоритмы средней сложности]] (пока не реализовано)&lt;br /&gt;
&lt;br /&gt;
== Обучение==&lt;br /&gt;
* [[GPLex + GPPG|Задания по курсу &amp;quot;Методы построения компиляторов&amp;quot;]]&lt;br /&gt;
* [[Комплект юного разработчика парсеров]]&lt;br /&gt;
* [[Как создать компилятор]]&lt;br /&gt;
* [[Построение синтаксического дерева программы на языке Паскаль]]&lt;br /&gt;
* [[МПОК 2011]]&lt;br /&gt;
&lt;br /&gt;
== Web-среда разработки PascalABC.NET ==&lt;br /&gt;
&lt;br /&gt;
*[[Основная страница проекта WDE PascalABC.NET|Основная страница проекта]]&lt;br /&gt;
&lt;br /&gt;
==Другие проекты==&lt;br /&gt;
&lt;br /&gt;
* [[Идеи курсовых 2011]]&lt;br /&gt;
*[[Обзор реализации основных возможностей функционального языка программирования в среде PascalABC.NET|Проект &amp;quot;Реализация основных возможностей функционального языка программирования в среде PascalABC.NET&amp;quot; (Бушманова Н.)]]&lt;br /&gt;
*[[Рефакторинг|Проект &amp;quot;Рефакторинг по семантическому дереву PascalABC.NET&amp;quot; (Малеванный М., Коноплев Е.)]]&lt;br /&gt;
*[[Аспектно-ориентированное программирование|Проект &amp;quot;Аспектно-ориентированное программирование&amp;quot; (Зарубин М.)]]&lt;br /&gt;
* [[Реализация языка программирования Оберон на базе PascalABC.NET]]&lt;br /&gt;
&lt;br /&gt;
* [[Проект Optimus - учебная система оптимизации программ]]&lt;br /&gt;
&lt;br /&gt;
== Для разработчика PascalABC.NET ==&lt;br /&gt;
&lt;br /&gt;
* [[Что менять при переходе к новой версии PascalABC.NET]]&lt;br /&gt;
* [[Архитектура PascalABC.NET]]&lt;br /&gt;
* [[Создание нового языка программирования - с чего начать]]&lt;br /&gt;
* [[Интерфейс подключения нового языка программирования|Интерфейс подключения нового языка программирования (проект)]]&lt;br /&gt;
* [[Директивы компилятора]]&lt;br /&gt;
* [[Синтаксическое дерево]]&lt;br /&gt;
* [[Семантическое дерево]]&lt;br /&gt;
* [[Формат PCU]]&lt;br /&gt;
* [[Отладчик]]&lt;br /&gt;
* [[Intellisense]]&lt;br /&gt;
* [[Шаблоны кода]]&lt;br /&gt;
* [[Создание нового стандартного модуля (для разработчика)]]&lt;br /&gt;
&lt;br /&gt;
== Статьи по программированию в PascalABC.NET ==&lt;br /&gt;
* [[Локализация приложений]]&lt;br /&gt;
* [[Плагины для PascalABC.NET]]&lt;br /&gt;
* [[Отслеживание изменений в файловой системе]]&lt;br /&gt;
* [[OpenGL]]&lt;br /&gt;
&lt;br /&gt;
== Разное ==&lt;br /&gt;
* [[GPPG+GPLex - что исправить для русской кодировки]]&lt;br /&gt;
[[Ош]]&lt;br /&gt;
[[Ош1]]&lt;br /&gt;
[[ОшWDE2]]&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=2267</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=2267"/>
		<updated>2012-01-20T20:34:08Z</updated>

		<summary type="html">&lt;p&gt;Ibond: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Cтатьи==&lt;br /&gt;
* [[FAQ по PascalABC.NET]]&lt;br /&gt;
&lt;br /&gt;
== Примеры==&lt;br /&gt;
* [[Программы для начинающих|Программы и алгоритмы для начинающих]]&lt;br /&gt;
* [[Особенности языка: базовый уровень]]&lt;br /&gt;
* [[Стандартные модули: базовый уровень]]&lt;br /&gt;
* [[Особенности языка: продвинутый уровень]]&lt;br /&gt;
* [[Стандартные модули: продвинутый уровень]]&lt;br /&gt;
* [[Алгоритмы для студентов|Программы и алгоритмы для студентов ИТ]]&lt;br /&gt;
* [[Алгоритмы средней сложности]] (пока не реализовано)&lt;br /&gt;
&lt;br /&gt;
== Обучение==&lt;br /&gt;
* [[GPLex + GPPG|Задания по курсу &amp;quot;Методы построения компиляторов&amp;quot;]]&lt;br /&gt;
* [[Комплект юного разработчика парсеров]]&lt;br /&gt;
* [[Как создать компилятор]]&lt;br /&gt;
* [[Построение синтаксического дерева программы на языке Паскаль]]&lt;br /&gt;
* [[МПОК 2011]]&lt;br /&gt;
&lt;br /&gt;
== Web-среда разработки PascalABC.NET ==&lt;br /&gt;
&lt;br /&gt;
*[[Основная страница проекта WDE PascalABC.NET|Основная страница проекта]]&lt;br /&gt;
&lt;br /&gt;
==Другие проекты==&lt;br /&gt;
&lt;br /&gt;
* [[Идеи курсовых 2011]]&lt;br /&gt;
*[[Обзор реализации основных возможностей функционального языка программирования в среде PascalABC.NET|Проект &amp;quot;Реализация основных возможностей функционального языка программирования в среде PascalABC.NET&amp;quot; (Бушманова Н.)]]&lt;br /&gt;
*[[Рефакторинг|Проект &amp;quot;Рефакторинг по семантическому дереву PascalABC.NET&amp;quot; (Малеванный М., Коноплев Е.)]]&lt;br /&gt;
*[[Аспектно-ориентированное программирование|Проект &amp;quot;Аспектно-ориентированное программирование&amp;quot; (Зарубин М.)]]&lt;br /&gt;
* [[Реализация языка программирования Оберон на базе PascalABC.NET]]&lt;br /&gt;
&lt;br /&gt;
* [[Проект Optimus - учебная система оптимизации программ]]&lt;br /&gt;
&lt;br /&gt;
== Для разработчика PascalABC.NET ==&lt;br /&gt;
&lt;br /&gt;
* [[Что менять при переходе к новой версии PascalABC.NET]]&lt;br /&gt;
* [[Архитектура PascalABC.NET]]&lt;br /&gt;
* [[Создание нового языка программирования - с чего начать]]&lt;br /&gt;
* [[Интерфейс подключения нового языка программирования|Интерфейс подключения нового языка программирования (проект)]]&lt;br /&gt;
* [[Директивы компилятора]]&lt;br /&gt;
* [[Синтаксическое дерево]]&lt;br /&gt;
* [[Семантическое дерево]]&lt;br /&gt;
* [[Формат PCU]]&lt;br /&gt;
* [[Отладчик]]&lt;br /&gt;
* [[Intellisense]]&lt;br /&gt;
* [[Шаблоны кода]]&lt;br /&gt;
* [[Создание нового стандартного модуля (для разработчика)]]&lt;br /&gt;
&lt;br /&gt;
== Статьи по программированию в PascalABC.NET ==&lt;br /&gt;
* [[Локализация приложений]]&lt;br /&gt;
* [[Плагины для PascalABC.NET]]&lt;br /&gt;
* [[Отслеживание изменений в файловой системе]]&lt;br /&gt;
* [[OpenGL]]&lt;br /&gt;
&lt;br /&gt;
== Разное ==&lt;br /&gt;
* [[GPPG+GPLex - что исправить для русской кодировки]]&lt;br /&gt;
[[Ош]]&lt;br /&gt;
[[Ош1]]&lt;br /&gt;
[[ОшWDE2]]&lt;br /&gt;
тест&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%9F%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D1%8B_%D0%B4%D0%BB%D1%8F_PascalABC.NET&amp;diff=2201</id>
		<title>Плагины для PascalABC.NET</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%9F%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D1%8B_%D0%B4%D0%BB%D1%8F_PascalABC.NET&amp;diff=2201"/>
		<updated>2011-10-04T16:30:37Z</updated>

		<summary type="html">&lt;p&gt;Ibond: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Среда PascalABC.NET позволяет расширять функционал с помощью плагинов. Ниже приведен пример простого плагина на паскале, который создает программу в редакторе и запускает ее:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Pascal&amp;quot;&amp;gt;&lt;br /&gt;
{$apptype dll}&lt;br /&gt;
&lt;br /&gt;
//для доступа к IVisualPascalABCPlugin, IVisualEnvironmentCompiler&lt;br /&gt;
{$reference PluginsSupport.dll}&lt;br /&gt;
//для доступа к IVisualEnvironmentCompiler.Compiler&lt;br /&gt;
{$reference Compiler.dll}&lt;br /&gt;
&lt;br /&gt;
{$reference System.Windows.Forms.dll}&lt;br /&gt;
{$reference System.Drawing.dll}&lt;br /&gt;
&lt;br /&gt;
//Ресурс - иконка кнопки&lt;br /&gt;
{$resource PABCTestPlugin_newfile.png}&lt;br /&gt;
&lt;br /&gt;
unit PABCTestPlugin;&lt;br /&gt;
&lt;br /&gt;
uses System.Collections.Generic,&lt;br /&gt;
     System.Drawing, &lt;br /&gt;
     VisualPascalABCPlugins;&lt;br /&gt;
&lt;br /&gt;
const NL = #13#10;&lt;br /&gt;
&lt;br /&gt;
type&lt;br /&gt;
  //Тестовый плагин - должен иметь имя *_VisualPascalABCPlugin и реализовывать &lt;br /&gt;
  //интерфейс VisualPascalABCPlugins.IVisualPascalABCPlugin&lt;br /&gt;
  //Этот плагин добавляет конпку на панель и в меню, по нажатию на которую:&lt;br /&gt;
  // 1. создается новый pas файл&lt;br /&gt;
  // 2. он открывается в оболочке&lt;br /&gt;
  // 3. он компилируется и запускается&lt;br /&gt;
  PABCTestPlugin_VisualPascalABCPlugin = class(IVisualPascalABCPlugin)&lt;br /&gt;
  private&lt;br /&gt;
    //интерфейс на оболочку компилятора&lt;br /&gt;
    compiler: IVisualEnvironmentCompiler;&lt;br /&gt;
    &lt;br /&gt;
    //для получения нового имени файла&lt;br /&gt;
    function GetNewFileName():string;&lt;br /&gt;
    begin&lt;br /&gt;
      var fileTemplate := 'C:\PABCWork.NET\NewProgram{0}.pas';&lt;br /&gt;
      var pasFile := '';&lt;br /&gt;
      var i := 1;&lt;br /&gt;
      repeat&lt;br /&gt;
        pasFile := string.Format(fileTemplate, i);&lt;br /&gt;
        i += 1;&lt;br /&gt;
      until(not System.IO.File.Exists(pasFile));&lt;br /&gt;
      result := pasFile;&lt;br /&gt;
    end;&lt;br /&gt;
    //обработчик нажатия на кнопку&lt;br /&gt;
    procedure Click1;&lt;br /&gt;
    begin&lt;br /&gt;
      //создаем файл&lt;br /&gt;
      var fileName := GetNewFileName;&lt;br /&gt;
      System.IO.File.WriteAllText(fileName, string.Format('begin'+NL+'Write(''Im new program &amp;quot;{0}&amp;quot; :)'');'+NL+'end.', fileName));&lt;br /&gt;
      //Открываем его в оболочке&lt;br /&gt;
      compiler.ExecuteAction(VisualEnvironmentCompilerAction.OpenFile, fileName);&lt;br /&gt;
      //Запускаем компиляцию и выполнение&lt;br /&gt;
      compiler.ExecuteAction(VisualEnvironmentCompilerAction.Run, nil);&lt;br /&gt;
    end;&lt;br /&gt;
  &lt;br /&gt;
  public&lt;br /&gt;
    //обязателен конструктор с одним параметром типа IVisualEnvironmentCompiler&lt;br /&gt;
    constructor(compiler: IVisualEnvironmentCompiler);&lt;br /&gt;
    begin&lt;br /&gt;
      self.compiler := compiler;&lt;br /&gt;
    end;&lt;br /&gt;
    //Обязательно&lt;br /&gt;
    function get_Name:string;&lt;br /&gt;
    begin&lt;br /&gt;
      result := 'PABC Test Plugin';&lt;br /&gt;
    end;&lt;br /&gt;
    //Обязательно&lt;br /&gt;
    function get_Version:string;&lt;br /&gt;
    begin&lt;br /&gt;
      result := '1.0';&lt;br /&gt;
    end;&lt;br /&gt;
    //Обязательно    &lt;br /&gt;
    function get_Copyright:string;&lt;br /&gt;
    begin&lt;br /&gt;
      result := 'PascalABCNet Team';&lt;br /&gt;
    end;&lt;br /&gt;
    //Обязательно&lt;br /&gt;
    //Визуальная оболочка с помощью этой функции получает спиок кнопок на панели и кнопок в меню:&lt;br /&gt;
    //Плагин должен добавить в соответвующий список необходимые кнопки.&lt;br /&gt;
    procedure GetGUI(MenuItems:List&amp;lt;IPluginGUIItem&amp;gt;; ToolBarItems:List&amp;lt;IPluginGUIItem&amp;gt;);&lt;br /&gt;
    begin&lt;br /&gt;
      //Грузим изображение из ресурса&lt;br /&gt;
      var img:Image := Image.FromStream(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream('PABCTestPlugin_newfile.png'));&lt;br /&gt;
      //Создаем кнопку&lt;br /&gt;
      var item1 := new PluginGUIItem('Новый файл', 'Создать новый файл', img, Color.Transparent, Click1);&lt;br /&gt;
      //Добавляем в меню&lt;br /&gt;
      MenuItems.Add(item1);&lt;br /&gt;
      //Добавляем на панель&lt;br /&gt;
      ToolBarItems.Add(item1);&lt;br /&gt;
    end;&lt;br /&gt;
    &lt;br /&gt;
  end;&lt;br /&gt;
  &lt;br /&gt;
end.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Скомпилированную dll-библиотеку плагина нужно затем поместить в папку PascalABC.NET. Также необходимо создать иконку PABCTestPlugin_newfile.png размером 16x16.&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%94%D0%B8%D1%80%D0%B5%D0%BA%D1%82%D0%B8%D0%B2%D1%8B_%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%82%D0%BE%D1%80%D0%B0&amp;diff=2065</id>
		<title>Директивы компилятора</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%94%D0%B8%D1%80%D0%B5%D0%BA%D1%82%D0%B8%D0%B2%D1%8B_%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%82%D0%BE%D1%80%D0%B0&amp;diff=2065"/>
		<updated>2011-06-08T16:06:41Z</updated>

		<summary type="html">&lt;p&gt;Ibond: /* Основные директивы, обрабатываемые препроцессором */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Основные директивы, обрабатываемые препроцессором ==&lt;br /&gt;
&lt;br /&gt;
'''{$apptype &amp;lt;тип приложения&amp;gt;}''' - Задание типа приложения (windows/console).&lt;br /&gt;
&lt;br /&gt;
'''{$reference &amp;lt;имя файла&amp;gt;}'''	- Подключение библиотеки.&lt;br /&gt;
&lt;br /&gt;
'''{$gendoc &amp;lt;параметр&amp;gt;}'''	- Генерация документации в XML формате. Параметры: '''true''', '''false'''.&lt;br /&gt;
&lt;br /&gt;
'''{$mainresource &amp;lt;имя файла&amp;gt;}''' - Подключение .res файла в качестве неуправляемого ресурса&lt;br /&gt;
&lt;br /&gt;
'''{$resource &amp;lt;имя файла&amp;gt;}''' - Подключение файла в качестве управляемого ресурса&lt;br /&gt;
&lt;br /&gt;
'''{$product &amp;lt;название продукта&amp;gt;}''' - Название продукта&lt;br /&gt;
&lt;br /&gt;
'''{$version &amp;lt;версия продукта&amp;gt;}''' - Версия продукта&lt;br /&gt;
&lt;br /&gt;
'''{$company &amp;lt;компания&amp;gt;}''' - Компания&lt;br /&gt;
&lt;br /&gt;
'''{$copyright &amp;lt;копирайт&amp;gt;}''' - Копирайт&lt;br /&gt;
&lt;br /&gt;
'''{$trademark &amp;lt;торговая марка&amp;gt;}''' - Торговая марка&lt;br /&gt;
&lt;br /&gt;
'''{$include &amp;lt;имя файла&amp;gt;}'''	- Включение в текст программы содержимого указанного файла.&lt;br /&gt;
&lt;br /&gt;
'''{$define &amp;lt;идентификатор&amp;gt;}'''	- Определение имени, используемого в директивах '''$ifdef''', '''$ifndef'''.&lt;br /&gt;
&lt;br /&gt;
'''{$undef &amp;lt;идентификатор&amp;gt;}'''	- Исключение имени, используется для отмены действия директивы '''$define'''.&lt;br /&gt;
&lt;br /&gt;
'''{$ifdef &amp;lt;идентификатор&amp;gt;}'''	- Начало блока условной компиляции (проверяется условие: &amp;quot;идентификатор определен&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
'''{$ifndef &amp;lt;идентификатор&amp;gt;}'''	- Начало блока условной компиляции (проверяется условие: &amp;quot;идентификатор не определен&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
'''{$else}'''                   - Директива &amp;quot;иначе&amp;quot; в блоке условной компиляции.&lt;br /&gt;
&lt;br /&gt;
'''{$endif}'''                  - Завершение блока условной компиляции.&lt;br /&gt;
&lt;br /&gt;
Директивы '''$ifdef''', '''$ifndef''' совместно с директивами '''$else''' и '''$endif''' управлют условной компиляцией частей исходного файла. Каждой директиве '''$ifdef''', '''$ifndef''' должна соответствовать завершающая ее директива '''$endif'''. Между директивами '''$ifdef''', '''$ifndef''' и '''$endif''' допускается произвольное количество блоков условной компиляции (в том числе вложенных) и не более одной директивы '''$else'''.&lt;br /&gt;
&lt;br /&gt;
== Пример программы с использованием директив компилятора ==&lt;br /&gt;
&lt;br /&gt;
 {$apptype console} &lt;br /&gt;
 {$reference library.dll} &lt;br /&gt;
 {$define DEBUG} &lt;br /&gt;
 {$define GO}&lt;br /&gt;
 begin&lt;br /&gt;
   {$ifdef GO} &lt;br /&gt;
     {$ifndef DEBUG}&lt;br /&gt;
       writeln('Имя DEBUG не определено');&lt;br /&gt;
     {$else} &lt;br /&gt;
       writeln('Имя DEBUG определено');&lt;br /&gt;
     {$endif}&lt;br /&gt;
   {$endif}&lt;br /&gt;
  &lt;br /&gt;
   {$include test.pas}&lt;br /&gt;
 end.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Отключение препроцессора ==&lt;br /&gt;
Для отключения препроцессора необходимо закомментировать следующие строки в файле Core\Parsers\PascalABCParser\Parser.cs&lt;br /&gt;
216&lt;br /&gt;
225-228&lt;br /&gt;
237-238&lt;br /&gt;
246-247&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%9C%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B0_%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%82%D0%B8%D0%BF%D0%B0&amp;diff=1761</id>
		<title>Множества произвольного типа</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%9C%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B0_%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D1%82%D0%B8%D0%BF%D0%B0&amp;diff=1761"/>
		<updated>2010-08-03T11:07:16Z</updated>

		<summary type="html">&lt;p&gt;Ibond: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Базовый тип для множества может быть произвольным. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;Delphi&amp;quot;&amp;gt;var &lt;br /&gt;
  s1: set of string := ['Иванов','Попов','Сидорова','Петров'];&lt;br /&gt;
  s2: set of string := ['Козлов','Петров','Иванов'];&lt;br /&gt;
begin&lt;br /&gt;
  writeln('Множество s1: ',s1);&lt;br /&gt;
  writeln('Множество s2: ',s2);&lt;br /&gt;
  writeln('Объединение множеств s1 и s2: ',s1+s2);&lt;br /&gt;
  writeln('Пересечение множеств s1 и s2: ',s1*s2);&lt;br /&gt;
  writeln('Разность множеств s1 и s2: ',s1-s2);&lt;br /&gt;
  Include(s1,'Умнов');&lt;br /&gt;
  s1 -= ['Иванов']; // делает то же, что и Exclude&lt;br /&gt;
  writeln('Множество s1: ',s1);&lt;br /&gt;
  &lt;br /&gt;
  write('Множество s2: ');&lt;br /&gt;
  foreach str: string in s2 do&lt;br /&gt;
    write(str,' ');&lt;br /&gt;
end. &amp;lt;/source&amp;gt; &lt;br /&gt;
Множества внутри устроены не как битовые векторы, а как хеш-таблицы, за счет этого операции с ними менее эффективны.&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
*[[Особенности языка: базовый уровень]]&lt;br /&gt;
*[http://pascalabc.net/ru/bazovyie-osobennosti-yazyika-i-bibliotek.html Сайт PascalABC.NET: Особенности языка]&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F_(%D0%B4%D0%BB%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0)&amp;diff=1593</id>
		<title>Создание нового стандартного модуля (для разработчика)</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F_(%D0%B4%D0%BB%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0)&amp;diff=1593"/>
		<updated>2010-04-20T19:29:55Z</updated>

		<summary type="html">&lt;p&gt;Ibond: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* В ReleaseGenerators\sect_Core.nsh добавить имена .pas и .pcu-файлов в двух местах. Например, при добавлении Core.pas:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Delphi&amp;quot;&amp;gt;&lt;br /&gt;
    File ..\bin\Lib\Core.pcu&lt;br /&gt;
    ${AddFile} &amp;quot;Core.pcu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    File ..\bin\Lib\Core.pas&lt;br /&gt;
    ${AddFile} &amp;quot;Core.pas&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* В ReleaseGenerators\RebuildStandartModules.pas в uses добавить имя стандартного модуля&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F_(%D0%B4%D0%BB%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0)&amp;diff=1592</id>
		<title>Создание нового стандартного модуля (для разработчика)</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%81%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F_(%D0%B4%D0%BB%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA%D0%B0)&amp;diff=1592"/>
		<updated>2010-04-20T19:28:54Z</updated>

		<summary type="html">&lt;p&gt;Ibond: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* В ReleaseGenerators\sect_Core.nsh добавить имена .pas и .pcu-файлов в двух местах. Например, при добавлении Core.pas:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Delphi&amp;quot;&amp;gt;&lt;br /&gt;
    File ..\bin\Lib\Core.pcu&lt;br /&gt;
    ${AddFile} &amp;quot;Core.pcu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    File ..\bin\Lib\Core.pas&lt;br /&gt;
    ${AddFile} &amp;quot;Core.pas&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* В ReleaseGenerators\RebuildStandartModules.pas в  uses добавить имя стандартного модуля&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%A1%D0%B5%D0%BC%D0%B0%D0%BD%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE&amp;diff=1510</id>
		<title>Семантическое дерево</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%A1%D0%B5%D0%BC%D0%B0%D0%BD%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE&amp;diff=1510"/>
		<updated>2010-02-02T16:14:20Z</updated>

		<summary type="html">&lt;p&gt;Ibond: Отмена правки 1509 участника Wloki (обсуждение)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Семантическое дерево''' в PascalABC.NET представляет собой атрибутированное дерево (точнее граф) разбора программы. Оно строится во время семантического анализа (включая восстановление из PCU). Семантическое дерево сериализуется в [[PCU]], по нему генерируется IL-код. Классы, реализующие узлы семантического дерево, предоставляют соответствующие интерфейсы. Например, генератор кода оперирует не непосредственно классами, а лишь интерфейсами семантического дерева.&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=1399</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=1399"/>
		<updated>2010-01-16T10:12:11Z</updated>

		<summary type="html">&lt;p&gt;Ibond: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Некоторые статьи о PascalABC.NET==&lt;br /&gt;
* [[FAQ по PascalABC.NET]]&lt;br /&gt;
== Примеры==&lt;br /&gt;
* [[Программы для начинающих|Программы и алгоритмы для начинающих]]&lt;br /&gt;
* [[Особенности языка: базовый уровень]]&lt;br /&gt;
* [[Стандартные модули: базовый уровень]]&lt;br /&gt;
* [[Особенности языка: продвинутый уровень]]&lt;br /&gt;
* [[Стандартные модули: продвинутый уровень]]&lt;br /&gt;
* [[Алгоритмы средней сложности]] (пока не реализовано)&lt;br /&gt;
&lt;br /&gt;
== Web-среда разработки PascalABC.NET ==&lt;br /&gt;
&lt;br /&gt;
*[[Основная страница проекта WDE PascalABC.NET|Основная страница проекта]]&lt;br /&gt;
&lt;br /&gt;
==Другие проекты==&lt;br /&gt;
&lt;br /&gt;
*[[Обзор реализации основных возможностей функционального языка программирования в среде PascalABC.NET|Проект &amp;quot;Реализация основных возможностей функционального языка программирования в среде PascalABC.NET&amp;quot; (Бушманова Н.)]]&lt;br /&gt;
*[[Проект &amp;quot;Каталог алгоритмов&amp;quot;|Проект &amp;quot;Каталог алгоритмов&amp;quot; (Альшаев О.)]]&lt;br /&gt;
*[[Проект &amp;quot;MonoDevelop Add-in для PascalABC.NET&amp;quot;|Проект &amp;quot;MonoDevelop Add-in для PascalABC.NET&amp;quot; (Венцко А.)]]&lt;br /&gt;
*[[OpenMP|Проект &amp;quot;OpenMP для PascalABC.NET&amp;quot; (Ткачук А. - все надежды на него)]]&lt;br /&gt;
*[[Рефакторинг|Проект &amp;quot;Рефакторинг по семантическому дереву PascalABC.NET&amp;quot; (Малеванный М., Коноплев Е.)]]&lt;br /&gt;
*[[Аспектно-ориентированное программирование|Проект &amp;quot;Аспектно-ориентированное программирование&amp;quot; (Зарубин М.)]]&lt;br /&gt;
&lt;br /&gt;
== Статьи о внутреннем представлении PascalABC.NET ==&lt;br /&gt;
&lt;br /&gt;
* [[Архитектура PascalABC.NET]]&lt;br /&gt;
* [[Интерфейс подключения нового языка программирования]]&lt;br /&gt;
* [[Директивы компилятора]]&lt;br /&gt;
* [[Синтаксическое дерево]]&lt;br /&gt;
* [[Семантическое дерево]]&lt;br /&gt;
* [[Формат PCU]]&lt;br /&gt;
* [[Отладчик]]&lt;br /&gt;
* [[Intellisense]]&lt;br /&gt;
* [[Шаблоны кода]]&lt;br /&gt;
&lt;br /&gt;
== Статьи по программированию в PascalABC.NET ==&lt;br /&gt;
* [[Локализация приложений]]&lt;br /&gt;
* [[Плагины для PascalABC.NET]]&lt;br /&gt;
* [[Отслеживание изменений в файловой системе]]&lt;br /&gt;
* [[OpenGL]]&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%9E%D1%82%D1%81%D0%BB%D0%B5%D0%B6%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%B2_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B9_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B5&amp;diff=1398</id>
		<title>Отслеживание изменений в файловой системе</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%9E%D1%82%D1%81%D0%BB%D0%B5%D0%B6%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9_%D0%B2_%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2%D0%BE%D0%B9_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B5&amp;diff=1398"/>
		<updated>2010-01-16T10:10:30Z</updated>

		<summary type="html">&lt;p&gt;Ibond: Новая: Для отслеживания изменений в файловой системе (изменение, переименование, удаление файлов и папок) ис...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Для отслеживания изменений в файловой системе (изменение, переименование, удаление файлов и папок) используется класс System.IO.FileSystemWatcher. Он позволяет подписаться на соответствующие события и задавать фильтр для файлов и папок.&lt;br /&gt;
&lt;br /&gt;
Ниже приведен пример кода, отслеживающий изменения файлов с расширением .txt в текущем каталоге.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Pascal&amp;quot;&amp;gt;&lt;br /&gt;
{$reference System.Windows.Forms.dll}&lt;br /&gt;
&lt;br /&gt;
uses&lt;br /&gt;
  System, System.IO, System.Windows.Forms;&lt;br /&gt;
&lt;br /&gt;
procedure FileSystemChanged(source: object; e: FileSystemEventArgs);&lt;br /&gt;
begin&lt;br /&gt;
  writeln('Изменился файл '+e.Name);&lt;br /&gt;
end; &lt;br /&gt;
&lt;br /&gt;
procedure FileSystemCreated(source: object; e: FileSystemEventArgs);&lt;br /&gt;
begin&lt;br /&gt;
  writeln('Создан файл '+e.Name);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
procedure FileSystemDeleted(source: object; e: FileSystemEventArgs);&lt;br /&gt;
begin&lt;br /&gt;
  writeln('Удален файл '+e.Name);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
var &lt;br /&gt;
  watcher: FileSystemWatcher;&lt;br /&gt;
  &lt;br /&gt;
begin&lt;br /&gt;
  watcher := new FileSystemWatcher(GetCurrentDir());&lt;br /&gt;
  watcher.EnableRaisingEvents := true;&lt;br /&gt;
  watcher.Filter := '*.txt';&lt;br /&gt;
  watcher.Changed += FileSystemChanged;&lt;br /&gt;
  watcher.Created += FileSystemCreated;&lt;br /&gt;
  watcher.Deleted += FileSystemDeleted;&lt;br /&gt;
  Application.Run();&lt;br /&gt;
end.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%86%D0%B8%D0%B8_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0_WDE&amp;diff=187</id>
		<title>Описание концепции проекта WDE</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BD%D1%86%D0%B5%D0%BF%D1%86%D0%B8%D0%B8_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0_WDE&amp;diff=187"/>
		<updated>2009-07-09T21:30:21Z</updated>

		<summary type="html">&lt;p&gt;Ibond: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WDE - Web-среда разработки (по аналогии с IDE - интегрированная среда разработки)&lt;br /&gt;
&lt;br /&gt;
WDE PascalABC.NET - это простая Web-среда, позволяющая запускать консольные приложения PascalABC.NET непосредственно из браузера. Такие приложения компилируются и выполняются на стороне сервера, возвращая на сторону клиента результаты работы.&lt;br /&gt;
&lt;br /&gt;
Технически WDE PascalABC.NET - asp.net-приложение.&lt;br /&gt;
&lt;br /&gt;
'''Ближайшие возможности:''' &amp;lt;br /&amp;gt;&lt;br /&gt;
* Компиляция и выполнение программы.&lt;br /&gt;
* Будут доступны два режима работы: для зарегистрированных и незарегистрированных пользователей соответственно. Преимущество первых — возможность хранения файлов на сервере.&lt;br /&gt;
* Одновременная работа с несколькими файлами.&lt;br /&gt;
* Скачивание текущего файла (и, возможно, архива всех рабочих файлов)&lt;br /&gt;
* Веб-сервис для компилятора&lt;br /&gt;
* Справка PascalABC.NET&lt;br /&gt;
* FAQ по web-среде&lt;br /&gt;
&lt;br /&gt;
В перспективе предполагается:&lt;br /&gt;
* Хранение файлов на сервере&lt;br /&gt;
* Интерактивная справочная система &lt;br /&gt;
* Многомодульные проекты&lt;br /&gt;
* Группы пользователей с разными правами&lt;br /&gt;
* Система автоматической проверки заданий&lt;br /&gt;
&lt;br /&gt;
[[Категория:WDE]]&lt;br /&gt;
== Размышления о WDE ==&lt;br /&gt;
В процессе разработки возникли [[Сценарии использования WDE | несколько мыслей о сценариях использования]] WDE. Это привело разработчиков к мысли о наличии ''режимов работы''.&lt;br /&gt;
&lt;br /&gt;
Скорее всего, режимы работы будут соответствовать [[Сценарии использования WDE | сценариям использования]]. И, при этом, каждый режим доступен и гостям, и зарегистрированным пользователям, причем последние получают некоторый приоритет.&lt;br /&gt;
&lt;br /&gt;
Пока более менее оформились мысли по трем режимам.&lt;br /&gt;
* '''для начинающих'''&lt;br /&gt;
На самом деле это и режим по умолчанию, в котором находится среда при первой загрузке. Т.е. тут пользователь должен получать общее представление о среде и иметь доступ к наглядным примерам, иллюстрирующим работу языка Pascal (и, со временем, других языков).&lt;br /&gt;
* '''публикации'''&lt;br /&gt;
В этом режиме будет легко управлять всеми доступными файлами и публиковать необходимые файлы с минимальными усилиями.&lt;br /&gt;
* '''кодирования'''&lt;br /&gt;
А это уже режим, основное назначение которого — максимально удобное программирование. Минимум лишней информации (и при этом несложный доступ ко всему необходимому), простота управления проектом.&lt;br /&gt;
&lt;br /&gt;
По сути режимы — это всего лишь разница в интерфейсе. Чем больше сценариев работы, и чем больше они отличаются, тем сложнее скомпоновать все в едином интерфейсе. Например, в режиме для ''начинающего'' под рукой должны быть разнообразные примеры и FAQ по среде. А если среда нужна для непосредственной работы с собственным проектом, то основной акцент предполагается на редакторе. Примеры будут доступны, но не так близко, дабы не загружать лишним рабочее пространство.&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_PascalABC.NET&amp;diff=127</id>
		<title>Архитектура PascalABC.NET</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_PascalABC.NET&amp;diff=127"/>
		<updated>2009-06-20T11:03:22Z</updated>

		<summary type="html">&lt;p&gt;Ibond: /* Краткое описание библиотек и папок PascalABC.NET */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''PascalABC.NET''' реализован на платформе .NET. Разработка ведется на языке C# в Visual Studio и SharpDevelop.&lt;br /&gt;
&lt;br /&gt;
==Краткое описание библиотек и папок PascalABC.NET==&lt;br /&gt;
* '''PascalABCNET.exe''' (проект VisualPascalABCNET) визуальная среда PascalABC.NET, [[отладчик]], дизайнер форм&lt;br /&gt;
* '''pabcnetc.exe''' (проект PABCNETC) консольный компилятор&lt;br /&gt;
* '''Compiler.dll''' (проект Compiler) компиляция программы и модулей, классы для работы с [[PCU]], генерация XML-документации&lt;br /&gt;
* '''ParserTools.dll''' (проект ParserTools) подключение парсеров&lt;br /&gt;
* '''PascalABCParser.dll''' (проект PascalABCParser) парсер языка PascalABC.NET&lt;br /&gt;
* '''TreeConverter.dll''' (проект TreeConverter) семантический разбор, классы, представляющие семантическое дерево&lt;br /&gt;
* '''NETGenerator.dll''' (проект NETGenerator) генератор IL-кода&lt;br /&gt;
* '''SyntaxTree.dll''' (проект SyntaxTree) классы, представляющие [[Синтаксическое дерево|синтаксическое дерево]]&lt;br /&gt;
* '''SemanticTree.dll''' (проект SemanticTree) интерфейсы [[Семантическое дерево|семантического дерева]]&lt;br /&gt;
* '''CodeCompletion.dll''' (проект CodeCompletion) движок [[Intellisense]]&lt;br /&gt;
* '''CompilerTools.dll''' (проект CompilerTools) различные утилиты, необходимые компилятору&lt;br /&gt;
* '''Errors.dll''' (проект Errors) классы для представления семантических и синтаксических ошибок&lt;br /&gt;
* '''PluginsSupport''' (проект PluginsSupport) интерфейсы подключения визуальных плагинов к PascalABC.NET&lt;br /&gt;
* '''ICSharpCode.TextEditor.dll''' (сторонняя библиотека) текстовый редактор&lt;br /&gt;
* '''Debugger.Core.dll''' (сторонняя библиотека) библиотека для отладки .NET-приложений&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=126</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=126"/>
		<updated>2009-06-20T11:00:44Z</updated>

		<summary type="html">&lt;p&gt;Ibond: /* Некоторые статьи о внутреннем представлении PascalABC.NET */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Web-среда разработки PascalABC.NET ==&lt;br /&gt;
&lt;br /&gt;
[[Основная страница проекта WDE PascalABC.NET|Основная страница проекта]]&lt;br /&gt;
&lt;br /&gt;
== Некоторые статьи о внутреннем представлении PascalABC.NET ==&lt;br /&gt;
&lt;br /&gt;
* [[Архитектура PascalABC.NET]]&lt;br /&gt;
* [[Интерфейс подключения нового языка программирования]]&lt;br /&gt;
* [[Директивы компилятора]]&lt;br /&gt;
* [[Синтаксическое дерево]]&lt;br /&gt;
* [[Семантическое дерево]]&lt;br /&gt;
* [[Формат PCU]]&lt;br /&gt;
* [[Отладчик]]&lt;br /&gt;
* [[Intellisense]]&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_PascalABC.NET&amp;diff=125</id>
		<title>Архитектура PascalABC.NET</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_PascalABC.NET&amp;diff=125"/>
		<updated>2009-06-20T10:59:40Z</updated>

		<summary type="html">&lt;p&gt;Ibond: /* Краткое описание библиотек и папок PascalABC.NET */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''PascalABC.NET''' реализован на платформе .NET. Разработка ведется на языке C# в Visual Studio и SharpDevelop.&lt;br /&gt;
&lt;br /&gt;
==Краткое описание библиотек и папок PascalABC.NET==&lt;br /&gt;
* '''PascalABCNET.exe''' (проект VisualPascalABCNET) визуальная среда PascalABC.NET, отладчик, дизайнер форм&lt;br /&gt;
* '''pabcnetc.exe''' (проект PABCNETC) консольный компилятор&lt;br /&gt;
* '''Compiler.dll''' (проект Compiler) компиляция программы и модулей, классы для работы с [[PCU]], генерация XML-документации&lt;br /&gt;
* '''ParserTools.dll''' (проект ParserTools) подключение парсеров&lt;br /&gt;
* '''PascalABCParser.dll''' (проект PascalABCParser) парсер языка PascalABC.NET&lt;br /&gt;
* '''TreeConverter.dll''' (проект TreeConverter) семантический разбор, классы, представляющие семантическое дерево&lt;br /&gt;
* '''NETGenerator.dll''' (проект NETGenerator) генератор IL-кода&lt;br /&gt;
* '''SyntaxTree.dll''' (проект SyntaxTree) классы, представляющие синтаксическое дерево&lt;br /&gt;
* '''SemanticTree.dll''' (проект SemanticTree) интерфейсы семантического дерева&lt;br /&gt;
* '''CodeCompletion.dll''' (проект CodeCompletion) движок Intellisense&lt;br /&gt;
* '''CompilerTools.dll''' (проект CompilerTools) различные утилиты, необходимые компилятору&lt;br /&gt;
* '''Errors.dll''' (проект Errors) классы для представления семантических и синтаксических ошибок&lt;br /&gt;
* '''PluginsSupport''' (проект PluginsSupport) интерфейсы подключения визуальных плагинов к PascalABC.NET&lt;br /&gt;
* '''ICSharpCode.TextEditor.dll''' (сторонняя библиотека) текстовый редактор&lt;br /&gt;
* '''Debugger.Core.dll''' (сторонняя библиотека) библиотека для отладки .NET-приложений&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_PascalABC.NET&amp;diff=124</id>
		<title>Архитектура PascalABC.NET</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_PascalABC.NET&amp;diff=124"/>
		<updated>2009-06-20T10:58:09Z</updated>

		<summary type="html">&lt;p&gt;Ibond: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''PascalABC.NET''' реализован на платформе .NET. Разработка ведется на языке C# в Visual Studio и SharpDevelop.&lt;br /&gt;
&lt;br /&gt;
==Краткое описание библиотек и папок PascalABC.NET==&lt;br /&gt;
* PascalABCNET.exe (проект VisualPascalABCNET) визуальная среда PascalABC.NET, отладчик, дизайнер форм&lt;br /&gt;
* pabcnetc.exe (проект PABCNETC) консольный компилятор&lt;br /&gt;
* Compiler.dll (проект Compiler) компиляция программы и модулей, классы для работы с [[PCU]], генерация XML-документации&lt;br /&gt;
* ParserTools.dll (проект ParserTools) подключение парсеров&lt;br /&gt;
* PascalABCParser.dll (проект PascalABCParser) парсер языка PascalABC.NET&lt;br /&gt;
* TreeConverter.dll (проект TreeConverter) семантический разбор, классы, представляющие семантическое дерево&lt;br /&gt;
* NETGenerator.dll (проект NETGenerator) генератор IL-кода&lt;br /&gt;
* SyntaxTree.dll (проект SyntaxTree) классы, представляющие синтаксическое дерево&lt;br /&gt;
* SemanticTree.dll (проект SemanticTree) интерфейсы семантического дерева&lt;br /&gt;
* CodeCompletion.dll (проект CodeCompletion) движок Intellisense&lt;br /&gt;
* CompilerTools.dll (проект CompilerTools) различные утилиты, необходимые компилятору&lt;br /&gt;
* Errors.dll (проект Errors) классы для представления семантических и синтаксических ошибок&lt;br /&gt;
* PluginsSupport (проект PluginsSupport) интерфейсы подключения визуальных плагинов к PascalABC.NET&lt;br /&gt;
* ICSharpCode.TextEditor.dll (сторонняя библиотека) текстовый редактор&lt;br /&gt;
* Debugger.Core.dll (сторонняя библиотека) библиотека для отладки .NET-приложений&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%9E%D1%82%D0%BB%D0%B0%D0%B4%D1%87%D0%B8%D0%BA&amp;diff=123</id>
		<title>Отладчик</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%9E%D1%82%D0%BB%D0%B0%D0%B4%D1%87%D0%B8%D0%BA&amp;diff=123"/>
		<updated>2009-06-20T10:44:36Z</updated>

		<summary type="html">&lt;p&gt;Ibond: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В PascalABC.NET реализован отладчик, включающий в себя:&lt;br /&gt;
* основные команды: F7 (шаг с входом в подпрограмму), F8 (шаг без входа в подпрограмму), F4 (переход к курсору), F10 (выход из подпрограммы)&lt;br /&gt;
* окно Watch&lt;br /&gt;
* окно локальных переменных&lt;br /&gt;
* всплывающие подсказки значений переменных&lt;br /&gt;
* точки останова (breakpoint), в т. ч. условные точки останова&lt;br /&gt;
&lt;br /&gt;
== Детали реализации ==&lt;br /&gt;
В PascalABC.NET используется сторонняя библиотека Debugger.Core из SharpDevelop. По сути библиотека Debugger.Core - это managed-обертка над COM-интерфейсами, предоставляющих средства для отладки .NET-приложений. Существует альтернативная библиотека mdbgcore, входящая в Windows SDK. Библиотека Debugger.Core позволяет вычислять значения выражений на этапе отладки. Для представления значения используется класс Value.&lt;br /&gt;
&lt;br /&gt;
==Вычисление выражений в окне Watch==&lt;br /&gt;
При изменении состояния отладчика (переход к следующей точке останова) вычисляются все выражения в окне Watch. Для выражения строится синтаксическое дерево и далее визитором ExpressionEvaluator по дереву вычисляется значение выражения. Поиск имен происходит согласно семантике PascalABC.NET. То есть, сначала ищется среди локальных переменных текущей подпрограммы, далее в объемлющих подпрограммах, в классе, модуле, подключенных модулях и пространств имен. Список подключенных модулей и пространств имен хранится в атрибуте класса-обертки над модулем. Кроме того в exe-файл сохраняется информация об используемых в модуле пространств имен .NET.&lt;br /&gt;
  &lt;br /&gt;
В библиотеке Debugger.Core также предусмотрен случай, когда выражение вычисляется слишком медленно. В таком случае выводится сообщение: Выражение слишком долго вычисляется. В Watch не отсутствует поддержка вызовов функций (только стандартные функции без побочного эффекта). Однако в разработке находится окно Immediate, в котором можно будет вызывать функции и методы.&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_PascalABC.NET&amp;diff=122</id>
		<title>Архитектура PascalABC.NET</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0_PascalABC.NET&amp;diff=122"/>
		<updated>2009-06-20T10:43:23Z</updated>

		<summary type="html">&lt;p&gt;Ibond: Новая: PascalABC.NET реализован на платформе .NET. Разработка ведется на языке C# в Visual Studio и SharpDevelop.  ==Краткое описани...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PascalABC.NET реализован на платформе .NET. Разработка ведется на языке C# в Visual Studio и SharpDevelop.&lt;br /&gt;
&lt;br /&gt;
==Краткое описание библиотек и папок PascalABC.NET==&lt;br /&gt;
#PascalABCNET.exe (проект VisualPascalABCNET) визуальная среда PascalABC.NET, отладчик, дизайнер форм&lt;br /&gt;
#Compiler.dll (проект Compiler) компиляция программы и модулей, классы для работы с [[PCU]], генерация XML-документации&lt;br /&gt;
#ParserTools.dll (проект ParserTools)&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%9E%D1%82%D0%BB%D0%B0%D0%B4%D1%87%D0%B8%D0%BA&amp;diff=121</id>
		<title>Отладчик</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%9E%D1%82%D0%BB%D0%B0%D0%B4%D1%87%D0%B8%D0%BA&amp;diff=121"/>
		<updated>2009-06-20T10:31:07Z</updated>

		<summary type="html">&lt;p&gt;Ibond: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В PascalABC.NET реализован отладчик, включающий в себя:&lt;br /&gt;
# основные команды: F7 (шаг с входом в подпрограмму), F8 (шаг без входа в подпрограмму), F4 (переход к курсору), F10 (выход из подпрограммы)&lt;br /&gt;
# окно Watch&lt;br /&gt;
# окно локальных переменных&lt;br /&gt;
# всплывающие подсказки значений переменных&lt;br /&gt;
# точки останова (breakpoint), в т. ч. условные точки останова&lt;br /&gt;
&lt;br /&gt;
== Детали реализации ==&lt;br /&gt;
В PascalABC.NET используется сторонняя библиотека Debugger.Core из SharpDevelop. По сути библиотека Debugger.Core - это managed-обертка над COM-интерфейсами, предоставляющих средства для отладки .NET-приложений. Существует альтернативная библиотека mdbgcore, входящая в Windows SDK. Библиотека Debugger.Core позволяет вычислять значения выражений на этапе отладки. Для представления значения используется класс Value.&lt;br /&gt;
&lt;br /&gt;
==Вычисление выражений в окне Watch==&lt;br /&gt;
При изменении состояния отладчика (переход к следующей точке останова) вычисляются все выражения в окне Watch. Для выражения строится синтаксическое дерево и далее визитором ExpressionEvaluator по дереву вычисляется значение выражения. Поиск имен происходит согласно семантике PascalABC.NET. То есть, сначала ищется среди локальных переменных текущей подпрограммы, далее в объемлющих подпрограммах, в классе, модуле, подключенных модулях и пространств имен. Список подключенных модулей и пространств имен хранится в атрибуте класса-обертки над модулем. Кроме того в exe-файл сохраняется информация об используемых в модуле пространств имен .NET.&lt;br /&gt;
  &lt;br /&gt;
В библиотеке Debugger.Core также предусмотрен случай, когда выражение вычисляется слишком медленно. В таком случае выводится сообщение: Выражение слишком долго вычисляется. В Watch не отсутствует поддержка вызовов функций (только стандартные функции без побочного эффекта). Однако в разработке находится окно Immediate, в котором можно будет вызывать функции и методы.&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%9E%D1%82%D0%BB%D0%B0%D0%B4%D1%87%D0%B8%D0%BA&amp;diff=59</id>
		<title>Отладчик</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%9E%D1%82%D0%BB%D0%B0%D0%B4%D1%87%D0%B8%D0%BA&amp;diff=59"/>
		<updated>2009-06-08T18:37:17Z</updated>

		<summary type="html">&lt;p&gt;Ibond: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В PascalABC.NET реализован отладчик, включающий в себя:&lt;br /&gt;
# основные команды: F7 (шаг с входом в подпрограмму), F8 (шаг без входа в подпрограмму), F4 (переход к курсору), F10 (выход из подпрограммы)&lt;br /&gt;
# окно Watch&lt;br /&gt;
# окно локальных переменных&lt;br /&gt;
# всплывающие подсказки значений переменных&lt;br /&gt;
# точки останова (breakpoint), в т. ч. условные точки останова&lt;br /&gt;
&lt;br /&gt;
== Детали реализации ==&lt;br /&gt;
В PascalABC.NET используется сторонняя библиотека Debugger.Core из SharpDevelop. По сути библиотека Debugger.Core - это managed-обертка над COM-интерфейсами, предоставляющих средства для отладки .NET-приложений. Существует альтернативная библиотека mdbgcore, входящая в Windows SDK.&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F&amp;diff=36</id>
		<title>Интерфейс подключения нового языка программирования</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%98%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81_%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F&amp;diff=36"/>
		<updated>2009-06-04T20:24:15Z</updated>

		<summary type="html">&lt;p&gt;Ibond: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# Интерфейс проектов &lt;br /&gt;
#* Список типов проектов&lt;br /&gt;
#* Создание проекта указанного типа&lt;br /&gt;
#* Генерация кода для проекта указанного типа&lt;br /&gt;
# Интерфейс отладчика&lt;br /&gt;
#* Запуск откомпилированной программы&lt;br /&gt;
#* Команды отладки Step Over, Step In, Step Out&lt;br /&gt;
#* Вычисление значения выражения&lt;br /&gt;
# Интерфейс интеллисенса&lt;br /&gt;
#* Не знаю&lt;br /&gt;
# Интерфейс собственно компилятора&lt;br /&gt;
#* Подключить список внешних reference&lt;br /&gt;
#* Откомпилировать данный модуль&lt;br /&gt;
#* Откомпилировать список модулей&lt;br /&gt;
#* Доступные опции компиляции и действия по ним&lt;br /&gt;
#* Алгоритм компиляции многомодульных проектов(?)&lt;br /&gt;
# Интерфейс генератора кода для дизайнера форм&lt;br /&gt;
#* Сгенерировать вызов метода&lt;br /&gt;
#* Сгенерировать присваивание свойства&lt;br /&gt;
#* Сгенерировать значение свойства&lt;br /&gt;
# Интерфейс справочной системы. &lt;br /&gt;
#* Загрузить справку&lt;br /&gt;
#* Загрузить подсказку по слову&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=Intellisense&amp;diff=6</id>
		<title>Intellisense</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=Intellisense&amp;diff=6"/>
		<updated>2009-04-30T09:29:26Z</updated>

		<summary type="html">&lt;p&gt;Ibond: Новая: В PascalABC.NET реализован Intellisense. На данный момент он включает в себя:  * подсказку по точке * подсказку по на...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В PascalABC.NET реализован Intellisense. На данный момент он включает в себя:&lt;br /&gt;
&lt;br /&gt;
* подсказку по точке&lt;br /&gt;
* подсказку по нажатии ( и [&lt;br /&gt;
* подсказку по наведении мышью&lt;br /&gt;
* переход к описанию и реализации&lt;br /&gt;
* вывод окна со всеми видимыми именами текущего модуля и всех подключенных модулей и пространств имен (Ctrl+Space)&lt;br /&gt;
* вывод окна со всеми видимыми именами текущего модуля (Shift+Space)&lt;br /&gt;
* поиск зависимостей (Find References)&lt;br /&gt;
* генерация реализации методов (Ctrl+Shift+C)&lt;br /&gt;
* вывод окна с переопределяемыми методами базового класса (Ctrl+Shift+Space)&lt;br /&gt;
* реализация методов интерфейса (Ctrl+Shift+I)&lt;br /&gt;
&lt;br /&gt;
==Реализация==&lt;br /&gt;
&lt;br /&gt;
Все открытые в редакторе и измененные файлы в фоновом потоке каждые 2 секунды разбираются стандартным парсером (использующимся при компиляции). По синтаксическому дереву строится внутреннее представление, заточенные под нужды интеллисенса. Данное внутреннее представление хранится в памяти, синтаксическое дерево в памяти далее не хранится, что существенно снижает размер потребляемой памяти.&lt;br /&gt;
&lt;br /&gt;
При нажатии клавиши справа налево считывается соответствующее выражение. Например, при нажатии точки считывается выражение перед точкой, при наведении курсора мыши считывается выражение под курсором. Парсинг при этом не происходит, так как внутреннее представление уже имеется. Это существенно ускоряет вывод подсказок.&lt;br /&gt;
&lt;br /&gt;
При вызове команды Поиск зависимостей строится синтаксическое дерево. Соответствующий визитор обходит это дерево и находит все зависимости для заданного символа. При этом новое внутреннее представление не строится, а используется уже имеющееся.&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%A1%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE&amp;diff=5</id>
		<title>Синтаксическое дерево</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%A1%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE&amp;diff=5"/>
		<updated>2009-04-25T21:39:40Z</updated>

		<summary type="html">&lt;p&gt;Ibond: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Синтаксическое дерево''' в PascalABC.NET представляет собой неатрибутированное дерево разбора. Оно строится во время синтаксического анализа. При последующем семантическом анализе оно переводится в атрибутированное семантическое дерево. Такое разделение двух видов деревьев связано с их принципиально разной структурой. Существуют также (например, в CCI) совмещенные реализации синтаксического и семантического дерева, когда не строится новое дерево, а заменяются существующие неатрибутированные узлы дерево.&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%A1%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE&amp;diff=4</id>
		<title>Синтаксическое дерево</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%A1%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE&amp;diff=4"/>
		<updated>2009-04-25T21:38:37Z</updated>

		<summary type="html">&lt;p&gt;Ibond: Новая: '''Синтаксическое дерево''' в PascalABC.NET представляет собой неатрибутированное дерево разбора. Оно строит...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Синтаксическое дерево''' в PascalABC.NET представляет собой неатрибутированное дерево разбора. Оно строится во время синтаксического анализа. При последующем семантическом анализе оно переводится в атрибутированное семантическое дерево. Такое разделение двух видов деревьев связано с их принципиально разной структурой. Синтаксическое дерево можно рассматривать как представление текста программы, удобное для последующего анализа. Существуют также (например, в CCI) совмещенные реализации синтаксического и семантического дерева, когда не строится новое дерево, а заменяются существующие неатрибутированные узлы дерево.&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=PCU&amp;diff=3</id>
		<title>PCU</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=PCU&amp;diff=3"/>
		<updated>2009-04-25T21:04:31Z</updated>

		<summary type="html">&lt;p&gt;Ibond: Перенаправление на Формат PCU&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Формат PCU]]&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82_PCU&amp;diff=2</id>
		<title>Формат PCU</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D1%82_PCU&amp;diff=2"/>
		<updated>2009-04-25T21:00:48Z</updated>

		<summary type="html">&lt;p&gt;Ibond: Новая: '''PCU''' - промежуточный формат хранения семантического дерева в PascalABC.NET. Он служит для ускорения компил...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''PCU''' - промежуточный формат хранения семантического дерева в PascalABC.NET. Он служит для ускорения компиляции программ, поскольку отпадает фаза синтаксического и семантического анализа. Выходной размер PCU файла в среднем в 1,5 раза больше исходного текста модуля.&lt;br /&gt;
При чтении PCU-файла в таблицу символов заносятся заглушки считываемых сущностей (типов, подпрограмм и т.д.) и по запросу разворачивается семантическое дерево этих сущностей. Таким образом считываются только используемые имена, поэтому размер выходного исполняемого файла сокращается.&lt;br /&gt;
&lt;br /&gt;
==Формат PCU файла==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| '''Размер'''&lt;br /&gt;
| '''Описание'''&lt;br /&gt;
| '''Примечания'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 3&lt;br /&gt;
| Сигнатура PCU-файла 'PCU'&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 2&lt;br /&gt;
| Версия PCU&lt;br /&gt;
| PCU разных версий несовместимы&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 8&lt;br /&gt;
| Контрольная сумма (временно не используется)&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| Флаг, включена ли отладочная информация&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| -&lt;br /&gt;
| Имя исходного файла программы при включенной отладочной информации&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество записей в таблице интерфеисных имен модуля&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица имен сущностей interface части модуля. Каждая запись имеет структуру:&lt;br /&gt;
&lt;br /&gt;
имя сущности&lt;br /&gt;
&lt;br /&gt;
смещение сущности в PCU-файле (4 байта)&lt;br /&gt;
&lt;br /&gt;
семантический тип сущности (TreeConverter.SymbolKind) (1 байт)&lt;br /&gt;
&lt;br /&gt;
флаг method extension (1 байт)&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество записей в таблице имен implementation части модуля&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Имеет ту же структуру, что и таблица интерфейсных имен&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице подключаемых модулей&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица подключаемых модулей. Каждая запись - имя файла модуля без расширения.&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице используемых пространств имен&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица используемых пространств имен (нужна отладчику и зашивается в exe)&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество подключаемых модулей в interface части модуля&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество записей в таблице подключаемых сборок&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица подключаемых сборок .NET. Каждая запись - полное имя сборки (Assembly.FullName).&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице директив компилятора&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица директив компилятора. Имеет структуру:&lt;br /&gt;
&lt;br /&gt;
- строка директивы (reference, apptype)&lt;br /&gt;
&lt;br /&gt;
- строка значения директивы&lt;br /&gt;
&lt;br /&gt;
- отладочная информация (начало строки, начало колонки, конец строки, конец колонки) &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице импортируемых сущностей&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица импортируемых сущностей. Имеет вид:&lt;br /&gt;
&lt;br /&gt;
-флаг, откуда импортируется сущность (0-модуль,1-сборка .NET)&lt;br /&gt;
&lt;br /&gt;
- для сущностей, импортируемых из модулей - индекс в таблице подключаемых модулей; из сборок - индекс в таблице подключаемых сборок. Если сущность находится в классе, то здесь указывается индекс класса в таблице импортируемых сущностей&lt;br /&gt;
&lt;br /&gt;
- для сущностей, импортируемых из модуля - фактическое смещение сущности в подключаемом модуле; из сборок - индекс в таблице используемых имен сущностей .NET (ниже) &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Смещение, по которому находится таблица синонимов типов, описанных в interface части модуля&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Смещение, по которому находится таблица синонимов типов, описанных в implementation части модуля&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице используемых имен сущностей .NET&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица используемых имен сущностей .NET. Имеет структуру:&lt;br /&gt;
&lt;br /&gt;
- семантический вид сущности (тип, поле, свойство, метод, конструктор)&lt;br /&gt;
&lt;br /&gt;
- имя сущности&lt;br /&gt;
&lt;br /&gt;
-дополнительная информация (параметры метода, шаблонного класса) - массив смещений на записи сущностей в данной таблице (например, типы параметров метода)&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Имя namespace_node (пространство имен .NET) interface части модуля &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| Отладочная информация об interface части модуля&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Имя namespace_node (пространство имен .NET) implementation части модуля&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 16&lt;br /&gt;
| Отладочная информация об implementation части модуля&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице template-классов&lt;br /&gt;
| interface-часть модуля&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица template-классов. Каждая запись имеет следующую структуру:&lt;br /&gt;
&lt;br /&gt;
- semantic_node_type&lt;br /&gt;
&lt;br /&gt;
- имя класса&lt;br /&gt;
&lt;br /&gt;
- список имен подключаемых сборок&lt;br /&gt;
&lt;br /&gt;
- список имен подключаемых сборок 2&lt;br /&gt;
&lt;br /&gt;
- имя файла, где описан шаблон&lt;br /&gt;
&lt;br /&gt;
- сериализованное синтаксическое дерево шаблонного класса (если есть)&lt;br /&gt;
&lt;br /&gt;
- &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице типов (классов, записей, перечислений и т. д.) interface части модуля&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица типов interface части модуля&lt;br /&gt;
&lt;br /&gt;
- semantic_node_type сущности&lt;br /&gt;
&lt;br /&gt;
- флаг, находится ли тип в interface части модуля&lt;br /&gt;
&lt;br /&gt;
-если сущность описана в interface части - индекс в таблице имен имен сущностей модуля, иначе имя сущности&lt;br /&gt;
&lt;br /&gt;
- флаг, является ли тип интерфейсом (IsInterface)&lt;br /&gt;
&lt;br /&gt;
- флаг, является ли тип делегатом (IsDelegate)&lt;br /&gt;
&lt;br /&gt;
- ссылка на тип предка&lt;br /&gt;
&lt;br /&gt;
- флаг, является ли тип размерным (internal_is_value)&lt;br /&gt;
&lt;br /&gt;
- список ''ссылок'' на реализуемые интерфейсы&lt;br /&gt;
&lt;br /&gt;
- type_access_level&lt;br /&gt;
&lt;br /&gt;
- type_special_kind&lt;br /&gt;
&lt;br /&gt;
- element_type&lt;br /&gt;
&lt;br /&gt;
- ссылка на объемлющее пространство имен&lt;br /&gt;
&lt;br /&gt;
- флаг, есть ли у класса свойство по умолчанию&lt;br /&gt;
&lt;br /&gt;
- смещение, по которому находится свойство по умолчанию (если оно есть)&lt;br /&gt;
&lt;br /&gt;
- отладочная информация&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице откомпилированных (в сборках .NET) типов&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица откомпилированных (в сборках .NET) типов&lt;br /&gt;
&lt;br /&gt;
- semantic_node_type сущности&lt;br /&gt;
&lt;br /&gt;
- флаг, находится ли тип в interface части модуля&lt;br /&gt;
&lt;br /&gt;
- если сущность описана в interface части - индекс в таблице имен имен сущностей модуля, иначе имя сущности&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице синонимов типов&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица синонимов типов:&lt;br /&gt;
&lt;br /&gt;
- имя синонима&lt;br /&gt;
&lt;br /&gt;
- ''ссылка'' на именуемый тип&lt;br /&gt;
&lt;br /&gt;
- отладочная информация&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице меток&lt;br /&gt;
| implementation часть модуля&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица меток. Каждая запись имеет следующую структуру:&lt;br /&gt;
&lt;br /&gt;
- имя метки&lt;br /&gt;
&lt;br /&gt;
- отладочная информация&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице template-классов&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица template-классов (см. выше)&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице типов (классов, записей, перечислений и т. д.) implementation части модуля&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица типов implementation части модуля (см. выше)&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице откомпилированных (в сборках .NET) типов (см. выше)&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица откомпилированных (в сборках .NET) типов (см. выше)&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице констант класса (для каждого класса отдельная таблица)&lt;br /&gt;
| interface часть модуля&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица констант класса. Каждая запись имеет следующую структуру:&lt;br /&gt;
&lt;br /&gt;
- semantic_node_type&lt;br /&gt;
&lt;br /&gt;
- индекс имени метода в таблице имен&lt;br /&gt;
&lt;br /&gt;
- ''ссылка'' на тип константы&lt;br /&gt;
&lt;br /&gt;
- смещение об'емлющего класса&lt;br /&gt;
&lt;br /&gt;
- значение константы&lt;br /&gt;
&lt;br /&gt;
- field_acces_level&lt;br /&gt;
&lt;br /&gt;
- отладочная информация&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице полей класса&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица полей класса. Каждая запись имеет следующую структуру:&lt;br /&gt;
&lt;br /&gt;
- semantic_node_type&lt;br /&gt;
&lt;br /&gt;
- индекс имени метода в таблице имен&lt;br /&gt;
&lt;br /&gt;
- ''ссылка'' на тип поля&lt;br /&gt;
&lt;br /&gt;
- начальное значение поля&lt;br /&gt;
&lt;br /&gt;
- смещение, по которому находится об'емлющий класс&lt;br /&gt;
&lt;br /&gt;
- field_access_level&lt;br /&gt;
&lt;br /&gt;
- polymorphic_state&lt;br /&gt;
&lt;br /&gt;
- отладочная информация&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице методов класса&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица методов класса. Каждая запись имеет следующую структуру:&lt;br /&gt;
&lt;br /&gt;
- semantic_node_type&lt;br /&gt;
&lt;br /&gt;
- индекс имени метода в таблице имен&lt;br /&gt;
&lt;br /&gt;
- is_final&lt;br /&gt;
&lt;br /&gt;
- newslot_awaited&lt;br /&gt;
&lt;br /&gt;
- ''ссылка'' на тип возвращаемого значения&lt;br /&gt;
&lt;br /&gt;
- переменная Result (если есть)&lt;br /&gt;
&lt;br /&gt;
- параметры метода&lt;br /&gt;
&lt;br /&gt;
- смещение, по которому находится об'емлющий класс&lt;br /&gt;
&lt;br /&gt;
- is_constructor&lt;br /&gt;
&lt;br /&gt;
- is_forward&lt;br /&gt;
&lt;br /&gt;
- is_overload&lt;br /&gt;
&lt;br /&gt;
- field_access_level&lt;br /&gt;
&lt;br /&gt;
- polymorphic_state&lt;br /&gt;
&lt;br /&gt;
- num_of_default_variables&lt;br /&gt;
&lt;br /&gt;
- num_of_cicles&lt;br /&gt;
&lt;br /&gt;
- флаг override&lt;br /&gt;
&lt;br /&gt;
- локальные переменные&lt;br /&gt;
&lt;br /&gt;
- описания вложенных подпрограмм&lt;br /&gt;
&lt;br /&gt;
- отладочная информация о методе&lt;br /&gt;
&lt;br /&gt;
- смещение, по которому находится код метода&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице свойств класса&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица свойств класса. Каждая запись имеет следующую структуру:&lt;br /&gt;
&lt;br /&gt;
- semantic_node_type&lt;br /&gt;
&lt;br /&gt;
- индекс имени метода в таблице имен&lt;br /&gt;
&lt;br /&gt;
- ''ссылка'' на тип свойства&lt;br /&gt;
&lt;br /&gt;
- смещение get-аксессора&lt;br /&gt;
&lt;br /&gt;
- смещение set-аксессора&lt;br /&gt;
&lt;br /&gt;
- параметры свойства&lt;br /&gt;
&lt;br /&gt;
- смещение об'емлющего класса&lt;br /&gt;
&lt;br /&gt;
- field_access_level&lt;br /&gt;
&lt;br /&gt;
- polymorphic_state&lt;br /&gt;
&lt;br /&gt;
- отладочная информация&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице констант класса&lt;br /&gt;
| implementation&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица констант класса: см. выше&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице полей класса&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица полей класса: см. выше&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице методов класса&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица методов класса: см. выше&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице свойств класса&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица свойств класса: см. выше&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице констант модуля&lt;br /&gt;
| interface&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица констант модуля. Каждая запись имеет следующую структуру:&lt;br /&gt;
&lt;br /&gt;
- semantic_node_type&lt;br /&gt;
&lt;br /&gt;
- флаг interface/implementation&lt;br /&gt;
&lt;br /&gt;
- для констант в interface части — индекс имени в таблице имен, implementation — имя константы&lt;br /&gt;
&lt;br /&gt;
- смещение секции модуля, в котором описана константа&lt;br /&gt;
&lt;br /&gt;
- значение константы&lt;br /&gt;
&lt;br /&gt;
- отладочная информация&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице переменных модуля&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица переменных модуля. Каждая запись имеет следующую структуру:&lt;br /&gt;
&lt;br /&gt;
- semantic_node_type&lt;br /&gt;
&lt;br /&gt;
- порядковый индекс переменной в семантическом дереве (нужен для восстановления переменных из pcu в том же порядке, в каком они были в сем. дереве)&lt;br /&gt;
&lt;br /&gt;
- флаг interface/implementation&lt;br /&gt;
&lt;br /&gt;
- для переменных в interface части — индекс имени в таблице имен, implementation — имя переменной&lt;br /&gt;
&lt;br /&gt;
- ссылка на тип переменной&lt;br /&gt;
&lt;br /&gt;
- смещение секции модуля, в котором описана переменная&lt;br /&gt;
&lt;br /&gt;
- начальное значение переменной (если есть)&lt;br /&gt;
&lt;br /&gt;
- отладочная информация&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице подпрограмм модуля&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица подпрограмм модуля. Каждая запись имеет следующую структуру:&lt;br /&gt;
&lt;br /&gt;
- semantic_node_type&lt;br /&gt;
&lt;br /&gt;
- если подпрограмма является method extension — ссылка на расширяемый тип&lt;br /&gt;
&lt;br /&gt;
- для подпрограмм в interface части — индекс имени в таблице имен, implementation — имя подпрограммы&lt;br /&gt;
&lt;br /&gt;
- тип возвращаемого значения&lt;br /&gt;
&lt;br /&gt;
- переменная Result (если есть)&lt;br /&gt;
&lt;br /&gt;
- список параметров подпрограммы&lt;br /&gt;
&lt;br /&gt;
- смещение об'емлющей секции модуля&lt;br /&gt;
&lt;br /&gt;
- is_forward&lt;br /&gt;
&lt;br /&gt;
- is_overload&lt;br /&gt;
&lt;br /&gt;
- num_of_default_variables&lt;br /&gt;
&lt;br /&gt;
- num_of_cicles&lt;br /&gt;
&lt;br /&gt;
- список переменных подпрограммы&lt;br /&gt;
&lt;br /&gt;
- список вложенных подпрограмм&lt;br /&gt;
&lt;br /&gt;
- отладочная информация&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице типов-указателей модуля&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица типов-указателей модуля:&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице констант модуля&lt;br /&gt;
| implementation&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица констант модуля: см. выше &lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице переменных модуля&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица переменных модуля: см. выше&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице подпрограмм модуля&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица подпрограмм модуля: см. выше&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| 4&lt;br /&gt;
| Количество элементов в таблице типов-указателей модуля&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Таблица типов-указателей модуля: см. выше&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
| Реализации всех методов и подпрограмм&lt;br /&gt;
| &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Примечания'''&lt;br /&gt;
&lt;br /&gt;
# Под ссылкой на тип понимается следующее: флаг, указывающий на род типа (обычный тип, массив, короткая строка, указатель). Обычный тип не сериализуется после флага, так как он уже определен, а массивы, указатели и т. д. сериализуются после флага (var p : ^integer). Для обычного типа после флага идет флаг, описан ли тип в этом модуле. Далее если тип описан в модуле, то пишется смещение в модуле, по которому хранится тип, иначе смещение в таблице импорта.&lt;br /&gt;
# Код методов хранится в виде сериализованного семантического дерева. Узлы семантического дерева распознаются по semantic_node_type. Код хранится в конце файла.&lt;br /&gt;
# Ссылки на сущности .NET сериализуются следующим образом. Для типов, событий, полей, свойств хранятся их полные имена (System.Collections.ArrayList). Для метода кроме имени записывается список имен типов параметров, чтобы можно было выбрать перегруженный метод. Имена считываются один раз и кэшируются.&lt;br /&gt;
# При десериализации семантических деревьев могут проводиться некоторые дополнительные семантические действия, например добавление в тип внутреннего интерфейса ordinal_type_interface, при котором тип становится порядковым.&lt;/div&gt;</summary>
		<author><name>Ibond</name></author>
	</entry>
</feed>