| <!--#set var="title" value="Status As Of May 25, 2006" --> |
| <!--#include virtual="/incl/header.incl" --> |
| <h1>Status As Of May 25, 2006</h1> |
| <p>HLVM is moving along nicely. We have accomplished much in our first |
| month:</p> |
| <ul> |
| <li>A few new people became interested in HLVM (Hi laurence and Slant).</li> |
| <li>Everyone participated in making some design documentation in the wiki |
| site. It was populated with some designs and a mind map.</li> |
| <li>Implemented 43 node types for the |
| <a href="/apis/html/classhlvm_1_1AST.html">Abstract Syntax Tree (AST)</a>in |
| C++. These represent the various program constructs ( |
| <a href="/apis/html/classhlvm_1_1Bundle.html">Bundle</a>, |
| <a href="/apis/html/classhlvm_1_1Program.html">Program</a>, |
| <a href="/apis/html/classhlvm_1_1Function.html">Function</a>, |
| <a href="/apis/html/classhlvm_1_1Variable.html">Type</a>, |
| <a href="/apis/html/classhlvm_1_1Variable.html">Value</a>, |
| <a href="/apis/html/classhlvm_1_1Variable.html">Variable</a>, |
| <a href="/apis/html/classhlvm_1_1Block.html">Block</a>, |
| <a href="/apis/html/classhlvm_1_1Operator.html">Operator</a>, etc.) that can |
| be defined by a source language. There are also a few super-classes |
| ( |
| <a href="/apis/html/classhlvm_1_1Node.html">Node</a>, |
| <a href="/apis/html/classhlvm_1_1Documentable.html">Documentable</a>, |
| <a href="/apis/html/classhlvm_1_1LinkageItem.html">LinkageItem</a>) to allow |
| identification of categories of the AST nodes. See the |
| <a href="/apis/html/hierarchy.html">class hierarchy</a> for more details. |
| A simple model for AST construction was adopted, that of "setParent". |
| To insert a node, you simply tell it which node is its parent. The parent |
| node then "owns" that child node.</li> |
| <li>Implemented an |
| <a href="/apis/html/classhlvm_1_1XMLReader.html">XMLReader</a> based on |
| libxml2 to convert XML into AST nodes. This library uses the |
| <a href="http://hlvm.org/src/hlvm/Reader/XML/HLVM.rng">HLVM grammar</a> to |
| validate an XML document that corresponds to the structure of the Abstract |
| Syntax Tree. |
| This is how we populate the AST in memory.</li> |
| <li>Implemented a |
| <a href="/apis/html/classhlvm_1_1Pass.html">Pass</a> and |
| <a href="/apis/html/classhlvm_1_1PassManager.html">PassManager</a> |
| infrastructure for traversals through the AST. Passes can ask for pre-order, |
| post-order and both-order calls as the PassManager traverses the tree. This |
| gives us a single location in which the logic for walking the HLVM AST is |
| implemented.</li> |
| <li>Implemented an |
| <a href="/apis/html/classhlvm_1_1XMLWriter.html">XMLWriter</a> based on |
| libxml2 to convert AST nodes into XML. This is the converse of the reader. |
| It takes an in-memory AST and generates XML output. The XMLWriter uses an |
| HLVM Pass to walk the tree.</li> |
| <li>Implemented the |
| <a href="/src/tools/hlvm-xml2xml/hlvm-xml2xml.cpp">hlvm-xml2xml</a> tool to |
| convert XML -> AST -> XML. This is simply a combination of the |
| XMLReader, AST, and XMLWriter. Its purpose is to provide the means for |
| testing AST construction and validation.</li> |
| <li>Implemented the beginnings of a validation pass to validate the AST |
| nodes. This pass is now invoked from the hlvm-xml2xml program to validate that |
| what was read is a legal AST.</li> |
| <li>Started an implementation of a type resolving pass to assist with forward |
| references in the tree and resolve them to their actual types.</li> |
| <li>Implemented 12 test cases via deja-gnu to exercise AST construction with |
| the hlvm-xml2xml program. These implement an identity test where the output |
| must match the input exactly. All tests pass as of this date.</li> |
| <li>David began preparing additional test cases, as XML documents, to explore |
| the AST nodes that are needed in HLVM, based on a review of Ruby.</li> |
| <li>Completely rewrote the build system to use scons. The Makefile system, |
| although working, was difficult to maintain and modify. scons gives us much |
| more flexibility and some new capabilities as well.</li> |
| <li>Got the doxygen documentation to auto-build and generated it to the public |
| web site.</li> |
| <li>David started work on documenting the AST specification in the HLVM.rng |
| grammar (Relax/NG grammar for the Abstract Syntax Tree). We'll use XSLT to |
| convert this to HTML so we have one source for specifying and documenting |
| the AST nodes.</li> |
| <li>David got HLVM to build on Mac OS/X.</li> |
| <li>Saem got HLVM to build on SuSE Linux.</li> |
| <li>Reid got HLVM to build on Fedora Core 3</li> |
| </ul> |
| <p><a href="/docs/status/index.html">Back To Status Index</a></p> |
| <!--#include virtual="/incl/footer.incl" --> |