mozilla

Revision 101630 of Pork

  • Revision slug: Pork
  • Revision title: Pork
  • Revision id: 101630
  • Created:
  • Creator: daniel.wilkerson
  • Is current revision? No
  • Comment 48 words added, 23 words removed
Tags: 

Revision Content

 

Pork is a C++ parsing and rewriting tool chain. The core of Pork is a C++ parser that provides exact character positions for the start and end of every AST node, as well as the set of macro expansions that contain any location. This information allows C++ to be automatically rewritten in a precise way. The inputs driving the rewriting would normally be provided by a program-analysis system outside of Pork. (See Dehydra, Treehydra).

Pork has been tested mostly on Linux, but in theory it should be possible to make it work on other systems.

Pork is based on the Elsa (and Oink) tool chain, and the MCPP preprocessor.  As of October 2009 Oink incorporates the Pork functionality into its standard distribution; look for files and tests having the prefix "xform".

 

Documentation

Installing Pork
Download, installation and dependency info for Pork
Pork Tools
Description of rewriting tools
Pork Tool Development
in progress page...
Old Pork Page
Pork details that haven't been moved to MDC
Renaming With Pork
Sample pork application
TODOs
Pork 1.0 release tracking bug
Pork releases
Download Pork here

Community

  • View Pork Forums...

{{ DiscussionList("dev-static-analysis", "mozilla.dev.static-analysis") }}

Blogs

Related Topics

Dehydra, Treehydra, Mozilla 2, SpiderMonkey

 

Categories

Interwiki Language Links

 

Revision Source

<p> </p>
<div>
<p><strong>Pork</strong> is a C++ parsing and rewriting tool chain. The core of Pork is a C++ parser that provides exact character positions for the start and end of every AST node, as well as the set of macro expansions that contain any location. This information allows C++ to be automatically rewritten in a precise way. The inputs driving the rewriting would normally be provided by a program-analysis system outside of Pork. (See Dehydra, Treehydra).</p>
<p>Pork has been tested mostly on Linux, but in theory it should be possible to make it work on other systems.</p>
<p>Pork is based on the <a class="external" href="http://www.eecs.berkeley.edu/~smcpeak/elkhound/" title="http://www.eecs.berkeley.edu/~smcpeak/elkhound/">Elsa</a> (and <a class="external" href="http://daniel-wilkerson.appspot.com/oink/index.html" title="http://daniel-wilkerson.appspot.com/oink/index.html">Oink</a>) tool chain, and the <a class="external" href="http://mcpp.sourceforge.net/" title="http://mcpp.sourceforge.net/">MCPP preprocessor</a>.  As of October 2009 Oink incorporates the Pork functionality into its standard distribution; look for files and tests having the prefix "xform".</p>
<p> </p>
<table class="topicpage-table"> <tbody> <tr> <td> <h4 name="Documentation"><a href="/Special:Tags?tag=Pork&amp;language=en" title="Special:Tags?tag=Pork&amp;language=en">Documentation</a></h4> <dl> <dl style="margin: 0px 0px 1.7em; padding: 0px;"> <dt style="font-style: normal; font-weight: bold;"><a href="/en/Installing_Pork" style="text-decoration: none; color: rgb(4, 137, 183) ! important; cursor: default;" title="en/Installing_Pork">Installing Pork</a></dt> <dd style="margin-left: 0px; margin-bottom: 0.5em; padding-left: 15px;"><small>Download, installation and dependency info for Pork</small></dd> </dl> <dl style="margin: 0px 0px 1.7em; padding: 0px;"> <dl style="margin: 0px 0px 1.7em; padding: 0px;"> <dt style="font-style: normal; font-weight: bold;"><a class="internal" href="/En/Pork_Tools" style="text-decoration: none; color: rgb(4, 137, 183) ! important; cursor: default;" title="en/Pork Tools">Pork Tools</a></dt> <dd style="margin-left: 0px; margin-bottom: 0.5em; padding-left: 15px;">Description of rewriting tools</dd> </dl> <dl style="margin: 0px 0px 1.7em; padding: 0px;"> <dt style="font-style: normal; font-weight: bold;"><a class="internal" href="/En/Pork_Tool_Development" style="text-decoration: none; color: rgb(4, 137, 183) ! important; cursor: default;" title="En/Pork Tool Development">Pork Tool Development<br> </a></dt> <dd style="margin-left: 0px; margin-bottom: 0.5em; padding-left: 15px;">in progress page...</dd> </dl> <dl style="margin: 0px 0px 1.7em; padding: 0px;"> <dt><a class="external" href="http://wiki.mozilla.org/Pork">Old Pork Page</a></dt> </dl> <dl> <dd><small>Pork details that haven't been moved to MDC</small></dd> </dl> <dl> <dt><a href="/en/Renaming_With_Pork" title="en/Renaming_With_Pork">Renaming With Pork</a></dt> <dd><small>Sample pork application</small></dd> </dl> <dl> <dt><a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=438061">TODOs</a></dt> <dd><small>Pork 1.0 release tracking bug</small></dd> </dl> <dl> <dt><a class="external" href="http://ftp.mozilla.org/pub/mozilla.org/static-analysis/pork/">Pork releases</a></dt> <dd><small>Download Pork here</small></dd> </dl> </dl></dl></td> <td> <h4 name="Community">Community</h4> <ul> <li>View Pork Forums...</li> </ul> <p>{{ DiscussionList("dev-static-analysis", "mozilla.dev.static-analysis") }}</p> <ul> <li><a class="link-irc" href="irc://irc.mozilla.org/static" title="irc://irc.mozilla.org/static">#static on irc.mozilla.org</a> </li> </ul> <h4 name="Blogs">Blogs</h4> <ul> <li><a class="external" href="http://blog.mozilla.com/tglek">Taras Glek</a></li> <li><a class="external" href="http://blog.mozilla.com/dmandelin">David Mandelin</a></li> </ul> <h4 name="Related_Topics">Related Topics</h4> <dl> <dd><a class="internal" href="/en/Dehydra" title="en/Dehydra">Dehydra</a>, <a class="internal" href="/en/Treehydra" title="en/Treehydra">Treehydra</a>, <a class="external" href="http://wiki.mozilla.org/Mozilla_2">Mozilla 2</a>, <a href="/en/SpiderMonkey" title="en/SpiderMonkey">SpiderMonkey</a></dd> </dl> </td> </tr> </tbody> </table> <p> </p> <p><span class="comment">Categories</span></p> <p><span class="comment">Interwiki Language Links</span></p> <p> </p> </div> 
Revert to this revision