Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Килов Х.И. Фортран для БЭСМ-4 (МИФ) учеб. пособие

.pdf
Скачиваний:
5
Добавлен:
23.10.2023
Размер:
5.14 Mб
Скачать

-80 -

54.Ошибка в арифметическом выражении.

55.Б арифметическом выражении нет баланса скобок.

56.Слишком сложное арифметическое выражение.

57.Неверно записан индекс массива ХХХХХХ.

57.1.Индекс содержит дроб}юс число.

57.2.Слишком большое число.

57.3.Индекс отрицателен ИЛИ нуль.

57.4.Массив с двумя индексами описан как одномерный.

57.5.Слишком большой индекс.

57.6.Индексное выражение содержит переменную, не являю­

щуюся простой.

57.7.За числом не следует , или * или )

58.В функции ХХХХХХ не присвоено значение идентификатору

этой функции,

59.В левой части оператора присваивания за идентификато­ ром ХХХХХХ отсутствует = ИЛИ (

60.Неверная конструкция индексного выражения у массива

ХХХХХХ.

61.В списке печати отсутствует , или ;

62.Неверно указан форлат печати.

63.Неверно записан элемент печати.

63.1.Неверно записан индекс элемента массива.

63.2.В списке печати на АЦПУ встретился /

64. Неверно записан элемент печати - неявный цикл.

64.1.Отсутствует или не описан идентификатор массива,

64.2.Неверно записан элемент массива или элемент списка

неявного цикла.

64.3.Неявный цикл начинается с ( ( причем один из индек­ сов - число, либо тлеется только один индекс, ш щ элемент

одномерного массива записан с двумя индексами,

64.4. За индексом нет , пли )

ч

64.5. Отсутствует одна из запятых ш ш

= или ) в списке

неявного цикла.

 

64,G. Параметр неявного цикла отсутствует пли не совпадает

ни с одним из индексов ИЛИ же "встречается дважды.

-81 -

64.7.Один из идентификаторов конструкции 1=11, 12, 13 является параметром явного'цикла.

65.В левой части оператора присваивания за элементом мас­ сива отсутствует =

66.Метка за PRINT встретилась в операторе, отличном от PRINT , или ею помечен не оператор P0BIU.T.

67.Оператор Р(ЙШАТ не помечен.

68.Метка оператора PfftiMAT встретилась не в операторе

PRINT.

69.Ошибка в операторе PflfRuiAT.

69.1.Отсутствует открывающая скобка.

69.2.Встретилось дробное число или встретился нуль не в конструкции PgRflAT (О).

69.3.Отсутствует , или / или )

69.4.Пустой формат или пустая повторяемая группа.

69.5.Внутри повторяемой граппы встретилась (

70.Ошибка в элементе рператора F0RUAT.

70.1.За I , Е, F , 0 , а или . не следует число

70.2.о элементе Е, Р, S или 0 нет точки

70.3.В элементе 0 или 3 первое число больше второго или второе число больше 15.

70.4. В элементе отсутствует / или идентификатор или указан параметр цикла.

70.5. Несуществующий или неверно записанный элемент FORMAT'а.

71.В операторе PRINT отсутствует метка PSttUlAT'a.

72.Неверно поставлены скобки в операторе IP. •

72.1.Отсутствует ( после IP.

72.2.Пет баланса скобок.

73.В арифметическом ip нет метки, запятой или точки с запятой.

,;":>Д. Пет первой метки.

73.2.Нет запятой за первой меткой.

73.3.Нет второй метки.

73.4.Нет запятой за второй меткой.

- 82 -

73.5.Нет третьей метки.

73.6.Нет точки с запятой за третьей моткой.

74. Б операторе READ или WRITE неверно записан вид;, номер или адрес внешнего устройства.

74.1.Отсутствует . ( за WRITE

74.2.Неправильно закодирован вид внешнего устройства (ЦБ

соответствует А , МЛ соответствует 2).

74.3.Недозволенный номер МБ или лентопротяжного механиз­

ма.

74.4.Нет запятой за пимером внешнего устройства.

74.5.Адрес или номер зоны - не восьмиричное число и но идентификатор.

74.6.Отсутствует ) после адреса или номера зоны,

74.7. Отсутствует , после )

75. 3 операторе READ пли WRITE использован недозволенный

идентификатор адреса па внешнем устройстве.

75.1.Идентификатор не является идентификатором простой переменной.

75.2.Идентификатор является параметром цикла,

75.3.Идентификатор шеет абсолютный адрес.

76.Указан недозволешшй элемент списка ввода/вывода,

76.1.Отсутствует идентификатор.

76.2.В обмене с МБ пли МП участвует не массив.

76.3.Используется массив, являющийся формальным парамет­

ром или расположенный в динамической памяти.

77.Неверно записан список ввода-вывода в операторе PUNCH или READ с перфокарт,

77.1.Отсутствует идентификатор.

77.2.Идентификатор не является идентификатором простой переменной или массива.

77.3.Простая переменная - параметр цикла.

. 77.4. Простая переменная шлеет абсолютшй адрес.

77.5. Количество вводимых или выводимых простых перемен­

ных - не число или не целое число.

-83 -

77.6.Количество вводимых или выводимых простых перемен­

ных меньше единицы.

77.7.За элементом списка отсутствует , или ;

78.В операторе ввода с перфокарт неверно записан список контроля ИЛИ перевода.

78.1.Признак контроля ИЛИ перевода не 0 ИЛИ 1 .

78.2.За признаками контроля И перевода отсутствует ,

79.В автокоде неверно записан код операции.

79.1.Код операции - не восьмеричное число.

79.2.Вслед за кодом операции отсутствует ,•или ;

79.3.Код операции превышает 777д

80.Ь автокоде неверно записан один из (абсолютных) ад­

ресов.

80.1.Перед адресом отсутствует ,

80.2.Число не является восьмеричным.

80.3.Число превышает 7777р

81.В автокоде неверно записана константа в единицах ад­ ресов.

81.1.Число перед К (код) превышает 777g

81.2.Вслед за П отсутствует , или ;

81.3.Один из адресов Б константе превышает 7777g

81.4.Один из адресов в константе - не восьмеричное число.

81.5.Вслед за одним из адресов в константе отсутствует4

81.6.Одни из адресов в константе встречается дважды

(например, 1 - 1 * ) .

82.В автокоде неверно записан один из адресов - десят. константа, метка или относит.адрес команды.

82.1.Вслед за < отсутствует число.

82.2.Вслед за числом отсутствует >

82.3.Вслед за : отсутствует метка.

82.4.Вслед за « отсутствует + или - или , или ;

82.5.Относительный адрес не начинается с цифры.

82.5.Относительный адрес - не число.

82.7. Относительный" адрес - дробное число.

83. В автокоде относительный адрес команды превышает 15.

-84 -

84.Неверно записано обращение к стандартной программе,

84.1.Информационная строка не начинается с кода операции.

84.2.Номер СП - не абсолютный адрес.

84.3.Номер СП превышает максимально допустимый (477^).

65.Б автокоде адрес начинается с недозволенного символа.

66.3 автокоде в записи адреса - арифметического выражения встретился недозволенный идентификатор или индекс.

86.1, Встретился идентификатор подпрограммы или функции.

66.2, Идентификатор простой переменной является параметром цикла.

86.3, Идентификатор простой переменной имеет абсолютный

адрес.

85.4, Встретился идентифшсатор массива из динамической

памяти или массива-формальиого параметра.

86.5, Вслед завдентификатороммассива отсутствует (

66,G, Индекс элемента массива - не'число.

86.7. Вслед за индексом элемента массива отсутствует )

87. В логическом I P за условием записан оператор I P или

D0.

87.1, Записан оператор I P 87.2. Записан оператор Dg

88.В логическом I P неверно записана операция сравнения.

88.1.Операция сравнения - не У2 ,LE,EQ,NE,GT ИЛИ GE. 88.2, Перед или после операции сравнения отсутствует точка

89.В условии логического I F ХХХХХХ не является идентифика­

тором переменной.

_

90.В логическом I P неверно записано условие.

90.1.Вслед за выражением вида А.ьт.в отсутствует ) или ,

90.2.Вслед за выражением вида А.Ьт.в, отсутствует .AND. или .0R, или вслед за AND или 0R отсутствует точка

90.3.Вслед за двумя (простыми) логическими выражениями,

связанными с помощью AND или 0R, отсутствует )

91. Абсолютный адрес на МБ в операторе READ или WRITE больше дозволенного.

92. В логическом I P вслед за условием записан помеченный

оператор.

-85 -

93.Вслед за CALL отсутствует идентификатор.

94.Нет описания подпрограммы (или массив;)) ХХХХХХ.

95.Количество фактических параметров в подпрограмме

ХХХХХХ меньше количества формальных параметров.

96.Вслед за идентификатором подпрограммы отсутствует (

или ;

97.Количество фактических параметров в подпрограмме

ХХХХХХ больше количества формальных параметров.

98.Вид обращения к подпрограмма ХХХХХХ не соответствует

ее описанию.

98.1.В операторе CALL записано обращение к функции.

98.2, В арифметическом выражении записало обращение к подпрограмме типа SUBROUTINE.

99. Фактический параметр ХХХХХХ не начинается с идентифи­ катора или числа.

100.Формальному параметру номер ХХХХХХ - простой перемен­

ной соответствует фактический параметр-массив.

101.Фактический па])аметр номер ХХХХХХ не является пере­ менной, хотя ;,эл»;ен здесь ею быть.

102.В обращении к подпрограмме вслед за фактическим пара­

метром номер ХХХХХХ нет ) по есть (

103.Фактический параметр в обращении к встроенной функции

ХХХХХХ не является простой переменной, хотя должен ею быть.

104.В обращении к встроенной функции ХХХХХХ за фактическим

параметром нет )

105.Фактический параметр функции FLOAT не является прос­

той переменной или имеет абсолютный адрес.

106.Формальному параметру номер ХХХХХХ - подпрограмме со­

ответствует фактический параметр, не являющийся идентифи­ катором.

107.Фактический паршетр номер ХХХХХХ не является подпро­ граммой, хотя должен ею быть.

108.Формальный параметр-подпрограмма отсутствует в спис­

ке EXTERNAL.

_ 86 -

109.Фактический 'параметр-подпрограмма XXXLXX отсутствует

ВСПИСКв EXTERNAL.

110.Фактический паршлетр-подщзограмш ХХХХХХ встречается в теле подпрограммы из той :ке группа EXTERNAL.

111.Фактический паршетр-подпрограмма )ССХХХХ встречается з обращении к подпрограмме из той ;/.е группа EXTERNAL.

112.В обращении к подпрограмме - формальному параметру встречается фактический параметр-подорограша ХХХХХХ ИЗ ТОЙ Кв ГРУППЫ EXTERNAL.

'113. В теле подпрограммы ХХХХХХ встречается обращение к этой же подпрограмме.

114.В описании подпрограммы ХХХХХХ ее идентификатор сов-_ падает с идентификатором подпрограммы - формального пара­ метра из списка EXTERNAL.

115.Обращение к подпрограмме - формальному параметру

ХХХХХХ встречается в теле подпрограммы из той ;:;е группы

EXTERNAL.

116.Обращение к подпрограмме ХХХХХХ встречается в теле подпрограммы из той же группы EXTERNAL.

117.Вид памяти (МОЗУ-1, ДП) массива - фактического пара­ метра ХХХХХХ не соответствует виду памяти массива - фор­ мального параметра.

118.Одномерный массив - фактический параметр ХХХХХХ соот­ ветствует двумерному массиву - формальному параметру.

119.Фактический параметр - двумерный массив ХХХХХХ с пере­ менной структурой соответствует формальному параметру - двумерному массиву с постоянным количеством столбцов.

120.Массив-фактический параметр ХХХХХХ является формаль­ ным параметром, но его характеристики не соответствуют ха­ рактеристикам массива из описания вызываемой подпрограммы.

121.Неверно записан индекс массива-формального параметра

ХХХХХХ.

121.1.Индекс не начинается с числа или идентификатора.

121.2.В индексе встретился идентификатор, не являющийся идентификатором простой переменной.

-87 -

122.В индексе массива - формального параметра ХХХХХХ не­ верно записана конструкция за знаком умножения.

122.1.За знаком умножешхя отсутствует цпнтификатор.

122.2.Идентификатор за знаком умножения не является иден­ тификатором простой переменной.

123. Вслед за индексным выражением массива-формального па­

раметра ХХХХХХ отсутствует , или )

124. Индекс одномерного массива-формалыюго параметра

ХХХХХХ содержит более одного индексного выражения.

125. Неверно записано второе индексное выражение массиваформального параметра ХХХХХХ.

125.1.За числом не следует ) или й

125.2.За знаком умножения отсутствует идентификатор,

125.3.Идентификатор за знаком умножения не является идентификатором простой переменной.

125.4.За конструкцией вида 2к1 отсутствует ) или + или -

125.5.За вторым индексным выражением отсутствует )

125.6.Второе индексное выражение не начинается с числа или идентификатора.

125.7.Идентификатор, с которого начинается второе индекс­ ное выражение, не является идентификатором простой пере­

менной.

-

126.Обращение к функции ХХХХХХ записано в левой части оператора присваивания.

127.Неверно записан фактический параметр номер ХХХХХХ -

арифметическое выражение.

128.Неверно записана организационная информация в опера­ торе отладочной печати.

128.1.Количество повторений - нецелое число.

128.2.Количество повторений - не положительное число.

128.3.Количество повторений больше 1000.

"Н8.4.

За

количеством повторений отсутствует

,

 

128.5.

За

указателем вида печати отсутствует.

, .

ч

129.Оператор начинается с недозволенного символа.

130.Слишком сложная структура фактического параметра -

88 -

арифметического выражения.

131. Неверно записан фактический параметр номер ХХХХХХ

соответствующий формальному параметру -массиву.

131.1.Фактический параметр не является идентификатором.

131.2.Фактический параметр не является идентификатором массива.

5.Краткое описание компилятора

Компиляция ФОРТРАН-программы осуществляется в три просмотра.

Первый просмотр производит перекодировку символов

ФОРТРАН-программы во внутренний код машины,печать ли­

стинга и некоторые вспомогательные действия.

Второй просмотр создает рабочую программу о точ­

ностью до распределения памяти.

Третий просмотр распределяет память и завершает создание рабочей программы, а также реализует дополни­ тельные возможности компилятора.

5.1. Первый просмотр

5 . I . I . Перекодировка

ФОРТРАН-программа перфорируется в некотором вход­

ном коде (см..напр., й). Для разных реализаций компиля­

тора входной код, а также количество и расположение сим­

волов в строке (ячейке машины) могут быть различными.

Настройка соответствующих параметров компилятора и табли­ цы дешифратора описана в 6.3. и 6.4.

На первом просмотре с помощью указанной информации

осуществляется перекодировка символов ФОРТРАН-программы во внутренний код, совпадающий (за исключением подчеркива­

емых "основных символов" - см. 2.1.4.) с кодом АЦПУ

[ 4 ]

При втом происходит контроль запрещенных во входном

языке

-89 -

символов. Если они обнаружены, то на АЦПУ (вне зависимос­

ти от того, происходит ли печать листинга - см.ниже) печа­

таются соответствующие операторы, указывается местонахож­ дение этих символов, и компиляция прекращается.

ФОРТРАН-проГрамма во внутреннем коде записывается

(по 128 символов + КС) на магнитный барабан. При этом в каждой строке (ячейке машины) записывается один символ.

5.1.2. Печать листинга

Как правило (кроме случая, указанного в 2.6.2.5Л..), при

первом просмотре на АЦПУ печатается листинг ФОРТРАН-про-

граммй(см.рис.

I ) .

 

 

 

В каждой строке листинга печатается один оператор.

Слева печатается

порядковый номер оператора в ФОРТРАП-

программе. Перед оператором

COMMENT

И

после него про­

пускается одна строка. Совместно с операторами gPTlgH

печатается соответствующий

словесный текст. В конце каж­

дой программной единицы, после оператора

END , пропуска­

ется одна строка.

 

 

 

Листинг печатается постранично, по 64 строки в

странице.

Если последним символом ФОРТРАН-программы не явля­

ется символ END , то печатается" ОТСУТСТВУЕТ

END", и .

компиляция прекращается.

 

Если какой-либо оператор занимает большее коли­

чество символов, чем позволяет строка АЦПУ, то он печата­

ется в нескольких расположенных подряд строках.

5.2. Второй просмотр

Второй просмотр производит основную работу в про­ цессе компиляции ФОРТРАН-программы. Результатом этого про­

смотра является промежуточная рабочая программа в кодах

машины с точностью до распределения памяти. Каждая команда

Соседние файлы в папке книги из ГПНТБ