使用Gforth获取ASCII代码

时间:2017-02-11 04:19:45

标签: char forth gforth

在Gforth中输入' ' ok .s <1> 34384939008 ok 时,字符的ASCII编号(使用key字放入堆栈的相同编号,然后按 a )被放到堆栈上。

这不适用于' '(空格)。代替:

{{1}}

数字“应该”为32.这个行为有什么解释?除了手动将对应于{{1}}(空格)的ASCII编号放在堆栈上之外,可以做些什么呢?

1 个答案:

答案 0 :(得分:9)

这种'a'语法对于Forth来说是一个全新的语法。它是在传统语法之上添加的扩展,它将所有内容解析为以空格分隔的标记。因此'a'是一个原子令牌,然后将其解析为字符文字。

现在,' '不是原子令牌,因为它包含空格字符。相反,它被解析为两个'令牌。它实际上是完全有效的Forth代码,因为' is a Forth word (called "tick")。在您的示例中,第一个刻度线在第二个刻度线上运行。结果34384939008'的xt。

该怎么做?获取字符ASCII码的传统词是CHAR[CHAR]。第一个在解释模式下工作,第二个在编译模式下工作。 但是他们不会为空间角色的特定情况工作,因为同样,所有的空白都被解析掉了。

但是,还有另一个词推动ASCII码空间字符:BL