当我阅读Stephen Pelc撰写的“Programming Forth”时,文本似乎暗示词汇表和单词列表可能是不同的东西。我认为字典词条有一个名字字段,代码字段等,所以有单独的单词列表对我没有意义。
单词列表只是一种谈论Forth单词的名称字段的方式,还是单词列表与字典条目分开的实际数据结构? (与主流语言相比,第四语言资源有点稀缺)
答案 0 :(得分:7)
词汇表和单词表基本相同。我可以想到两个不同之处:
第三个类似的概念是" lexicon"。我还没有像其他两个一样经常使用它,但我认为它是另一种变体或同义词。
wordlist是字典条目的集合。它可以是链接列表,哈希表或任何其他用于查找命名条目的内容。字典可以被划分为若干单词列表,即单词列表是字典的子集。
答案 1 :(得分:1)
单词表是ISO 94 Forth标准名称,通常称为名称空间。维基百科在解释这个概念方面做得很好。在Forth中,可以将多个名称空间耦合到解释器,这意味着可以使用其中的单词,并且将名称空间耦合称为“将单词列表添加到搜索顺序中”。 Forth是可扩展的,并且具有非常独特的功能,即可以将任何新单词添加到任何单词列表中,甚至可以是不在搜索顺序中的单词列表。该命名空间称为 CURRENT ,而实际的瞬时搜索顺序称为 CONTEXT 。两者都可以在交互式会话中的任何地方以及在编译中的任何地方进行更改。
在创建标准时,尚无关于如何给单词列表命名的共识,因此只有单词 WORDLIST 可以创建匿名名称空间并将其句柄留在堆。 VOCABULARY 一词在创建命名空间中被广泛使用,但是由于对此尚无共识,因此 VOCABULARY 不是标准的一部分并且无法在可移植程序中使用它(这很麻烦,因此每个人都照做,并希望做到最好。)
所以总结一下。单词表作为一个概念是一个命名空间。 WORDLIST 创建一个匿名单词列表,它是一个标准单词。 VOCABULARY 不是标准单词,大多数情况下会创建一个单词表,并为其添加名称和行为。