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?
上报告问题
我尝试遍历 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?
上报告问题