1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Architecture</title><link rel="stylesheet" href="synopsis.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"><link rel="home" href="index.html" title="Synopsis Developer's Guide"><link rel="up" href="intro.html" title="Chapter1.Introduction"><link rel="previous" href="origins.html" title="Origins"><link rel="next" href="testing.html" title="Current Status: Regression Test Reports"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Architecture</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="origins.html">Prev</a></td><th width="60%" align="center">Chapter1.Introduction</th><td width="20%" align="right"><a accesskey="n" href="testing.html">Next</a></td></tr></table></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="architecture"></a>Architecture</h2></div></div><div></div></div><p>
Synopsis provides multiple representations of the parsed code, on different
levels of granularity. Some of them are exposed using Python, some using C++.
</p><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2996488"></a>Sub-Projects</h3></div></div><div></div></div><p>
Synopsis contains two basic parts: A C++ library, providing an API to
parse and analyze C and C++ source files, as well as a Python package
to parse and analyze IDL, C, C++, and Python code. While the former
provides fine-grained access to the low-level representations such as
<span class="emphasis"><em>Parse Tree</em></span> and <span class="emphasis"><em>Symbol Table</em></span>,
the latter operates on an <span class="emphasis"><em>Abstract Syntax Tree</em></span>.
</p><p>
Most of the <span class="type">Processor</span>classes from the Python API are written
in pure Python, but some (notably the parser classes) are actual extension
modules that use the low-level APIs from the C++ API.
</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2996523"></a>Code Layout</h3></div></div><div></div></div><p>
Following the hybrid nature of the project, the source layout has
two more or less separate root directories. <tt class="filename">Synopsis/</tt>
provides the <span class="type">Synopsis</span> Python package, while
<tt class="filename">src/</tt> contains the sources for the C++ API.
</p></div></div><div class="navfooter"><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="origins.html">Prev</a></td><td width="20%" align="center"><a accesskey="u" href="intro.html">Up</a></td><td width="40%" align="right"><a accesskey="n" href="testing.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Origins</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">Current Status: Regression Test Reports</td></tr></table></div></body></html>
|