Index of /ukdwk_archive/dwkwebcomplekt/FOCAL_TURBO
Image : FOCAL_TURBO.dsk
Format : DSK
Size : 365 Kb
Volume ID: RT11A
Owner :
File Blocks Date Bytes
---------- ------ ----------- ----------
EDIC .SAV 22 07-Aug-1992 11'264
LINK .SAV 49 08-Aug-1992 25'088
FOCAL .SAV 20 08-Aug-1992 10'240
FOCAL2.SAV 23 13-Nov-1992 11'776
FOCAL .OBJ 50 13-Nov-1992 25'600
FTRANS.LST 32 13-Nov-1992 16'384
MACRO .SAV 61 08-Aug-1992 31'232
SYSMAC.SML 61 08-Aug-1992 31'232
FOC .SAV 33 09-Nov-2015 16'896
ASK .FOC 32 17-Jun-1997 16'384
DEMO .FOC 25 17-Jun-1997 12'800
DO .FOC 22 17-Jun-1997 11'264
FOC .DPR 104 17-Feb-1989 53'248
FOR .FOC 45 17-Jun-1997 23'040
IF .FOC 41 17-Jun-1997 20'992
SET .FOC 33 17-Jun-1997 16'896
TEST .FOC 8 17-Jun-1997 4'096
TYPE .FOC 34 17-Jun-1997 17'408
FOCAL8.SAV 22 08-Dec-1976 11'264
---------- ------ ----------- ----------
19 Files, 717 Blocks
0 Free blocks
ФОКАЛ-ТУРБО (КОМПИЛЯТОР) РУКОВОДСТВО ПРОГРАММИСТА.
МОСКВА МИЭТ (С) 1988.
ФОКАЛ-ТУРБО V01.02
АННОТАЦИЯ.
НАСТОЯЩИЙ ДОКУМЕНТ СОДЕРЖИТ РУКОВОДСТВО ПО ИСПОЛЬЗОВАНИЮ
КОМПИЛЯТОРА ЯЗЫКА ФОКАЛ ДЛЯ ДВК-2М,3.
П Р И М Е Ч А Н И Е. НАСТОЯЩАЯ ВЕРСИЯ КОМПИЛЯТОРА (V02.02)
ЯВЛЯЕТСЯ Э К С П Е Р И М Н Т А Л Ь Н О Й И НЕ ПРЕДНАЗНАЧЕНА
ДЛЯ ШИРОКОГО РАСПРОСТРАНЕНИЯ. УБЕДИТЕЛЬНАЯ ПРОСЬБА КО ВСЕМ, КТО
РИСКНЕТ ИСПОЛЬЗОВАТЬ КОМПИЛЯТОР, ФИКСИРОВАТЬ ВСЕ ОЬНАРУЖЕННЫЕ
ОШИБКИ И НЕТОЧНОСТИ В ЕГО РАБОТЕ И ПО ВОЗМОЖНОСТИ СООБЩАТЬ ПО ТЕЛ.
532-99-07.
СОДЕРЖАНИЕ.
АННОТАЦИЯ....................................................1
1. НАЗНАЧЕНИЕ И УСЛОВИЯ ПРИМЕНЕНИЯ...........................2
2. ОБРАЩЕНИЕ. ВХОДНЫЕ И ВЫХОДХЫЕ ДАННЫЕ......................2
3. КЛЮЧИ ТРАНСЛЯЦИИ..........................................3
4. ОСОБЕННОСТИ КОМПИЛЯТОРА ПО СРАВНЕНИЮ С ИНТЕРПРЕТАТОРОМ....3
5. ПЕРЕМЕННЫЕ И МАССИВЫ......................................3
6. ОШИБКИ ПЕРИОДА ТРАНСЛЯЦИИ.................................5
6.1 ОШИБКИ ОБНАРУЖИВАЕМЫЕ ИНТЕРПРЕТАТОРОМ.................5
6.2 ОШИБКИ ОБНАРУЖИВАЕМЫЕ КОМПИЛЯТОРОМ....................5
7. ОШИБКИ ПЕРИОДА ИСПОЛНЕНИЯ ................................6
7.1 ОШИБКИ ОБНАРУЖИВАЕМЫЕ ИНТЕРПРЕТАТОРОМ.................6
7.2 ОШИБКИ ОБНАРУЖИВАЕМЫЕ ИСПОЛНЯЮЩЕЙ СИСТЕМОЙ
КОМПИЛЯТОРА...........................................7
1. НАЗНАЧЕНИЕ И УСЛОВИЯ ПРИМЕНЕНИЯ.
ИДЕЯ НАПИСАНИЯ КОМПИЛЯТОРА ДЛЯ ЯЗЫКА ФОКАЛ ВОЗНИКЛА В ЯНВАРЕ
1988 ГОДА, ПРИ ДОРАБОТКЕ ИНТЕРПРЕТАТОРА ЭТОГО ЖЕ ЯЗЫКА FOCAL1 И
FOCAL2.
ОСНОВНОЙ ЦЕЛЬЮ ПРИ ЕГО СОЗДАНИИ БЫЛО СТРЕМЛЕНИЕ УВЕЛИЧИТЬ
СКОРОСТЬ ИСПОЛНЕНИЯ ОТЛАЖЕННЫХ С ПОМОЩЬЮ ИНТЕРПРЕТАТОРА ПРОГРАММ
НА ЯЗЫКЕ ФОКАЛ. ЭТО ОДНАКО НЕ ПРОТИВОРЕЧИТ ТОМУ, ЧТОБЫ
ИСПОЛЬЗОВАТЬ ЕГО, КАК САМОСТОЯТЕЛЬНЫЙ ЯЗЫКОВЫЙ ПРОЦЕССОР.
FOCAL V01.02 ФУНКЦИОНИРУЕТ ПОД УПРАВЛЕНИЕМ SJ ИЛИ FB
МОНИТОРОВ ОПЕРАЦИОННОЙ СИСТЕМЫ RT11 ИЛИ ЕЙ ПОДОБНОЙ И ТРЕБУЕТ
ОПЕРАТИВНУЮ ПАМЯТЬ НЕ МЕНЕЕ 24К БАЙТ.
ДЛЯ РАБОТЫ НЕОБХОДИМО ИМЕТЬ СЛЕДУЮЩИЕ ФАЙЛЫ:
-FOCAL.SAV - ЗАГРУЗОЧНЫЙ МОДУЛЬ КОМПИЛЯТОРА,
-FOCAL.OBJ - БИБЛИОТЕКА ИСПОЛНЯЮЩЕЙ СИСТЕМЫ ФОКАЛА,
-MACRO.SAV - МАКРОАССЕМБЛЕР,
-LINK.SAV - КОМПАНОВЩИК.
КОМПИЛЯТОР ОБРАБАТЫВАЕТ ВХОДНОЙ ФАЙЛ В 2 ПРОХОДА И ВЫДАЕТ
ТЕКСТОВЫЙ ВЫХОДНОЙ ФАЙЛ ДЛЯ МАКРОАССЕМБЛЕРА. ОТКАЗ ОТ ТРАНСЛЯЦИИ
ФОКАЛ-ПРОГРАММЫ СРАЗУ В ОБ'ЕКТНЫЕ КОДЫ ПОЗВОЛИЛ СУЩЕСТВЕННО
УПРОСТИТЬ СТРУКТУРУ КОМПИЛЯТОРА И УСКОРИТЬ ЕГО НАПИСАНИЕ. КРОМЕ
ТОГО ЭТО ОБЛЕГЧАЕТ ВСТАВКУ ФРАГМЕНТОВ НА МАКРОАССЕМБЛЕРЕ В ТЕКСТ
ПРОГРАММЫ, ЧТО ПРЕДПОЛАГАЕТСЯ РЕАЛИЗОВАТЬ В ПОСЛЕДУЮЩИХ ВЕРСИЯХ
КОМПИЛЯТОРА.
ДЛЯ ОБЛЕГЧЕНИЯ УЧАСТИ ПОТЕНЦИАЛЬНЫХ ПОЛЬЗОВАТЕЛЕЙ ЯЗЫКА
ФОКАЛ В КОМПИЛЯТОРЕ ПРЕДУСМОТРЕН АВТОМАТИЧЕСКИЙ РЕЖИМ ТРАНСЛЯЦИИ,
КОТОРЫЙ ТРЕБУЕТ НАЛИЧИЯ ВЫШЕПЕРЕЧИСЛЕННЫХ ФАЙЛОВ НА СИСТЕМНОМ
УСТРОЙСТВЕ, А ИСХОДНЫЕ ПРОГРАММЫ НА РАБОЧЕМ УСТРОЙСТВЕ (DK:).
ДАННЫЙ РЕЖИМ ПОЗВОЛЯЕТ БЕЗ ДОПОЛНИТЕЛЬНЫХ МАНИПУЛЯЦИЙ ПОЛУЧИТЬ
ЗАГРУЗОЧНЫЙ МОДУЛЬ ФОКАЛ-ПРОГРАММЫ.
2. ОБРАЩЕНИЕ. ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ.
ПРИМЕРЫ ВЫЗОВА КОМПИЛЯТОРА:
.R[UN] FOCAL
*FILNAM[.MAC]=FILNAM[.FTX][/S]
ИЛИ
.FOCAL FILNAM[.MAC]=FILNAM[.FTX][/S]
ГДЕ
FILNAM - СПЕЦИФИКАЦИЯ ФАЙЛА
[/S] - НЕОБЯЗАТ4ЛЬНЫЕ КЛЮЧИ ТРАНСЛЯЦИИ
П Р И М Е Ч А Н И Е: ДЛЯ ВХОДНЫХ ФАЙЛОВ РАСШИРЕНИЕ ПО УМОЛЧАНИЮ
.FTX, ДЛЯ ВЫХОДНЫХ .MAC; ИНФОРМАЦИЯ В КВАДРАТНЫХ СКОБКАХ НЕ
ОБЯЗАТЕЛЬНА.
В КОМПИЛЯТОРЕ НЕ ПРЕДУСМОТРЕНО ПОЛУЧЕНИЕ ЛИСТИНГА ТРАНСЛЯЦИИ,
КАК ЭТО ПРИНЯТО В ДРУГИХ ЯЗЫКОВЫХ ПРОЦЕССОРАХ. ЛИСТИНГ ТРАНСЛЯЦИИ
НЕОБХОДИМ ДЛЯ ОТЛАДКИ ПРОГРАММЫ, ЧЕГО ПРАКТИЧЕСКИ НЕ ТРЕБУЕТСЯ ОТ
КОМПИЛЯТОРА ФОКАЛА, Т.К ПРЕДПОЛАГАЕТСЯ, ЧТО ПРОГРАММА ОТЛАЖЕНА С
ПОМОЩЬЮ ИНТЕРПРЕТАТОРА. СООБЩЕНИЯ ОБ ОШИБКАХ ТРАНСЛЯЦИИ ВЫВОДЯТСЯ
НЕПОСРЕДСТВЕННО НА ТЕРМИНАЛ.
3. КЛЮЧИ ТРАНСЛЯЦИИ.
В ДАННОЙ ВЕРСИИ ПРЕДУСМОТРЕН ВСЕГО 1 КЛЮЧ:
/L
-РАЗРЕШАЕТ ВЫВОД ДУБЛЯ ВЫХОДНОГО ФАЙЛА НА ЭКРАН ТЕРМИНАЛА
4. ОСОБЕННОСТИ КОМПИЛЯТОРА ПО СРАВНЕНИЮ С ИНТЕРПРЕТАТОРОМ.
ПРИ РАЗРАБОТКЕ КОМПИЛЯТОРА СТАВИЛОСЯ УСЛОВИЕ СОХРАНЕНИЯ
МАКСИМАЛЬНОГО ПОДОБИЯ ПРОГРАММЫ ДЛЯ ИНТЕРПРЕТАТОРА И ПРОГРАММЫ
ДЛЯ КОМПИЛЯТОРА, НО ТЕМ НЕ МЕНЕЕ КОМПИЛЯТОР ИМЕЕТ ОСОБЕННОСТИ:
1) ВСЕ СТРОКИ, КРОМЕ СОДЕРЖАЩИХ КОММЕНТАРИЯ ДОЛЖНЫ ИМЕТЬ НОМЕРА;
2) НОМЕРА СТРОК ДОЛЖНЫ СЛЕДОВАТБЬ СТРОГО В ПОРЯДКЕ
ВОЗРАСТАНИЯ, ОДИНАКОВЫЕ НОМЕРА СТРОК ПРИВОДЯТ К ОШИБКЕ ТРАНСЛЯЦИИ;
3) ОТСУТСТВУЮТ ОПЕРАТОРЫ ДИАЛОГОВОГО РЕЖИМА (WRITE, MODIFY,
VACANT);
4) ОПЕРАТОР СТИРАНИЯ ERASE МОЖЕТ ИСПОЛЬЗОВАТЬСЯ ТОЛЬКО ДЛЯ
ОБНУЛЕНИЯ ПЕРЕМЕННЫХ;
5) ОТСУТСТВУЕТ РЕЖИМ ТРАССИРОВКИ ИСПОЛНЯЕМОЙ ПРОГРАММЫ;
6) ОТСУТСТВУЕТ РЕЖИМ ДАМПА ПЕРЕМЕННЫХ, ВЫПОЛНЯЕМЫЙ ОПЕРАТОРОМ
TYPE $;
7) ПРИ РАБОТЕ С МАССИВАМИ ТРЕБУЕТСЯ ИХ ПРЕДВАРИТЕЛЬНОЕ ОПИСАНИЕ,
ДЛЯ ЧЕГО ИСПОЛЬЗУЕТСЯ ОПЕРАТОР КОММЕНТАРИЯ. НЕОПИСАННЫЕ МАССИВЫ
ПОЛУЧАЮТ РАЗМЕРНОСТЬ ПО УМОЛЧАНИЮ: ОДНОМЕРНЫЙ (ДАЛЕЕ ПО ТЕКСТУ -
ВЕКТОР) - (1...100), ДВУМЕРНЫЙ (ДАЛЕЕ ПО ТЕКСТУ - МАТРИЦА) -
(1...10,1..100);
8) ВЕКТОРА НЕ МОГУТ ИСПОЛЬЗОВАТЬСЯ КАК МАТРИЦЫ;
9) ОПЕРАТОРЫ ASK И HAVE АБСОЛЮТНО ИДЕНТИЧНЫ И МОГУТ ВВОДИТЬ
ТОЛЬКО КОНСТАНТЫ, А НЕ АРИФМЕТИЧЕСКИЕ ВЫРАЖЕНИЯ, КАК ЭТО
ПРЕДУСМОТРЕНО В ИНТЕРПРЕТАТОРЕ;
10) ФУНКЦИЯ РАБОТЫ С ОБЩЕЙ ШИНОЙ FX ПОЗВОЛЯЕТ ПРОИЗВОДИТЬ ЧТЕНИЕ
СЛОВА ИЗ ЛЮБОЙ ОБЛАСТИ ПАМЯТИ, А ЗАПИСЬ ТОЛЬКО ПО АДРЕСАМ В
ДИАПАЗОНЕ 160000-177776 ВОСЬМЕРИЧНОЕ.
КРОМЕ ТОГО ЕСТЬ НЕСКОЛЬКО ВРЕМЕННЫХ ОГРАНИЧЕНИЙ,
СВОЙСТВЕННЫХ ТОЛЬКО ВЕРСИИ V01.02, КОТОРЫЕ В ДАЛЬНЕЙШЕМ
ПРЕДПОЛОГАЕТСЯ ИСКЛЮЧИТЬ:
1) ПОКА НЕ РЕАЛИЗОВАН ОПЕРАТОР РАБОТЫ ФАЙЛОВОЙ СИСТЕМОЙ LIBRARY;
2) НЕ РЕАЛИЗОВАНА ВЫЧИСЛЯЕМАЯ ФУНКЦИЯ ПОЛЬЗОВАТЕЛЯ FSBR(ADR,ARG),
Т.Е. ВМЕСТО АДРЕСА ADR МОЖЕТ БЫТЬ УКАЗАНА ТОЛЬКО КОНСТАНТА,
ОПРЕДЕЛЯЮЩАЯ НОМЕР СТРОКИ ИЛИ ГРУППЫ СТРОК, НО НЕ ПЕРЕМЕННАЯ;
3) НЕ РЕАЛИЗОВАН ВЫЧИСЛЯЕМЫЙ ОПЕРАТОР УСЛОВНОГО ПЕРЕХОДА
IF(ВЫРАЖЕНИЕ)ADR1,ADR2,ADR3, Т.Е. ВМЕСТО АДРЕСОВ ПЕРЕХОДА МОЖНО
УКАЗЫВАТЬ ТОЛЬКО КОНСТАНТЫ - НОМЕРА СТРОК, НО НЕ ПЕРЕМЕННЫЕ.
5. ПЕРЕМЕННЫЕ И МАССИВЫ.
ВСЕ ПЕРЕМЕННЫЕ И МАССИВЫ В КОМПИЛИРУЕМОЙ ПРОГРАММЕ ИМЕЮТ
ОДИН И ТОТ ЖЕ ТИП-FLT2 (СТАНДАРТНОЕ ДВУХСЛОВНОЕ ПРЕДСТАВЛЕНИЕ
С ПЛАВАЮЩЕЙ ТОЧКОЙ И СКРЫТЫМ БИТОМ, ТАКОЕ ЖЕ ПРЕДСТАВЛЕНИЕ ИМЕЮТ
ПЕРЕМЕННЫЕ В ИНТЕРПРЕТАТОРЕ FOCAL2).
С ЦЕЛЬЮ ПОВЫШЕНИЯ СКОРОСТИ ДОСТУПА К ПЕРЕМЕННЫМ И ЭКОНОМИИ
ПАМЯТИ В КОМПИЛЯТОРЕ ПРИШЛОСЬ ОТКАЗАТЬСЯ ОТ АДРЕСАЦИИ МЕТОДОМ
ХЕШ-ФУНКЦИЙ, ЧТО ДАЕТ СЛЕДУЮЩИЕ ПРЕИМУШЕСТВА:
1) ДОСТУП К ПЕРЕМЕННОЙ ПРООИЗВОДИТСЯ ПО АДРЕСУ ВЫЧИСЛЯЕМОМУ В
ПЕРИОД КОМПИЛЯЦИИ, А К ЭЛЕМЕНТУ МАССИВА, ПО ЗНАЧЕНИЮ
ИНДЕКСА, ВЫЧИСЛЕННОМУ В ПЕРИОД ИСПОЛНЕНИЯ, И ПОСКОЛЬКУ ПОД
КАЖДУЮ ПЕРЕМЕННУЮ ОТВЕДЕНЕО КОНКРЕТНОЕ МЕСТО, НЕТ
НЕОБХОДИМОСТИ РАЗРЕШАТЬ КОЛЛИЗИИ ХЕШИРОВАНИЯ, КАК ЭТО
ТРЕБУЕТСЯ В ИНТЕРПРЕТАТОРЕ, ЧТО ПОВЫШАЕТ СКОРОСТЬ ДОСТУПА,
ОСОБЕННО ПРИ БОЛЬШИХ ОБ'ЕМАХ МАССИВОВ;
2) НЕТ НЕОБХОДИМОСТИ ХРАНИТЬ ИМЯ ПЕРЕМЕННОЙ ВМЕСТЕ С ЕЕ
ЗНАЧЕНИЕМ, ПОЭТОМУ КАЖДАЯ ПЕРЕМЕННАЯ И ЭЛЕМЕНТ МАССИВА
ЗАНИМАЮТ ПО 2 МАШИННЫХ СЛОВА, В ОТЛИЧИИ ОТ 4 В
ИНТЕРПРЕТАТОРЕ.
ПЛАТОЙ ЗА ТАКОЙ МЕТОД ДОСТУПА ЯВЛЯЕТСЯ НЕОБХОДИМОСТЬ В
ОПИСАНИИ РАЗМЕРНОСТИ МАССИВОВ И КОНТРОЛЕ ЗА ДИАПАЗОНОМ ИНДЕКСОВ
В ПРОЦЕССЕ ИСПОЛНЕНИЯ. ЧТОБЫ ХОТЬ КАК-ТО УМЕНЬШИТЬ НЕУДОБСТВА
СВЯЗАННЫЕ С ОПИСАНИЕМ МАССИВОВ, ПРИНЯТЫ СОГЛАШЕНИЯ О РАЗМЕРНОСТИ
ПО УМОЛЧАНИЮ, ПРИВЕДЕННЫЕ ВЫШЕ.
В ПРОГРАММЕ, ВЫПОЛНЯЕМОЙ ПОД УПРАВЛЕНИЕМ ИНТЕРПРЕТАТОРА
ВОЗМОЖЕН ДОСТУП К ВЕКТОРУ КАК К МАТРИЦЕ И НАОБОРОТ, НАПРИМЕР ЕСЛИ
ВЫ ЗАПИШИТЕ В СВОЕЙ ПРОГРАММЕ:
1.1 S A[256]=256;T A[0,1]
ТО ИНТЕРПРЕТАТОР ВОСПРИМЕТ ОБЕ ПЕРЕМЕННЫЕ A[256] И A[0,1] КАК
ОДНО И ТО ЖЕ, ТОГДА КАК КОМПИЛЯТОР ВЫДАСТ СООБЩЕНИЕ ОБ ОШИБКЕ
НЕСОВПАДЕНИЯ РАЗМЕРНОСТИ.
ДИАПАЗОН ИЗМЕНЕНИЯ ИНДЕКСОВ В ИНТЕРПРЕТАТОРЕ ОПРЕДЕЛЯЕТСЯ
ОТ -128 ДО +127 ДЛЯ МАТРИЦЫ И ОТ -32768 ДО +32767 ДЛЯ ВЕКТОРА,
ОДНАКО ВЕСЬ ДИАПАЗОН НИКОГДА НЕ ИСПОЛЬЗУЕТСЯ, ПОСКОЛЬКУ
ИНТЕРПРЕТАТОР ДОПУСКАЕТ ОДНОВРЕМЕННОЕ РАЗМЕЩЕНИЕ ПРИБЛИЗИТЕЛЬНО
6000 ПЕРЕМЕННЫХ, ПРИ УСЛОВИИ ПОЛНОГО ОБ'ЕМА ПАМЯТИ, ИСПОЛЬЗОВАНИЯ
SJ МОНИТОРА И ОТСУТСВИЯ ДРАЙВЕРОВ.
В КОМПИЛЯТОРЕ МАКСИМАЛЬНЫЙ ДИАПАЗОН ИЗМЕНЕНИЯ ИНДЕКСОВ ДЛЯ
МАТРИЦ И ВЕКТОРОВ СОСТАВЛЯЕТ ОТ -32768 ДО +32767 С ТЕМ УСЛОВИЕМ,
ЧТО ОБ'ЕМ МАССИВА НЕ ПРЕВЫСИТ 8192 ЭЛЕМЕНТА.
КОМПИЛЯТОР ПРИНИМАЕТ СОГЛАШЕНИЯ ПО РАЗМЕРНОСТИ МАССИВОВ ПРИ
ПЕРВОМ ПОЯВЛЕНИИ ЭЛЕМЕНТА МАССИВА. ЕСЛИ ДО ЭТОГО НЕ ВСТРЕТИЛСЯ
ОПЕРАТОР ОПИСАНИЯ, ИМЕЮЩИЙ ВИД КОММЕНТАРИЯ, НАПРИМЕР:
1.01 C $ A(-15...25,0...89)
C $ B[8...16];UR<-465...-100>
КАК ВИДНО ИЗ ПРИМЕРА ОПЕРАТОР ОПИСАНИЯ (КАК И ВООБЩЕ ЛЮБОЙ
ОПЕРАТОР КОММЕНТАРИЯ) МОЖЕТ БЫТЬ С НОМЕРОМ СТРОКИ И БЕЗ. В
ПОСЛЕДНЕМ СЛУЧАЕ ОН НЕ ТРАНСЛИРУЕТСЯ, А ТОЛЬКО УСТАНАВЛИВАЕТ
СООТВЕТСВУЮЩИЕ ОПИСАТЕЛИ В КОМПИЛЯТОРЕ. ТАКОЙ ОПЕРАТОР НЕ МОЖЕТ
БЫТЬ ПОЛУЧЕН ПУТЕМ ВЫВОДА ТЕКСТОВОГО ФАЙЛА ПРОГРАММЫ ИЗ
ИНТЕРПРЕТАТОРА, А ВСТАВИТЬ ЕГО В ПРОГРАММУ ВОЗМОЖНО ТОЛЬКО С
ПОМОЩЬЮ ТЕКСТОВОГО РЕДАКТОРА. ИСПОЛЬЗОВАНИЕ НЕНУМЕРОВАННОГО
ОПЕРАТОРА ДАЕТ ЭКОНОМИЮ 3-Х СЛОВ ПАМЯТИ. ОДНАКО ЭТО НЕ ДАЕТ
БОЛЬШОГО ВЫИГПЫША, ТОГДА КАК НЕУДОБСТВА МОГУТ БЫТЬ СУЩЕСТВЕННО
БОЛЬШЕ: ПРИ ВВОДЕ ПРОГРАММЫ В ИНТЕРПРЕТАТОР ФОКАЛА ТАКОЙ ОПЕРАТОР
БУДЕТ УТРАЧЕН. ОПРАВДАТЬ ЕГО ПРИМЕНЕНИЕ МОЖНО ТОЛЬКО ОТСУТСТВИЕМ
СВОБОДНЫХ СТРОК В НАЧАЛЕ ПРОГРАММЫ, КУДА СЛЕДОВАЛО БЫ ВСТАВИТЬ
ОПИСАТЕЛЬ.
ОПИСАНИЕ МАССИВА ДОЛЖНО ОБЯЗАТЕЛЬНО ПРЕДШЕСТВОВАТЬ ЕГО
ИСПОЛЬЗОВАНИЮ В ПРОГРАММЕ, В ПРОТИВНОМ СЛУЧАЕ ВОЗНИКНЕТ КОНФЛИКТ
МЕЖДУ УЖЕ ПРИНЯТЫМ ПО УМОЛЧАНИЮ ЗНАЧЕНИЕМ, И ПОПЫТКОЙ НАВЯЗАТЬ
НОВОЕ, ЧТО ПРИВОДИТ К ОШИБКЕ ТРАНСЛЯЦИИ.
ИМЯ ПРОСТОЙ ПЕРЕМЕННОЙ МОЖЕТ СОВПАДАТЬ С ИМЕНЕМ МАССИВА, ПРИ
ЭТОМ:
-ЕСЛИ МАССИВ СОДЕРЖИТ НУЛЕВОЙ ЭЛЕМЕНТ, Т.Е. ЭЛЕМЕНТ С ИНДЕКСАМИ
(0) ИЛИ (0,0), ТО ПЕРЕМЕННАЯ БУДЕТ ТРАКТОВАТЬСЯ КАК ЭТО ЭЛЕМЕНТ
МАССИВА, И ОБРАЩЕНИЕ "A(0,0)" И ПРОСТО "A" БУДЕТ ИДЕНТИЧНО.
-ЕСЛИ МАССИВ НЕ СОДЕРЖИТ НУЛЕВОГО ЭЛЕМЕНТА, ТО ОБРАЩЕНИЕ К
ПРОСТОЙ ПЕРЕМЕННОЙ КАК "A(0,0)" ПРИВЕДЕТ К ОШИБКЕ ТРАНСЛЯЦИИ.
6. ОШИБКИ ПЕРИОДА ТРАНСЛЯЦИИ
ПРИ ОБНАРУЖЕНИИ ОШИБКИ КОМПИЛЯТОР ПЕЧАТАЕТ СТРОКУ В КОТРОЙ,
ОБНАРУЖЕНА ОШИБКА, ПОМЕЧАЕТ МЕСТО В СТРОКЕ, ВЫДАЕТ ПОЯСНЯЮЩИЙ
ТЕКСТ И ТРАНСЛЯЦИЯ ПРЕКРАЩАЕТСЯ.
НАПРИМЕР:
1.1 S A=B*C/(L/M))]
НЕПРАВИЛЬНЫЙ ФОРМАТ ОПЕРАТОРА
ОШИБКИ ПЕРИОДА ТРАНСЛЯЦИИ ВОЗМОЖНЫ ДАЖЕ В ОТЛАЖЕННОЙ С ПОМОЩЬЮ
ИНТЕРПРЕТАТОРА ПРОГРАММЕ, ЧТО СВЯЗАНО ВЫШЕПРИВЕДЕННЫМИ ОТЛИЧИЯМИ
КОМПИЛЯТОРА ТОТ ИНТЕРПРЕТАОРА.
6.1 ОШИБКИ, ОБНАРУЖИВАЕМЫЕ ИНТЕРПРЕТАТОРОМ.
НЕПРАВИЛЬНЫЙ НОМЕР СТРОКИ -- НОМЕР СТРОКИ НАЧИНАЕТСЯ НЕ С ЦИФРЫ
ИЛИ ПОПЫТКА ИСПОЛЬЗОВАТЬ НЕНУМЕРОВАННЫЙ ОПЕРАТОР (КРОМЕ ОПЕРАТОРА
КОММЕНТАРИЯ),
- НОМЕР СТРОКИ ОТРИЦАТЕЛЬНОЕ ЧИСЛО,
- НОМЕР СТРОКИ > 127.99,
- НОМЕР СТРОКИ - ЦЕЛОЕ ЧИСЛО,
- НЕПРАВИЛЬНАЯ КОМАНДА - ПОПЫТКА ИСПОЛЬЗОВАНИЯ ОПЕРАТОРА WRITE,
MODIFY, VACANT И Т.П.
- УКАЗАН ОТСУТСТВУЮЩИЙ ОПЕРАТОР, НАПРИМЕР PUNCH.
- ПЕРЕПОЛНЕНА СТРОКА -- ДЛИНА ВХОДНОЙ СТРОКИ БОЛЕЕ 78 СИМВОЛОВ.
- НЕПАВИЛЬНЫЙ ФОРМАТ ОПЕРАТОРА -- ОШИБКА СИНТАКСИСА ЗАПИСИ
ОПЕРАТОРОВ ФОКАЛА.
- НЕПАРНАЯ СКОБКА -- ИСПОЛЬЗОВАНИЕ ПРАВОЙ СКОБКИ ДРУГОГО ТИПА ПО
ОТНОШЕНИЮ К ЛЕВОЙ ИЛИ ВООБЩЕ ОТСУТСТВИЕ ПРАВОЙ СКОБКИ.
- НЕПРАВИЛЬНОЕ ИМЯ ФУНКУИИ ИЛИ ПЕРЕМЕННОЙ -- ИИМЯ ПЕРЕМЕННОЙ
НАЧИНАЕТСЯ С БУКВЫ F.
- ДВОЙНОЙ ИЛИ ПРОПУЩЕННЫЙ СИМВОЛ В ВЫРАЖЕНИИ -- КАК ПРАВИЛО ЭТА
ОШИБКА СВЯЗАНА С ПРОПУСКОМ РАЗДЕЛИТЕЛЕЙ В ВИДЕ ЗАПЯТЫХ.
6.2. ОШИБКИ ОБНАРУЖИВАЕМЫЕ КОМПИЛЯТОРОМ
- НОМЕР СТРОКИ ДУБЛИРУЕТСЯ -- ВСТРЕТИЛИСЬ 2 СТРОКИ С ОДИНАКОВЫМ
НОМЕРОМ.
- НАРУШЕН ПОРЯДОК СТРОК -- НУМЕРАЦИЯ СТРОК ПРОГРАММЫ ДОЛЖНА БЫТЬ
СТРОГО В ПОРЯДКЕ ВОЗРАСТАНИЯ.
АДРЕСАЦИЯ К СТРОКЕ НЕ ОБНАРУЖЕННОЙ В 1-М ПРОХОДЕ ТРАНСЛЯЦИИ.
ИНТЕРПРЕТАТОР МОЖЕТ НЕ ОБНАРУЖИТЬ ЭТУ ОШИБКУ, ЕСЛИ ДАННАЯ СТРОКА
НИКОГДА НЕ ВЫПОЛНЯЕТСЯ, КОМПИЛЯТОР ЖЕ ПРОСМАТРИВАЕТ ВСЕ СТРОКИИ
СОГЛАСУЕТ ВСЕ ССЫЛКИ, И ПОЭТОМУ ОБЯЗАТЕЛЬНО ЕЕ ОБНАРУЖИТ.
НЕСУЩЕСТВУЮЩИЙ НОМЕР ГРУППЫ ИЛИ СТРОКИ В ОПЕРАТОРЕ DO -- В
ОПЕРАТОРЕ DO ИЛИ В ФУНКЦИИ ПРОГРАММИРУЕМОЙ ПОЛЬЗОВАТЕЛЕМ FSBR
СДЕЛАНА ПОЫТКА АДРЕСАЦИИ К ГРУППЕ ИЛИ СТРОКЕ НЕ ОБНАРУЖЕННОЙ В
1-М ПРОХОДЕ ТРАНСЛЯЦИИ.
СОВПАДЕНИЕ ИМЕНИ ПРОСТОЙ ПЕРЕМЕННОЙ И МАССИВА -- ПОПЫТКА ОПИСАТЬ
МАССИВ, ВКЛЮЧАЮЩИЙ НУЛЕВОЙ ЭЛЕМЕНТ, ПОСЛЕ ТОГО, КАК УЖЕ
ИСПОЛЬЗОВАНА ПЕРЕМЕННАЯ С ТАКИМ ИМЕНЕМ.
НЕДОПУСТИМЫ МАССИВ РАЗМЕРНОСТИ > 2 -- ТРЕХМЕРНЫЕ И БОЛЕЕ МАССИВЫ
НЕДОПУСТИМЫ. ЭТО СООБЩЕНИЕ ВВЕДЕНО ДЛЯ УДОБСТВА ПОЛЬЗОВАТЕЛЯ.
ИНТЕРПРЕТАТОР ОТРЕАГИРОВАЛ БЫ НА ТАКУЮ СИТУАЦИЮ КАК НА "НЕПАРНЫЕ
СКОБКИ".
ТАКОЙ МАССИВ УЖЕ ОПРЕДЕЛЕН -- ПОПЫТКА ЯВНО ОПИСАТЬ МАССИВ, ЭЛЕМЕНТ
КОТОРОГО УЖЕ ВСТРЕЧАЛСЯВ ПРОГРАММЕ, ПОЭТОМУ ЕГО РАЗМЕРНОСТЬ УЖЕ
ПРИНЯТА ПО УМОЛЧАНИЮ.
НЕВЕРНО УКАЗАН ДИАПАЗОН ИНДЕКСОВ -- В ОПИСАНИИ МАССИВА МИНИМАЛЬНЫЙ
ИНДЕКС БОЛЬШЕ МАКСИМАЛЬНОГО.
ОБ'ЕМ МАССИВА ПРЕВЫШАЕТ ДОПУСТИМЫЙ -- ДОПУСТИМЫЙ ОБ'ЕМ ВЕКТОРА ИЛИ
МАТРИЦЫ 8192 ЭЛЕМЕНТА, НЕ БОЛЕЕ.
7. ОШИБКИ ПЕРИОДА ИСПОЛНЕНИЯ.
ПРИ ОБНАРУЖЕНИИ ОШИБКИ ИСПОЛНЯЮЩАЯ СИСТЕМА ПОСТУПАЕТ АНАЛОГИЧНО
ИНТЕРПРЕТАТОРУ, С ТОЙ РАЗНИЦЕЙ, ЧТО ПРОИСХОДИТ ВЫХОД В СИСТЕМУ:
НАПРИМЕР:
? СТОП 1.1 - КОРЕНЬ КВАДРАТНЫЙ ИЗ ОТРИЦАТЕЛЬНОГО ЧИСЛА
ОШИБКИ ПЕРИОДА ИСПОЛНЕНИЯ ТАКЖЕ ВОЗМОЖНЫ ДАЖЕ В ОТЛАЖЕННОЙ С ПОМОЩЬЮ
ИНТЕРПРЕТАТОРА ПРОГРАММЕ, ЧТО СВЯЗАНО С ОТЛИЧИЯМИ РАСПРЕДЕЛЕНИЯ
ПАМЯТИ И АДРЕСАЦИИ МАССИВОВ.
7.1. ОШИБКИ ОБНАРУЖИВАЕМЫЕ ИНТЕРПРЕТАТОРОМ.
ПОРЯДОК > Е+38
ПОРЯДОК > Е-38
- СООБЩЕНИЯ АРИФМЕТИЧЕСКОГО ПАКЕТА, ОПРЕДЕЛЯЮЩИЕ СООТВЕТСТВЕННО
ПЕРЕПОЛНЕНИЕ И ИСЧЕЗНОВЕНИЕ ПОРЯДКА.
- ВЫХОД ЗА ДИАПАЗОН -- ВЫХОД ЗА ПЕДЕЛЫ -32768...+32767, МОЖЕТ
ВСТРЕЧАТЬСЯ ПРИ ПОПЫТКЕ ВЫЧИСЛИТЬ ИНДЕКС, ПРЕВЫШАЮЩИЙ ЭТО ЗНАЧЕНИЕ.
- ПЕРЕПОЛНЕНА СТРОКА В ОПЕРАТОРЕ ASK -- ПОПЫТКА ВВЕСТИ ЧИСЛО ДЛИНОЙ
БОЛЕЕ 78 СИМВОЛОВ.
- "КОРЕНЬ КВАДРАТНЫЙ ИЗ ОТРИЦАТЕЛЬНОГО ЧИСЛА" "ЛОГАРИФМ НУЛЯ ИЛИ
ОТРИЦАТЕЛЬНОГО ЧИСЛА" "ДЕЛЕНИЕ НА НУЛЬ"
7.2. ОШИБКИ ОБНАРУЖИВАЕМЫЕ ИСПОЛНЯЮЩЕЙ СИСТЕМОЙ КОМПИЛЯТОРА.
- ЗАПРЕЩЕННЫЙ АДРЕС В ФУНКЦИИ FX -- ПОПЫТКА ЗАПИСАТЬ СЛОВО В
АДРЕСА С 0 ПО 157776.
- НЕСУЩЕСТВУЮЩЕЕ УСТРОЙСВО -- ТАЙМ-АУТ ПРИ ОБРАЩЕНИИ К КАНАЛУ С
ПОМОЩЬЮ ФУНКЦИИ FX ИЛИ ГРАФИЧЕСКИХ ФУНКЦИЙ.
- ПЕРЕПОЛНЕН СТЕК -- ЭТО ВОЗМОЖНО ПРИ БОЛЬШОМ УРОВНЕ ВЛОЖЕННОСТИ
ОПЕРАТОРОВ DO И FSBR, А ТАКЖЕ ПРИ ВЫПОЛНЕНИИ "ЗАЛИВКИ"
МНОГОСВЯЗАННЫХ КОНТУРОВ ФУНКЦИЕЙ FF. ОБ'ЕМ СТЕКА ЗАГРУЗОЧНОГО
МОДУЛЯ МОЖЖЕТ ОТЛИЧАТЬСЯ ОТ ОБ'ЕМА СТЕКА ИНТЕРПРЕТАТОРА В БОЛЬШУЮ
И В МЕНЬШУЮ СТОРНУ, (КАК ПРАВИЛО В БОЛЬШУЮ) ПОЭТОМУ ПЕРЕПОЛНЕНИЕ
СТЕКА МОЖЕТ ПОЯВИТЬСЯ СОВЕРШЕННО НЕОЖИДАННО.
- НЕСУЩЕСТВУЮЩИЙ НОМР СТРОКИ
- НЕСУЩЕСТВУЮЩИЙ НОМР ГРУППЫ ИЛИ СТРОКИ В ОПЕРАТОРЕ DO
- ПОДОБНАЯ ДИАГНОСТИКА БЫЛА ОПИСАНА ВЫШЕ. ПОЯВЛЕНИЕ ЕЕ В ПЕРИОД
ИСПОЛНЕНИЯ СВЯЗАНО С ВЫЧИСЛЯЕМЫМИ ОПЕРАТОРАМИ GOTO, IF, DO И
ФУНКЦИЕЙ FSBR.
- НЕТ МЕСТА ДЛЯ ПЕРЕМЕННЫХ -- ЭТО ПЛОХАЯ ВЕСТЬ, Т.К. ОНА МОЖЕТ
ОЗНАЧАТЬ ПРИНЦИПИАЛЬНУЮ НЕВОЗМОЖНОСТЬ ИСПОЛНЕНИЯ ЗАГУЗОЧНОГО
МОДУЛЯ ПРИ ИМЕЮЩИХСЯ РЕСУРСАХ ПАМЯТИ. ДЕЛО В ТОМ, ЧТО ИСХОДНЫЙ
ТЕКСТ НА ФОКАЛЕ ОЧЕНЬ КОМПАКТЕН. ОСОБЕННО ЕСЛИ ИСПОЛЬЗОВАНА
СОКРАЩЕННАЯ ЗАПИСЬ ОПЕРАТОРОВ, И КОМПИЛЯТОР ПОРОЖДАЕТ КОД, ПО
ОБ'ЕМУ ПРЕВЫШАЮЩИЙ ТЕКСТ. ЧАСТИЧНО ЭТО КОМПЕНСИРУЕТСЯ МЕНЬШИМ
ОБ'ЕМОМ ИСПОЛНЯЮЩЕЙ СИСТЕМЫ ПО СРАВНЕНИЮ С ИНТЕРПРЕТАТОРОМ И
МЕНЬШИМ ОБ'ЕМОМ ПАМЯТИ ПОД ПЕРЕМЕННЫЕ, ОДНАКО ДЛЯ НЕКОТОРЫХ
СИТУАЦИЙ ЭТОГО ОКАЗЫВАЕТСЯ НЕДОСТАТОЧНО, И ЗАГРУЗОЧНЫЙ МОНСТР
НЕ ХОЧЕТ УКЛАДЫВАТЬСЯ В СКРОМНУЮ ПАМЯТЬ МАШИНЫ. СРЕДСТВО МОЖЕТ
БЫТЬ ОДНО - СОКРАТИТЬ ОБ'ЕМ ИСХОДНОГО ТЕКСТА ИЛИ ОБ'ЕМ
ПЕРЕМЕННЫХ ИЛИ МАССИВОВ.
- ВЫХОД ИНДЕКСА ЗА ДИАПАЗОН -- ПОПЫТКА ОБРАТИТЬСЯ К НЕСУЩЕСТВУЮЩЕМУ
ЭЛЕМЕТУ МАССИВА.