在Gforth中输入' ' ok
.s <1> 34384939008 ok
时,字符的ASCII编号(使用key
字放入堆栈的相同编号,然后按 a )被放到堆栈上。
这不适用于' '
(空格)。代替:
{{1}}
数字“应该”为32.这个行为有什么解释?除了手动将对应于{{1}}(空格)的ASCII编号放在堆栈上之外,可以做些什么呢?
答案 0 :(得分:9)
这种'a'
语法对于Forth来说是一个全新的语法。它是在传统语法之上添加的扩展,它将所有内容解析为以空格分隔的标记。因此'a'
是一个原子令牌,然后将其解析为字符文字。
现在,' '
不是原子令牌,因为它包含空格字符。相反,它被解析为两个'
令牌。它实际上是完全有效的Forth代码,因为'
is a Forth word (called "tick")。在您的示例中,第一个刻度线在第二个刻度线上运行。结果34384939008
是'
的xt。
该怎么做?获取字符ASCII码的传统词是CHAR
或[CHAR]
。第一个在解释模式下工作,第二个在编译模式下工作。 但是他们不会为空间角色的特定情况工作,因为同样,所有的空白都被解析掉了。
但是,还有另一个词推动ASCII码空间字符:BL
。