LINUX.ORG.RU

История изменений

Исправление MOPKOBKA, (текущая версия) :

А какие ещё атрибуты используешь?

Из интересного только constant, тогда вместо указателя на слово, в словаре хранится само значение константы. Это полезно что бы не трогать память под код слов при определении константы, и можно без проблем во время определения нового слова создавать константы которые не будут влиять на тело создаваемого определения.

А как в Форте реализован аналог сишного #include

У меня стек включаемых файлов (их контента), INCLUDE добавляет файл в этот стек. Функция чтения исходного кода читает по этому стеку с конца как и полагается, как прочитает один файл, делает DROP, читает другой.

Стек это вообще удобно. Повышает удобство, и типобезопасность. Если float в отдельном стеке, это удобнее, не мешаются на общем стеке. Так же можно завести стек для строк отдельный. Строка это два значения на стеке, жутко неудобно, а если сделать свой стек, то можно это все удобно представить, указатель + длинна будет одним значением для стека строк.

Я заметил флоатов у тебя нету. Может и не будет? Тогда нужно добавить функцию https://forth-standard.org/standard/core/TimesDiv

7 / 2.5 = 2.8

Через эту функцию, можно первым аргументом указать где стоит запятая в дроби, 10 это после первого символа, 100 после второго итд, вторым аргументом указывается делимое, третьим на что делим.

10 70 25 */
= 28

На Forth-83 стандарт поменьше, все требуемые слова умещаются в одну страницу https://forth.sourceforge.net/standard/fst83/fst83-12.htm

В классическом форте файлов не было, он вместо ОС загружался. Вместо файлов просто загружали блоки (секторы диска).

Исправление MOPKOBKA, :

А какие ещё атрибуты используешь?

Из интересного только constant, тогда вместо указателя на слово, в словаре хранится само значение константы. Это полезно что бы не трогать память под код слов при определении константы, и можно без проблем во время определения нового слова создавать константы которые не будут влиять на тело создаваемого определения.

А как в Форте реализован аналог сишного #include

У меня стек включаемых файлов (их контента), INCLUDE добавляет файл в этот стек. Функция чтения исходного кода читает по этому стеку с конца как и полагается, как прочитает один файл, делает DROP, читает другой.

Стек это вообще удобно. Повышает удобство, и типобезопасность. Если float в отдельном стеке, это удобнее, не мешаются на общем стеке. Так же можно завести стек для строк отдельный. Строка это два значения на стеке, жутко неудобно, а если сделать свой стек, то можно это все удобно представить, указатель + длинна будет одним значением для стека строк.

Я заметил флоатов у тебя нету. Может и не будет? Тогда нужно добавить функцию https://forth-standard.org/standard/core/TimesDiv

7 / 2.5 = 2.8

Через эту функцию, можно первым аргументом указать где стоит запятая в дроби, 10 это после первого символа, 100 после второго итд, вторым аргументом указывается делимое, третьим на что делим.

10 70 25 */
= 28

На Forth-83 стандарт поменьше, все требуемые слова умещаются в одну страницу https://forth.sourceforge.net/standard/fst83/fst83-12.htm

Исправление MOPKOBKA, :

А какие ещё атрибуты используешь?

Из интересного только constant, тогда вместо указателя на слово, в словаре хранится само значение константы. Это полезно что бы не трогать память под код слов при определении константы, и можно без проблем во время определения нового слова создавать константы которые не будут влиять на тело создаваемого определения.

А как в Форте реализован аналог сишного #include

У меня стек включаемых файлов (их контента), INCLUDE добавляет файл в этот стек. Функция чтения исходного кода читает по этому стеку с конца как и полагается, как прочитает один файл, делает DROP, читает другой.

Стек это вообще удобно. Повышает удобство, и типобезопасность. Если float в отдельном стеке, это удобнее, не мешаются на общем стеке. Так же можно завести стек для строк отдельный. Строка это два значения на стеке, жутко неудобно, а если сделать свой стек, то можно это все удобно представить, указатель + длинна будет одним значением для стека строк.

Я заметил флоатов у тебя нету. Может и не будет? Тогда нужно добавить функцию https://forth-standard.org/standard/core/TimesDiv

7 / 2.5 = 2.8

Через эту функцию, можно первым аргументом указать где стоит запятая в дроби, 10 это после первого символа, 100 после второго итд, вторым аргументом указывается делимое, третьим на что делим.

10 70 25 */
= 28

Исправление MOPKOBKA, :

А какие ещё атрибуты используешь?

Из интересного только constant, тогда вместо указателя на слово, в словаре хранится само значение константы. Это полезно что бы не трогать память под код слов при определении константы, и можно без проблем во время определения нового слова создавать константы которые не будут влиять на тело создаваемого определения.

А как в Форте реализован аналог сишного #include

У меня стек включаемых файлов (их контента), INCLUDE добавляет файл в этот стек. Функция чтения исходного кода читает по этому стеку с конца как и полагается, как прочитает один файл, делает DROP, читает другой.

Стек это вообще удобно. Повышает удобство, и типобезопасность. Если float в отдельном стеке, это удобнее, не мешаются на общем стеке. Так же можно завести стек для строк отдельный. Строка это два значения на стеке, жутко неудобно, а если сделать свой стек, то можно это все удобно представить.

Я заметил флоатов у тебя нету. Может и не будет? Тогда нужно добавить функцию https://forth-standard.org/standard/core/TimesDiv

7 / 2.5 = 2.8

Через эту функцию, можно первым аргументом указать где стоит запятая в дроби, 10 это после первого символа, 100 после второго итд, вторым аргументом указывается делимое, третьим на что делим.

10 70 25 */
= 28

Исправление MOPKOBKA, :

А какие ещё атрибуты используешь?

Из интересного только constant, тогда вместо указателя на слово, в словаре хранится само значение константы. Это полезно что бы не трогать память под код слов при определении константы, и можно без проблем во время определения нового слова создавать константы которые не будут влиять на тело создаваемого определения.

А как в Форте реализован аналог сишного #include

У меня стек включаемых файлов (их контента), INCLUDE добавляет файл в этот стек. Функция чтения исходного кода читает по этому стеку с конца как и полагается, как прочитает один файл, делает DROP, читает другой.

Стек это вообще удобно. Повышает удобство, и типобезопасность. Если float в отдельном стеке, это удобнее, не мешаются на общем стеке. Так же можно завести стек для строк отдельный. Строка это два значения на стеке, жутко неудобно, а если сделать свой стек, то можно это все удобно представить.

Исходная версия MOPKOBKA, :

А какие ещё атрибуты используешь?

Из интересного только constant, тогда вместо указателя на слово, в словаре хранится само значение константы. Это полезно что бы не трогать память под код слов при определении константы, и можно без проблем во время определения нового слова создавать константы которые не будут влиять на тело создаваемого определения.

А как в Форте реализован аналог сишного #include

У меня стек включаемых файлов (их контента), INCLUDE добавляет файл в этот стек. Функция чтения исходного кода читает по этому стеку с конца как и полагается, как прочитает один файл, делает DROP, читает другой.