Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт июн 21, 2018 23:55

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 66 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пн дек 22, 2008 15:56 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4920
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
VoidVolker писал(а):
Воо, я кажется понял: между [CASE/[IF и ] выполняется некоторый код, а потом ] забирает число со стека

именно так

VoidVolker писал(а):
а дальше в зависимости от этого числа происходит компиляция нужного участка кода. Так?

да

VoidVolker писал(а):
Так? Хорошо, тогда надо посмотреть реализации и префиксного и постфиксного вариантов, выбрать более удачный и внести в стандарт.

ну, вариант для [ flag ] [CASE] можно в форке увидеть.
а вариант c [CASE flag ] я через пару дней сделаю ;)

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн дек 22, 2008 16:27 
потому что ] скобка используется в форте для другого, а лексемы IF] OF] CASE] не используются. То есть так удобнее использовать и проще реализовать стуруктуру.


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4920
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 18 раз.
Поблагодарили: 56 раз.
Гость писал(а):
потому что ] скобка используется в форте для другого, а лексемы IF] OF] CASE] не используются. То есть так удобнее использовать и проще реализовать стуруктуру.

Как раз наоборот. менять поведение закрывающей скобки проще, чем открывающей. Для этого достаточно определить закрывающую скобку
в отдельный словарь.
Как-то так:
<pre>
VOCABULARY bracket
ALSO bracket DEFINITIONS

: ] ... PREVIOUS ] ;

PREVIOUS DEFINITIONS

: [OF ... [COMPILE] [ ALSO bracket ... ; IMMEDIATE
</pre>
ну, понятно, что словарь может называться иначе, и быть вообще сокрытым ;)

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн дек 22, 2008 17:03 
Не в сети

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

Но дают возможность очень подробно проследить за состоянием стеков. Очень удобно при отладке нетривиальных слов. И для их понимания тоже!

_________________
With best wishes, in4.


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

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

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


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

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

ну есть, и что?
в разных словарях могут быть одноименные слова (это к примеру)
к тому же могут и другие быть варианты реализации,
визуально же, вариант [IF bla bla bla ] лучше выглядит, чем, к примеру [IF bla bla bla IF]
впрочем, я ведь не вел речь о реализации, не предлагал в стандарт конструкцию, я лишь пояснил свое мнение.
В американском стандарте управлению потоком трансляции не очень много внимания уделено.

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


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

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

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


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

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

в то числе

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн дек 22, 2008 21:14 
Во первых, более логично и фортово: "[ ... ] [IF]" --> "[ ... IF]"
А во вторых, для открывающей скобки достаточно запомнить только текущий STATE
Код:
: [  STATE @ STATE-PREV ! POSTPONE [ ; IMMEDIATE
: IF] STATE-PREV @ STATE ! POSTPONE [IF] ; IMMEDIATE


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн дек 22, 2008 21:36 
Не в сети

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

Кто? К тому же они визуально "разрывают" целостность кода.
комментарии как правило используются для отладки, если код сложен. Это значит, что если мне нужно устранить на время сущность, находящуюся посреди строки, я должен разить строчку на части, нарушив визуальную структуру кода.

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6329
Благодарил (а): 14 раз.
Поблагодарили: 99 раз.
Хм. А вот интересно. Если есть свобода реализации, тогда надо ввести в стандарт не только синтаксис комментариев, но и семантику. Тогда появляются сущности "комментарий до конца строки" и "внутристрочный комментарий", с описанным действием (т.е. не "комментируют", а "выбирают из входного потока символы до конца строки / до символа, закрывающего комментарий и ничего с ними больше не делают"). И в качестве примеров рекомендуемый синтаксис, или его альтернативные наборы. С отсутствием требований реализовать что-то одно, много, или по одному из каждой группы.


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

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1254
Благодарил (а): 3 раз.
Поблагодарили: 16 раз.
mOleg писал(а):
Как раз наоборот. менять поведение закрывающей скобки проще, чем открывающей. Для этого достаточно определить закрывающую скобку в отдельный словарь.

А зачем менять поведение открывающей скобки? :? Переход в режим интерпретации все-равно происходит. А дальше просто использовать стандартные для режима интерпретации [IF] [ELSE] [THEN]. А то получается, что есть аш три вида управляющих конструкций для двух режимов. Зачем? Вот оно это самое усложнение, про которое я говорил.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 23, 2008 00:22 
Не в сети
Administrator
Administrator
Аватара пользователя

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

Код:
: SP> SYS-ID NOT IF [COMPILE] \ THEN ; IMMEDIATE \ for Sprinter only commands
: PC> SYS-ID IF [COMPILE] \ THEN ; IMMEDIATE     \ for PC only commands


слово SP> попросту запрещает интерпретацию/компиляцию всего, что стоит за ним в строке, если SYS-ID не соответствует условию
слово PC> - аналогично - попросту запрещает интерпретацию/компиляцию всего, что стоит за ним в строке, если SYS-ID соответствует условию.

далее эти слова используются для определения в одном исходнике системно-зависимых слов. Например:

Код:
\ system-dependent command

\ PC only
PC> : SAVE-SYSTEM 100 HERE @ 100 - SAVE . ." bytes saved" ;

\ Sprinter only
\ header for sprinter EXE file
SP> CREATE (HEAD) C" E C, C" X C, 45 , 200 , 0 , 0 , 0 , 0 , 0 , 4100 , 4100 , BFFE ,
SP> : SAVE-SYSTEM C000 200 2DUP ERASE (HEAD) C000 16 CMOVE
SP>   C-FILE DUP >R WRITE-FILE ?I/O
SP>   4100 HERE @ 4100 - R@ WRITE-FILE ?I/O R>
SP>   CLOSE-FILE ?I/O + . ." bytes saved" ;


Вводить нечто подобное в стандарт - не вижу смысла, так как это просто "часть программы пользователя", при чем такая часть, которая в целевой программе даже не обязана присутствовать

Тут, кстати, есть и еще одна "хитрость", которую можно использовать где угодно, а именно - компиляция
"кода данного свыше" - строчка:

SP> CREATE (HEAD) C" E C, C" X C, 45 , 200 , 0 , 0 , 0 , 0 , 0 , 4100 , 4100 , BFFE ,

Есть просто конкретная последовательность байтов, которую надо вписать в exe-шник,
и она тупо "компилируется числами". Происхождение этой строчки в данном случае попросту не имеет значения.

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


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

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
VoidVolker писал(а):
mOleg писал(а):
Как раз наоборот. менять поведение закрывающей скобки проще, чем открывающей. Для этого достаточно определить закрывающую скобку в отдельный словарь.

А зачем менять поведение открывающей скобки? :? Переход в режим интерпретации все-равно происходит. А дальше просто использовать стандартные для режима интерпретации [IF] [ELSE] [THEN]. А то получается, что есть аш три вида управляющих конструкций для двух режимов. Зачем? Вот оно это самое усложнение, про которое я говорил.
Я думаю, это очень хорошая идея, так построен HTML: открытие тега - скобка и слово, затем поведение интерпретатора по отношению к тому, что внутри скобок определяется словом, это даёт такую нечастую в форте наглядность.

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


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

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1254
Благодарил (а): 3 раз.
Поблагодарили: 16 раз.
вопрос писал(а):
Я думаю, это очень хорошая идея, так построен HTML: открытие тега - скобка и слово, затем поведение интерпретатора по отношению к тому, что внутри скобок определяется словом, это даёт такую нечастую в форте наглядность.

Стоп! 1. К хтмл и наглядности данная тема не имеет отношения.
2. Я утверждаю, что нет никакой необходимости вводить в стандарт третий вид уравляющих конструкций, и считаю их переусложненными.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


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

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


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

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


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

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