使用 Gforth 获取 ASCII 码

Getting ASCII code with Gforth

当在 Gforth 中输入 'a' 时,字符的 ASCII 码(与使用 key 单词并按 a) 入栈。

这不适用于 ' ' (space)。相反:

' '  ok
.s <1> 34384939008  ok

数字“应该”是 32。如何解释这种行为?还有什么可以做的——除了手动将对应于 ' ' (space) 的 ASCII 码放入堆栈之外?

这个 'a' 语法对 Forth 来说是相当新的。它被添加为传统语法之上的扩展,将所有内容解析为 whitespace-delimited 标记。所以 'a' 是一个原子标记,然后将其解析为字符文字。

现在,' ' 不是原子标记,因为它包含 space 字符。相反,它被解析为两个 ' 标记。它实际上是完全有效的 Forth 代码,因为 ' is a Forth word (called "tick")。在您的示例中,第一个滴答声对第二个滴答声起作用。结果 34384939008'.

的 xt

该怎么做?获取字符ASCII码的传统说法是CHAR[CHAR]。第一个在解释模式下工作,第二个在编译模式下工作。 但是 它们不适用于 space 字符的特殊情况,因为同样,所有白色 space 都被解析掉了。

不过,还有一个词压ASCII码space字符:BL.