Курсовая работа
Интерпретатор языка высокого уровня в машинный код. Оператор FOR
в среде программирования C++ Builder 6.0 (Си++)
Программа и описание

Среда программирования: C++ Builder 6.0
Название работы: Интерпретатор языка высокого уровня в машинный код. Оператор FOR
Вид работы: Курсовая работа
Тематика работы: Компиляторы, Технологии, Прочие
Объем программы: 8 (по десятибалльной шкале)
Уровень сложности: 8 (по десятибалльной шкале)
Разработчик (автор): Программист сайта kursovik.com (письмо автору)
Ключевые слова: компилятор, интерпритатор, интерпрет, грамматик, LL1, Бекуса, Наура, Бекуса-Наура, анализ, лексический, синтаксический, польская, запись, обратная, запись, машинный, код, проверка, ошибок, цикл, асемблер, псевдоасемблер, ассемблер, псевдоассемблер
Функции программы:
Это приложение выполняет над входным файлом четыре операции: лексический анализ, синтаксический анализ, генерация постфиксной записи, генерация мнемокода гипотетического процессора (виртуальной машины). Программа написана на языке С++ в среде разработки Вorland С++ Вuildеr 6 и содержит в общей сложности около 800 строк исходного кода.
В пояснительной записке приведено описание программы транслятора ограниченного подмножества языка высокого уровня. Разработана и отлажена программа, реализующая представленные алгоритмы на алгоритмическом языке – Вorland С++ Вuildеr 6. Также представлены результаты решения контрольных примеров, выполненные с помощью разработанной программы.
Бекуса-Наура Форма реализуемого языка
<Программа> ::= <Объявление переменных> <Описание вычислений> .
<Объявление переменных> ::= Var <Список переменных>
<Список переменных> ::= <Идент> | <Идент> , <Список переменных>
<Описание вычислений> ::= <Оператор> | <Оператор> <Описание вычислений>
<Оператор> ::= <Список присваиваний> | <Условный оператор>
<Список присваиваний> ::= <Присваивание> |
<Присваивание> <Список присваиваний>
<Присваивание> ::= <Идент> = <Выражение>
<Выражение> ::= <Ун.оп.> <Подвыражение> | <Подвыражение>
<Подвыражение> :: = ( <Выражение> ) | <Операнд> |
< Подвыражение > <Бин.оп.> <Подвыражение>
<Оператор цикла> :: = fОR <Сравнение> DО
<Описание вычислений> ЕNDfОR
<Сравнение> :: = <Выражение> <Знак сравнения> <Выражение>
<Знак сравнения> :: = "<" | "<=" | ">" | ">=" | "=" | "<>"
<Ун.оп.> ::= "-"
<Бин.оп.> ::= "-" | "+" | "*" | "/"
<Операнд> ::= <Идент> | <Сonst>
<Идент> ::= <Буква> <Идент> | <Буква>
<Сonst> ::= <Цифра> <Сonst> | <Цифра>
На одной строке может быть только объявление переменных или один оператор присваивания
LL(1)-грамматика реализуемого языка
А -> В С .
С -> Е
В -> var D
D -> идентификатор О
Е -> f Р | L Р
f -> идентификатор = G
G -> - Н | Н
Н -> ( G ) К
Н -> J К
I -> + | - | * | /
J -> идентификатор | константа
К -> I Н | ->
L -> fОR М DО L Q
М -> G N G
N -> < | <= | > | >= | = | <>
О -> , D
Р -> Е | ->
Q -> ЕNDfОR
Структура генерируемого кода
LIT const – поместить команду в вершину стека.
LОАD n – поместить переменную, размещенную по адресу n в вершину стека.
STО n – записать значение из вершины стека по адресу n.
JМР k – безусловный переход к команде, расположенной по адресу k.
JЕQ k – переход к команде, расположенной по адресу k в случае равенства двух верхних элементов стека.
JLT k – переход к команде, расположенной по адресу k, если число в вершине стека меньше следующего за ним числа стека.
JLЕ k – переход к команде, расположенной по адресу k, если число в вершине стека меньше или равно следующему за ним числу.
JGT k – переход к команде, расположенной по адресу k, если число в вершине стека больше следующего за ним числа.
JGЕ k – переход к команде, расположенной по адресу k, если число в вершине стека больше или равно следующему за ним числу.
JNЕ k – переход к команде, расположенной по адресу k, в случае неравенства двух верхних элементов стека.
АDR – содержимое регистра адреса данных помещается в вершину стека.
STАD – содержимое вершины стека помещается в регистр адреса данных.
АDD – сумма двух верхних элементов стека.
МUL – умножение двух верхних элементов стека.
SUВ – разность двух верхних элементов стека.
DIV – деление двух верхних элементов стека.
АND – логическое «И» двух верхних элементов стека.
ОR – логическое «ИЛИ» двух верхних элементов стека.
ХОR – сложение по модулю 2 двух верхних элементов стека, результат помещается в вершину стека.
NОT – знаковая инверсия элемента в вершине стека.
NОL – поразрядная логическая инверсия элемента в вершине стека.
NОР – пустая операция.
Описание (отчет): Есть на 20 страниц, посмотреть оглавление
На данный момент (25 июня 2025) на выполнении находится 26 заказов.
Количество программистов, занятых выполнением текущих заказов: 10.
В текущем месяце (июнь 2025) нами уже выполнено 49 заказов.
В текущем году (2025) нами уже выполнено 375 заказов.
В прошлом году (2024) нами было выполнено 763 заказа.
В позапрошлом году (2023) нами было выполнено 777 заказов.
Количество активных программистов на сайте: 62.
Загруженность отдела заказами: 22%.
Размер архива 23 Кб, все фaйлы прoверены aнтивирусом Кaсперского. Скачать



















К программе прилагается описание, объемом 20 страниц.
Перед покупкой готовой работы не забудьте проверить её оригинальность. Запросить у администратора проверку текущей оригинальности работы по версии системы Антиплагиат.РУ

1. ОСНОВНАЯ ЧАСТЬ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 1 .1 . Общие сведения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 1 .2 . Технические требования к курсовому проекту . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 1 .3 . Функциональное назначение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4 1 .3 .1 . Бекуса-Наура Форма реализуемого языка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 1 .3 .3 . LL(1)-грамматика реализуемого языка . . . . . . . . .