27 апреля 2020 г.
Контекстный анализ конструкции вызова процедур: вар-параметры.

22 апреля 2020 г.
150-я годовщина со дня рождения В. И. Ленина.
Контекстный анализ: проверка типов параметров процедуры. Добавлен класс
объекта Par, означающий вар-параметр. Реализован импорт псевдомодулей
In и Out и процедур In.Int, Out.Int, Out.Char, Out.Ln, для чего созданы
процедуры SymTable.AddProc, SymTable.AddParam.

19 апреля 2020 г.
Реализован импорт модуля Out в SymTable.Import, а также процедуры
Parser.QualIdent и SymTable.ThisObjInModule, позволяющие обращаться
к объектам в других модулях.
Реализован синтаксический анализ вызова процедуры, а частично и
контекстный анализ (но типы параметров пока не проверяются).
Появилась процедура Gen.MakeItem, переводящая Object в Item и процедура
Gen.Call, вызываемая при обработке вызова процедуры.
Вызов SymTable.Init перенесён из модуля Compiler в Parser.Init, в Parser
добавлен объект dummy, который выдаёт QualIdent в случае ошибки.

17 апреля 2020 г.
Процедура Parser.Type упрощена, теперь она возвращает результат в виде
SymTable.Type, а не Generator.Item. Реализована синтаксическая
структура IMPORT.

15 апреля 2020 г.
Factor теперь устанавливает значение Item.val. SimpleExpression и Term
во время компиляции производят арифметические операции над константами.
При объявлении переменных распределяются их адреса (см. varsize, dc).
Исправлено: При обработке целочисленных и других литералов Factor
выдавал Item.mode = Var вместо Const. Добавлен класс/режим Const.

13 апреля 2020 г.
Изменены константы лексического анализатора. Добавлена обработка
литерного типа в процедуре Factor (41X или "A"). Строки иной длины
обрабатываются лексическим анализатором, но отвергаются синтаксическим.
Завершён семантический анализ. Начато добавление val в Object и Item.

12 апреля 2020 г.
Добавлен тип CHAR (но Factor ещё не обрабатывает строковой литерал).
Ошибки выводятся красным цветом. Переделан оператор присваивания, в его
левой части теперь «обозначение», обрабатываемое процедурой Designator,
производится проверка согласования типов. Expression, SimpleExpression,
Term и Factor теперь передают друг другу данные через x: Item, проверяя
типы, где необходимо.

5 апреля 2020 г.
Новая процедура символьной таблицы ThisObj ищет текущий идентификатор.
Она используется в нетерминале Type. Начальные объекты символьной
таблицы теперь все имеют какое-либо имя (иначе был бы невозможен
поиск). Добавлена чисто отладочная процедура OutType.

25 марта 2020 г.
Доисаны процедуры Factor, Term и SimpleExpression, выполняющие
теперь синтаксический анализ.

18 февраля 2020 г.
Синтаксический анализ выражений: Expression, SimpleExpression, Term,
Factor (не закончено). Обработка присваивания вынесена за пределы
Statements. Исправлена обработка строковых литералов.

29 января 2020 г.
Слегка изменена процедура Statements (добавлен цикл). Добавлены
отсутствовавшие лексемы операций: деление, умножение, сравнение, а
также строковой литерал. Есть проверка на максимальную длину строки.

4 апреля 2019 г.
Исправлена процедура WriteDummy, теперь она создаёт работающий
исполнимый файл. Процедура WriteProgramHeader в качестве размера
программного сегмента выводила 30 вместо 38, также было две опечатки.

2 апреля 2019 г.
Добавлена процедура Generator.WriteDummy - создаёт исполнимый файл Test
с простейшей программой, выводящей на экран "Hi!". Хардкод.
Файл не работает, но и не вылетает с ошибкой.
Подключен модуль Chmod для того, чтобы отмечать файл как исполнимый.

2 апреля 2019 г.
Реализовано объявление переменных:
Написана процедура Parser.Declarations.
Добавлена процедура Parser.Type (пока хардкод).
Написана процедура SymTable.NewObj и диагнозтическая процедура SymTable.Display.
Исправлен синтаксический разбор модуля.

26 марта 2019 г.
Добавлены модули SymTable и Generator.
Модуль символьной таблицы содержит типы Object и Type, а также экспортированные процедуры NewObj и Init.
Модуль кодогенератора содержит только определение типа Item.
В модуле синтаксического анализатора (Parser) написать псевдокод считывания объявления переменных в процедуре Declarations.

12 марта 2019 г.
Исправлена обработка пустого оператора (;).

5 марта 2019 г.
Компилятор разделён на три модуля: Compiler, Scanner, Parser.

5 марта 2019 г.
Показан пример считывания диапазона множества {11..15}, лексема upto, приём 7FX

26 февраля 2019 г.
Начат синтаксический анализатор.

26 февраля 2019 г.
Лексический анализатор (сканер) частично готов.
Можно переходить к синтаксическому анализатору (парсеру).
