Очень страшное слово. :)

15 messages Options
Embed this post
Permalink
Алексей Царегородцев

Очень страшное слово. :)

Reply Threaded More More options
Print post
Permalink
Доброго времени суток!

Написал вот это вот... Хотелось бы услышать конструктивную критику -
можно ли сделать это как-то
более "фортово"? Или просто более понятно?

\ Расширить макровыражение
\ c-addr1 u1 - Полная строка
\ c-addr2 u2 - Подстрока в пространстве c-addr1 u1,
\              которая является выражением
\ c-addr1 u3 - Результат работы
: expand ( c-addr1 u1 c-addr2 u2 -- c-addr1 u3 )
  { c1 u1 c2 u2 | ce ue diff }

  \ Вычисляем выражение
  c2 u2 EVALUATE TO ue TO ce

  \ Расширяем зону выражения, чтобы включала '$'
  c2 CHAR- TO c2
  u2 2 +   TO u2

  \ Разница длин новой строки и выражения
  ue u2 - TO diff

  \ Перенос правой подстроки
  c2 u2 CHARS +
  DUP diff CHARS +
  OVER c1 - 1 CHARS / u1 SWAP -
  diff 0< IF CMOVE ELSE CMOVE> THEN

  \ Перенос вычисленного выражения
  ce c2 ue CMOVE

  \ Конечный результат
  c1 u1 diff +
;

--
Алексей Царегородцев.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Dmitry Yakimov-2

Re: Очень страшное слово. :)

Reply Threaded More More options
Print post
Permalink
Привет,

конечно, для этого
1. Не нужно использовать локальные переменные
2. Разбить на несколько других слов
3. Если слова однострочные то комментарии не нужны

без локальных переменных прекрасно можно писать, я например считаю это
костылем.

Алексей Царегородцев wrote:

> Доброго времени суток!
>
> Написал вот это вот... Хотелось бы услышать конструктивную критику -
> можно ли сделать это как-то
> более "фортово"? Или просто более понятно?
>
> \ Расширить макровыражение
> \ c-addr1 u1 - Полная строка
> \ c-addr2 u2 - Подстрока в пространстве c-addr1 u1,
> \              которая является выражением
> \ c-addr1 u3 - Результат работы
> : expand ( c-addr1 u1 c-addr2 u2 -- c-addr1 u3 )
>   { c1 u1 c2 u2 | ce ue diff }
>
>   \ Вычисляем выражение
>   c2 u2 EVALUATE TO ue TO ce
>
>   \ Расширяем зону выражения, чтобы включала '$'
>   c2 CHAR- TO c2
>   u2 2 +   TO u2
>
>   \ Разница длин новой строки и выражения
>   ue u2 - TO diff
>
>   \ Перенос правой подстроки
>   c2 u2 CHARS +
>   DUP diff CHARS +
>   OVER c1 - 1 CHARS / u1 SWAP -
>   diff 0< IF CMOVE ELSE CMOVE> THEN
>
>   \ Перенос вычисленного выражения
>   ce c2 ue CMOVE
>
>   \ Конечный результат
>   c1 u1 diff +
> ;
>
> --
> Алексей Царегородцев.
>
>  
Дмитрий.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
azekeprofit

Re: Очень страшное слово. :)

Reply Threaded More More options
Print post
Permalink
In reply to this post by Алексей Царегородцев
Алексей Царегородцев wrote:
Доброго времени суток!

Написал вот это вот... Хотелось бы услышать конструктивную критику -
можно ли сделать это как-то более "фортово"? Или просто более понятно?
Вообще "фортово" -- это довольно расплывчато. У каждого достаточно расплывчато. Не, понятно что есть методики проверенные временем (типа добрых советов от Броуди), но ведь и пишут всё это разные люди.

Алексей Царегородцев wrote:
\ Расширить макровыражение
\ c-addr1 u1 - Полная строка
\ c-addr2 u2 - Подстрока в пространстве c-addr1 u1,
\              которая является выражением
\ c-addr1 u3 - Результат работы
Если хотелось по поводу того как сделать "более понятно"... Надо было объяснить что именно делает это слово и если всё таки видно что описание получается всё равно непонятно -- то пример "на пальцах", типа:

: hi S" hello" ;
S" abcd{hi}ef" OVER 5 + 2 expand TYPE
\ вывод: abcd{hello}ef

Если есть желание посмотреть, как были сделаны подобные вещи, см. ~nn/lib/subst.f (должен быть в старых дистрах SPF или в исходниках nnCron) и ~ac\lib\str5.f (насколько я понял мимолётным взглядом, расширение строк там делает внутреннее слово реализации (") )

По реализации конечно туча вопросов (типа: а кто строки снимать будет, а что если результат расширения окажется длинней шаблона) но едва про это их честно спрашивать -- ведь это ж так, почеркушки для вкуривания, как я понимаю.
Алексей Царегородцев

Re: Очень страшное слово. :)

Reply Threaded More More options
Print post
Permalink
In reply to this post by Dmitry Yakimov-2
Доброго времени суток!

> конечно, для этого
> 1. Не нужно использовать локальные переменные
> 2. Разбить на несколько других слов
> 3. Если слова однострочные то комментарии не нужны

Енто, наверное, действительно костыль, но тот же Броуди их
рекомендовал в некоторых случаях. Можно увидеть ваш вариант?

--
Алексей Царегородцев.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Алексей Царегородцев

Re: Очень страшное слово. :)

Reply Threaded More More options
Print post
Permalink
In reply to this post by azekeprofit
Доброго времени суток!

> Если есть желание посмотреть, как были сделаны подобные вещи, см.
> ~nn/lib/subst.f (должен быть в старых дистрах SPF или в исходниках
> nnCron) и
> ~ac\lib\str5.f (насколько я понял мимолётным взглядом, расширение
строк
> там
> делает внутреннее слово реализации (") )

Спасибо за наводку, попробую разобраться, хотя, имхо, в обоих с
комментариями проблемы...

--
Алексей Царегородцев.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
ygrek-3

Re: Очень страшное слово. :)

Reply Threaded More More options
Print post
Permalink
 
> Спасибо за наводку, попробую разобраться, хотя, имхо, в обоих с
> комментариями проблемы...

Я не совсем понял чего требуется в исходной задаче, но на всякий случай посмотрите
~pinka/samples/2005/lib/split.f и replace-str.f

PS http://spf.sf.net/docs/devel.ru.html#str

--


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev

attachment0 (196 bytes) Download Attachment
1001

Re: Очень страшное слово. :)

Reply Threaded More More options
Print post
Permalink
In reply to this post by Алексей Царегородцев
Алексей Царегородцев,

Алексей Царегородцев wrote:
Написал вот это вот... Хотелось бы услышать конструктивную критику -
можно ли сделать это как-то
более "фортово"? Или просто более понятно?
чтобы сделать проще - начинай с постановки задачи.

она звучит не совсем "фортово".
например: зачем нужно слово с неизвестным именем?
наверно можно сделать как-то по-другому.


:my-word-$some$
      S" $test$"
      TYPE CR
    ;


Андрей Черезов в молодости написал "правила упрощения" -
очень рекомендую почитать. (Броуди нервно курит)

Алексей Царегородцев

Re: Очень страшное слово. :)

Reply Threaded More More options
Print post
Permalink
Доброго времени суток!

> она звучит не совсем "фортово".
> например: зачем нужно слово с неизвестным именем?
> наверно можно сделать как-то по-другому.

Всё можно сделать через одно место, но меня сейчас волнует более
академический
вопрос - можно ли УДОБНО в Форте использовать вещи, к которым привык -
метапрограммирование, в частности.

>
> Андрей Черезов в молодости написал "правила упрощения" -
> очень рекомендую почитать. (Броуди нервно курит)

Э... урл?

--
Алексей Царегородцев.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Алексей Царегородцев

Re: Очень страшное слово. :)

Reply Threaded More More options
Print post
Permalink
In reply to this post by ygrek-3
> Я не совсем понял чего требуется в исходной задаче,

Гм... Написать слово с заданным поведением, ессно.

> но на всякий случай
> посмотрите
> ~pinka/samples/2005/lib/split.f и replace-str.f

Вот этого примерно я и старался избежать:

: REPLACE-TO ( a u a-k u-k a-new u-new a-dst u-dst-max -- a-dst u )


Фокус ведь не в том, чтобы покрутиться на стеке - я это и сам могу -
фокус в том,
чтобы этого делать не пришлось. Тот же Броуди говорил о трёх параметрах
на стеке,
как разумном пределе. Имхо - пары c-addr u и т.п. можно, конечно,
рассматривать
логически как один параметр - пока они не обрабатываются. ;) В интервью
Мура
(где-то, помнится, лежало переведённое) он говорил о том же. В т.ч. о
своём форт-процессоре,
у которого, помнится, глубина стека вообще 8 ячеек (если не путаю).

--
Алексей Царегородцев.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
1001

Re: Очень страшное слово. :)

Reply Threaded More More options
Print post
Permalink
In reply to this post by Алексей Царегородцев
Алексей Царегородцев,
> Доброго времени суток!
>
>  
>> Андрей Черезов в молодости написал "правила упрощения" -
>> очень рекомендую почитать. (Броуди нервно курит)
>>    
>
> Э... урл?
>  

урла не знаю, а лежит в spf315 в папке "статьи"

~1001

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
ygrek-3

Re: Очень страшное слово. :)

Reply Threaded More More options
Print post
Permalink
In reply to this post by Алексей Царегородцев

> Вот этого примерно я и старался избежать:
>
> : REPLACE-TO ( a u a-k u-k a-new u-new a-dst u-dst-max -- a-dst u )

replace-str- ( s s-old s-new -- )

--


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev

attachment0 (196 bytes) Download Attachment
Andrey Cherezov

Re: Очень страшное слово. :)

Reply Threaded More More options
Print post
Permalink
In reply to this post by 1001
Добрый день, 1001!

Ваше сообщение от 08.10.2007 19:38:
> урла не знаю, а лежит в spf315 в папке "статьи"
>  
http://www.forth.org.ru/~ac/spf-builds/SPF3.1x/spf315.zip


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Алексей Царегородцев

Re: Очень страшное слово. :)

Reply Threaded More More options
Print post
Permalink
In reply to this post by 1001
Доброго времени суток!

> урла не знаю, а лежит в spf315 в папке "статьи"

Гм... туплю, наверное, но где его скачать можно-то?

--
Алексей Царегородцев.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Алексей Царегородцев

Re: Очень страшное слово. :)

Reply Threaded More More options
Print post
Permalink
In reply to this post by ygrek-3
Доброго времени суток!

Наверное, это же лучше. Но, имхо, это скорее разнесённая реализация -
использует,
например, слово SPLIT-, которое тоже из "страшных". :(

> replace-str- ( s s-old s-new -- )

Вообще, интересная задача - как сделать это КРАСИВО. Я тут прикинул пару
вариантов
аналогичных решений на C/C++ (там-то я не сомневаюсь, что есть правильно
:) ) - они
ещё корявее выглядят, как ни странно. :)

--
Алексей Царегородцев.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Алексей Царегородцев

Re: Очень страшное слово. :)

Reply Threaded More More options
Print post
Permalink
In reply to this post by Andrey Cherezov
Доброго времени суток!

> http://www.forth.org.ru/~ac/spf-builds/SPF3.1x/spf315.zip

Спасибо!

--
Алексей Царегородцев.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev