在M3模型中替代实现@src和@decl注释

时间:2016-07-07 07:37:49

标签: rascal

“...所有节点都有一个src注释指向物理源位置,所有声明都可以对其逻辑位置标识符进行decl注释......” 本文摘自:M3:Rascal中代码分析的通用模型。

但是,在为相对简单的语言创建新的M3模型时,所有源代码元素都有自己的命名方案,并且所有类型的元素都在AST中明确定义,因此无需单独解析其类型。那么放弃物理源代码位置,将逻辑源代码位置放在@src注释中会被认为是“好”,因为对于所有节点,可以创建逻辑源代码,而不使用@decl注释吗?这会被认为是M3模型的不良实现还是没问题,因为简单的语言可以简化M3模型的实现?

因为否则所有节点都会获得带有物理源代码位置的@src,以及带有逻辑源代码位置的@decl,这会使AST混乱,而单个逻辑源代码位置就足够了。

1 个答案:

答案 0 :(得分:1)

这是一个很好的问题。我认为如果你没有放置@src注释,我所知道的当前IDE工具或其他工具集不会中断。所以在这个意义上没有什么不好的事

在M3 declarations表中没有源位置会有什么不好。因此,如果您可以在没有AST注释的情况下生成此表,那么您可以。

很快,M3模型将转向使用关键字字段,然后我们甚至可以引入一个默认实现,如果不存在,则将src解析为decl

那么,为什么不试试你的建议,看看它失败了?如果我们最后需要@src,那么将其添加回来就不会那么难了!