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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 48 ]  На страницу Пред.  1, 2, 3, 4
Автор Сообщение
 Заголовок сообщения: Re: STATE
СообщениеДобавлено: Чт ноя 10, 2011 06:38 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Гость писал(а):
Простите если туплю.

Да ладно.. Все мы не без греха. :)
Гость писал(а):
Разве слово : не слово немедленного исполнения?

Нет. Вы наверно его спутали со словом ; .
Гость писал(а):
Переключили контекст на компиляцию и знаем, где мы:)

Я предлагаю не переключать. Скажем так - оставаться в одном состоянии.
Сейчас склоняюсь к тому, что это состояние - исполнение(чтобы меньше дорабатывать SPF).
Гость писал(а):
Опять добавлять в память новые слова?:) А почему не 'DUP это компиляция, а DUP исполнение?

В памяти только словарная статься с полем имени, в котором только имя DUP. Ничего в память нового не добавляем. Насчет набора суффиксов - тема открыта пока.
DUP: - заголовок глобального слова
DUP( - заголовок локального слова
DUP - исполнение
DUP, - компиляция
DUP,, - компиляция компиляции
; - завершение формирование глобального слова
) - завершение формирование локального слова
Гость писал(а):
Если всё время компиляция, то переключаемся вход/выход в режим исполнения словами [ и ]
"Те же яйца, но вид сбоку"

Явность переключения контекста это не исключение контекста и принципиально ничего не меняется
Гость писал(а):
Усложняем синтаксис языка разбором ещё и суффиксов, префиксов, @, *, ++, -- ...?

Усложнение синтаксиса нагружает долговременную память, а упрощение контекста разгружает кратковременную память. Это разноценные вещи. Разгрузка кратковременной памяти несравненно важнее загрузки долговременной памяти.
Гость писал(а):
Лучше знать в каком режиме находишься (это особо и не напрягает, т.к. обрамляется, в основном, словами : и ; )

P.S. На затравку. А как решить сложности с управлением контекста поиска и добавления слов в нужный
словарь? ( ALSO PREVIOUS и др. ) Тоже извилины напрягает?:)
Что правим в консерватории?

Все что мешает и правим.
Словари - оставляем только один.
Манипуляции на стеке - убираем.
STATE - убираем.
BASE - убираем.
Вводим локальное именование, чтобы не плодить ненужные имена.
О комбинаторах я пока промолчу.
PS. Вобщем систематически убираем инструментальные контексты разных видов, которые могут накладываться друг на друга по ходу программирования.
Останется после этой чистки, как и прежде полностью открытый транслятор, собственно, что и отличает форт-подход в лучшую сторону от других подходов к программированию.

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: STATE
СообщениеДобавлено: Чт ноя 10, 2011 07:55 
Не в сети
Administrator
Administrator
Аватара пользователя

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


только ОР, потому что Т сократили, а Ф убрали...

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: STATE
СообщениеДобавлено: Ср ноя 16, 2011 16:07 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Разбил (приблизительно) 'вредность' инструментального контекста для форта на сумму его отдельных составляющих:
Инструментальный контекст = манипуляция параметрами на стеке( 60%) + контекстные словари ( 30%) + STATE(5%) + BASE(5%)
С BASE уже поборолись - есть запись чисел в шестнадцатиричной системе (0x..) и десятичной. Большего практически и не надо.
Манипуляция параметрами на стеке заменяется работой с локальными переменными или манипуляторами.
Работа со словарями заменяется использованием локального и комбинаторного именования.
Полное убирание контекста от STATE приводит к большой переделке транслятора, но учитывая малый удельный вес этого контекста и то, что переключение STATE 'видимо' ( : и ; обрамляют короткие отрезки текста ) влияние STATE можно минимизировать
только добавлением к именам форт-слов нескольких суффиксов, которые приводят к одинаковому результату формирования кода независимо от наличия флага IMMEDIATE у слова. После введения таких суффиксов необходимость маркировать слова флагом IMMEDIATE отпадает.
Кусок реализации вышесказанного для spf:
Код:
\ разметка символами-суффиксами
: NOTFOUND ( a u -- ) u! a!  \ создать заголовок слова с переводом STATE в режим компиляции
  a u + 1- C@ ':' = u 1 > AND 0= IF a u NOTFOUND EXIT THEN
  init-lvoc a u 1- SHEADER 3 TO XN [begin] ] HIDE ;

: NOTFOUND ( a u -- ) u! a! 0 sa! \ исполнить слово или комбинатор независимо от STATE и от флага IMMEDIATE
  a u + 1- C@ '`' = u 1 > AND 0= IF a u NOTFOUND EXIT THEN
  a u 1- SFIND IF EXECUTE ELSE HERE >R EVALUATE RET, R@ EXECUTE R> DP ! THEN ;

: NOTFOUND ( a u -- ) u! a!  \ скомпилировать слово или комбинатор независимо от STATE и от флага IMMEDIATE
  a u + 1- C@ ',' = u 1 > AND 0= IF a u NOTFOUND EXIT THEN
  a u 1- SFIND IF COMPILE, ELSE SLIT, POSTPONE EVALUATE THEN ;

: NOTFOUND ( a u -- ) u! a!  \ хвостовая оптимизация кода слова
  a u + 1- C@ ';' = u 1 > AND 0= IF a u NOTFOUND EXIT THEN
  a u 1- SFIND DROP BRANCH, POSTPONE -; ;

Теперь вместо, например, такого
Код:
: dup DUP ; IMMEDIATE
: proc [ 10 ] dup ;
можно писать
Код:
: proc 10` DUP` ;

а вместо
Код:
: proc1 10 POSTPONE dup ;

можно писать
Код:
: proc1 10 dup, ;
Для использования в макросах подойдет вариант использования слова : , таким образом
Код:
name:  ....  ;

Если форт слово закончить суффиксом ; , то будет выполнена хвостовая оптимизация(вместо ret будет скомпилирован переход
на адрес слова завершенного суффиксом ; .
ps. Доработанный spf: spf420malms.exe

_________________
С уважением, chess


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

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


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

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


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

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