Forth如何实现字典?(争议)

Lea*_*dim 11 interpreter dictionary forth

我正在研究Forth,因为我有一个个人项目.它看起来是一个非常酷且简单的语言,可以在一个小型虚拟机中实现.

我对使用词汇表的可能性印象特别深刻.另一方面,我认为字典的工作方式对于总体上如此简单的语言来说过于复杂.我这样说,因为我读过一些关于它的论文,我知道存在很多争议.

有一些微处理器在其指令中实现了Forth的一些功能,我很想知道它们如何实现字典和它们上的词汇表等功能,因此我可以实现一个看起来像那些微处理器的虚拟机.

也就是说,字典不是一个长大的简单堆,并不是一个简单的线性向量,我们可以简单地索引,因此对于微处理器的微代码来说这不是一件容易的事(我猜).如果那些特殊的处理器能够像它应该的那样实现字典,那么我会非常感动,当然,没有任何额外的代码.我认为这是不可能的.

所以对于我的项目,我正在考虑用一个堆来编译解释器,用操作码来操作它,例如在6852中.并且字典的代码应该与解释器和Forth中的编辑器一起编译.我认为这应该看起来更像现实.

所有这些争议都是关于什么的?这些特殊处理器如何与字典和词汇表的使用相关联?

Vij*_*hew 5

维基百科关于Forth的文章包含了对Dictionary最初实现的简短描述.另见" 进化论"中的" 发展与传播 ".原始实现使用链表.但哈希表(map)似乎是一个更好的近似.

  • 事情是这样的:链表的内存管理比哈希图更容易实现。链接列表确实有 O(n) 查找(而散列映射有摊销 O(1)),但这不是问题,因为名称查找只完成一次:当一个单词被编译时。然后存储的是内部指针引用,而不是名称。 (2认同)