Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: История LITARAL |
|
|
Все равно немного не понимаю, почему бы код, пишущийся при разработке один раз, не создавать так, как это удобно. Смотреть, есть ли соответствующие слова, чтобы выразить на Форте все, что можно... была такая волна, но смысл от меня ускользает.
Все равно немного не понимаю, почему бы код, пишущийся при разработке один раз, не создавать так, как это удобно. Смотреть, есть ли соответствующие слова, чтобы выразить на Форте все, что можно... была такая волна, но смысл от меня ускользает.
|
|
|
|
Добавлено: Вт июн 09, 2020 02:57 |
|
|
|
|
|
Заголовок сообщения: |
Re: История LITARAL |
|
|
mOleg писал(а): Стандарт явно ориентировался на систему с косвенным ШК, причем только (без учета других вариантов) имхо Так с прямым шитым кодом будет то-же что с косвенным. Вот так у меня в Форте с прямым шитым кодом : Код: $COLON $IMMED+7, 'LITERAL', LITERAL DW STATE, FETCH, QUERY_BRANCH, @@1 DW COMPILE, LIT, COMMA @@1 DW EXIT Вот так в Форте с косвенным шитым кодом : Код: ENTRY 7+40h, 'LITERAL', LITERAL DD DoCOLON DD STATE, FETCH DD ZERO_BRANCH, LITERAL_-$ DD COMPILE, LIT, COMMA LITERAL_ DD EXIT Т.е. для этих ШК абсолютно одно и то-же : LITERAL STATE @ IF COMPILE LIT , THEN ; IMMEDIATE А в Форте с подпрограммным шитым кодом для Atmel AVR: Код: LITERAL: rcall STATE ;; LITERAL rcall FETCH rcall QUERY_BRANCH ret rcall LIT .DW 2 * LIT rcall COMPILE_COMMA rjmp COMMA (тут QUERY_BRANCH (по фортовски ?BRANCH) или перепрыгивает через следующую команду (которая обычно rjmp, но вот тут красиво всандалилось ret) или не перепрыгивает. Используется то, что в AVR все команды одинаковы в длину). Что по Фортовски означает : LITERAL STATE @ IF ['] LIT COMPILE, , THEN ; IMMEDIATE т.е. для любых ШК этот LITERAL определяется близкими вариациями на одну и ту-же тему. Victor__v писал(а): Вариант 1 : LIT, COMPILE LIT , ; Ну так тогда если идти через определение LIT, : -1 -1 STATE @ IF LIT, THEN ; IMMEDIATE а если идти через определение LITERAL : -1 -1 [COMPILE] LITERAL ; IMMEDIATE Второе-же позволяет иметь единственное ветвление по STATE внутри LITERAL
[quote="mOleg"]Стандарт явно ориентировался на систему с косвенным ШК, причем только (без учета других вариантов) имхо[/quote]Так с прямым шитым кодом будет то-же что с косвенным. Вот так у меня в Форте с прямым шитым кодом : [code] $COLON $IMMED+7, 'LITERAL', LITERAL DW STATE, FETCH, QUERY_BRANCH, @@1 DW COMPILE, LIT, COMMA @@1 DW EXIT[/code] Вот так в Форте с косвенным шитым кодом : [code] ENTRY 7+40h, 'LITERAL', LITERAL DD DoCOLON DD STATE, FETCH DD ZERO_BRANCH, LITERAL_-$ DD COMPILE, LIT, COMMA LITERAL_ DD EXIT[/code] Т.е. для этих ШК абсолютно одно и то-же : LITERAL STATE @ IF COMPILE LIT , THEN ; IMMEDIATE
А в Форте с подпрограммным шитым кодом для Atmel AVR: [code]LITERAL: rcall STATE ;; LITERAL rcall FETCH rcall QUERY_BRANCH ret rcall LIT .DW 2 * LIT rcall COMPILE_COMMA rjmp COMMA[/code] (тут QUERY_BRANCH (по фортовски ?BRANCH) или перепрыгивает через следующую команду (которая обычно rjmp, но вот тут красиво всандалилось ret) или не перепрыгивает. Используется то, что в AVR все команды одинаковы в длину). Что по Фортовски означает : LITERAL STATE @ IF ['] LIT COMPILE, , THEN ; IMMEDIATE
т.е. для любых ШК этот LITERAL определяется близкими вариациями на одну и ту-же тему.
[quote="Victor__v"] :dmad; :dmad; :dmad; Вариант 1 : LIT, COMPILE LIT , ; [/quote]Ну так тогда если идти через определение LIT, : -1 -1 STATE @ IF LIT, THEN ; IMMEDIATE а если идти через определение LITERAL : -1 -1 [COMPILE] LITERAL ; IMMEDIATE Второе-же позволяет иметь единственное ветвление по STATE внутри LITERAL
|
|
|
|
Добавлено: Пн июн 08, 2020 21:31 |
|
|
|
|
|
Заголовок сообщения: |
Re: История LITARAL |
|
|
Ethereal писал(а): Victor__v писал(а): Ну пусть будет : LIT, COMPILE LIT , ; : LIT, 0x68 C, , ; Так тут ты выкрасил и выбросил. Определил LIT, а потом перекрыл. Вариант 1 : LIT, COMPILE LIT , ; Вариант 2 : LIT, 0x68 C, , ; Так понятней?
[quote="Ethereal"][quote="Victor__v"]Ну пусть будет : LIT, COMPILE LIT , ; : LIT, 0x68 C, , ;[/quote]Так тут ты выкрасил и выбросил. Определил LIT, а потом перекрыл.[/quote]
:dmad; :dmad; :dmad; Вариант 1 : LIT, COMPILE LIT , ; Вариант 2 : LIT, 0x68 C, , ;
Так понятней?
|
|
|
|
Добавлено: Пн июн 08, 2020 19:24 |
|
|
|
|
|
Заголовок сообщения: |
Re: История LITARAL |
|
|
Стандарт явно ориентировался на систему с косвенным ШК, причем только (без учета других вариантов) имхо
Стандарт явно ориентировался на систему с косвенным ШК, причем только (без учета других вариантов) имхо
|
|
|
|
Добавлено: Пн июн 08, 2020 18:33 |
|
|
|
|
|
Заголовок сообщения: |
Re: История LITARAL |
|
|
Victor__v писал(а): Ну пусть будет : LIT, COMPILE LIT , ; : LIT, 0x68 C, , ; Так тут ты выкрасил и выбросил. Определил LIT, а потом перекрыл.
[quote="Victor__v"]Ну пусть будет : LIT, COMPILE LIT , ; : LIT, 0x68 C, , ;[/quote]Так тут ты выкрасил и выбросил. Определил LIT, а потом перекрыл.
|
|
|
|
Добавлено: Пн июн 08, 2020 13:23 |
|
|
|
|
|
Заголовок сообщения: |
Re: История LITARAL |
|
|
Ethereal писал(а): Вот и вопрос ко стандарту. Почему там нет слова, которое нужно для реализации LITERAL?
Так это ОДИН ИЗ вариантов и он появится скорей всего при подпрограммном ШК. А в случае прямого или косвенного ШК скорее будет так : LITERAL STATE @ IF COMPILE LIT , THEN ; IMMEDIATE В случае нативного например так : LITERAL STATE @ IF 68 C, , THEN ; IMMEDIATE Что тут стандартизовывать, коли в этом месте развилка на варианты, причем для разных ШК естественными будут разные ? Этот момент как раз и оставляется на усмотрение реализации. Все логично.[/quote] Ну пусть будет : LIT, COMPILE LIT , ; : LIT, 0x68 C, , ; И? Тоже логично между прочим)
[quote="Ethereal"]
Вот и вопрос ко стандарту. Почему там нет слова, которое нужно для реализации LITERAL?[/quote]Так это ОДИН ИЗ вариантов и он появится скорей всего при подпрограммном ШК. А в случае прямого или косвенного ШК скорее будет так : LITERAL STATE @ IF COMPILE LIT , THEN ; IMMEDIATE В случае нативного например так : LITERAL STATE @ IF 68 C, , THEN ; IMMEDIATE
Что тут стандартизовывать, коли в этом месте развилка на варианты, причем для разных ШК естественными будут разные ? Этот момент как раз и оставляется на усмотрение реализации. Все логично.[/quote] Ну пусть будет : LIT, COMPILE LIT , ; : LIT, 0x68 C, , ; И? Тоже логично между прочим)
|
|
|
|
Добавлено: Пн июн 08, 2020 13:04 |
|
|
|
|
|
Заголовок сообщения: |
Re: История LITARAL |
|
|
Victor__v писал(а): Вы же сами пример реализации приводите : LITERAL STATE @ IF LIT, THEN ; IMMEDIATE
Вот и вопрос ко стандарту. Почему там нет слова, которое нужно для реализации LITERAL? Так это ОДИН ИЗ вариантов и он появится скорей всего при подпрограммном ШК. А в случае прямого или косвенного ШК скорее будет так : LITERAL STATE @ IF COMPILE LIT , THEN ; IMMEDIATE В случае нативного например так : LITERAL STATE @ IF 68 C, , THEN ; IMMEDIATE Что тут стандартизовывать, коли в этом месте развилка на варианты, причем для разных ШК естественными будут разные ? Этот момент как раз и оставляется на усмотрение реализации. Все логично. Victor__v писал(а): Код: 0 [ ' DlgProc CFA ] LITERAL И чем это выгодно отличается от Код: 0 [ ' DlgProc CFA LIT, ] [ считаем_выражение ] LITERAL Если кросс-компиляция, то считаем_выражение должно выполняться в контексте словаря host-машины, а компиляция результата этого выражения в контексте словаря COMPILER в код target-машины. ] переключит словари. Т.е. компиляция изнутри [ ] не есть гуд в свете того, что Форт до кучи кросс-компилятор самого себя. Думаю так.
[quote="Victor__v"]Вы же сами пример реализации приводите : LITERAL STATE @ IF LIT, THEN ; IMMEDIATE
Вот и вопрос ко стандарту. Почему там нет слова, которое нужно для реализации LITERAL?[/quote]Так это ОДИН ИЗ вариантов и он появится скорей всего при подпрограммном ШК. А в случае прямого или косвенного ШК скорее будет так : LITERAL STATE @ IF COMPILE LIT , THEN ; IMMEDIATE В случае нативного например так : LITERAL STATE @ IF 68 C, , THEN ; IMMEDIATE
Что тут стандартизовывать, коли в этом месте развилка на варианты, причем для разных ШК естественными будут разные ? Этот момент как раз и оставляется на усмотрение реализации. Все логично. [quote="Victor__v"][code]0 [ ' DlgProc CFA ] LITERAL[/code] И чем это выгодно отличается от [code]0 [ ' DlgProc CFA LIT, ] [/code] [/quote][ считаем_выражение ] LITERAL Если кросс-компиляция, то считаем_выражение должно выполняться в контексте словаря host-машины, а компиляция результата этого выражения в контексте словаря COMPILER в код target-машины. ] переключит словари. Т.е. компиляция изнутри [ ] не есть гуд в свете того, что Форт до кучи кросс-компилятор самого себя. Думаю так.
|
|
|
|
Добавлено: Пн июн 08, 2020 12:38 |
|
|
|
|
|
Заголовок сообщения: |
Re: История LITARAL |
|
|
Цитата: Не понятно что ты тут вытворяешь Я вообще в качестве примера сделал слово для компиляции вызова слова с 1 аргументом по умолчанию, -1 то есть. Вся эквелибристика с режимом компиляции, чтоб LITERAL работал как надо. Цитата: Как-то ты неправильно воспринимаешь стандарт. Если в стандарте нет, то и не должно быть - совершенно неправильное понимание.
Да ну? Вы же сами пример реализации приводите : LITERAL STATE @ IF LIT, THEN ; IMMEDIATE Вот и вопрос ко стандарту. Почему там нет слова, которое нужно для реализации LITERAL? Какая-то узконаправленная хренотень есть, а так и напрашивающегося компилирующего примитива нет? Цитата: Так это для тебя смысл или для Мура смысл ? А Мур-то тут причем? Код: 0 [ ' DlgProc CFA ] LITERAL И чем это выгодно отличается от Код: 0 [ ' DlgProc CFA LIT, ] ???
[quote]Не понятно что ты тут вытворяешь[/quote] Я вообще в качестве примера сделал слово для компиляции вызова слова с 1 аргументом по умолчанию, [b]-1[/b] то есть. Вся эквелибристика с режимом компиляции, чтоб LITERAL работал как надо.
[quote] Как-то ты неправильно воспринимаешь стандарт. Если в стандарте нет, то и не должно быть - совершенно неправильное понимание. [/quote] Да ну?
Вы же сами пример реализации приводите : LITERAL STATE @ IF LIT, THEN ; IMMEDIATE
Вот и вопрос ко стандарту. Почему там нет слова, которое нужно для реализации LITERAL? Какая-то узконаправленная хренотень есть, а так и напрашивающегося компилирующего примитива нет?
[quote]Так это для тебя смысл или для Мура смысл ?[/quote] А Мур-то тут причем?
[code]0 [ ' DlgProc CFA ] LITERAL[/code] И чем это выгодно отличается от [code]0 [ ' DlgProc CFA LIT, ] [/code] ???
|
|
|
|
Добавлено: Пн июн 08, 2020 12:01 |
|
|
|
|
|
Заголовок сообщения: |
Re: История LITARAL |
|
|
Victor__v писал(а): Это, блин, компилирующее слово, но его хрен используешь для компилирующих связок! Что-то вроде : -1call STATE @ -1 STATE ! -1 [COMPILE] LITERAL ' COMPILE, STATE ! ; IMMEDIATE И вот такую херню надо делать, чтобы использовать LITERAL
Не понятно что ты тут вытворяешь. Если у тебя слово IMMEDIATE значит оно для режима компиляции. Зачем ты в нем еще раз включаешь режим компиляции, когда он итак наготово ? Чтобы работало в обоих режимах, тогда зачем режим компиляции вне зависимости от того, что был ? Если шитый код прямой или косвенный само просится : -1 -1 STATE @ IF COMPILE LIT , THEN ; IMMEDIATE А LITERAL он совершенно не про это. Victor__v писал(а): Напоминаю, что других слов для компиляции чисел в ansi94 нет. Ввели бы слово LIT, по аналогии с COMPILE, и проблемы бы не было. Как-то ты неправильно воспринимаешь стандарт. Если в стандарте нет, то и не должно быть - совершенно неправильное понимание. В стандарте все, что относится к внутренней кухне Форта отдано на откуп разработчику. В стандарт вынесено только то, что делает ANS-совместимые прикладные программы переносимыми. LIT и LIT, не указаны потому, что это внутренняя кухня. Разработчик может их делать, может не делать, в прикладной программе их ведь все равно не будет. Но практическая реализация ans94 да как-же без них ?LIT само просится для прямого и косвенного шитого кода, а LIT, для подпрограммного и нативного. : -1 -1 STATE @ IF LIT, THEN ; IMMEDIATE А вообще-то почему LITERAL не про это ? Если вдуматься, то про это ! : LITERAL STATE @ IF LIT, THEN ; IMMEDIATE : -1 -1 [COMPILE] LITERAL ; IMMEDIATE Ведь также будет верно работать и в режиме компиляции и в режиме интерпретации ! А вот так вот вообще без LIT, (32-разрядный 80x86) : LITERAL STATE @ IF 68 C, , THEN ; IMMEDIATE : -1 -1 [COMPILE] LITERAL ; IMMEDIATE где 68h - опкод команды push imm32Гы-гы (оптимизация заменой push imm32 на push imm8 при возможности) : : LITERAL STATE @ IF DUP 80 + 100 U< IF 6A C, C, ELSE 68 C, , THEN THEN ; IMMEDIATE
[quote="Victor__v"]Это, блин, компилирующее слово, но его хрен используешь для компилирующих связок! Что-то вроде : -1call STATE @ -1 STATE ! -1 [COMPILE] LITERAL ' COMPILE, STATE ! ; IMMEDIATE И вот такую херню надо делать, чтобы использовать LITERAL [/quote]Не понятно что ты тут вытворяешь. Если у тебя слово IMMEDIATE значит оно для режима компиляции. Зачем ты в нем еще раз включаешь режим компиляции, когда он итак наготово ? Чтобы работало в обоих режимах, тогда зачем режим компиляции вне зависимости от того, что был ? Если шитый код прямой или косвенный само просится : -1 -1 STATE @ IF COMPILE LIT , THEN ; IMMEDIATE А LITERAL он совершенно не про это. [quote="Victor__v"]Напоминаю, что других слов для компиляции чисел в ansi94 нет. Ввели бы слово [b]LIT,[/b] по аналогии с [b]COMPILE,[/b] и проблемы бы не было.[/quote]Как-то ты неправильно воспринимаешь стандарт. Если в стандарте нет, то и не должно быть - совершенно неправильное понимание. В стандарте все, что относится к внутренней кухне Форта отдано на откуп разработчику. В стандарт вынесено только то, что делает ANS-совместимые прикладные программы переносимыми. LIT и LIT, не указаны потому, что это внутренняя кухня. Разработчик может их делать, может не делать, в прикладной программе их ведь все равно не будет. [b]Но практическая реализация ans94 да как-же без них ?[/b] LIT само просится для прямого и косвенного шитого кода, а LIT, для подпрограммного и нативного. : -1 -1 STATE @ IF LIT, THEN ; IMMEDIATE
[b]А вообще-то почему LITERAL не про это ? Если вдуматься, то про это ! : LITERAL STATE @ IF LIT, THEN ; IMMEDIATE : -1 -1 [COMPILE] LITERAL ; IMMEDIATE Ведь также будет верно работать и в режиме компиляции и в режиме интерпретации ! А вот так вот вообще без LIT, (32-разрядный 80x86) : LITERAL STATE @ IF 68 C, , THEN ; IMMEDIATE : -1 -1 [COMPILE] LITERAL ; IMMEDIATE где 68h - опкод команды push imm32[/b]
Гы-гы (оптимизация заменой push imm32 на push imm8 при возможности) : : LITERAL STATE @ IF DUP 80 + 100 U< IF 6A C, C, ELSE 68 C, , THEN THEN ; IMMEDIATE
|
|
|
|
Добавлено: Пн июн 08, 2020 06:04 |
|
|
|
|
|
Заголовок сообщения: |
Re: История LITARAL |
|
|
Victor__v писал(а): Это слово черезчур умное. Из-за чего оно работает в очень редких случаях. Смысл? Так это для тебя смысл или для Мура смысл ? Для Мура большой смысл имело слово : RECOVER -1 ALLOT ; Оно на тот случай если EXIT генерируемое ; исполняться не будет. Значит эту бесполезно занятую ячейку памяти с EXIT надо обратно пустить в дело. Применение (FIG-Forth, ' дает адрес поля параметров) : : MAIN 0 [ ' DlgProc CFA ] LITERAL 0 ID_Dialog 0 DialogBoxParamA \ DROP BYE ; RECOVER Кстати, заодно и LITERAL в примере
[quote="Victor__v"]Это слово черезчур умное. Из-за чего оно работает в очень редких случаях. Смысл?[/quote]Так это для тебя смысл или для Мура смысл ? Для Мура большой смысл имело слово : RECOVER -1 ALLOT ; Оно на тот случай если EXIT генерируемое ; исполняться не будет. Значит эту бесполезно занятую ячейку памяти с EXIT надо обратно пустить в дело. Применение (FIG-Forth, ' дает адрес поля параметров) : : MAIN 0 [ ' DlgProc CFA ] LITERAL 0 ID_Dialog 0 DialogBoxParamA \ DROP BYE ; RECOVER Кстати, заодно и LITERAL в примере
|
|
|
|
Добавлено: Пн июн 08, 2020 05:18 |
|
|
|
|
|
Заголовок сообщения: |
Re: История LITARAL |
|
|
mOleg писал(а): оно достаточно полезное, В каком месте? Ну вот можно сделать так: : test [ 10 20 + ] LITERAL ; Или вот так. NONAME: 10 . : test LITERAL ; А ещё? Это, блин, компилирующее слово, но его хрен используешь для компилирующих связок! Что-то вроде : -1call STATE @ -1 STATE ! -1 [COMPILE] LITERAL ' COMPILE, STATE ! ; IMMEDIATE И вот такую херню надо делать, чтобы использовать LITERAL Напоминаю, что других слов для компиляции чисел в ansi94 нет. Ввели бы слово LIT, по аналогии с COMPILE, и проблемы бы не было. Ну и смысл в слове, которое годится лишь на заплатку? mOleg писал(а): более того, я ввел в дополнение к LITERAL еще и Насколько целесообразны дополнения надо смотреть как сделано ядро. Например, REGULAR , как понимаю, используется часто. У меня в Нове всего один раз в интерпретаторе, так что потребности в слове нет.
[quote="mOleg"]оно достаточно полезное,[/quote] В каком месте? Ну вот можно сделать так: : test [ 10 20 + ] LITERAL ; Или вот так. NONAME: 10 . : test LITERAL ; А ещё? Это, блин, компилирующее слово, но его хрен используешь для компилирующих связок! Что-то вроде : -1call STATE @ -1 STATE ! -1 [COMPILE] LITERAL ' COMPILE, STATE ! ; IMMEDIATE И вот такую херню надо делать, чтобы использовать LITERAL Напоминаю, что других слов для компиляции чисел в ansi94 нет. Ввели бы слово [b]LIT,[/b] по аналогии с [b]COMPILE,[/b] и проблемы бы не было.
Ну и смысл в слове, которое годится лишь на заплатку?
[quote="mOleg"]более того, я ввел в дополнение к LITERAL еще и [/quote] Насколько целесообразны дополнения надо смотреть как сделано ядро.
Например, REGULAR , как понимаю, используется часто. У меня в Нове всего один раз в интерпретаторе, так что потребности в слове нет.
|
|
|
|
Добавлено: Пт июн 05, 2020 11:01 |
|
|
|
|
|
Заголовок сообщения: |
Re: История LITARAL |
|
|
mOleg писал(а): Безусловно можно все делать на "подпорках", можно включать в код "магические числа", но код становится менее читабелен. Реализация на исходном языке (ассемблер, Си...) явно не относится к реализации "на подпорках". Одна строка на Форте, которая в таком составе пишется один раз, имеет хорошие перспективы попасть в ядро - кода меньше, накладные расходы на стековые операции уберутся компилятором. Если с какого-то момента слова можно описывать на Форте, это не означает, что только на Форте их и нужно описывать.
[quote="mOleg"]Безусловно можно все делать на "подпорках", можно включать в код "магические числа", но код становится менее читабелен.[/quote] Реализация на исходном языке (ассемблер, Си...) явно не относится к реализации "на подпорках". Одна строка на Форте, которая в таком составе пишется один раз, имеет хорошие перспективы попасть в ядро - кода меньше, накладные расходы на стековые операции уберутся компилятором. Если с какого-то момента слова можно описывать на Форте, это не означает, что только на Форте их и нужно описывать.
|
|
|
|
Добавлено: Чт июн 04, 2020 19:55 |
|
|
|
|
|
Заголовок сообщения: |
Re: История LITARAL |
|
|
Hishnik писал(а): Это же тоже из серии "пишем один раз за время жизни этого транслятора". Безусловно можно все делать на "подпорках", можно включать в код "магические числа", но код становится менее читабелен. Мне хотелось, чтобы внутри система была непротиворечива и понятна, чтобы она содержала минимум трюков и магических вещей. поэтому магический POSTPONE я исключил (из ядра по крайней мере), а понятный и имеющий собственный смысл REGULAR включил в код.
[quote="Hishnik"]Это же тоже из серии "пишем один раз за время жизни этого транслятора".[/quote] Безусловно можно все делать на "подпорках", можно включать в код "магические числа", но код становится менее читабелен. Мне хотелось, чтобы внутри система была непротиворечива и понятна, чтобы она содержала минимум трюков и магических вещей. поэтому магический POSTPONE я исключил (из ядра по крайней мере), а понятный и имеющий собственный смысл REGULAR включил в код.
|
|
|
|
Добавлено: Чт июн 04, 2020 19:48 |
|
|
|
|
|
Заголовок сообщения: |
Re: История LITARAL |
|
|
mOleg писал(а): : TO ( n / name --> ) ' TOKEN + REGULAR ; IMMEDIATE Это же тоже из серии "пишем один раз за время жизни этого транслятора".
[quote="mOleg"]: TO ( n / name --> ) ' TOKEN + REGULAR ; IMMEDIATE[/quote] Это же тоже из серии "пишем один раз за время жизни этого транслятора".
|
|
|
|
Добавлено: Ср июн 03, 2020 20:28 |
|
|
|
|
|
Заголовок сообщения: |
Re: История LITARAL |
|
|
Victor__v писал(а): Это слово черезчур умное. оно достаточно полезное, более того, я ввел в дополнение к LITERAL еще и : REGULAR ( xt --> ) state IF COMPILE, ;THEN EXECUTE ; которое удобно использовать, например так: : TO ( n / name --> ) ' TOKEN + REGULAR ; IMMEDIATE
[quote="Victor__v"]Это слово черезчур умное.[/quote] оно достаточно полезное, более того, я ввел в дополнение к LITERAL еще и : REGULAR ( xt --> ) state IF COMPILE, ;THEN EXECUTE ; которое удобно использовать, например так: : TO ( n / name --> ) ' TOKEN + REGULAR ; IMMEDIATE
|
|
|
|
Добавлено: Ср июн 03, 2020 19:33 |
|
|
|
|