История изменений
Исправление 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, читает другой.