Автор |
Сообщение |
|
|
Заголовок сообщения: |
|
|
|
нет, ну я не тороплю ...
нет, ну я не тороплю ...
|
|
|
|
Добавлено: Чт янв 08, 2009 21:45 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
вопрос писал(а): ну так в стандарт его
все-то вам хочется делать сразу и поскорее
я все-таки привел пример, то есть рабочий набросок, который можно оптимизировать, и развивать.
И функциональность у него пока ограничена ради прозрачности (чтобы идею можно было увидеть), поэтому, к примеру, вложенные конструкции не будут работать корректно.
[quote="вопрос"]ну так в стандарт его[/quote]
;) все-то вам хочется делать сразу и поскорее :)
я все-таки привел пример, то есть рабочий набросок, который можно оптимизировать, и развивать.
И функциональность у него пока ограничена ради прозрачности (чтобы идею можно было увидеть), поэтому, к примеру, вложенные конструкции не будут работать корректно.
|
|
|
|
Добавлено: Чт янв 08, 2009 20:45 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
ну так в стандарт его
ну так в стандарт его
|
|
|
|
Добавлено: Чт янв 08, 2009 20:36 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
in4 писал(а): Правильное решение - вынести доступ к пропуску текста в отдельный лексикон и реализовать оба механизма через него! Получится, что слова знают о существовании др. друга! Заодно факторизация будет...
и самое поразительно, что пример уже есть в этом обсуждении, причем работчий пример с [IF .. ]
[quote="in4"]Правильное решение - вынести доступ к пропуску текста в отдельный лексикон и реализовать оба механизма через него! Получится, что слова знают о существовании др. друга! Заодно факторизация будет... [/quote]
и самое поразительно, что пример уже есть в этом обсуждении, причем работчий пример с [IF .. ]
|
|
|
|
Добавлено: Чт янв 08, 2009 20:24 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Да, это правильное решение...
Да, это правильное решение...
|
|
|
|
Добавлено: Чт янв 08, 2009 10:28 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
IMHO конфликт условной компиляции и комментариев произошел от того, что два разных механизма используют один и тот же метод работы с текстом - пропуск текста до определенного слова/символа.
Правильное решение - вынести доступ к пропуску текста в отдельный лексикон и реализовать оба механизма через него! Получится, что слова знают о существовании др. друга! Заодно факторизация будет...
Можно предложить и простое(?) решение - слова условной компиляции должны быть первыми словами в строке (можно и жестче - с первой позиции строки). Или единственными словами в строке (вроде, м.б. проще в реализации).
Если это условие не выполняется, то интерпретация слов условной компиляции зависит от исходника (и комментировать слова условной компиляции можно).
IMHO конфликт условной компиляции и комментариев произошел от того, что два разных механизма используют один и тот же метод работы с текстом - пропуск текста до определенного слова/символа.
Правильное решение - вынести доступ к пропуску текста в отдельный лексикон и реализовать оба механизма через него! Получится, что слова [b]знают[/b] о существовании др. друга! Заодно факторизация будет... ;)
Можно предложить и простое(?) решение - слова условной компиляции должны быть [b]первыми[/b] словами в строке (можно и жестче - с первой позиции строки). Или [b]единственными[/b] словами в строке (вроде, м.б. проще в реализации).
Если это условие не выполняется, то интерпретация слов условной компиляции зависит от исходника (и комментировать слова условной компиляции можно).
|
|
|
|
Добавлено: Чт янв 08, 2009 06:03 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
либо все должно быть просто как апельсин, и без банановых корок раскиданных на дороге
либо все должно быть просто как апельсин, и без банановых корок раскиданных на дороге
|
|
|
|
Добавлено: Вт янв 06, 2009 20:54 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
WingLion писал(а): A, так как исходник имеет формальную возможность воздействовать на компиляцию как угодно, эта конструкция будет неустойчива к неожиданным вставкам, подобно:
Код:[IF] ля-ля-ля большая-ли-разница что-тут? \ [ELSE] тру-ля-ля ой-ой-ой [THEN]
либо должен быть расширяемый интерфейс, позволяющий добавлять новые слова, и таким интерфейсом прекрасно становится отдельный словарь, тем более, что код уже приводился в этой теме.
[quote="WingLion"]A, так как исходник имеет формальную возможность воздействовать на компиляцию как угодно, эта конструкция будет неустойчива к неожиданным вставкам, подобно:
Код:[IF] ля-ля-ля большая-ли-разница что-тут? \ [ELSE] тру-ля-ля ой-ой-ой [THEN][/quote]
либо должен быть расширяемый интерфейс, позволяющий добавлять новые слова, и таким интерфейсом прекрасно становится отдельный словарь, тем более, что код уже приводился в этой теме.
|
|
|
|
Добавлено: Вт янв 06, 2009 20:50 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
mOleg писал(а): абсолютно не понял о чем речь Smile причем тут забегание куда-то?
обозначение начала и конца условно компилируемого исходника требует от компилятора "заглядывания вперед" по тексту, чтобы разобраться, где начало, а где конец.
[quote="mOleg"]абсолютно не понял о чем речь Smile причем тут забегание куда-то?[/quote]
обозначение начала и конца условно компилируемого исходника требует от компилятора "заглядывания вперед" по тексту, чтобы разобраться, где начало, а где конец.
|
|
|
|
Добавлено: Вт янв 06, 2009 20:50 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
WingLion писал(а): Вот и разберемся. Любая подобная: Код:begin-васькин-код кусок исходника end-васькин-код конструкция приведет к отступлению от одной из концепций форт-исходников, а именно - последовательному построению от-простого-к-сложному БЕЗ ЗАБЕГАНИЙ ВПЕРЕД по тексту исходника.
абсолютно не понял о чем речь
причем тут забегание куда-то?
[quote="WingLion"]Вот и разберемся. Любая подобная: Код:begin-васькин-код кусок исходника end-васькин-код конструкция приведет к отступлению от одной из концепций форт-исходников, а именно - последовательному построению от-простого-к-сложному БЕЗ ЗАБЕГАНИЙ ВПЕРЕД по тексту исходника.[/quote]
абсолютно не понял о чем речь :)
причем тут забегание куда-то?
|
|
|
|
Добавлено: Вт янв 06, 2009 20:43 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
in4 писал(а): А какие есть альтернативные техники условной компиляции? ну, а зачем? ведь управляемо оно все быть должно, а значит на глазах. Если оно в разных файлах, то оно уже не так управляемо и обозреваемо. in4 писал(а): По идее, для текстовых файлов аналогом будут именованные части исходника...
ну, это черезчур.
[quote="in4"]А какие есть альтернативные техники условной компиляции?[/quote] ну, а зачем? ведь управляемо оно все быть должно, а значит на глазах. Если оно в разных файлах, то оно уже не так управляемо и обозреваемо.
[quote="in4"]По идее, для текстовых файлов аналогом будут именованные части исходника...[/quote]
ну, это черезчур.
|
|
|
|
Добавлено: Вт янв 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. граница - конец строки
минимальны.
СВОИ Управляющие слова в этом случае определяются в начале исходника и используются везде, где нужны, без проблем и ограничений
Вот и разберемся.
Любая подобная:
[code]begin-васькин-код
кусок исходника
end-васькин-код[/code]
конструкция приведет к отступлению от одной из концепций форт-исходников, а именно - последовательному построению от-простого-к-сложному [b]БЕЗ ЗАБЕГАНИЙ ВПЕРЕД[/b] по тексту исходника.
A, так как исходник имеет формальную возможность воздействовать на компиляцию как угодно, эта конструкция будет неустойчива к неожиданным вставкам, подобно:
[code][IF] ля-ля-ля большая-ли-разница что-тут? \ [ELSE] тру-ля-ля ой-ой-ой [THEN] [/code]
Знать все слова, которые могут помешать, [b][IF][/b] физически не в состоянии, потому что про [b]: мой-любимый-коммент [COMPILE] \ ; IMMEDIATE[/b] ему рассказать некому.
поэтому, для отсутствия проблем, у любого управляющего слова признаком конца его действия должна быть некая естественная граница. В блоках - это были границы блоков, в файловых исходниках - это границы строк и файлов. Есть еще естественная граница - пробел, но предварять каждое условно-компилируемое слово управляющим - неудобно. Поэтому, имхо, выбор не особенно велик - либо слова условной компиляции, действующие на строку, либо прямой условный выбор файлов, включаемых в исходник через [b]INCLUDE[/b].
Формально INCLUDE - есть средство структурирования исходников, а условность им придадут любые стандартные условные конструкции Форта.
почему [b]IF S" file1" INCLUDE ELSE S" file2" INCLUDE THEN[/b] - не сработает? Сработает прекрасно, если эту строку заключить в "кавычки компиляции-исполнения".
NONAME: [b]IF S" file1.src" INCLUDE ELSE S" file2.src" INCLUDE THEN[/b] ;EXECUTE
Не хочется разбивать исходник на кучу мелких файлов? Ключевое слово - "мелких" - это значит, что неудобства конструкции вида:
[code]FOR-PC> исходник кода, если он компилируется для PC. граница - конец строки FOR-MAC> исходник, если он компилируется для MAC. граница - конец строки FOR-ZX> исходник, если он компилируется для ZX. граница - конец строки[/code]
минимальны.
[b]СВОИ[/b] Управляющие слова в этом случае определяются в начале исходника и используются везде, где нужны, без проблем и ограничений
|
|
|
|
Добавлено: Вт янв 06, 2009 09:06 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
А какие есть альтернативные техники условной компиляции?
Особенно если без блоков - там можно последовательностью блоков и списком используемых блоков управлять... Получается удобно. Разбивать текст на мелкие файлы - неудобно...
По идее, для текстовых файлов аналогом будут именованные части исходника...
А какие есть альтернативные техники условной компиляции?
Особенно если без блоков - там можно последовательностью блоков и списком используемых блоков управлять... Получается удобно. Разбивать текст на мелкие файлы - неудобно... :(
По идее, для текстовых файлов аналогом будут именованные части [b]исходника[/b]...
|
|
|
|
Добавлено: Вт янв 06, 2009 05:04 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
WingLion писал(а): mOleg писал(а):Цитата:Так они по-новому будут компилиться по-прежнему после подключения к ядру расширения forth.ANSY94 вообще это не обязательно так. Пока других предложений нет, я придерживаюсь того, которое есть
ага, вот сразу возник у меня вопрос каким в стандарте должно быть представление строк?
[quote="WingLion"]mOleg писал(а):Цитата:Так они по-новому будут компилиться по-прежнему после подключения к ядру расширения forth.ANSY94 вообще это не обязательно так. Пока других предложений нет, я придерживаюсь того, которое есть [/quote]
ага, вот сразу возник у меня вопрос каким в стандарте должно быть [url=http://fforum.winglion.ru/viewtopic.php?t=1850]представление строк[/url]?
|
|
|
|
Добавлено: Вс янв 04, 2009 20:39 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Цитата: никаких сверхестественных манипуляций... в этих манипуляциях нужно ещё разобраться, а стандартные [IF] [THEN] [ELSE] уже существуют
[quote]никаких сверхестественных манипуляций...[/quote] в этих манипуляциях нужно ещё разобраться, а стандартные [IF] [THEN] [ELSE] уже существуют
|
|
|
|
Добавлено: Вс янв 04, 2009 20:37 |
|
|
|
|