Лабораторная работа № 1.1. Создание каркаса транслятора

Как правило, транслятор состоит из основных функциональных блоков, к которым относятся парсер файлов исходного языка, таблица идентификаторов, лексический анализатор, синтаксический анализатор и генератор кода.

Эти функциональные блоки стоит реализовать в отдельном проекте – библиотеке классов, которая будет предоставлять функции трансляции исходного языка. Чтобы создать библиотеку классов, необходимо воспользоваться пунктом меню MS Visual Studio «File» -> «New» -> «Project». В открывшемся диалоге выбираем тип проекта «Visual C#», шаблон проекта – «Class Library». В текстовых полях ниже задаем адекватное наименование для проекта и решения – например, Translation (здесь и далее имена проектов, классов, их полей и методов выбираются по своему усмотрению).

После нажатия кнопки «OK» среда разработки создаст библиотеку классов и добавит в нее один класс с оригинальным именем «Class1». Теперь стоит начать поочередно добавлять в наш проект классы: парсер файлов – Reader.cs, таблица идентификаторов – NameTable.cs, лексический анализатор – LexicalAnalyzer.cs, синтаксический анализатор – SyntaxAnalyzer.cs, генератор кода – CodeGenerator.cs (все классы объявляются с модификаторами public static). Вышеупомянутый Class1 можно либо удалить, либо переименовать.

Если на данном этапе все сделано правильно, то при запуске проекта (Ctrl + F5) среда разработки выдаст сообщение об ошибке – библиотека классов не относится к исполняемым типам проектов.

Для тестирования нашей библиотеки создадим в нашем решении еще один проект – GUI-приложение (в обозревателе решений щелкаем правой кнопкой по решению – «Add» -> «New Project», тип проекта «Visual C#», шаблон проекта – «Windows Forms Application», наименование - TestForm). Сделаем этот проект запускаемым по умолчанию (контекстное меню проекта -> «Set As StartUp Project») и добавим в него ссылку на нашу библиотеку. Для этого в контекстном меню проекта нужно выбрать пункт «Add Reference». В открывшемся диалоге на вкладке «Projects» выбираем нашу библиотеку и жмем «OK». После этого в коде формы подключаем пространство имен нашей библиотеки, используя директиву using.

using Translation;

Далее необходимо спроектировать интерфейс нашего приложения. В ходе каждой из лабораторных работ мы будем выполнять одни и те же типовые действия: открывать файл исходного языка, преобразовывать его с возможностью сохранения результата в файл. Исходя из этого, разумно предложить следующий вариант интерфейса:

Для отображения текстового содержимого на форме используются элементы управления RichTextBox. В них выводится соответственно содержимое исходного файла, результат обработки и сообщения хода обработки (например, ошибки синтаксиса при синтаксическом анализе). В меню необходимо реализовать, как минимум, три пункта: «Файл» -> «Открыть» (для открытия файла на исходном языке), «Файл» -> «Сохранить» (для сохранения результата), «Компиляция» -> «Выполнить» (для запуска преобразования).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: