Forth http://fforum.winglion.ru/ |
|
Моя система(_KROL) http://fforum.winglion.ru/viewtopic.php?f=2&t=3127 |
Страница 14 из 36 |
Автор: | Ethereal [ Сб сен 02, 2017 13:45 ] |
Заголовок сообщения: | Re: Моя система(_KROL) |
Но дальше вылезли проблемы с переопределением уже имеющихся слов. Вот это Код: : DEPTH DEPTH 2/ ; рушит систему.1 2 3 DEPTH . BYE А без переопределения слов мне согласовалку с tester.fr не написать никак. |
Автор: | _KROL [ Сб сен 02, 2017 18:22 ] | ||
Заголовок сообщения: | Re: Моя система(_KROL) | ||
Исправил: 1) Код: : TEST Выводит 4 буквы U38 0 DO 55 EMIT 10 +LOOP ; TEST 2) Цитата: I>1234 <# # # # # #> DEPTH . 2 OK I>_ +... Ethereal писал(а): Но дальше вылезли проблемы с переопределением уже имеющихся слов. Сейчас думаю над этим. Всё дело в том, что получается рекурсия и преполняется стек возвратов... Никак не могу понять: надо ли включать доп. бит или действовать по другому? Может настало время попробовать разобраться со словарями? Тогда исключения можно вынести тоже в отдельный словарь! Попробовал сделать Код: : PREVIOUS LAST @ COUNTSZ 2DUP + @ (FIND) ?EXIT , ; IMMEDIATE COMPILEONLY почему-то неправильно работает :/
: WORDS PREVIOUS ; WORDS
|
Автор: | Ethereal [ Сб сен 02, 2017 19:12 ] |
Заголовок сообщения: | Re: Моя система(_KROL) |
_KROL писал(а): Сейчас думаю над этим. Всё дело в том, что получается рекурсия и преполняется стек возвратов... Так пока определение слова не завершено, оно не должно быть видно в словаре. Только ; делает его видимым. Я об этом уже писал. Про SMUDGE-бит, про LAST и LATEST.Кста. У тебя плавающая ошибка где-то сидит. Только начал искать ее корень и она перестала повторяться. И даже твое LOOP+ стало вдруг работать. А старые варианты постирал и никак не могу ее снова воспроизвести. То она есть, то ее нет. Она появляется при каком-то условии, только я постирал образцы с этим условием. |
Автор: | gudleifr [ Сб сен 02, 2017 21:02 ] |
Заголовок сообщения: | Re: Моя система(_KROL) |
<Потерто по справедливому замечанию Victor__v> |
Автор: | _KROL [ Сб сен 02, 2017 22:07 ] |
Заголовок сообщения: | Re: Моя система(_KROL) |
gudleifr писал(а): Сначала (нашему молодому коллеге) нужно освоить язык ассемблера (покурить Брэдли или Скэнлона, для экстрима пролитсать Джордейна). Потом - написать (без FORTH!) отдельные FORTH-элементы: ОК, СИМВОЛ, ИСПОЛНИТЬ, КОМПИЛИРОВАТЬ, СЛЕДУЮЩИЙ (что не понятно, смотреть у Мура). Мне уже конечно надоело всё писать заново, но так уж и быть, попробую(не забывая переодически заглядывать в OLD4tH). Правильно так: Цитата: : PREVIOUS LAST @ COUNTSZ 2DUP + @ (FIND) ?EXIT COUNTSZ + 2+ @ , ; IMMEDIATE COMPILEONLY Добавил после ?EXIT: COUNTSZ + 2+ @ (NFA>CFA). Забыл просто, простите.: WORDS PREVIOUS ; WORDS Ethereal писал(а): У тебя плавающая ошибка где-то сидит. Вполне возможно.P.s. Я же выложил, если ты не заметил, pre2, где кое-что исправил и добавил пару слов в ядро(из DUMP.TXT). |
Автор: | Victor__v [ Сб сен 02, 2017 22:11 ] |
Заголовок сообщения: | Re: Моя система(_KROL) |
Эх, попробуй делать по-другому, ежели текущим образом ошибки вылезают с периодически. К примеру, создай образ форта в другом форте. Часть ошибок уже можно словить без выхода ФВМ в широкие массы |
Автор: | _KROL [ Сб сен 02, 2017 22:28 ] |
Заголовок сообщения: | Re: Моя система(_KROL) |
Автор: | Victor__v [ Сб сен 02, 2017 22:32 ] |
Заголовок сообщения: | Re: Моя система(_KROL) |
Тебе, но мне тож помогает |
Автор: | _KROL [ Сб сен 02, 2017 22:33 ] | ||
Заголовок сообщения: | Re: Моя система(_KROL) | ||
Но для этого надо сначала хорошенько изучить исходную форт-систему... ___ Вспомнилось) Недавно опять взялся за изучение туториалов Iczelion'а. Жуть. Особенно когда немного смотрел программирование под колибри
|
Автор: | Ethereal [ Сб сен 02, 2017 22:44 ] |
Заголовок сообщения: | Re: Моя система(_KROL) |
Еще ошибок : UNTIL должно завершаться по TRUE >MARK >RESOLVE <MARK <RESOLVE не должны иметь атрибута IMMEDIATE Местами, где мне казались у твоего Форта склейки ласт без причины, я сам был в этом виноват. Может плавающей ошибки и нет, может мне показалась она. Ну кому-ж в голову придет, что половина слов у тебя значат совсем не то, что у всех. Тильда ' например делает BL WORD , UNTIL завершается наоборот, <# #> принимает одно слово, а возвращает три и прочая, прочая. Из-за этого любая попытка что-то написать приводит к пипцу лютому. Особенно учитывая, что сообщений об ошибках от твоего Форта не дождешься (не знаю такого слова, Stack underflow, etc.) |
Автор: | _KROL [ Сб сен 02, 2017 23:25 ] |
Заголовок сообщения: | Re: Моя система(_KROL) |
Кхм. Etherel писал(а): <# #> принимает одно слово, а возвращает три Я же написал, что исправил!А что должна делать тильда? Не "BL WORD"? За UNTIL спасаибо) А то я когда-то вообще запутался во всех этих циклах(даже думал совсем свои слова писать, близкие к синтаксису паскаля)... |
Автор: | Ethereal [ Сб сен 02, 2017 23:31 ] |
Заголовок сообщения: | Re: Моя система(_KROL) |
_KROL писал(а): Мне уже конечно надоело всё писать заново Да не надо заново, надо по другому. Дисциплину ума в себе выработать такую, чтобы ошибок почти не лепить. А то отлавливать их потом каторга. Каждый кусочек программы прописывать любовно и щательно. А если галопом по европам, после на отладке повесишься.Вот, пока ты переписывал твой Форт, я курил книгу "Вирт.Н Построение компиляторов". Ну и чтобы уяснить как они строятся пример его простого компилятора переписал на Форт. Ну и заодно кодогенерацию для 8086 приделал. Так уже прусь от того, что минимальный вариант программки компилирует. И пора уже разворачивать его в полновесный. Сижу вот и тащусь. Щас приаттачу посмотреть. Там примерчики с рекурсивной генерацией чисел Фибоначчи и сортировкой пузырьком приложены и компилятором компилятся. Писано на результате переделывания моего FIG-32 в Forth-79-32. Заодно и этот древний стандарт заценил. Хотя тестировал не особо тщательно, но пока на простых примерчиках компилирует верно. Вот и тебе надо также. У тебя основа уже есть. Теперь сверху вниз по исходнику идти и все места обдумать и записать лаконично и предельно корректно. Облагородить, так-сказать, исходник. Ну и должен уже тогда заработать. А метод заплатки разбрасывать там где баги лезут - это не метод. Мысль - если алгоритмы обдуманы и записаны любовно и тщательно, с удовольствием от полировки кода, то должно почти все работать сразу. Ну может один - два глюка, провороненные от замыла глаза и придется выловить. Но не больше. Там отдельно распиханы по исходнику лексический анализатор LEXER, синтаксический анализатор PARSER и кодогенератор CODEGEN. Конечная цель - мне нужен собственный компилятор для микроконтроллера одного, редкого. Когда перепроверю все алгоритмы на COM-файлах, просто кодогенерацию заменю. P.S. Комментариев добавил и исходник заменил : |
Автор: | Ethereal [ Сб сен 02, 2017 23:33 ] |
Заголовок сообщения: | Re: Моя система(_KROL) |
_KROL писал(а): А что должна делать тильда? Не "BL WORD"? Нет. В старых Фортах (FIG/79) она возвращала адрес поля параметров определения слова. А в современных возвращает адрес поля кода. Так-что' BLABLA EXECUTE в режиме интерпретации должно исполнить BLABLA. |
Автор: | gudleifr [ Вс сен 03, 2017 11:23 ] |
Заголовок сообщения: | Re: Моя система(_KROL) |
<Потерто по справедливому замечанию Victor__v> |
Автор: | _KROL [ Вс сен 03, 2017 13:10 ] |
Заголовок сообщения: | Re: Моя система(_KROL) |
Цитата: А Вы пока на этапе "начать изучать язык ассемблера" Извините, но я полностю с вами на счёт этого не согласен. Я уже почти всё, как мне кажется, изучил в ассемблере реального режима x86. Просто пока я пытался понять Форт кое-что могло чуть забыться, а кое-что даже выяснилось)
|
Страница 14 из 36 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |