Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: "Слепой" связанный список для описания полей структур |
|
|
VoidVolker писал(а): Я не пытаюсь его навестить. Я просто констатировал факт, что поведение таких слово соответствует поведению статического класса с методами. Если смотреть на Форт с точки зрения ООП - то словари и есть статические классы/пространства имен. Которые, правда можно и в рантайме генерировать - в силу особенностей самого Форта. Согласен с этлй точкой зрения
[quote="VoidVolker"]Я не пытаюсь его навестить. Я просто констатировал факт, что поведение таких слово соответствует поведению статического класса с методами. Если смотреть на Форт с точки зрения ООП - то словари и есть статические классы/пространства имен. Которые, правда можно и в рантайме генерировать - в силу особенностей самого Форта.[/quote] Согласен с этлй точкой зрения :(
|
|
|
|
Добавлено: Вт окт 24, 2017 21:13 |
|
|
|
|
|
Заголовок сообщения: |
Re: "Слепой" связанный список для описания полей структур |
|
|
Все фортеры это Ленин - Мы идём другим путём
Все фортеры это Ленин - Мы идём другим путём :D
|
|
|
|
Добавлено: Вт окт 24, 2017 17:58 |
|
|
|
|
|
Заголовок сообщения: |
Re: "Слепой" связанный список для описания полей структур |
|
|
Я не пытаюсь его навестить. Я просто констатировал факт, что поведение таких слово соответствует поведению статического класса с методами. Если смотреть на Форт с точки зрения ООП - то словари и есть статические классы/пространства имен. Которые, правда можно и в рантайме генерировать - в силу особенностей самого Форта.
Я не пытаюсь его навестить. Я просто констатировал факт, что поведение таких слово соответствует поведению статического класса с методами. Если смотреть на Форт с точки зрения ООП - то словари и есть статические классы/пространства имен. Которые, правда можно и в рантайме генерировать - в силу особенностей самого Форта.
|
|
|
|
Добавлено: Вт окт 24, 2017 17:35 |
|
|
|
|
|
Заголовок сообщения: |
Re: "Слепой" связанный список для описания полей структур |
|
|
Код: Так это получается уже статический класс с методами Что все привязались к ООП и попыткам его на форт навесить? Форт уже ООП А товарищ Админ просто хочет слова скрещенные со словарями
[code]Так это получается уже статический класс с методами[/code] Что все привязались к ООП и попыткам его на форт навесить? Форт уже ООП А товарищ Админ просто хочет слова скрещенные со словарями
|
|
|
|
Добавлено: Пн окт 23, 2017 21:31 |
|
|
|
|
|
Заголовок сообщения: |
Re: "Слепой" связанный список для описания полей структур |
|
|
Так это получается уже статический класс с методами Например можно сделать вот так: Код: : Foo
<some code1> public variable Bar public : BarPlus Bar + Bar ! ; public : BarMinus Bar @ SWAP - Bar ! ; ;
Foo.Bar = 100 25 Foo.BarPlus 5 Foo.BarMinus
Так это получается уже статический класс с методами :) Например можно сделать вот так: [code]: Foo
<some code1> public variable Bar public : BarPlus Bar + Bar ! ; public : BarMinus Bar @ SWAP - Bar ! ; ;
Foo.Bar = 100 25 Foo.BarPlus 5 Foo.BarMinus[/code]
|
|
|
|
Добавлено: Пн окт 23, 2017 02:42 |
|
|
|
|
|
Заголовок сообщения: |
Re: "Слепой" связанный список для описания полей структур |
|
|
Вопрос только в том, какой вариант попробовать. 1. Автоматическое подключение локально объявленных слов с видимостью сразу после парсинга. 2. Отдельный спецификатор внутри, показывающий, что это определения, видимые парсеру. 3. Слово ->, подключающее к поиску локальные объявления для следующего прохода поиска.
Везде видны некоторые недостатки. Осталось понять, где их меньше...
Вопрос только в том, какой вариант попробовать. 1. Автоматическое подключение локально объявленных слов с видимостью сразу после парсинга. 2. Отдельный спецификатор внутри, показывающий, что это определения, видимые парсеру. 3. Слово ->, подключающее к поиску локальные объявления для следующего прохода поиска.
Везде видны некоторые недостатки. Осталось понять, где их меньше...
|
|
|
|
Добавлено: Пт окт 06, 2017 14:25 |
|
|
|
|
|
Заголовок сообщения: |
Re: "Слепой" связанный список для описания полей структур |
|
|
Ну так у кого исходники Кварка? Внести в ядро 4-6 слов да обновить интерпретатор
Ну так у кого исходники Кварка? :D Внести в ядро 4-6 слов да обновить интерпретатор
|
|
|
|
Добавлено: Чт окт 05, 2017 19:16 |
|
|
|
|
|
Заголовок сообщения: |
Re: "Слепой" связанный список для описания полей структур |
|
|
Victor__v писал(а): Всовываем это чудо в интерпретатор и всё. Ну вот ради этого все и делается. Работать должно "из коробки", а не после подключения чего-то там и в строго определенных условиях.
[quote="Victor__v"]Всовываем это чудо в интерпретатор и всё.[/quote] Ну вот ради этого все и делается. Работать должно "из коробки", а не после подключения чего-то там и в строго определенных условиях.
|
|
|
|
Добавлено: Чт окт 05, 2017 18:28 |
|
|
|
|
|
Заголовок сообщения: |
Re: "Слепой" связанный список для описания полей структур |
|
|
Цитата: Point1 -> X Ладно при компиляции это сработает -> узнает про список просто проанализировав вызов ранее, но при интерпретации это как должно работать? Ладно я буду исходить из следующего Слово всегда при упоминании включает в поиск свой список и делает заложенные в него действия. Тогда в чём проблема? Скинем всё на флаги пусть тот же Point1 имеет флаг "дополнить поиск" При интерпретации/компиляции поиск дополняется Следующее слово в данном случае Х просто проверяет наличие дополнительного связного списка и, если он есть, отрубает его. Вместо Х может быть любое другое слово из форта. Что-то вроде : Upd-wlist \ flags xt -- OVER &blindBranch = IF \ тут подсоединяем к поиску лок.цепочку ELSE unmount-wlist THEN ; Всовываем это чудо в интерпретатор и всё.
[quote]Point1 -> X[/quote] Ладно при компиляции это сработает -> узнает про список просто проанализировав вызов ранее, но при интерпретации это как должно работать?
Ладно я буду исходить из следующего Слово всегда при упоминании включает в поиск свой список и делает заложенные в него действия.
Тогда в чём проблема? Скинем всё на флаги пусть тот же Point1 имеет флаг "дополнить поиск" При интерпретации/компиляции поиск дополняется Следующее слово в данном случае Х просто проверяет наличие дополнительного связного списка и, если он есть, отрубает его. Вместо Х может быть любое другое слово из форта.
Что-то вроде : Upd-wlist \ flags xt -- OVER &blindBranch = IF \ тут подсоединяем к поиску лок.цепочку ELSE unmount-wlist THEN
;
Всовываем это чудо в интерпретатор и всё.
|
|
|
|
Добавлено: Чт окт 05, 2017 18:24 |
|
|
|
|
|
Заголовок сообщения: |
Re: "Слепой" связанный список для описания полей структур |
|
|
Victor__v писал(а): Как форт-система должна распознать, что тут у нас просто слово test а тут это уже словарь и надо подсоединить список к поиску, не выполняя слово? Стоп, немного не понял. "Просто слово" оно всегда. Однако оно за собой тащит свои локальные определения. Сейчас они доступны внутри этого слова, а я хочу сделать так, чтобы были доступны и сразу за словом. Это действительно чревато тем, что будет перекрытие областей видимости, но тут ведь можно и как-то так: Код: Point1 -> X , где слово -> подключит внутренние слова из Point1, но только на один раз. И Point1 это слово само по себе, которое может что-то делать, но может и не делать, а служить только инструментом указания интерпретатору, где искать дальше.
[quote="Victor__v"]Как форт-система должна распознать, что тут у нас просто слово test а тут это уже словарь и надо подсоединить список к поиску, не выполняя слово?[/quote] Стоп, немного не понял. "Просто слово" оно всегда. Однако оно за собой тащит свои локальные определения. Сейчас они доступны внутри этого слова, а я хочу сделать так, чтобы были доступны и сразу за словом. Это действительно чревато тем, что будет перекрытие областей видимости, но тут ведь можно и как-то так:
[code]Point1 -> X [/code]
, где слово -> подключит внутренние слова из Point1, но только на один раз. И Point1 это слово само по себе, которое может что-то делать, но может и не делать, а служить только инструментом указания интерпретатору, где искать дальше.
|
|
|
|
Добавлено: Чт окт 05, 2017 17:56 |
|
|
|
|
|
Заголовок сообщения: |
Re: "Слепой" связанный список для описания полей структур |
|
|
Цитата: то каждое упоминание в тексте какого-то слова разрешит упоминать после него и любые вложенные в это слово слова А с побочкой как? Слова явно не клоны noop Как его поведение учитывать? Навряд ли захочется писать : TEST 10 20 + LOC[ : TT * 4 ; ]LOC ; LOC: TEST TT Как форт-система должна распознать, что тут у нас просто слово test а тут это уже словарь и надо подсоединить список к поиску, не выполняя слово? А вообще можно поменять порядок X POINT X - слово опр. в POINT Не найдя это слово в словаре, из входного потока берётся слово и проверяется на "словарность"
[quote]то каждое упоминание в тексте какого-то слова разрешит упоминать после него и любые вложенные в это слово слова[/quote]
А с побочкой как? Слова явно не клоны noop Как его поведение учитывать? Навряд ли захочется писать : TEST 10 20 + LOC[ : TT * 4 ; ]LOC ; LOC: TEST TT
Как форт-система должна распознать, что тут у нас просто слово test а тут это уже словарь и надо подсоединить список к поиску, не выполняя слово? А вообще можно поменять порядок X POINT X - слово опр. в POINT Не найдя это слово в словаре, из входного потока берётся слово и проверяется на "словарность"
|
|
|
|
Добавлено: Чт окт 05, 2017 17:32 |
|
|
|
|
|
Заголовок сообщения: |
Re: "Слепой" связанный список для описания полей структур |
|
|
Victor__v писал(а): К примеру из-уже имеющихся в словаре слов создать новый слепой словарь? А зачем лишние телодвижения? Если технология сложна, ей пользоваться не будут. Это только лишние пункты для реализации и заталкивания в головы программистам. Чем мне не понравились "локалсы": слишком много оговорок, и отсутствие ясно понимаемой модели использования. Получилась этакая пародия - "смотрите, у нас как в Си". В текущей реализации LOC[ ]LOC в Кварке локальный список строится только на этапе компиляции слова, и после завершения построенный "отросток" отключается. Если предусмотреть его временное подключение и в режиме интерпретации, то каждое упоминание в тексте какого-то слова разрешит упоминать после него и любые вложенные в это слово слова. Причем именно слова, во всех вариантах, а не какие-то "локалсы", которые имеют размер cell и ведут себя строго определенно. Что интересно, подобный подход реализует и вложенность. Код: : RECT LOC[ : Point1 LOC[ VARIABLE X VARIABLE Y ]LOC ; : Point2 LOC[ VARIABLE X VARIABLE Y ]LOC ; ]LOC
;
...
RECT Point1 X RECT Point1 Y
Надо только подумать над создающими определениями для слов, подобных RECT. Чтобы можно было писать : RECT CREATE RECT RECT1 RECT RECT2 и потом иметь RECT1 Point1 X и т.д.
[quote="Victor__v"]К примеру из-уже имеющихся в словаре слов создать новый слепой словарь?[/quote] А зачем лишние телодвижения? Если технология сложна, ей пользоваться не будут. Это только лишние пункты для реализации и заталкивания в головы программистам. Чем мне не понравились "локалсы": слишком много оговорок, и отсутствие ясно понимаемой модели использования. Получилась этакая пародия - "смотрите, у нас как в Си".
В текущей реализации LOC[ ]LOC в Кварке локальный список строится только на этапе компиляции слова, и после завершения построенный "отросток" отключается. Если предусмотреть его временное подключение и в режиме интерпретации, то каждое упоминание в тексте какого-то слова разрешит упоминать после него и любые вложенные [b]в это слово[/b] слова. Причем именно слова, во всех вариантах, а не какие-то "локалсы", которые имеют размер cell и ведут себя строго определенно. Что интересно, подобный подход реализует и вложенность.
[code]: RECT LOC[ : Point1 LOC[ VARIABLE X VARIABLE Y ]LOC ; : Point2 LOC[ VARIABLE X VARIABLE Y ]LOC ; ]LOC
;
...
RECT Point1 X RECT Point1 Y [/code]
Надо только подумать над создающими определениями для слов, подобных RECT. Чтобы можно было писать
: RECT CREATE
RECT RECT1 RECT RECT2
и потом иметь RECT1 Point1 X и т.д.
|
|
|
|
Добавлено: Чт окт 05, 2017 15:21 |
|
|
|
|
|
Заголовок сообщения: |
Re: "Слепой" связанный список для описания полей структур |
|
|
Victor__v писал(а): При таком подходе слово point1 должно явно или неявно использовать парсинг. Нет, просто оно подключает к поиску свою локальную цепочку слов. POINT1 <- X <- Y - локальные слова, видимые после интерпретации POINT1 ^ | POINT2 <- X <- Y - локальные слова, видимые после интерпретации POINT2 ^ | основная цепочка словаря
[quote="Victor__v"]При таком подходе слово point1 должно явно или неявно использовать парсинг. [/quote] Нет, просто оно подключает к поиску свою локальную цепочку слов.
POINT1 <- X <- Y - локальные слова, видимые после интерпретации POINT1 ^ | POINT2 <- X <- Y - локальные слова, видимые после интерпретации POINT2 ^ | основная цепочка словаря
|
|
|
|
Добавлено: Чт окт 05, 2017 15:14 |
|
|
|
|
|
Заголовок сообщения: |
Re: "Слепой" связанный список для описания полей структур |
|
|
А если зайти с другого боку? К примеру из-уже имеющихся в словаре слов создать новый слепой словарь? Что то вроде Цитата: VARIABLE X VARIABLE Y VARIABLE Z
BLINDER: TEST X Y Z ;
TEST X
TEST при этом тупо берёт слово из входного потока и ищет его внутри своего списка
А если зайти с другого боку? К примеру из-уже имеющихся в словаре слов создать новый слепой словарь? Что то вроде [quote] VARIABLE X VARIABLE Y VARIABLE Z
BLINDER: TEST X Y Z ;
TEST X
[/quote] TEST при этом тупо берёт слово из входного потока и ищет его внутри своего списка
|
|
|
|
Добавлено: Чт окт 05, 2017 14:55 |
|
|
|
|
|
Заголовок сообщения: |
Re: "Слепой" связанный список для описания полей структур |
|
|
А-а, структурки, что-то такое я предполагал. Ну и как это можно реализовать? Цитата: POINT1 X @ При таком подходе слово point1 должно явно или неявно использовать парсинг. Как я понял ещё подразумевается использования слова point1 отдельно? Если да, то возможны неприятные ситуации Легче реализовать таким образом POINT.X @ Изменения в интерпретатор минимальны относительно, конечно. Пример Код: :interpret begin parse-name dup while sfind if .... else 2dup s" ." split if 2swap blindbranch? if ( a u lfa ) sfind-in-blind if >r 2drop r> .... then else notfound then then repeat ;
А-а, структурки, что-то такое я предполагал. Ну и как это можно реализовать? [quote]POINT1 X @[/quote] При таком подходе слово point1 должно явно или неявно использовать парсинг. Как я понял ещё подразумевается использования слова point1 отдельно? Если да, то возможны неприятные ситуации Легче реализовать таким образом POINT.X @ Изменения в интерпретатор минимальны относительно, конечно. Пример [code] :interpret begin parse-name dup while sfind if .... else 2dup s" ." split if 2swap blindbranch? if ( a u lfa ) sfind-in-blind if >r 2drop r> .... then else notfound then then repeat ; [/code]
|
|
|
|
Добавлено: Чт окт 05, 2017 14:50 |
|
|
|
|