Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Not open source, but has been used to carry out very non-toy <a href="http://www.semanticdesigns.com/Company/Publications/WCRE05.pdf" rel="nofollow noreferrer">massive automated refactoring of C++ programs</a>: our <a href="http://www.semanticdesigns.com/Products/DMS/DMSToolkit.html" rel="nofollow noreferrer">DMS Software Reengineering Toolkit</a>. DMS is a "library" (we called it a "toolkit") of facilities on can compose to achieve anlaysis and/or automated translation. </p> <p>Relevant to C++, DMS provides at this point in time:</p> <ul> <li>Full C++11 parser, constructing the AST and able to regenerate source code accurately including comments, with a complete preprocessor</li> <li>Full C++ parser with name and type resolution for C++ (ANSI, GNU, MS Visual C++)</li> <li>Control flow analysis for C++</li> <li>Source-to-source transformations</li> <li>Partially complete "rename" machinery (see discussion below)</li> </ul> <p>What I can say from experience is that C++ is a bitch of a language to transform. </p> <p>We continue to work on it, and are completing a reliable renaming tool. Even this is hard; a key problem is the name-shadowing problem. You have a local variable X, and a reference to Y inside that scope; you attempt to rename Y to X and discover that the local variable "captures" the access. It is amazing how many namespaces and capture types you have to worry about in C++. And this is needed as a foundation for many other refactorings.</p> <p>EDIT Feb 2014: Full C++14 parser, control flow analysis, local data flow analysis</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload