- •Московский государственный институт электроники и математики
- •Курсовая работа
- •2.Оглавление
- •3.Задание на курсовую работу
- •4.Постановка задачи
- •4.1Дано
- •4.2Требуется
- •4.3Связь (примеры конвертирования)
- •5.1Вход
- •5.2Выход
- •5.3Аномалии
- •6.Метод решения задачи
- •7.Описание алгоритма
- •7.1Алгоритм решения задачи
- •5.Внешняя спецификация
- •7.2Выделение подпрограмм
- •10.Распечатка тестов и результатов работы программы
- •10.1.1Входной файл
- •10.1.2Выходной файл
- •10.2Входной файл
- •10.3Выходной файл
- •11.Выводы
- •12.Список литературы
3.Задание на курсовую работу
Написать конвертор на языке C (Си) для перевода программ на языке Pascal (Паскаль) в текст программы на языке C. Языки, а также допустимые операторы в исходном тексте, синтаксис арифметических и логических выражений определяются в соответствии с номером варианта. Для всех допустимых операторов в задании на курсовую работу должны быть приведены синтаксические диаграммы, в соответствии с которыми будет производиться анализ операторов исходного текста и их конвертирование (по согласованию с преподавателем синтаксис некоторых сложных операторов может быть упрощен). Необходимо описать возможное и обязательное использование пробелов в исходном тексте.
Исходные данные и результат хранятся в текстовых файлах, имена которых должны запрашиваться транслятором. При обнаружении синтаксической ошибки в операторе исходного текста транслятор должен вносить в выходной текст комментарий, включающий диагностическое сообщение, текст ошибочного оператора и осуществлять переход к следующему оператору.
Алгоритмы обработки отдельных операторов и других элементов исходного языка (константа, переменная, выражение) должны быть оформлены в виде подпрограмм.
Комментарии предусмотреть во всех вариантах. Комментарий не может располагаться внутри оператора. Для ключевых слов операторов в программе на языке C используются только строчные буквы, а в программе на языке Pascal ‑ строчные и прописные. В идентификаторах возможны любые буквы ‑ они конвертируются без изменений. Между отдельными лексемами может быть любое количество пробелов (точнее, пробельных символов ‑ пробелов, табуляций и переводов строки). В одной строке исходного текста может быть несколько операторов или только часть одного оператора.
При формировании выходного текста можно не учитывать правило отступа.
4.Постановка задачи
4.1Дано
Атрибут |
Комментарий |
fname1 |
Имя файла, содержащего исходный текст программы на языке Pascal. Файл должен включать различные виды каждого допустимого оператора, необходимые для полноценного тестирования программы. |
4.2Требуется
Атрибут |
Комментарий |
fname2 |
Имя выходного файла, содержащего конвертированный текст программы на языке C. |
koper1 |
Число операторов в исходной программе (сообщение, выдаваемое программой конвертирования) |
koper2 |
Число операторов в полученной программе (сообщение, выдаваемое программой конвертирования) |
ker |
Число ошибочных операторов в полученной программе (сообщение, выдаваемое программой конвертирования) |
Примечание: Длина строки входного файла не более 80 символов. Имена файлов fname1, fname2 должны удовлетворять требованиям системного программного обеспечения ЭВМ.
4.3Связь (примеры конвертирования)
В таблице представлены примеры преобразования синтаксиса исходного текста на языке Pascal в эквивалентный текст на языке C.
№ п/п |
Синтаксис оператора на языке Паскаль |
Результат конвертирования на языке Си |
1. |
Оператор присваивания v1 := ae1; |
v1 = ae1; |
2. |
Оператор repeat..until: repeat оператор [оператор] ... until le1; |
do { оператор [оператор] ... } while (!le1); |
3. |
оператор if: if le1 then оператор [ else оператор ]; |
if (le1) {оператор} else {оператор}
|
4. |
операторные скобки begin ... end |
{ ... } Если операторные скобки begin ... end определяют тело программы (если это первый begin в программе), то открывающая фигурная скобка вставляется после оператора void main (void), а закрывающая - в конец текста (при наличии точки после end). |
5. |
program Max; |
void main (void) |
