Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт мар 19, 2024 10:44

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Что же касается средств управления потоком интерпретации
Автор Сообщение
  Заголовок сообщения:   Ответить с цитатой
нет, ну я не тороплю ...
Сообщение Добавлено: Чт янв 08, 2009 21:45
  Заголовок сообщения:   Ответить с цитатой
вопрос писал(а):
ну так в стандарт его

;) все-то вам хочется делать сразу и поскорее :)
я все-таки привел пример, то есть рабочий набросок, который можно оптимизировать, и развивать.
И функциональность у него пока ограничена ради прозрачности (чтобы идею можно было увидеть), поэтому, к примеру, вложенные конструкции не будут работать корректно.
Сообщение Добавлено: Чт янв 08, 2009 20:45
  Заголовок сообщения:   Ответить с цитатой
ну так в стандарт его
Сообщение Добавлено: Чт янв 08, 2009 20:36
  Заголовок сообщения:   Ответить с цитатой
in4 писал(а):
Правильное решение - вынести доступ к пропуску текста в отдельный лексикон и реализовать оба механизма через него! Получится, что слова знают о существовании др. друга! Заодно факторизация будет...

и самое поразительно, что пример уже есть в этом обсуждении, причем работчий пример с [IF .. ]
Сообщение Добавлено: Чт янв 08, 2009 20:24
  Заголовок сообщения:   Ответить с цитатой
Да, это правильное решение...
Сообщение Добавлено: Чт янв 08, 2009 10:28
  Заголовок сообщения:   Ответить с цитатой
IMHO конфликт условной компиляции и комментариев произошел от того, что два разных механизма используют один и тот же метод работы с текстом - пропуск текста до определенного слова/символа.

Правильное решение - вынести доступ к пропуску текста в отдельный лексикон и реализовать оба механизма через него! Получится, что слова знают о существовании др. друга! Заодно факторизация будет... ;)

Можно предложить и простое(?) решение - слова условной компиляции должны быть первыми словами в строке (можно и жестче - с первой позиции строки). Или единственными словами в строке (вроде, м.б. проще в реализации).
Если это условие не выполняется, то интерпретация слов условной компиляции зависит от исходника (и комментировать слова условной компиляции можно).
Сообщение Добавлено: Чт янв 08, 2009 06:03
  Заголовок сообщения:   Ответить с цитатой
либо все должно быть просто как апельсин, и без банановых корок раскиданных на дороге
Сообщение Добавлено: Вт янв 06, 2009 20:54
  Заголовок сообщения:   Ответить с цитатой
WingLion писал(а):
A, так как исходник имеет формальную возможность воздействовать на компиляцию как угодно, эта конструкция будет неустойчива к неожиданным вставкам, подобно:

Код:[IF] ля-ля-ля
  большая-ли-разница что-тут?
 \ [ELSE] тру-ля-ля
 ой-ой-ой
[THEN]

либо должен быть расширяемый интерфейс, позволяющий добавлять новые слова, и таким интерфейсом прекрасно становится отдельный словарь, тем более, что код уже приводился в этой теме.
Сообщение Добавлено: Вт янв 06, 2009 20:50
  Заголовок сообщения:   Ответить с цитатой
mOleg писал(а):
абсолютно не понял о чем речь Smile
причем тут забегание куда-то?


обозначение начала и конца условно компилируемого исходника требует от компилятора "заглядывания вперед" по тексту, чтобы разобраться, где начало, а где конец.
Сообщение Добавлено: Вт янв 06, 2009 20:50
  Заголовок сообщения:   Ответить с цитатой
WingLion писал(а):
Вот и разберемся.
Любая подобная:
Код:begin-васькин-код
    кусок исходника
end-васькин-код
конструкция приведет к отступлению от одной из концепций форт-исходников, а именно - последовательному построению от-простого-к-сложному БЕЗ ЗАБЕГАНИЙ ВПЕРЕД по тексту исходника.

абсолютно не понял о чем речь :)
причем тут забегание куда-то?
Сообщение Добавлено: Вт янв 06, 2009 20:43
  Заголовок сообщения:   Ответить с цитатой
in4 писал(а):
А какие есть альтернативные техники условной компиляции?

ну, а зачем? ведь управляемо оно все быть должно, а значит на глазах. Если оно в разных файлах, то оно уже не так управляемо и обозреваемо.

in4 писал(а):
По идее, для текстовых файлов аналогом будут именованные части исходника...

ну, это черезчур.
Сообщение Добавлено: Вт янв 06, 2009 20:42
  Заголовок сообщения:   Ответить с цитатой
Вот и разберемся.
Любая подобная:

Код:
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. граница - конец строки


минимальны.

СВОИ Управляющие слова в этом случае определяются в начале исходника и используются везде, где нужны, без проблем и ограничений
Сообщение Добавлено: Вт янв 06, 2009 09:06
  Заголовок сообщения:   Ответить с цитатой
А какие есть альтернативные техники условной компиляции?
Особенно если без блоков - там можно последовательностью блоков и списком используемых блоков управлять... Получается удобно. Разбивать текст на мелкие файлы - неудобно... :(
По идее, для текстовых файлов аналогом будут именованные части исходника...
Сообщение Добавлено: Вт янв 06, 2009 05:04
  Заголовок сообщения:   Ответить с цитатой
WingLion писал(а):
mOleg писал(а):Цитата:Так они по-новому будут компилиться по-прежнему после подключения к ядру расширения forth.ANSY94
вообще это не обязательно так.
Пока других предложений нет, я придерживаюсь того, которое есть

ага, вот сразу возник у меня вопрос каким в стандарте должно быть представление строк?
Сообщение Добавлено: Вс янв 04, 2009 20:39
  Заголовок сообщения:   Ответить с цитатой
Цитата:
никаких сверхестественных манипуляций...
в этих манипуляциях нужно ещё разобраться, а стандартные [IF] [THEN] [ELSE] уже существуют
Сообщение Добавлено: Вс янв 04, 2009 20:37

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


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