GithubHelp home page GithubHelp logo

tflc's Introduction

Компилятор

Разработка текстового редактора с функциями языкового процессора.

Оглавление

Лабораторная работа №1 "Разработка пользовательского интерфейса (GUI) для языкового процессора"

Тема: разработка текстового редактора с возможностью дальнейшего расширения функционала до языкового процессора.

Цель работы: разработать приложение с графическим интерфейсом пользователя, способное редактировать текстовые данные. Это приложение будет базой для будущего расширения функционала в виде языкового процессора.

Язык реализации: C#.

Интерфейс текстового редактора

Главное окно программы

Элементы текстового редактора:

  1. Меню
    Пункт меню Подпункты меню
    Файл Файловые операции
    Правка Операции правки
    Текст Операции текста
    Пуск __
    Справка Операции справки
  2. Панель инструментов
    • Создать
    • Открыть
    • Сохранить
    • Отменить
    • Повторить
    • Копировать
    • Вырезать
    • Вставить
    • Пуск
    • Вызов справки
    • О программе
    • Увеличить размер текста
    • Уменьшить размер текста
  3. Область редактирования
    Область для ввода текста. При открытии файла отображает текст из него.
  4. Область отображения результатов
    Область отображения результатов выводит сообщения и результаты работы языкового процессора.

Справка

Подпункт Содержание
Вызов справки Содержимое веб-страницы справки
О программе Содержимое окна "О программе"
 При нажатии кнопки "Вызов справки" открывается вкладка веб-браузера с содержимым справки программы.

Лабораторная работа №2 "Разработка лексического анализатора (сканера)"

Тема: разработка текстового редактора с возможностью дальнейшего расширения функционала до языкового процессора.

Цель работы: Изучить назначение лексического анализатора. Спроектировать алгоритм и выполнить программную реализацию сканера.

В соответствии с вариантом задания необходимо:

  1. Спроектировать диаграмму состояний сканера (примеры диаграмм представлены в прикрепленных файлах).
  2. Разработать лексический анализатор, позволяющий выделить в тексте лексемы, иные символы считать недопустимыми (выводить ошибку).
  3. Встроить сканер в ранее разработанный интерфейс текстового редактора. Учесть, что текст для разбора может состоять из множества строк.

Входные данные - строка (текст программного кода). Выходные данные - последовательность условных кодов, описывающих структуру разбираемого текста с указанием места положения и типа ("число", "идентификатор", "знак", "недопустимый символ" и т.д.).

4
Тема Объявление комплексного числа с инициализацией на языке C#
Пример верной строки Complex c1 = new Complex(1.2, 6.0);

Примеры допустимых строк

Complex c1 = new Complex(1.2, 2.3);
Complex complex = new Complex(-12.8, -2.0);
Complex temp = new Complex(125.0, -2.36);
Complex c2 = new Complex(-5.0, 45.23);

Язык реализации: C#.

Диаграмма состояний сканера

Сканер

Обновленный интерфейс текстового редактора

Главное окно программы

Примеры работы лексического анализатора

Однострочный пример
Ввод одной верной строки

Многострочный пример
Ввод нескольких верных строк

Многострочный пример (продолжение)
Ввод нескольких верных строк (продолжение)

Многострочный пример (продолжение)
Ввод нескольких верных строк (продолжение)

Многострочный пример (продолжение)

Лабораторная работа №3 "Разработка синтаксического анализатора (парсера)."

Тема: Разработка синтаксического анализатора (парсера).

Цель работы: Изучить назначение синтаксического анализатора. Спроектировать алгоритм и выполнить программную реализацию парсера.

Язык реализации: C#.

В соответствии с вариантом задания на курсовую работу необходимо:

  1. Разработать автоматную грамматику.
  2. Спроектировать граф конечного автомата (перейти от автоматной грамматики к конечному автомату).
  3. Выполнить программную реализацию алгоритма работы конечного автомата.
  4. Встроить разработанную программу в интерфейс текстового редактора, созданного на первой лабораторной работе.

Автоматная грамматика

G[<КОМП> = <Комплексное_число>]:

VT = { ‘Complex’, ‘a’…’z’, ‘A’…’Z’, ‘0’…’9’, ‘.’, ‘(’, ‘)’, ‘,’, ‘;’, ‘ ‘, ‘=’, ‘new’ }

VN = { <КОМП>, IDENT, TYPE, ASSIGN, NEW, CONSTRUCTOR, REAL, IMAGIN, DOT, DIGIT, END, SIGN, SEPARATOR }

P = {

<КОМП> -> ‘Complex’ IDENT
IDENT -> letter IDREM
IDREM -> letter IDREM|digit IDREM|_IDREM|'='NEW
NEW -> 'new' TYPE
TYPE -> 'Complex' CONSTRUCTOR
CONSTRUCTOR -> '(' SIGN
SIGN -> '-' NUM|digit NUM
NUM -> digit REAL|'.'NUM|',' IMAGINARY
REAL -> digit REALREM
REALREM -> digit REALREM|','IMAGINARY
IMAGINARY -> digit INTIMAGINARY
INTIMAGINARY -> digit INTIMAGINARY|'.'INTIMAGINARY|')'END
END -> ';'

letter → ‘a’ | ‘b’ | … | ‘z’ | ‘A’ | ‘B’ | … | ‘Z’
digit → ‘0’ | ‘1’ | … | ‘9’
}

Объяснение:

<КОМП> - начальный символ, представляет полное объявление комплексного числа.
TYPE - определяет тип данных как "Complex".
IDENT - представляет идентификатор переменной (имя переменной).
ASSIGN - представляет оператор присваивания "=" с пробелами вокруг.
NEW - ключевое слово "new" для создания нового объекта.
CONSTRUCTOR - вызов конструктора "Complex" с двумя числами в качестве аргументов.
SIGN - представляет знак "+" или "-".
REAL - представляет действительную часть комплексного числа, возможно с знаком (+ или -), за целой частью следует точка и мнимая часть.
IMAGIN - представляет мнимую часть комплексного числа.
DOT - представляет точку.
DIGIT - представляет цифру от 0 до 9.
END - представляет точку с запятой, обозначающую конец оператора.

Лабораторная работа №5 "Включение семантики в анализатор. Создание внутренней формы представления программы."

Тема: Включение семантики в анализатор. Создание внутренней формы представления программы..

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

Язык реализации: C#.

Вариант 2
Описание В качестве внутренней формы представления программы выберем тетрады. Тетрада имеет четыре поля: op, arg1, arg2 и result.
Задание 1) Дополнить парсер грамматикой G[<АВ>]. Реализовать данную КС-граммматику методом рекурсивного спуска:
1. E → TA
2. A → ε

Пример работы программы Сканер

Лабораторная работа №6 "Реализация алгоритма поиска подстрок с помощью регулярных выражений."

Тема: Реализация алгоритма поиска подстрок с помощью регулярных выражений.

Цель работы: Реализовать алгоритм поиска в тексте подстрок, соответствующих заданным регулярным выражениям.

Язык реализации: C#.

Задание:

  1. Построить РВ для поиска номеров социального страхования США (SSN), которые представляют собой 9-значные номера в формате XXX-XX-XXXX, где каждый X может быть любой цифрой [0-9].
    2.Построить РВ, описывающее имя пользователя (набор букв и цифр длиной от 2 до 15 символов, первым символом должен быть @).
  2. Построить РВ, описывающее одно- и многострочные комментарии (язык C++).

Пример работы программы Задание №1 Сканер Задание №2 Сканер Задание №3 Сканер

Лабораторная работа №7 "Реализация метода рекурсивного спуска для синтаксического анализа."

Тема: Реализация метода рекурсивного спуска для синтаксического анализа.

Цель работы: Разработать для грамматики алгоритм синтаксического анализа на основе метода рекурсивного спуска.

Язык реализации: C#.

Вариант 17 Для грамматики G[Program] разработать и реализовать алгоритм анализа на основе метода рекурсивного спуска.
G[Program]:

  1. Program -> ε | Instr Program
  2. Instr -> '+' | '-' | '*' | '/' | '_' | '=' | '>' | '&' | '|' | '~' | '$' | '%' | '' | '@' | '[' Program ']'
    Примечание: данными продукциями описывается эзотерический язык программирования FALSE.

Пример работы программы

Сканер

tflc's People

Contributors

ksalikhova avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.