【发布时间】:2018-11-05 21:45:29
【问题描述】:
我正在尝试在 ocaml 中构建一个 LL1 解析表。我希望键是一个非终结符 input_symbol 元组。这可能吗?
我知道你可以做一个stack of tuples:
let (k : (string*string) Stack.t) = Stack.create ();;
提前谢谢你!!
【问题讨论】:
标签: parsing tuples ocaml hashtable ll
我正在尝试在 ocaml 中构建一个 LL1 解析表。我希望键是一个非终结符 input_symbol 元组。这可能吗?
我知道你可以做一个stack of tuples:
let (k : (string*string) Stack.t) = Stack.create ();;
提前谢谢你!!
【问题讨论】:
标签: parsing tuples ocaml hashtable ll
OCaml 中哈希表的键可以是任何可以比较是否相等的类型,并且可以哈希为整数。 “vanilla”接口使用内置的多态比较来比较是否相等,以及内置的多态哈希函数。
对于函数类型和循环值,内置的多态比较函数失败。
还有一个函数接口,可让您定义自己的相等和散列函数。因此,如果您做一些额外的工作(假设您不希望比较函数是否相等),您甚至可以拥有一个包含函数的键的哈希表。
以元组为键的哈希表并不难:
# let my_table = Hashtbl.create 64;;
val my_table : ('_weak1, '_weak2) Hashtbl.t = <abstr>
# Hashtbl.add my_table (1, 2) "one two";;
- : unit = ()
# Hashtbl.add my_table (3, 4) "three four";;
- : unit = ()
# Hashtbl.find my_table (1, 2);;
- : string = "one two"
【讨论】:
Hashtbl.create 64中的64是什么意思?