---
Summary: Files forming the Code structure
Updated: June 2016
git-hash: 411f613c7f0b0622e68bcb7aa5f020ce9251bf97
---
Files and what they contain/do
==============================

Core Code Base
==============

.
├── pyxie
│   ├── __init__.py
│   ├── core.py
│   ├── codegen
│   │   ├── __init__.py
│   │   ├── clib.py         -- contains a json object that contains a bunch of C code to be 
│   │   │                      used/included in building c programs. 
│   │   │                      Generated from "clib/Makefile, clib/*cpp, clib/*hpp"
│   │   ├── profiles.py     -- Collection of definitions relating to different code generation profiles. (arduino vs default)
│   │   └── simple_cpp.py   -- Contains a collection of files related to representing a 
│   │                          simplified C-AST. This is to allow C-code generation
│   ├── model
│   │   ├── __init__.py
│   │   ├── functions.py    -- models functions in libraries, used in profiles.
│   │   │                      *Primarily* this relates to functions in the arduino profile...
│   │   │                      *BUT* it also relates to things like range() etc
│   │   │
│   │   ├── pynode.py       -- Imports the other pynodes
│   │   ├── pynodes           -- divides the pynodes into various different logical categories for convenience/management
│   │   │   ├── __init__.py   -- see the 2.Pynodes.md for details
│   │   │   ├── base_nodes.py
│   │   │   ├── operators.py
│   │   │   ├── pynode.py
│   │   │   ├── statements.py
│   │   │   ├── structural.py
│   │   │   ├── util.py
│   │   │   └── values.py
│   │   │
│   │   ├── transform.py  -- Transforms the pynodes to the JSON representation expected by the
│   │                        simple_cpp front end -- this is probably the source of our mental
│   │                        block TBH
│   └── parsing
│       ├── __init__.py
│       ├── context.py    -- Contains a loose concept of the idea of namespaces for variables etc. (needs work)
│       ├── grammar.py    -- Contains the Yacc style PLY parser
│       ├── lexer.py      -- Contains the Lex style PLY lexer
│       ├── parser.out    -- GENERATED FILE
│       └── parsetab.py   -- GENERATED FILE

Harnesses
=========

.
├── bin
│   ├── pyxie     - Makes calls into pyxie.core in order to run as the compiler / etc
│   └── pyxie-dev - Used to manage the project and to create released and .deb files



Packaging and Related Files
===========================
.
├── CHANGELOG
├── COPYING
├── Makefile
├── MANIFEST.in
├── parsetab.py
├── README.rst
├── setup.py

Support CLib code Source
========================
.
├── clib
│   ├── iterators.cpp
│   ├── iterators.hpp
│   ├── iterators_test.cpp
│   ├── Makefile
│   └── mk_py_clib.py


Experimental/Similar Code
=========================
.
├── experiments
│   ├── iterators.cpp
│   ├── iterators_noexceptions.cpp
│   ├── iterators_transform.cpp
│   └── Makefile

.
├── features
│   └── README.md




Examples and Test Data
======================

.
├── test-data
│    ├── genprogs
│    │   · Where the test cases get compiled into
│    │
│    └── progs
│        ·   Test cases - for testing language features
│        ·   
│        └── specific - specific tests
│            ·
│            ·

.
├── examples
│   ├── arduino
│   │   ├── analyse.sh
│   │   ├── arduino-blink.pyxie
│   │   ├── arduino-for-blink.pyxie
│   │   ├── compile.sh
│   │   └── parse.sh
│   ├── puppy
│   ├── README.md
│   └── servo
│       ├── analyse.sh
│       ├── arduino.py
│       ├── compile.sh
│       ├── parse.sh
│       ├── pseudo-servo.py
│       ├── servo-test.pyxie
│       └── servo-test-target.pyxie


Documentation
=============
.
├── site -- tools for maintaining documentation both on the site, but in the repo as well
│   ├── build_site_local.py
│   ├── build_site.py
│   ├── setup.tmpl -- Template for the setup.py file used by the project
│   ├── site -- actual site - created from the src files
│   ├── src -- Website source
│   │   ├── changelog.md
│   │   ├── copyright.md
│   │   ├── credits.md
│   │   ├── dev-status.md
│   │   ├── index.md
│   │   ├── language-spec.md
│   │   ├── language-status.md
│   │   ├── panels -- panels used in the various pages. (pages are conceptually divided into panels)
│   │   ├── project-status.md
│   │   ├── resources.md
│   │   └── site-maintenance.md
│   └── templates -- Page formats. Only tend to use mainpage.

.
├── doc
│   ├── changelog.md
│   ├── copyright.md
│   ├── credits.md
│   ├── dev-status.md
│   ├── index.md
│   ├── language-spec.md
│   ├── language-status.md
│   ├── project-status.md
│   ├── pyxie.1
│   ├── pyxie.man.rst
│   ├── resources.md
│   ├── update_man.sh
│   └── WIPNOTES
│       ├── 1.parser-analysis.txt
│       ├── 2.pynodes.md
│       ├── 2.pynodes.mdPyComparisonOperator
│       ├── 3.Python_AST_Structure.md
│       ├── 4.CodeStructure.md
│       └── README


