Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>See our <a href="http://www.semanticdesigns.com/Products/FrontEnds/PHPFrontEnd.html" rel="nofollow">PHP Front End</a>. This is not built using traditional LEX and YACC, but has the advantage of a huge effort to define a robust parser, and hard knock testing over several years at this point. Using a fully elaborated grammar, it parses full PHP5 (that's hard, the language is poorly defined), including picking up all the details about interpolated string values, automatically builds ASTs, and can prettyprint ASTs back to completely valid PHP source text preserving layout, including comments. </p> <p>Invariably there is life beyond parsing. and one needs tools to support the analysis or modification of the code to achieve the actual purpose. The engine underlying the PHP Front End, the <a href="http://www.semanticdesigns.com/Products/DMS/DMSToolkit.html" rel="nofollow">DMS Software Reengineering Toolkit</a>, provides the LEX- and YACC-like machinery we use and additionally provides the ability to procedurally navigate/inspect/modify the ASTs, provides source-to-source rewrite rules for pattern-matching and/or transformation of code, supports building of symbol tables, and provides a control and data flow analysis framework. This machinery makes it much easier to focus on getting the job done, rather than trying to implement such machinery ad hoc as you encounter the need. (DMS actually handles a wide variety of languages using front ends as means of integration).</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