Gudleifr: Все сообщения за 19 Июля 2014 года

 
ПнВтСрЧтПтСбВс
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

Gudleifr

опытный

Пока пришел к следующему: FORTH, вообще не должен заморачиваться "типами данных". Есть только один тип - "действие". Данные в этом смысле - лишь внутренняя подробность реализации процедуры.
В случае, если требуется синхронизация по данным двух и более процедур возможны варианты:
1. Вы что-то делаете неправильно.
2. Нужен интерфейсный компонент (см. TF Броуди).
3. Данные передаются как адрес процедуры, их выдающей.

Например, в результате распознавания ПОТОКА я получаю ЗНАЧЕНИЕ, тип которого зависит от того, что распозналось: на стеке - адрес слова (если распознали слово) или значение (если распознали число), в словаре - само слово/число (если его не стерли в процессе распознавания), в переменных - флаг немедленного исполнения (для слова), положение десятичной точки (для числа)...
В случае слова все просто, настолько, что флаг немедленного исполнения не запихивается в переменную, а немедленно используется для ветвления.
А вот, в случае литерала, сложнее. Если число можно оставить на СТЕКЕ - ладно (оно уже и так там). А если его надо скомпилировать (передать в СЛОВАРЬ). Нужно анализировать ЗНАЧЕНИЕ, чтобы выбрать тип компилятора. Так, может, проще при распознавании передавать не составное значение, а слово, способное скомпилироваться само и это значение скомпилировать?
Сложность здесь только в том, что легко впасть в грех избыточной структурности/объектности и создать такой "конструктор слов", по сравнению с которым анализ значения будет меньшим злом, несмотря на потребность его переписывать для включения новых типов литералов.
 30.030.0

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru