标签: gforth

如何访问Forth中的程序名称/ argv [0]?

Gforth文件说,通过调用访问论点next-arg,但这种省略的程序名,这将在一个类似C语言进行打印.

因为argv[0]似乎是自动从Forth中的参数向量中删除,是否有一个我可以调用它返回它的特殊函数?

forth gforth

4
推荐指数
1
解决办法
245
查看次数

使用Gforth获取ASCII代码

当进入'a'Gforth时,字符的ASCII编号(通过使用key单词并按下将被放入堆栈的相同数字a)放入堆栈.

例如,这不适用于' '(空格).代替:

' '  ok
.s <1> 34384939008  ok
Run Code Online (Sandbox Code Playgroud)

数字"应该"为32.这个行为有什么解释?除了手动将对应于' '(空间)的ASCII数字放在堆栈上之外,可以做些什么 ?

forth char gforth

4
推荐指数
1
解决办法
197
查看次数

用gforth unix shebang

当我在脚本顶部有一个shebang时,我无法让Gforth运行,例如:

#!/usr/bin/gforth
: pinoke ." I'm a real boy!!! "
pinoke
Run Code Online (Sandbox Code Playgroud)

Unix似乎正在推出gForth,但gForth本身在shebang线上窒息.我不确定如何定义一个单词以使Forth以不同的方式解释shebang线(不是说它不能完成,但我只是不确定它是怎么回事).

我已经考虑过使用脚本将代码文件提供给gForth,但是反复做这件事可能相当尴尬.有没有办法让gForth像其他语言一样接受shebang?

forth shebang gforth

3
推荐指数
1
解决办法
322
查看次数

为什么我在 Gforth 中得不到浮点答案?

听说只要在运算符前面加一个F,然后在最后加一个(.),就可以计算出浮点数,然后显示出来。但它给了我这个答案:

2 3 F/ .       
:8: Floating-point stack underflow
2 3 >>>F/<<< .
Backtrace:
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到0.66666667 ok

forth gforth

3
推荐指数
1
解决办法
550
查看次数

在ANS Forth中发生了什么'嘀嗒'?

正如我记得FIG-Forth的'tick',当一个单词不在单词表中时,它可以在没有堕胎的情况下使用:

' the_word 
Run Code Online (Sandbox Code Playgroud)

如果它出现在单词列表中,则引用该单词,否则给出"假".

是否有可能在ANS Forth中构建类似于与[if],[then]和[else]一起使用的东西?

forth gforth

3
推荐指数
1
解决办法
333
查看次数

第四,带有递归的Hofstadter Q序列

我正在尝试使用递归定义来实现Hofstadter的Q序列

Q(1) = 1
Q(2) = 1
Q(n) = Q(n - Q(n-2)) + Q(n - Q(n-1)) for n > 2
Run Code Online (Sandbox Code Playgroud)

我得到的错误结果n > 3。这是我到目前为止的内容:

: Q recursive
    dup 3 <
    if
        drop 1
    else
        dup dup 2dup 2 - Q - Q -rot 1- Q - Q +
    then ;
Run Code Online (Sandbox Code Playgroud)

在线尝试: http : //ideone.com/PmnJRO(编辑:现在具有固定,正确的实现)

我认为这是行不通的,因为每次调用Qwhere n大于之后,都会向堆栈中添加值2,从而使-rot行不通。

是否有一个简单的调整即可完成这项工作?还是我需要使用其他方法,也许将变量用于n

OEIS:A005185

recursion forth sequence gforth oeis

3
推荐指数
1
解决办法
139
查看次数

gforth是否包含网络套接字功能?

通常,在学习语言时,我会编写某种服务器.gforth是否有能力使用网络套接字?

我在手册中没有看到任何关于套接字的信息.

sockets ip networking forth gforth

3
推荐指数
1
解决办法
721
查看次数

使用循环反转数据堆栈

我正在尝试使用两个循环反转堆栈,第一个循环将数据堆栈中的项目发送到返回堆栈。另一个将它们从返回堆栈转移到数据堆栈。不幸的是,它不起作用& gforth 返回堆栈下溢错误。下面是代码:

: srev ( n n2 n3 n4 n5 -- n5 n4 n3 n2 n)
 6 0 do >r loop 
 6 0 do r> loop ;

1 2 3 4 5 srev

Run Code Online (Sandbox Code Playgroud)

forth gforth

3
推荐指数
1
解决办法
388
查看次数

在Forth中实现取幂

我正在使用Gforth来尝试实现取幂.从理论上讲,我理解基于堆栈的语言应该如何运作.但是,我在Gforth上实现它时遇到了困难.

这就是我现在所拥有的:

: myexp
    1 swap ?do rot dup * rot rot loop ;
Run Code Online (Sandbox Code Playgroud)

但是,当我运行它时,我看到一个堆栈下溢,如:

3 2 myexp
:1: Stack underflow
3 2 >>>myexp<<<
Backtrace:
$7F645EFD6EF0 rot
$2
$1
Run Code Online (Sandbox Code Playgroud)

Gforth的循环结构是否在循环时操纵堆栈?

我对Forth的工作方式一无所知,因为我在网上看到的大多数循环示例都让Foss的新人感到困惑和困惑.

我的实施有什么问题?

forth gforth

2
推荐指数
1
解决办法
532
查看次数

如何从 Gforth 网站读取原始代码?

我想要一个像这样的词

read-site ( add n buff max -- n flag )
Run Code Online (Sandbox Code Playgroud)

其中“add n”是站点名称缓冲区,“buff max”是应读取 ASCII 文本的缓冲区,“n”是读取的字节数,flag如果操作成功则为 true。

这在 Linux、Android 或 Windows 的 Gforth 中可能吗?

networking forth gforth

2
推荐指数
1
解决办法
396
查看次数

标签 统计

forth ×10

gforth ×10

networking ×2

char ×1

ip ×1

oeis ×1

recursion ×1

sequence ×1

shebang ×1

sockets ×1