17得票3回答
Common Lisp宏和Forth元编程能力的比较

每个Common Lisp程序员都知道宏是一种强大的工具。除了不更改语言规范以外,Common Lisp宏还可以用于在Lisp顶部添加面向对象编程;读取宏是另一个具有令人费解能力的构造。 另一个允许元编程的程序是Forth。Forth使用“单词”和“生成单词”的方式略有不同。 我想知道,对...

10得票2回答
自定义控制流编译单词的示例

在Forth中,用户可以通过定义控制流新词(除了标准中提供的:DO、LOOP、BEGIN、UNTIL、WHILE、REPEAT、LEAVE IF、THEN、ELSE、CASE、ENDCASE等)来改变语言。 是否有人常见地创建自己的新控制流词汇?有哪些典型而有用的例子?或者标准已经定义了人...

9得票4回答
使用“see”指令对Forth代码单词进行反汇编

我正在准备有关构建 Forth 解释器的整体知识,并且想要分解一些通用的 Forth 代码词,例如 +,-,* 等。 我的 Gforth(我目前安装在 Ubuntu Linux 上的版本为 0.7.3)将允许我使用命令 see 来分解我定义的冒号定义,以及单个代码词 .。但是当我尝试使用其他...

8得票1回答
如何在Forth中列出当前的单词集?

是否可能获取当前在Forth语言中定义的所有单词列表(例如在Gforth中)?

8得票1回答
如何在Gforth中编写while()循环

我想在Gforth中编写一个while()循环。不幸的是,唯一的在线教程由于缺乏示例而无用,并且有关计数循环的示例(我不需要的内容)似乎根本不同。你能给出一些具体的示例来代表类似这样的东西吗? while (x > 3) { print(x); x--; } 或者说,只是一些具体的...

8得票1回答
在Forth编程语言中,“local variable”是什么意思?

在 C 语言中,局部变量存在于函数内部并包含如下的值: void main(){ int a = 5; int b = 9; } 在Gforth手册中,他们这样描述本地变量: : swap { a b -- b a } b a ; 1 2 swap .s 2drop...

7得票4回答
Gforth 将字符串值存储在变量中

我正在尝试将一个字符串值存储到一个变量中。为了定义这个变量,我使用: : define CREATE 0 , ; define x 我可以轻松地使用以下代码将整数/浮点数值存储到x中: 10 x ! 或者 10.0e x f! 我使用@或f@来访问它。现在我正在尝试储存一个字...

7得票1回答
在Gforth中给浮点数添加整数值

在 Gforth 中,是否有一种方法可以将整数值加到浮点值上? 类似于1 + 2.1?如果我执行1 2.1e f+,我会得到一个错误,我猜想这是因为这些值不在同一个堆栈上。我知道我可以只做1.0e 2.1e f+,但那不是我想要弄清楚的东西。