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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 80 ]  На страницу 1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: представление строк
СообщениеДобавлено: Вс янв 04, 2009 20:37 
Не в сети
Moderator
Moderator
Аватара пользователя

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

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


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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
mOleg писал(а):
ага, вот сразу возник у меня вопрос каким в стандарте должно быть представление строк?


Ясень пень, - оно должно соответствовать платформе!
Для винды одно для юникса другое.

фиксировать в стандарте, какой чертик на конце строки должен сидеть, имхо - не то время!

а сам форт должен воспринимать оба конца строки одинаково.
В крайнем случае, 0D0A принимать как две строки. Хотя, экономить на этом смысла нету.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
можно еще извернуться - завести в словаре слово с именем в один байт 0D - которое будет заканчивать трансляцию строки. И считать концом строки байт 0А. Но это явный изврат.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


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

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

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


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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
упс...

я сделал бы так
разделил бы строки с разным представлением символов.
для байтовых - строки двух типов - строка со счетчиком или asciiz одна в другую конвертится легким перемещением строки на 1 байт с удалением байта-счетчика в начале и записью нуля в освободившееся место на конце.
Аналогично для строк с двух(четырех)байтовыми символами - только счетчик у них 2(4)-хбайтовый и нуль тоже.

А строка - без начала (счетчика) и конца(нуля) - строкой не считается, а считается массивом или блоком данных.

максимальная длина строки, соответственно, для байтовых 255, для словных - 65534, для 4-хбайтовых - 4Gb

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
6 вариантов строк - многовато - но что имеем то и имеем.
Зарывать голову в песок или выбирать на все случаи жизни одно представление смысла нету.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7990
Благодарил (а): 26 раз.
Поблагодарили: 144 раз.
mOleg писал(а):
- как они хранятся в памяти, (AsciiZ, Pascal, др.)

Так и хранятся - ASCIIZ, Pascal, др. :)
mOleg писал(а):
- какой может быть максимальная длина строки

Какая указана в документации на систему. Как вариант - какая хранится в системной константе.
mOleg писал(а):
- как хранить unicode строки

В Unicode.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт янв 06, 2009 09:24 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Еще одно предложение:
строка с условным счетчиком переменной длины:

Цитата:
0nnnnnnn строка -- однобайтовый счетчик, строки длиной от 0 до 127 байт

10nnnnnn NN строка -- двухбайтовый (14 bit) счетчик, строки длиной от 0 до 16383 байт

110nnnnn NN NN NN -- четырехбайтовый (29 bit) счетчик, строки длиной от 0 до 2<sup>29</sup>-1 байт

1110nnnn NN NN NN NN NN NN NN -- для извращенцев - восьмибайтовый (60 bit) счетчик

и так далее до 128-байтового -- для супер-извращенцев


Первый байт получается старший, но это вряд ли должно смущать.

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

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт янв 06, 2009 15:18 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7990
Благодарил (а): 26 раз.
Поблагодарили: 144 раз.
Это уже получаются не столько строки, сколько блоки данных. Думается, над строками должны быть выстроены операции, а уж как строка хранится - второй вопрос. И в любом случае, не имеет смысла делать размер счетчика больше, чем размер адреса в системе. Впрочем, можно еще так.

Код:
N  <- N байт счетчик -> <- строка ->


А то и так

Код:
xxxx yyyy  - два битовых поля по 4 бита


xxxx - размер символа в байтах (1-16)
yyyy - длина счетчика в байтах (1-16)

Строка "на всякий случай" завершается нулем, чтобы быть еще и ASCIIZ.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт янв 06, 2009 16:35 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Цитата:
xxxx - размер символа в байтах (1-16)
yyyy - длина счетчика в байтах (1-16)

Строка "на всякий случай" завершается нулем, чтобы быть еще и ASCIIZ.
вот, лучше всего, а при компиляции слов, работающих со строкой компилируется в работу только та часть структуры, которая необходима

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт янв 06, 2009 17:30 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Хищник писал(а):
yyyy - длина счетчика в байтах (1-16)


вот, почему-то кажется, что от 0 до 15. 0 байт длины - значит 2<sup>0</sup>=1 - чисто односимвольная строка.

Может, оно и смешно, но получается еще и просто кодировка символа вида
xxxx 0000 код-символа где xxxx - размер символа в байтах.
Можно в xxxx закодировать даже не размер, а тип кодировки: - dos866 win1251, КОИ, UTFxx
и т.д. и т.п.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


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

Зарегистрирован: Пт май 05, 2006 06:19
Сообщения: 192
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
использовать восемь представлений строк по моему не менее накладно чем одно универсальное
ну и плюс не побоюсь быть побитым :) но понятие "строка" в данном случае не строка из файла,
а просто выделенная область память с данными
а что там в реале, строка из Пушкина, или полностью стихотворение или бинарник прочтенный из
файла -- не суть важно, поэтому строка со счетчиком без альтернативна вопрос лишь в организации
оного, отдельнае ли переменная в для "двухзначное переменной" или первые n байт в "строке"
вариант со счетчиком переменной длины
(по моему первый раз здесь предложенный mOleg в другой ветке)
это подходящий компромис для тех кто стремится экономить каждый байт и тех кто желает
оперировать метровыми "строками" со свободным содержанием,
вот только предусматреть сразу с расчетом на будущее, (время то бежит фиг догонишь)
не ограниченость счетчика, ну тоесть чтоб через пару тройку лет не вставал вапрос как мне
оперировать терробайтной строкой, или через еще пару лет "теромегабайтной" фоткой со свадьбы ... :)
ну вот примерно так имхо маё на это смотрит
ну и конечно в своем стремлении к универсальности кодировку уникодную я выбираю... по возможности,
а так CP866 использую :)

_________________
SPF


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5063
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
я хочу только заметить, что согласно АНС94 над счетчиком строки позволительно производить операцию C@ и С! , что приводит к неприятному, на мой взгляд, последствию - нельзя менять формат строки. У меня в форке строки представлены различным образом (от опций сборки зависит) и анси тест идет только при условии, что длина счетчика строки будет созразмерна С@ , который в реальности B@. Поэтому, мне кажется, что даже добавление ряда слов для поддержания стандарта не будет результативным по целому ряду причин.
То есть обратная совместимость не очень-то и нужна.

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


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

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
неужели история с майкрософтом и обратной совместимостью ничему не учит?

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


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

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

ну и к чему это?

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


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

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


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

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


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

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