Forth “我该怎么做?”;扩展;外传译员?

Forth “我该怎么做?”;扩展;外传译员?,forth,gforth,Forth,Gforth,在不同的情况下,如何定制解释器 例如,在SP Forth中,解释器始终写入堆栈内容,并始终在打印前制作CR/LF: 1 2 3 Ok ( 1 2 3 ) .s 1 2 3 Ok ( 1 2 3 ) 我想看看: 1 2 3 ok .s 1 2 3 ok 一般来说,我希望能够定义新的数据输入,如 4-3i {1,2,3,4,5} 然后,解释器应该存储我在扩展中定义的数据。此外,对于错误,我希望软堆栈和变量被重置 有什么想法吗?在不同的Foth系统中,有不同的定制方式。 在SP Fort

在不同的情况下,如何定制解释器

例如,在SP Forth中,解释器始终写入堆栈内容,并始终在打印前制作CR/LF:

1 2 3
 Ok ( 1 2 3 )
.s
1 2 3  Ok ( 1 2 3 )
我想看看:

1 2 3  ok
.s 1 2 3  ok
一般来说,我希望能够定义新的数据输入,如

4-3i
{1,2,3,4,5}
然后,解释器应该存储我在扩展中定义的数据。此外,对于错误,我希望软堆栈和变量被重置


有什么想法吗?

在不同的Foth系统中,有不同的定制方式。 在SP Forth中,您可以为
OK
vector定义另一个操作。例如,为了避免打印数据堆栈状态:

: OK2 ( -- ) STATE @ IF EXIT THEN ."  ok" CR ;
' OK2 TO OK
\ see the original definition in src/compiler/spf_translate.f
不过,在Windows控制台应用程序中,很难在“确定”之前避免CRLF,因为此CRLF是您输入的文本的一部分

关于新的数据格式,有RfD。它已在一些Forth系统中实现,但尚未在SP Forth中实现

在SP Forth中,您可以使用添加自定义单词格式(单词解释器)