Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Сб апр 20, 2024 04:47

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу Пред.  1, 2

Векторизировать в ядре SPF
Надо 50%  50%  [ 3 ]
И так сойдет 33%  33%  [ 2 ]
Другой вариант 17%  17%  [ 1 ]
Всего голосов : 6
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 23, 2007 01:20 
mOleg писал(а):
в смысле? разобранное уже не нужно, его DROP

Не, я имел ввиду - выделил кусок ограниченный разделителями и что дальше с ним делать?


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 23, 2007 01:23 
mOleg писал(а):
так как в случае ошибки можно "сесть мимо стула"

В случае ошибки разделители можно и восстановить на "по умолчаннию"...


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 23, 2007 01:27 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Я тоже за то, чтоб сделать вектором, а потом можно будет разбираться, как именно реализовывать. ;) Думаю, скорость компиляции сильно не пострадает... ;)

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 23, 2007 01:35 
Не в сети
Moderator
Moderator
Аватара пользователя

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

а что обычно делает форт? ищет в словаре и.. 8))
ArtemKAD писал(а):
В случае ошибки разделители можно и восстановить на "по умолчаннию"...

это уже более грубое вмешательство в систему.
Да и кода то тут очень мало, не страшно продублировать.

in4 писал(а):
Я тоже за то, чтоб сделать вектором, а потом можно будет разбираться, как именно реализовывать. Думаю, скорость компиляции сильно не пострадает...

как раз таки пострадает, потому как каждый символ! проверяется на разделительность 8)
а вообще, не сложно замерить.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 23, 2007 03:29 
mOleg писал(а):
а что обычно делает форт? ищет в словаре и.. )

Вот и я о том-же... ;)
mOleg писал(а):
это уже более грубое вмешательство в систему.

Изменений не больше чем для любого вектора от которого зависит трансляция. Т.е. перед началом или восстановлением работы Форт-системы ее вектора (KEY TYPE ...) нуждаются в иннициализации.
mOleg писал(а):
Да и кода то тут очень мало, не страшно продублировать.

Ну да - почти весь транслятор... ;)


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 23, 2007 04:28 
Не в сети
Moderator
Moderator
Аватара пользователя

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

не надо перегибать 8) совсем не "почти весь".

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 23, 2007 05:31 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
короче, вот:
Код:
\ 23-11-2007 ~mOleg
\ Copyright [C] 2006-2007 mOleg mininoleg@yahoo.com
\ разбор строк с различного вида разделителями
\ аналогично xWord.f, но с чуточку более удобным интерфейсом

REQUIRE ?DEFINED devel\~moleg\lib\util\ifdef.f
REQUIRE s"       devel\~moleg\lib\strings\string.f
REQUIRE B@       devel\~moleg\lib\util\bytes.f

\ заполнить список разделителей
: +delimiters ( asc # addr --> )
              >R SWAP
              BEGIN OVER WHILE
                    TRUE OVER B@ R@ + B!
                -1 0 D+
              REPEAT
              2DROP RDROP ;

\ создать список разделителей
\ s" список ограничителей в строке\n\t\000" Delimiter: name
: Delimiter: ( asc # --> )
             CREATE HERE DUP 256 DUP ALLOT ERASE
             +delimiters
             ( --> addr )
             DOES> ;

\ выделить лексему, ограниченную одним из ограничителей,
\ созданных с помощью Delimiter:
: xWord ( delim --> ASC # )
        CharAddr >R
        BEGIN GetChar WHILE
              OVER + C@ 0= WHILE
              >IN 1+!
          REPEAT DUP
        THEN 2DROP
        R> CharAddr OVER - ;

\ EOF пример использования:

\ создаем строку, в которой перечисляем ограничители
\ строка начинается словом s" (а не S"), завершается " (двойной кавычкой)
s"  \r\n\"[]:;\000" 2DUP DUMP Delimiter: proba

\ пример использования
: test BEGIN proba xWord DUP WHILE
             CR ." лексема: " TYPE
                8 SPACES ." разделитель: "
                PeekChar EMIT
                >IN 1+!
       REPEAT 2DROP CR ;

\ разбор строки с произвольными разделителями:
test as[asda"sd]dasdv;vkjjl:vlkj;l


лежит здесь: http://spf.cvs.sourceforge.net/spf/deve ... iew=markup

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 23, 2007 12:50 
mOleg писал(а):
не надо перегибать Cool совсем не "почти весь".

Да я не то что не перегибаю, я даже преуменьшаю. Потому, что транслятор переписывается полностью без каких либо почти. Т.к. в разобранных кусках обязательно будут и цифры и ошибки. Т.е. приходится повторять с небольшими отклонениями все тот-же NextWord еще раз.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 23, 2007 21:16 
Не в сети
Moderator
Moderator
Аватара пользователя

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

Да я не то что не перегибаю, я даже преуменьшаю. Потому, что транслятор переписывается полностью без каких либо почти. Т.к. в разобранных кусках обязательно будут и цифры и ошибки. Т.е. приходится повторять с небольшими отклонениями все тот-же NextWord еще раз.

в классическом форте только одно слово нужно WORD и оно достаточно маленькое, чтобы иметь несколько аналогичных слов без проблем. То, что имеется в СПФе - это уже изыски, по большей части не нужные.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн ноя 26, 2007 20:38 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
mOleg писал(а):
нужно WORD

WORD не соответствует современным способам работы со строками.

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 27, 2007 03:29 
Не в сети
Moderator
Moderator
Аватара пользователя

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

а тут можно попонятнее.
каким таким способам не соответствует?

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 27, 2007 09:34 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
WORD использует строки со счетчиком, а стандарт рекомендует использовать для представления строк пару длина-адрес. Последнее позволяет строки не копировать, а использовать ссылки в буфер.
Но красота способа ограничена в SPF одной строкой исходника... :(

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 27, 2007 14:04 
Не в сети
Moderator
Moderator
Аватара пользователя

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

причем это особенность СПФа, причем нехорошая особенность, так как непортабельная.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср ноя 28, 2007 22:20 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
предлагаемые изменения внесены в ядро:
Код:
: IsDelimiter1 ( char -- flag )
  BL 1+ <
;
VECT IsDelimiter ' IsDelimiter1 (TO) IsDelimiter

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


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

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


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

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


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

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