定制AST结构的计算哈希
我正在实施编译器,在《龙书》中,他们谈论使用DAG代表表达式而不是计划抽象语法树。为了计算结构的哈希,我提出了一种或多或少的“随机”方法。
struct FloatNode : public ASTNode {
float val;
explicit FloatNode(float val) : val(val) {}
size_t computeHash() override {
return (*reinterpret_cast<int *>(&val)) << 16;
}
};
这是完成此任务的有效方法吗?另外,还有更多合适的算法可以做到这一点吗?
I was implementing a compiler and in the Dragon Book, they talk about using DAGs to represent expressions rather than a plan Abstract Syntax Tree. To compute a Hash for a struct, I came up with a more or less "random" approach.
struct FloatNode : public ASTNode {
float val;
explicit FloatNode(float val) : val(val) {}
size_t computeHash() override {
return (*reinterpret_cast<int *>(&val)) << 16;
}
};
Is this an efficient method to accomplish this task? Also, are there more suitable algorithms to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论