<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
Hello all,</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
We are developing a tool for performing some source-to-source transformations. I have some technical questions regarding the approach we are following for this purpose:</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
As far as I understand, Clang AST is meant to be immutable, therefore once created (for instance with the ASTFrontendAction), I guess no Node (Stmt, Decl, whatever) must be modified.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
Thus, our approach is basically to parse the source file and generate its AST, feed our algorithms for generating code using some information of the AST (patterns found with MatcherFinder, variable names, etc.), and then generating code (basically strings)
 using Replacements and Rewriter.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
My main concerns are:</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">
<ul>
<li>I have not delved deep in all the FrontendAction subclasses in Clang. For our purpose, is ASTFrontendAction suitable? Are there any other better choices?</li><li>Is it fine to not modify the original AST when performing source-to-source transformations? My first idea was to modify it until I read the "immutability philosophy". On the other hand, I only care about the AST for parsing, not for the output (I am already
 performing the modifications with Rewriter, right?).</li></ul>
<div>I am asking this just to be sure that I understand how Clang Tools work or if I am misunderstanding something.</div>
<div>Thank you so much.</div>
<div><br>
</div>
<div>Kind regards,</div>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div id="Signature">
<div></div>
<div></div>
<div id="divtagdefaultwrapper" dir="ltr" style="font-size: 12pt; font-family: Calibri, Helvetica, sans-serif; color: rgb(0, 0, 0);">
<p style="margin-top:0px; margin-bottom:0px; margin-top:0; margin-bottom:0">--</p>
<p style="margin-top:0px; margin-bottom:0px; margin-top:0; margin-bottom:0">Marcos Horro</p>
<p style="margin-top:0px; margin-bottom:0px; margin-top:0; margin-bottom:0">PhD Student<br>
</p>
<p style="margin-top:0px; margin-bottom:0px; margin-top:0; margin-bottom:0">Universidade da Coruņa (UDC)<br>
</p>
<p style="margin-top:0px; margin-bottom:0px; margin-top:0; margin-bottom:0"><a href="http://gac.udc.es/~marcos.horro/" class="OWAAutoLink" style="">http://gac.udc.es/~marcos.horro/</a> <br>
</p>
</div>
</div>
</body>
</html>