После небольшого перерыва вызванного с одной стороны объективными причинами, а с другой оформлением сих записок продолжим далее.
Половина 9ой главы отводится под описание расширенный набор команд, реализованных в их версии форта, для работы сот строками. Что примечательно, на стеке всегда находится одоно число, однозначно указыввающее на нужную строку. Что заметно облегчает работу программисту когда на стеке находится два числа, описывающее строку.
Полез по исходникам SP-Forth смотреть какие в нем есть команды для работы со строками (директория src). Вместо этого в src\win\spf_pe_save.f нашел определение слова SAVE которое позволяет компилирвоать программу на форте в исполяемый файл. Что тут же было опрабовано.
: R 12 . ;R
S" r.exe" SAVE
После запуск на испольнения в директории C:\SPF появился файл r.exe Его запуск приводит к появлению обычного приглашения форт-интерпретатора, но с уже подключенными словарями. А вот как его заставить сразу после запуска выполнить определенное слово, я не рабрался. Ладно, не это важно сейчас.
Нашел какую-то библиотеку devel\~ac\lib\str3.f Их там целых пять (str.f, str2.f, str3.f, str4.f, str5.f)... Насколько понял это версии одной и той же. Ну и нельзя было оставить только одну из них? Пока остановилсся на третьей. Вроде неплохо описана. Реализована, так как я и хотел – на стеке остается только ИД строки и ей оприруем. Но библиотека неполная.
Ожидаетяс увидеть следующие операции над строками, чтобы можно было эффективно с ними работать.
Строковые операции очень часто используются, поэтому от удобства их реализации зависит довольно многое.
Пришло письмо от основного разработчика SP-Forth Андрея Черезова. Появилась ясность в некоторых вопросах.
FAQ по Forth лежит здесь http://wiki.forth.org.ru/SPF_FAQ
На список рассылки по SP-Forth можно подписаться здесь http://lists.sourceforge.net/lists/listinfo/spf-dev и, я так понимаю, тут можно задавать вопросы. ТО есть что-то вроде форума...
С вещественными числами работать можно, для этого нужно токо подключить соотвествующую библиотеку.
S" lib/include/float.f" INCLUDED
INCLUDED понимает как прямые слэши так и обратные. Но самое важное в том, что он должен находится в той же строке, что строка.... Почему – так и не понял...
И как всегда обнаружился двойник этой библиотеки float2.f Различие в них в том, что первая работает с 80-разрядным представлением , а вторая – с 64-ричным. В чем есть разница? Есть предупреждение, что дальше будет развиваться только float2.f
Прописал в spf4.ini библиотеку, что бы была всегда
REQUIRE Float lib\include\float.f
Вообще-то, как-то забавно получается, я смотрю по файлу src\spf_floatkern.f уже включен в ядро, т.е. поддержка плавающей точки там есть, так почему бы ее сразу не сделать полноценно...
Навскидку, предложенные слова в Таблице 9.1. "Слова MMSFORTH для работы с символьными строками" (строка 430 файла G9.txt) являются неплохим набором для операций над строками. Неплохое принятое решение, положенное в основу этих слов – все операции на строками выполняется в стандартном буфере PAD Результат, как правило, остается там и на стек кладется его адрес. Все строки в одном формате, и являются счетными.
Потратил часа полтора на сканирование директорий SP-Forth на предмет поиска библиотек для работы со строками. Нашел их толпу. Такое ощущуние, что каждый разработчик пишет библиотеку работы со строками и неинтересуяс уже существующими... И абсолютно нет докуиентации. Нужно обязательно въезжать в эти библиотеки. При таком их кол-ве это становится просто неинтересным. Хм... возникла даже интерсеная мысля – если программист пишет на форте, то у него обязательно есть библиотека, для работы со строками.
Честно говоря, решил, что проще будет повторить реализцию слов работы со строками из таблицы 9.1, чем разбираться с уже существующими... Заодно и потренируюсь в форте...
Немножко разобрался со словарями. Точнее, как стипрать предыдущие слова. Суть проста – перед вводом новых слов нужно поставить маркер, а потом его вызвать.
S" lib/include/core-ext.f" INCLUDED \ ! Обязательно подключитьMARKER bbb : test 2 + ; 5 test Ok ( 7 ) bbb Ok ( 7 ) 5 test ^ -2003 Слово или файл не найдены
Одно маленькое НО! Все это счастье работает только при классическом, линейном организации словарных статей в словарях. Если же в spf.ini включить библиотеку
REQUIRE QuickSWL ~pinka\spf\quick-swl2.f
стоящую словари на осонове хэш-таблиц, то слово MARKER работать не будет!!!!
Все таки, считаю, что вариант с перезаписью слова, является наиболее оптимальным решением, для любого вида организации словарей.
Правда, в ответе из SPF_FAQ есть примечание, что используют другую технику, создают определения в отдельном текстовом файле, а потом загружают его в SP-Forth, Т.е. то, как я сейчас работаю, классический принцип "написал - запустил"...
<<< Предыдущий | Начало | Следующий >>> |
При цитировании, ссылка на оригинальный текст обязательна. Допускается копирование материалов только целиком, без внесения каких-либо изменений в оригинальный текст, меняющих смысл, структуру материала и проч. |