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