Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 22:11

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 90 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Re: Наработки от victor__v для СПФ
СообщениеДобавлено: Вт апр 04, 2017 17:50 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Victor__v писал(а):
Интересно узнать мнение форумчан по поводу реализации стека исключений?
Нужно ли оно вообще?
Если да, то какие предложения будут по дизайну данного механизма?
Catch Throw может быть недостаточно

Вообще - не нужно. Исключения в текущем виде были реализованы в основном по принципу "чтобы как у других языков". Ошибка в Форте возвращает управление в консоль. Ошибка в скомпилированной программе вызывает ее аварийный останов. Надо чтобы и в Форте был аварийный останов? Механизм TRY (CATCH .. THROW) нужен, чтобы устанавливать особые, определенные программистом, точки обработки исключений в определенных ситуациях. А вот в таких языках как Tcl, да или просто консольная оболочка, разве используют исключения? Нет, не используют - за пренебрежительной малостью неприятностей от неправильно набранной команды. Если набрали имя файла с ошибкой, можно просто перенабрать. Поэтому если Форт впихивать в рамки чуждого ему подхода, то придется писать тот же Си, только с постфиксом. Тут и исключения пригодятся, просто для комплекта. Если же программу изначально основывать на интерактивности, то исключения будут лишними.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Наработки от victor__v для СПФ
СообщениеДобавлено: Вт апр 04, 2017 18:04 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Victor__v писал(а):
Список скорее или цепочка.

угу, в стеке возвратов, и при возникновении исключения со стека возвратов выкидывается все лишнее (уже не нужное),
по сути это стек, и, на мой взгляд сделано вполне логично (правильно).
Имхо, заводить еще один стек для хранения исключений не стоит - лучше не будет.

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Наработки от victor__v для СПФ
СообщениеДобавлено: Пт апр 07, 2017 17:12 
Не в сети
Аватара пользователя

Зарегистрирован: Вт фев 17, 2009 19:58
Сообщения: 112
Откуда: Барнаул
Благодарил (а): 21 раз.
Поблагодарили: 16 раз.
Victor__v, почему тема "Наработки от victor__v для СПФ" находится в разделе "Форт Системы/Quark", когда есть раздел " Форт Системы/SP-Forth"?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Наработки от victor__v для СПФ
СообщениеДобавлено: Пт апр 07, 2017 21:09 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Потому что я ошибся.

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Наработки от victor__v для СПФ
СообщениеДобавлено: Пн апр 10, 2017 22:41 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
https://cloud.mail.ru/public/6YKW/vSo4f3zYL
Что нового?
Подправлена вторая версия строковой библиотеки.
Данная либа портирована в препроцессор, совместима с лок.переменными.
Добавлен стек с плавающей точкой в роли стека потока-управления.

Написал несколько файлов-скриптов для облегчения скрытия деталей.
Что-то вроде мысли зачем каждый раз писать ALSO CONTEXT ! если можно создать файл с этим действием.

Свой аналог СПФ-ским N>R NR>

также в архиве есть мои записки по написанию форт-системы.
Там пока мало чего,
структура слов.статей, несколько примитивов с ещё не написанными флагами и пр.
Моя версия CREATE-CODE
.

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Наработки от victor__v для СПФ
СообщениеДобавлено: Чт апр 27, 2017 20:18 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
https://cloud.mail.ru/public/9BYq/Wt35zCJkZ

Добавлена хеш-фунуция LY написана на ассемблере.
Давно не смотрел исходники ( где-то на хабре видел ) не помню там знаковое или беззнаковое умножение.

Улучшен мини-ассемблер. Переходы, в основном.
Сейчас пишется дизассемблер.

Также формирую свою форт систему. Все текущие исходники оной в папке src2

Написано слово для экранирования пробелов в строке, нужно ежели HTTP-запрос делать

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Наработки от victor__v для СПФ
СообщениеДобавлено: Вс май 14, 2017 13:50 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
https://cloud.mail.ru/public/3GPg/McfL7HJnd
Слегка улучшен ассемблер. Пара кодов всего
Стековый комбинатор ~er\stacker\stacks3.f
Позволяет манипулировать стеком произвольным образом, а также минимизировать его участие в процессе.
Есть 5 переменных ( их роль выполняют регистры ) 0 это eax.

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Наработки от victor__v для СПФ
СообщениеДобавлено: Чт июн 08, 2017 16:32 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Hishnik писал(а):
Ошибка в Форте возвращает управление в консоль. Ошибка в скомпилированной программе вызывает ее аварийный останов. Надо чтобы и в Форте был аварийный останов?
Аварийный останов в задницу не нужен. Но CATCH THROW чрезвычайно удобны и сильно упрощают программу, когда нужно проделать сложную и сильно вложенную последовательность действий, которая может быть успешна или нет. И в случае неуспеха на любом этапе и на любом уровне вложенности, эту последовательность нужно прервать, сняв сразу все ставшие ненужными параметры со стека данных, но завершать программу не нужно. Потому-что это не ошибка была, а факт не успеха.
А без CATCH THROW нужно будет из каждого вложенного этапа последовательности возвращать код завершения, потом проверять его и выбираться из глубоких уровней через кучу таких проверок. А эти проверки просто захламляют исходный текст.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Наработки от victor__v для СПФ
СообщениеДобавлено: Чт июн 08, 2017 22:50 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Цитата:
А без CATCH THROW нужно будет из каждого вложенного этапа последовательности возвращать код завершения, потом проверять его и выбираться из глубоких уровней через кучу таких проверок. А эти проверки просто захламляют исходный текст.


Тут ещё возможен бектрекинг как вариант.
Простые откатные действия выполняли многие, наверно

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Наработки от victor__v для СПФ
СообщениеДобавлено: Сб июн 24, 2017 18:32 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
пишу второй форт-ассемблер под интел .
Так-как много похожих кусков решил генерировать их автоматически.
Слово принимает ( думается, через входной поток) имя слова, его требуемую конфигурацию ( регистр, регистр-регистр и пр. ) и опкоды на все случаи жизни.
После этого в шаблон подставляется всё вышеперечисленное на выходе нас встречает уже готовая строка, которая скармливается вектору ( распарсить, записать в файл ещё что-то ).

Как сделать?
Делается всё элементарно ( в моём случае )
у меня как-раз библиотека для работы со строками имеется. Надо её только дополнить парой слов и всё.

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Наработки от victor__v для СПФ
СообщениеДобавлено: Сб июл 15, 2017 16:45 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
https://vk.com/doc189457568_449351224

Небольшой рабочий вариант ассемблера, сгенерированного автоматически.
Там несколько инструкций
ADD
AND
SUB
CMP
и пр.
Особенно стоит обратить внимание на функцию LEA
Т.к. это слово лишь частично подпадает под шаблон задействованных опкодов
К примеру,
CELL [EAX] EBX LEAsm-r-r
сгенерирует
MOV EBX, CELL [EAX]

Ибо LEA для другого предназначена.

Сделал поддержку и для работы с 8- и 16-битными регистрами.

Что дальше?
Переименовать часть слов.
Сделать шаблоны под другие случаи. т.е. команды с 1-м регистром или 3-мя.
И под более массивные опкоды ( умножение, к примеру )

В архиве код для получения ассемблера-библиотеки, а также сама библиотека.
Библиотека: ~ER\ASM\ASMr-r.F
Строитель: ~ER\ASM\NEW-ASM-LIBRARY.F
Все остальные папки с исходниками как раз для Строителя.

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Наработки от victor__v для СПФ
СообщениеДобавлено: Сб авг 19, 2017 18:19 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
https://cloud.mail.ru/public/JxP8/yPUezZT7c
Стековый манипулятор.
Слегка изменена логика.
Благодаря чему код стал чуточку понятней ( весьма вероятно )
отличия stacks4
    убрано махание словарями
    добавлено 2 стека потока-управления ( 2 чтоб из циклов можно было вырываться )
    возможность выделять и транслировать выражения по EVALUATE ( $'DUP' к примеру)
    поиск расширен - если нет слова в 1 символ, то ищется шириною в 2 ( мелочь, а полезно )
    добавлены циклы и условия.

Код на затравку:
Цитата:
: PARSE
TIB #TIB @ >IN
[ S" 3/10&-20&+2^44x14?'zJsB2&3..?'=Js2i4i0&i1dUJr0&iJr2#24" ST->COMB ]
;



1 - счётчик
2 - тек.позиция
3 - символ
4 - длина результирующей строки

по командам
& - операция будет производиться с памятью
^ - сохранить переменную на стеке возвратов
# - скинуть значение со стека возвратов в переменную
? - сравнить два операнда
'z если результат сравнения операндов равен 0
Js - дать ссылку, которую надо будет разрешить
Jr - разрешить ссылку
B - BEGIN
U - UNTIL
. - уменьшить размер переменной ( использовать её меньшую часть )

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Наработки от victor__v для СПФ
СообщениеДобавлено: Пт ноя 17, 2017 12:56 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Сегодня писал на форте практическую мелюзгу.
Суть в том, чтобы взять из экселя данные и вставить их в html-код.
Т.к. с экселем не дружу и с COMом к нему тоже. Я пошёл по пути наибольшего сопротивления.
Что у меня есть: СПФ, Vim.
Итак, я скопировал строки из экселя в Вим. В виме я заэкранировал строки, чтобы СПФ-ом читались и добавил операции переноса в хип. Короче превратил данные в форт-исходник.
С Вимом всё.
По форту:
Загрузил библиотеку ~er\str\str-r2.f
Создал подстановку в строку и её посл. запись в файл.
И слово для прогона данных.
Всё это делалось за 1 час. С учётом работы с Vim'ом.

Итог, надо было раньше озаботиться разбором CSV-файлов :)
Сделал бы за 10-20 минут.

Почему форт и вим?
Вим уже был установлен и это мощный текстовый редактор.
СПФ на флешке и не требует установки, как к примеру Питон, а на нём было б проще написать в т.ч. и разбор CSV.

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Наработки от victor__v для СПФ
СообщениеДобавлено: Пт ноя 17, 2017 13:24 
Victor__v писал(а):
Насчёт применимости [FORTH в Linux] вопрос, как всегда, спорный.

Вот, Вы и ответили: sed, awk & Co справились бы быстрее и лучше. Так, например, аналогичный простой скрипт для формирования моих интернет-страничек проработал у меня лет 20 практически без изменений. А, вот, сейчас, когда меня отрезали от CGI и ssh, под Мастдаем, тут еще не только новый FORTH придумаешь, совмещая в одном флаконе кривые сами по себе HTTP и WHS...


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Наработки от victor__v для СПФ
СообщениеДобавлено: Пт ноя 17, 2017 15:18 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
gudleifr писал(а):
Victor__v писал(а):
Насчёт применимости [FORTH в Linux] вопрос, как всегда, спорный.

Вот, Вы и ответили: sed, awk & Co справились бы быстрее и лучше. Так, например, аналогичный простой скрипт для формирования моих интернет-страничек проработал у меня лет 20 практически без изменений. А, вот, сейчас, когда меня отрезали от CGI и ssh, под Мастдаем, тут еще не только новый FORTH придумаешь, совмещая в одном флаконе кривые сами по себе HTTP и WHS...


Для такой задачи подойдёт любой скриптовый язык. Только их ещё установить надо. А с форт-системами таких проблем нет практически.
Питон для задачи такой, я б использовал. Пусть на тысяче полей он справился бы нормально. А потом начался бы жуткий тормоз.
Только, что на форте, что на питоне надо было б писать разбор CSV.
А в СПФ нема слова SPLIT, а мне писать его было жутко лень. В моём форте это слово есть, но оно написано с использованием стековых манипуляторов т.е перенести проблематично.
А мораль сообщения проста:
надо писать библиотеки на возможные ситуации.

Ну вставала у меня похожая задача, только тогда я использовал Питон т.к. на МСВС СПФ не собирался :dmad;
А вот там уж скорость была важна. Плохо только что я тогда соотв.библиотеку не сделал.

И ещё момент. У же всегда с собою библиотека для работы со строками. Во не было бы её у меня, было тяжелей.

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 90 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB