понедельник, 29 июня 2015 г.

ToDo. Завершать FORWARD-декларацию слова, как только появился правый или левый параметр

ToDo.

Завершать FORWARD-декларацию слова, как только появился правый или левый параметр.

FORWARD X

operator X
 IN A // - тут не завершаем
 IN B // - тут тоже не завершаем
 ^@ IN C // - тут завершаем
; // X

И:

FORWARD X

operator X
 IN A // - тут не завершаем
 IN B // - тут тоже не завершаем
 ^ IN C // - тут завершаем
; // X

Зачем?

Чтобы можно было написать так:

FORWARD X

operator X
 IN A // - тут не завершаем
 IN B // - тут тоже не завершаем
 ^ IN C // - тут завершаем
 
 procedure Y
  1 2 X 3 // - тут наш оператор УЖЕ определён, с ПОЛНОЙ сигнатурой
 ; // Y
; // X

Или так:

FORWARD X

operator X
 IN A // - тут не завершаем
 IN B // - тут тоже не завершаем
 ^@ IN C // - тут завершаем
 
 procedure Y
  1 2 3 X // - тут наш оператор УЖЕ определён, с ПОЛНОЙ сигнатурой
 ; // Y
; // X

Ну и конечно так:

FORWARD X

operator X
 IN A // - тут не завершаем
 IN B // - тут тоже не завершаем
 ^@ IN C // - тут завершаем
 
 1 2 3 X // - тут наш оператор УЖЕ определён, с ПОЛНОЙ сигнатурой
 // - вызываем САМИ себя !!! С ПОЛНОЙ сигнатурой
; // X

Но!

ТОЛЬКО если X - НЕ Immediate.

А если Immediate, то СРАЗУ ругаться:

FORWARD X

IMMEDIATE operator X // - тут СРАЗУ ругаемся !!!
 IN A // - тут не завершаем
 IN B // - тут тоже не завершаем
 ^ IN C // - тут завершаем
; // X

Завершать определение ОБЯЗАТЕЛЬНО, через FinishDefinitionOfWord !!!

Чтобы правильно Runner создать.

Ну и НЕ ЗАБЫТЬ про ПОВТОРНЫЕ вызовы, чтобы ТАМ не создавать ДУБЛИКАТОВ.

Да! Не забыть про AddedParameters, Опять же. Чтобы НЕ БЫЛО дубликатов.

Комментариев нет:

Отправить комментарий