【问题标题】:How to add custom syntax annotation to SyntaxNode?如何向 SyntaxNode 添加自定义语法注释?
【发布时间】:2014-12-03 10:10:59
【问题描述】:

在以前版本的 Roslyn 中,我可以使用派生自 SyntaxAnnotation 的类将自定义数据添加到 SyntaxNode。但现在SyntaxAnnotation 已密封,我只能将SyntaxAnnotation 用于字符串:种类和数据。这对我来说还不够。我想从 AST 构建自定义 CFG,并在 CFG 和 AST 节点之间建立双向链接。

我该怎么做?

【问题讨论】:

    标签: roslyn


    【解决方案1】:

    SyntaxAnnotation 是密封的,因为你的树可能被序列化了,我们需要能够序列化和反序列化注解。如果您想存储更多信息,请将用于注释的字符串存储为包含状态的字典的键。

    【讨论】:

    • 谢谢凯文。我也在考虑字典。但是这个决定并不那么快,需要使用一些上下文对象(用于存储字典)。
    • 您需要相同的上下文对象来存储注释,不是吗?
    • 目前我不能说。因为如果我为每个 SyntaxNode 字典添加注释将会非常庞大​​。
    • 当然,但是我们最终创建的注释的 ConditionalWeakTable 会一样大。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 2022-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    相关资源
    最近更新 更多