Rascal/Clair: 无法从 M3 访问评论

Rascal/Clair: Unable to access comments from M3

我尝试遍历 C++ 源文件中的所有注释,但无法访问 M3.comments。

我尝试了 iprintln、for-、switch- 和 visit-statements。

iprintln(m3) 给出以下输出:

m3(

  |file://bla.c|,

  macroExpansions={},

  methodOverrides={},

  includeDirectives={
    ...
  },

  inactiveIncludes={},

  comments=[

    |file://bla.c|(0,80),

    |file://bla.c|(82,34),

    ...
  ],

  macroDefinitions={},

  includeResolution={
    ...
  })
'''

以下代码匹配

visit (m3) { case comments: println("match"); }

但我无法获取位置。

例如

visit (m3) { case c:comments: println(c); }

回馈 "Ambiguous code (internal error), c:comments:".

下一个

visit (m3) { case comments(c): println("c"); }

不匹配

iprintln(m3.comments);

回馈 "Undeclared field: comments for M3"。

如何访问评论?

你可以这样投射评论:

theComments = m3Model.comments;

那个“.”表达式选择 m3 数据构造函数的注释字段。

如果您想匹配 comments 之类的关键字字段,则应编写如下模式:

m3(comments=theComments) := myM3Model

如果该字段未声明,您可以这样声明它:

data M3(list[loc] comments=[]);

但是,这应该已经在克莱尔库声明中了。请在 GitHub?

上报告问题