- ✅ Лексер
- ✅ Синтаксическй анализ
- ✅ Таблица символов
- ✅ Семантический анализ
- ✅ Кодогенератор
- [Что поддреживается]
- .NET Core 2.1
- flat assembler [гайд на установку]
- немного удачи
Для запуска тестов требуется:
- В корневой папке проекта зайти в папку lab1.
- Открыть командную строку и набрать
dotnet test
На вход программе принимается исходник с текстом. Текст парсится на допустимые лексемы и создает соответствующие токены.
Для запуска программы требуется:
- В корневой папке проекта зайти в папку lab1.
- Открыть командную строку и набрать
dotnet build
dotnet run --dump-tokens \source.cs
На выходе программа выдает AST с указанием ошибок
Для запуска программы требуется:
- В корневой папке проекта зайти в папку lab1.
- Открыть командную строку и набрать
dotnet build
dotnet run --dump-ast \source.cs
На вход AST, на выходе таблица символов с обозначеним вложенных областей и указание ошибок, что идентификатор повторно обьявляется
Для запуска программы требуется:
- В корневой папке проекта зайти в папку lab1.
- Открыть командную строку и набрать
dotnet build
dotnet run --dump-ast \source.cs
На вход AST, на выходе анотированный AST
Для запуска программы требуется:
- В корневой папке проекта зайти в папку lab1.
- Открыть командную строку и набрать
dotnet build
dotnet run --dump-ast \source.cs
На вход прнимается голова AST по которому алгоритм спускается и генерирует асемблер в файл с расширением .asm Для запуска программы требуется:
- В корневой папке проекта зайти в папку lab1.
- Открыть командную строку и набрать
- Скопировать папку INCLUDE из папки Fasm и вставить в ту же дирректорию, где лежит исходник, который надо скомпилировать
- C:\Fasm\fasm.exe - это расположение корневой папки fasm компилятора, у вас может быть другое
dotnet build
dotnet run --dump-asm \source.cs C:\Fasm\fasm.exe
- Переходим по этой ссылке
- Скачиваем для той системы, которая стоит у вас (лучше на винду, я на ней только проверял :D)
- Ставим (распаковываем) на диск, где стоит система (обязательно это или нет - я не знаю)
- сложная арифметика
- сложные булевы операции
- работа с массивами (присваивание в ячейки)
- работа со строками (тоже самое, что и массивы)
- if - else
- for
- while
- проверка типов переменных