Язык программирования Форт


Глава 14. Память Форта. Словари и контекстные словари - часть 14


Это в принципе соответствует регламентации стандартов, но не буквально. Преимуществом является экономия места и сокращение времени поиска. К недостаткам относится невозможность декодирования имен слов и, как следствие, недоступность списка слов в словаре. Аналогичный метод кодирования имен вы можете применить и в вашем Форте. Так как только 5 битов первого байта поля имени необходимо для кодирования максимального числа символов (31), три остальных бита байта длины используются для других целей. В MMSFORTH (и некоторых других версиях Форта) первый бит поля имени равен 1 для слов немедленного исполнения (например, если оно исполняется даже при компиляции слова типа двоеточие подобно.( ). В Форте, где запоминается все имя, старший бит первого и последнего символов (включая байт длины) устанавливаются в единичное состояние, для того чтобы отметить начало и конец имени. (Так как все символы - имени ASCII, их старшие биты равны 0.) Эта информация может быть использована нестандартным словом TRAVERSE (см. стр.195). Другие свободные биты могут быть равны 0 или 1 в зависимости от того, откомпилировано ли слово без ошибок или допустимо ли, чтобы оно было найдено в словаре при поиске. Бит, который используется для того, чтобы слово могло быть найдено, называется бит-метка, для переключения этого бита используется нестандартное слово SMUDGE. Имеет смысл упомянуть еще раз, что, хотя структура словаря, которую мы описали, является наиболее распространенной, она не является единственно используемой. Могут применяться другие варианты для языка в целом или только для отдельных слов. Например, можно компилировать слова с более чем одним полем программы, как это сделано в слове QUAN MMSFORTH, которое использует три поля программы. Каждое CFA содержит указатель на исполняемую программу, который придает словам QUAN три различных образа поведения, когда они используются с IS, AT и сами по себе. Слово F-83 Лаксена и Перри компилирует номер блока, откуда извлечена программа, в заголовок слова, так что оператор VIEW может сообщить, в каком блоке лежит описание данного слова.


Начало  Назад  Вперед



Книжный магазин