Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учеб. пособие по ОЭВМ.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
4.34 Mб
Скачать

14. Общие замечания.

При написании программ на языке MCL рекомендуется следующая структура построения программы:

{Описание переменных} VAR ... REG ... MEM ... STRUCT ...

{Тело главной программы} ...

END {Конец главной программы}

SUB1: {Подпрограмма 1} ...

RETURN { Конец подпрограммы 1}

... {Определение других подпрограмм}

SUBN: {Подпрограмма N} ...

RETURN {Конец подпрограммы N}

То есть, сначала описываются все переменные. После описания переменных располагаются операторы основной программы, которые завершаются оператором END. А затем идут операторы используемых подпрограмм. Безусловно, такая структура построения программ не является догмой, но она является наиболее простой для восприятия, и способствует большей ясности программы.

15. Сообщения об ошибках интерпретатора языка MCL.

В случае обнаружения шибки, интерпретация программы прекращается и выдается сообщение вида:

! ERROR ! в строке номер: <номер строки программы в которой обнаружена ошибка>

<строка программы в которой обнаружена ошибка>

<сообщение об ошибке>

Ниже приведен полный список сообщений об ошибках, распознаваемых интерпретатором языка MCL. При необходимости даются дополнительные пояснения.

Синтаксическая ошибка - неизвестный символ.

При интерпретации программы встретился неизвестный интерпретатору символ.

Слишком длинное имя.

Превышена максимальная длина идентификатора (16 символов).

Слишком длинное число.

Превышена максимальная длина числа (32 символа).

Нет закрывающей кавычки в строке.

В строке вывода оператора WRITE(LN) не найдена закрывающая кавычка. Строка вывода не может содержать символ перевода каретки.

Не найден конец комментария.

Не найден символ '}', ограничивающий комментарий.

Слишком много меток.

В программе используется слишком много меток. Максимальное число меток, которое может быть использовано в программе - 100.

Повторное определение меток.

В программе используются метки с одинаковыми именами. Все метки должны иметь уникальные имена.

Неопределенная метка.

В программе используется ссылка на неопределенную метку.

Слишком много вложенных циклов.

В программе используется слишком глубокое вложение циклов. Максимальный уровень вложенности циклов - 16.

Слишком много вложенных вызовов ПП.

В программе используется слишком глубокое вложение вызовов подпрограмм. Максимальный уровень вложенности вызовов подпрограмм - 16.

Команда NEXT без команды FOR.

Команда RETURN без команды GOSUB.

Слишком много переменных.

В программе используется слишком много переменных. Максимальное число переменных в программе - 100.

Повторное определение переменной.

Попытка описать переменную, имя которой совпадает с именем уже описанной переменной. Все переменные должны иметь уникальные имена.

Неопределенная переменная.

В программе используются обращения к неописанным переменным.

Неверный размер памяти.

Про описании переменной типа "память" используется слишком большое значение числа ячеек. Максимально допустимое значение числа ячеек - 1024.

Неверная разрядность регистра.

При описании переменной типа регистр, структура или память используется слишком большое значение разрядности регистра. Максимально допустимое значение разрядности регистра - 32.

Неверный размер полей структуры.

При описании переменной типа структура суммарный размер полей структуры больше размера самой переменной.

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

При обращении к переменной типа "память" значение индекса ячейки памяти превышает количество ячеек указанное при описании переменной.

Неверное использование индекса или имени поля.

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

Неопределенное имя поля.

При обращении к переменной типа структура используется неопределенное имя поля.

Диапазон превышает размеры переменной.

При обращении к диапазону переменной указанный размер диапазона превышает размер переменной.

Некорректное выражение.

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

Слишком много операндов в выражении.

Непарная скобка.

Неверный тип управляющей переменной цикла.

Управляющая переменная цикла не может быть переменной типа "память".

Неверный спецификатор формата.

Допустимы значения B,D,H.

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

Допустимы значения 1..32.

Требуется "THEN".

Требуется имя переменной памяти.

Требуется имя простой переменной (типа VAR,REG или STRUCT).

Требуется ".." или "," или "]".

Требуется "..".

Требуется ":=".

Требуется "TO".

Требуется "," или ";".

Требуется "[".

Требуется "]".

Требуются идентификатор или команда.

Требуется ":" или ":=".

Требуется ";".

Требуется идентификатор.

Требуется константа.

Требуется индекс.