<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p>Hello,<br>
</p>
I found a way to to what I want using<tt> Parser::NamedValueMap</tt>.
The following code works well <br>
<tt><br>
</tt><tt>struct CALLBACK : public
clang::ast_matchers::MatchFinder::MatchCallback {</tt><tt> </tt><tt><br>
</tt><tt>//... </tt><tt><br>
</tt><tt>};</tt><br>
<tt>int main() { <br>
// V is a visitor and v.fct is a CXXMethodDecl*<br>
<br>
</tt><tt> dynamic::Diagnostics Diag; <br>
Parser::NamedValueMap named_map;</tt><tt><br>
<br>
</tt><tt> auto eq_node = equalsNode(v.fct);</tt><tt><br>
</tt><tt><br>
named_map["TEST"] = VariantMatcher::SingleMatcher(eq_node);</tt><tt><br>
</tt><tt><br>
Optional<DynTypedMatcher> unbound_matcher =
Parser::parseMatcherExpression(</tt><tt><br>
</tt><tt> llvm::StringRef("cxxMemberCallExpr(callee(TEST))"),
nullptr, &named_map,</tt><tt><br>
</tt><tt> &Diag);</tt><tt><br>
</tt><tt> if (!unbound_matcher) {</tt><tt><br>
</tt><tt> std::cout << "erreur creation unbind"</tt><tt><br>
</tt><tt> << "\n";</tt><tt><br>
</tt><tt> }</tt><tt><br>
</tt><tt><br>
</tt><tt> auto final_matcher = unbound_matcher->tryBind("pipo");</tt><tt><br>
</tt><tt><br>
</tt><tt> ast_matchers::MatchFinder Finder;</tt><tt><br>
</tt><tt> CALLBACK cb;</tt><tt><br>
</tt><tt> Finder.addDynamicMatcher(*final_matcher, &cb);</tt><tt><br>
</tt><tt> Finder.matchAST(ast_context);<br>
}<br>
<br>
David<br>
</tt>
<div class="moz-cite-prefix">On 09/03/2017 10:20, Manuel Klimek
wrote:<br>
</div>
<blockquote
cite="mid:CAOsfVvmuu76L8=WF+O6a_RF9zA8NNEFZmg91bAmCcSXodJYRbA@mail.gmail.com"
type="cite">
<div dir="ltr">+Sam for ideas<br>
<br>
<div class="gmail_quote">
<div dir="ltr">On Wed, Mar 8, 2017 at 6:23 PM David Come via
cfe-dev <<a moz-do-not-send="true"
href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br
class="gmail_msg">
<br class="gmail_msg">
I'm building a tool to find AST nodes according to an user
provided file<br class="gmail_msg">
using a custom language. I'm also using clang dynamic
matchers to find<br class="gmail_msg">
interesting nodes within functions CFG and do a bunch of
thing. I would<br class="gmail_msg">
like to re-use one of the node I found previously in one of
the clang<br class="gmail_msg">
matchers.<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
There is equalsNode for static matchers but it obviously
does not work<br class="gmail_msg">
with clang dynamic matchers.<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
My idea would be to circumvent the problem by introducing
into the<br class="gmail_msg">
matcher (once created from the string) already bounded nodes
and use<br class="gmail_msg">
equalsBoundNode. But I can't find a way to do it.<br
class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
This could be handy to re-use in clang-query one match
result into<br class="gmail_msg">
another one (some kind of persistent matching)<br
class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
Do you see another way to achieve what I wish to ?<br
class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
My last resort will be to change clang source code (assuming
I'm<br class="gmail_msg">
successful) and let my tool rely on it but I would really
like to stick<br class="gmail_msg">
to vanilla clang.<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
Thanks,<br class="gmail_msg">
<br class="gmail_msg">
David.<br class="gmail_msg">
<br class="gmail_msg">
_______________________________________________<br
class="gmail_msg">
cfe-dev mailing list<br class="gmail_msg">
<a moz-do-not-send="true"
href="mailto:cfe-dev@lists.llvm.org" class="gmail_msg"
target="_blank">cfe-dev@lists.llvm.org</a><br
class="gmail_msg">
<a moz-do-not-send="true"
href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev"
rel="noreferrer" class="gmail_msg" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br
class="gmail_msg">
</blockquote>
</div>
</div>
</blockquote>
<br>
</body>
</html>