【问题标题】:How do you handle the values of the symbols in the symbol table?你如何处理符号表中符号的值?
【发布时间】:2014-11-18 21:56:23
【问题描述】:

参考您的“语言实现模式”一书的第 6 章;存储和检索每个符号的值的最佳实践/模式是什么。

每个符号都有名称、类型和范围。然而;您将实际值存储在哪里?

即“整数”类型的符号“n”的值为 42。

【问题讨论】:

  • 有点混乱,但也许你是把编译时符号表和实际运行时环境混在一起了?

标签: antlr antlr4


【解决方案1】:

符号包含什么以及它如何包含该信息完全由您选择。在无类型语言中,符号可能只是具有术语名称和值属性的对象。对于打字,添加类型和种类属性。

或者符号对象可以只包含名称和引用属性,其中 ref 指向一个包含附加属性的单独表,包括可能指向堆、不可变池或实际存储文字值的堆栈的引用。

This answer 提供了一个范围、名称和值符号表的示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-28
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 2016-11-18
    相关资源
    最近更新 更多