Forth http://fforum.winglion.ru/ |
|
Что же касается средств управления потоком интерпретации http://fforum.winglion.ru/viewtopic.php?f=36&t=1786 |
Страница 4 из 5 |
Автор: | Hishnik [ Вс янв 04, 2009 20:09 ] |
Заголовок сообщения: | |
WingLion писал(а): Короче, отсюда мораль: неудачные [IF] [THEN] [ELSE] из стандарта надо исключить.
Кто за? А вполне. Тут можно поступить так - разъяснить возможный механизм их действия и реализацию. А раз имеется неоднозначность - не надо выбирать один из вариантов волеизъявлением "комитета". |
Автор: | вопрос [ Вс янв 04, 2009 20:13 ] |
Заголовок сообщения: | |
Цитата: отсюда мораль: неудачные [IF] [THEN] [ELSE] из стандарта надо исключить. прежде, чем будет предложена замена, исколючать заведомо опасно.
|
Автор: | WingLion [ Вс янв 04, 2009 20:22 ] |
Заголовок сообщения: | |
вопрос писал(а): прежде, чем будет предложена замена, исколючать заведомо опасно.
Опасно для чего? для исходников, на ANSI94? Так они по-новому будут компилиться по-прежнему после подключения к ядру расширения forth.ANSY94 А в новый стандарт и предлагается не включать глючную конструкцию, без которой можно легко обойтись имеющимися средствами даже обрезанного F83 |
Автор: | mOleg [ Вс янв 04, 2009 20:26 ] |
Заголовок сообщения: | |
WingLion писал(а): Так они по-новому будут компилиться по-прежнему после подключения к ядру расширения forth.ANSY94 вообще это не обязательно так. WingLion писал(а): А в новый стандарт и предлагается не включать глючную конструкцию, без которой можно легко обойтись имеющимися средствами даже обрезанного F83
F83 не лучше ANS94 |
Автор: | WingLion [ Вс янв 04, 2009 20:31 ] |
Заголовок сообщения: | |
: ?\ IF nop ELSE [COMPILE] \ THEN ; IMMEDIATE flag @ ?\ здесь нечто, что компилируется, если flag=true иначе отбрасывается все до конца строки чтобы не городить на каждой строчке три лишних слова: Код: [b]: mode1> flag @ 1 <> IF [COMPILE] \ THEN ; IMMEDIATE[/b]
[b]: mode2> flag @ 2 <> IF [COMPILE] \ THEN ; IMMEDIATE[/b] mode1> компилится то что надо для режима 1 (можно и S"file1" INCLUDE сделать без проблем) mode2> компилится то что надо для режима 2 и никаких сверхестественных манипуляций... |
Автор: | WingLion [ Вс янв 04, 2009 20:33 ] |
Заголовок сообщения: | |
mOleg писал(а): Цитата: Так они по-новому будут компилиться по-прежнему после подключения к ядру расширения forth.ANSY94 вообще это не обязательно так. Пока других предложений нет, я придерживаюсь того, которое есть mOleg писал(а): F83 не лучше ANS94
лучше или не лучше - вопрос не об этом... я же написал, что даже F83 позволяет, не утверждая, что он лучше |
Автор: | вопрос [ Вс янв 04, 2009 20:37 ] |
Заголовок сообщения: | |
Цитата: никаких сверхестественных манипуляций... в этих манипуляциях нужно ещё разобраться, а стандартные [IF] [THEN] [ELSE] уже существуют
|
Автор: | mOleg [ Вс янв 04, 2009 20:39 ] |
Заголовок сообщения: | |
WingLion писал(а): mOleg писал(а):Цитата:Так они по-новому будут компилиться по-прежнему после подключения к ядру расширения forth.ANSY94
вообще это не обязательно так. Пока других предложений нет, я придерживаюсь того, которое есть ага, вот сразу возник у меня вопрос каким в стандарте должно быть представление строк? |
Автор: | in4 [ Вт янв 06, 2009 05:04 ] |
Заголовок сообщения: | |
А какие есть альтернативные техники условной компиляции? Особенно если без блоков - там можно последовательностью блоков и списком используемых блоков управлять... Получается удобно. Разбивать текст на мелкие файлы - неудобно... По идее, для текстовых файлов аналогом будут именованные части исходника... |
Автор: | WingLion [ Вт янв 06, 2009 09:06 ] |
Заголовок сообщения: | |
Вот и разберемся. Любая подобная: Код: begin-васькин-код кусок исходника end-васькин-код конструкция приведет к отступлению от одной из концепций форт-исходников, а именно - последовательному построению от-простого-к-сложному БЕЗ ЗАБЕГАНИЙ ВПЕРЕД по тексту исходника. A, так как исходник имеет формальную возможность воздействовать на компиляцию как угодно, эта конструкция будет неустойчива к неожиданным вставкам, подобно: Код: [IF] ля-ля-ля большая-ли-разница что-тут? \ [ELSE] тру-ля-ля ой-ой-ой [THEN] Знать все слова, которые могут помешать, [IF] физически не в состоянии, потому что про : мой-любимый-коммент [COMPILE] \ ; IMMEDIATE ему рассказать некому. поэтому, для отсутствия проблем, у любого управляющего слова признаком конца его действия должна быть некая естественная граница. В блоках - это были границы блоков, в файловых исходниках - это границы строк и файлов. Есть еще естественная граница - пробел, но предварять каждое условно-компилируемое слово управляющим - неудобно. Поэтому, имхо, выбор не особенно велик - либо слова условной компиляции, действующие на строку, либо прямой условный выбор файлов, включаемых в исходник через INCLUDE. Формально INCLUDE - есть средство структурирования исходников, а условность им придадут любые стандартные условные конструкции Форта. почему IF S" file1" INCLUDE ELSE S" file2" INCLUDE THEN - не сработает? Сработает прекрасно, если эту строку заключить в "кавычки компиляции-исполнения". NONAME: IF S" file1.src" INCLUDE ELSE S" file2.src" INCLUDE THEN ;EXECUTE Не хочется разбивать исходник на кучу мелких файлов? Ключевое слово - "мелких" - это значит, что неудобства конструкции вида: Код: FOR-PC> исходник кода, если он компилируется для PC. граница - конец строки
FOR-MAC> исходник, если он компилируется для MAC. граница - конец строки FOR-ZX> исходник, если он компилируется для ZX. граница - конец строки минимальны. СВОИ Управляющие слова в этом случае определяются в начале исходника и используются везде, где нужны, без проблем и ограничений |
Автор: | mOleg [ Вт янв 06, 2009 20:42 ] |
Заголовок сообщения: | |
in4 писал(а): А какие есть альтернативные техники условной компиляции? ну, а зачем? ведь управляемо оно все быть должно, а значит на глазах. Если оно в разных файлах, то оно уже не так управляемо и обозреваемо. in4 писал(а): По идее, для текстовых файлов аналогом будут именованные части исходника...
ну, это черезчур. |
Автор: | mOleg [ Вт янв 06, 2009 20:43 ] |
Заголовок сообщения: | |
WingLion писал(а): Вот и разберемся.
Любая подобная: Код:begin-васькин-код кусок исходника end-васькин-код конструкция приведет к отступлению от одной из концепций форт-исходников, а именно - последовательному построению от-простого-к-сложному БЕЗ ЗАБЕГАНИЙ ВПЕРЕД по тексту исходника. абсолютно не понял о чем речь причем тут забегание куда-то? |
Автор: | WingLion [ Вт янв 06, 2009 20:50 ] |
Заголовок сообщения: | |
mOleg писал(а): абсолютно не понял о чем речь Smile
причем тут забегание куда-то? обозначение начала и конца условно компилируемого исходника требует от компилятора "заглядывания вперед" по тексту, чтобы разобраться, где начало, а где конец. |
Автор: | mOleg [ Вт янв 06, 2009 20:50 ] |
Заголовок сообщения: | |
WingLion писал(а): A, так как исходник имеет формальную возможность воздействовать на компиляцию как угодно, эта конструкция будет неустойчива к неожиданным вставкам, подобно:
Код:[IF] ля-ля-ля большая-ли-разница что-тут? \ [ELSE] тру-ля-ля ой-ой-ой [THEN] либо должен быть расширяемый интерфейс, позволяющий добавлять новые слова, и таким интерфейсом прекрасно становится отдельный словарь, тем более, что код уже приводился в этой теме. |
Автор: | WingLion [ Вт янв 06, 2009 20:54 ] |
Заголовок сообщения: | |
либо все должно быть просто как апельсин, и без банановых корок раскиданных на дороге |
Страница 4 из 5 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |