Forth 词汇表和单词列表之间有区别吗?
Is there a difference between Forth vocabularies and word lists?
当我阅读 Stephen Pelc 的 "Programming Forth" 时,文字似乎暗示词汇表和单词列表可能是不同的东西。我认为词典词汇条目有名称字段、代码字段等,所以单独的单词列表对我来说没有意义。
单词列表只是一种谈论 Forth 单词名称字段的方式,还是单词列表是与字典条目分开的实际数据结构? (相对于主流语言,Forth语言资源有点匮乏)
词汇和词表基本相同。我能想到两个区别:
- 单词列表在 Forth 标准中指定。词汇表不是,但关于它们的使用方式几乎达成共识。
- 词汇有名字。单词表只有一个数字 ID。
第三个类似的概念是 "lexicon"。我没有看到它像其他两个一样经常使用,但我认为它是另一种变体或同义词。
单词列表是词典条目的集合。它可以是链表、散列 table 或任何其他可用于查找命名条目的东西。字典可以分成几个词表,即一个词表是字典的一个子集。
单词列表是通常称为名称空间的 ISO 94 Forth 标准名称。维基百科很好地解释了这个概念。在 Forth 中,可以将多个命名空间耦合到解释器,这意味着可以使用其中的词,耦合命名空间称为“将词表添加到搜索顺序”。 Forth 是可扩展的,并且具有非常独特的特性,即可以将新添加的内容添加到任何单词列表中,即使是不在搜索顺序中的单词列表。该命名空间称为 CURRENT,而由一个或多个命名空间组成的实际瞬时搜索顺序称为 CONTEXT。两者都可以在交互式会话中的任何位置和编辑中的任何位置进行更改。
在创建标准时,对于如何给单词列表命名没有达成共识,所以只有 WORDLIST 这个词创建了一个匿名命名空间,并且将其句柄留在堆栈上。 VOCABULARY 一词被广泛用于创建命名空间,但由于没有达成共识,VOCABULARY 不是标准的一部分 并且不能在可移植程序中使用它(这很麻烦,所以无论如何每个人都这样做并希望最好。)
总结一下。 wordlist 作为一个概念是一个命名空间。 WORDLIST 创建一个匿名单词列表,并且是一个标准单词。 VOCABULARY 不是标准词,大多数情况下它会创建一个词表并将名称和行为与其关联。
当我阅读 Stephen Pelc 的 "Programming Forth" 时,文字似乎暗示词汇表和单词列表可能是不同的东西。我认为词典词汇条目有名称字段、代码字段等,所以单独的单词列表对我来说没有意义。
单词列表只是一种谈论 Forth 单词名称字段的方式,还是单词列表是与字典条目分开的实际数据结构? (相对于主流语言,Forth语言资源有点匮乏)
词汇和词表基本相同。我能想到两个区别:
- 单词列表在 Forth 标准中指定。词汇表不是,但关于它们的使用方式几乎达成共识。
- 词汇有名字。单词表只有一个数字 ID。
第三个类似的概念是 "lexicon"。我没有看到它像其他两个一样经常使用,但我认为它是另一种变体或同义词。
单词列表是词典条目的集合。它可以是链表、散列 table 或任何其他可用于查找命名条目的东西。字典可以分成几个词表,即一个词表是字典的一个子集。
单词列表是通常称为名称空间的 ISO 94 Forth 标准名称。维基百科很好地解释了这个概念。在 Forth 中,可以将多个命名空间耦合到解释器,这意味着可以使用其中的词,耦合命名空间称为“将词表添加到搜索顺序”。 Forth 是可扩展的,并且具有非常独特的特性,即可以将新添加的内容添加到任何单词列表中,即使是不在搜索顺序中的单词列表。该命名空间称为 CURRENT,而由一个或多个命名空间组成的实际瞬时搜索顺序称为 CONTEXT。两者都可以在交互式会话中的任何位置和编辑中的任何位置进行更改。
在创建标准时,对于如何给单词列表命名没有达成共识,所以只有 WORDLIST 这个词创建了一个匿名命名空间,并且将其句柄留在堆栈上。 VOCABULARY 一词被广泛用于创建命名空间,但由于没有达成共识,VOCABULARY 不是标准的一部分 并且不能在可移植程序中使用它(这很麻烦,所以无论如何每个人都这样做并希望最好。)
总结一下。 wordlist 作为一个概念是一个命名空间。 WORDLIST 创建一个匿名单词列表,并且是一个标准单词。 VOCABULARY 不是标准词,大多数情况下它会创建一个词表并将名称和行为与其关联。