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 г. Лексический анализатор (сканер) частично готов. Можно переходить к синтаксическому анализатору (парсеру).