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
  38 0 DO
    55 EMIT
  10 +LOOP
;
TEST
Выводит 4 буквы U

2)
Цитата:
I>1234 <# # # # # #> DEPTH .
2 OK
I>_


+...

Ethereal писал(а):
Но дальше вылезли проблемы с переопределением уже имеющихся слов.

Сейчас думаю над этим. Всё дело в том, что получается рекурсия и преполняется стек возвратов...
Никак не могу понять: надо ли включать доп. бит или действовать по другому? Может настало время попробовать разобраться со словарями?
:mrgreen: Тогда исключения можно вынести тоже в отдельный словарь!

Попробовал сделать
Код:
: PREVIOUS LAST @ COUNTSZ 2DUP + @ (FIND) ?EXIT , ; IMMEDIATE COMPILEONLY
: WORDS PREVIOUS ;
WORDS
почему-то неправильно работает :/

Вложения:
OLD40025_pre2.ZIP [62.66 Кб]
Скачиваний: 468

Автор:  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
: WORDS PREVIOUS ;
WORDS
Добавил после ?EXIT: COUNTSZ + 2+ @ (NFA>CFA). Забыл просто, простите.
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'а.
Жуть. Особенно когда немного смотрел программирование под колибри :D

Вложения:
Iczelion.zip [994 Кб]
Скачиваний: 462

Автор:  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/