“...所有节点都有一个src注释指向物理源位置,所有声明都可以对其逻辑位置标识符进行decl注释......” 本文摘自:M3:Rascal中代码分析的通用模型。
但是,在为相对简单的语言创建新的M3模型时,所有源代码元素都有自己的命名方案,并且所有类型的元素都在AST中明确定义,因此无需单独解析其类型。那么放弃物理源代码位置,将逻辑源代码位置放在@src注释中会被认为是“好”,因为对于所有节点,可以创建逻辑源代码,而不使用@decl注释吗?这会被认为是M3模型的不良实现还是没问题,因为简单的语言可以简化M3模型的实现?
因为否则所有节点都会获得带有物理源代码位置的@src,以及带有逻辑源代码位置的@decl,这会使AST混乱,而单个逻辑源代码位置就足够了。
答案 0 :(得分:1)
这是一个很好的问题。我认为如果你没有放置@src
注释,我所知道的当前IDE工具或其他工具集不会中断。所以在这个意义上没有什么不好的事
在M3 declarations
表中没有源位置会有什么不好。因此,如果您可以在没有AST注释的情况下生成此表,那么您可以。
很快,M3模型将转向使用关键字字段,然后我们甚至可以引入一个默认实现,如果不存在,则将src
解析为decl
。
那么,为什么不试试你的建议,看看它失败了?如果我们最后需要@src
,那么将其添加回来就不会那么难了!