<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Architecture</title><link rel="stylesheet" href="synopsis.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.73.2" /><link rel="start" href="index.html" title="Synopsis Developer's Guide" /><link rel="up" href="intro.html" title="Chapter 1. Introduction" /><link rel="prev" href="origins.html" title="Origins" /><link rel="next" href="testing.html" title="Current Status: Regression Test Reports" /></head><body><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">Chapter 1. Introduction</th><td width="20%" align="right"> <a accesskey="n" href="testing.html">Next</a></td></tr></table></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="architecture"></a>Architecture</h2></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" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="id517506"></a>Sub-Projects</h3></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 Semantic Graph</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" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="id517536"></a>Code Layout</h3></div></div></div><p> Following the hybrid nature of the project, the source layout has two more or less separate root directories. <code class="filename">Synopsis/</code> provides the <span class="type">Synopsis</span> Python package, while <code class="filename">src/</code> 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>