-
Notifications
You must be signed in to change notification settings - Fork 0
Home
A small subspace server C Enricher
Requirements:
- A Small Subspace Server 1.5.0rc1 or later is recommended. Previous versions may work, but advisers did not exist before 1.5.0.
- Python 2.4 or later, but see the note below. The supported python version may change suddenly with new releases. 2.4 was chosen because it is the oldest python still installed on a machine I use. Upgrading to 2.7 is encouraged.
- Language Documentation - Articles explaining features and behavior of ACE.
- Instruction Reference - A quick guide to all directives and inline expansion functions in ACE.
- Examples - Small demonstrations of ACE, showing input and output.
ACE is a tool used to create full C modules for A Small Subspace Server by specifying common patterns in a compact way and letting the machine figure out the gory details. It is written and maintained by Justin Schwartz, also known as "Arnk Kilo Dylie" in the world of Subspace.
Having worked with module writing for almost six years, I've found many tedious things about the process of making good modules, and many of these things I simplified for myself over the years (through a collection of "standard" macros.) The problem with these is that they had obscure names, and still couldn't simplify the process as much as I wanted. A more robust system was needed, the result was a python script which easily outdoes what C macros can.
Using a very simple regex system, ACE will parse files using it's own intermediate language, which consists of C code and functions wrapped with directives and spiced up with expansion functions. ACE users may either generate a module once from an ACE file and work with it from then on as a full-fledged C file, or build it into a module library from the ACE format directly using the standard A Small Subspace Server makefile.
ACE's intention is to do a simple job with simple tools. It runs on regular expressions as opposed to a full grammar parser. It's a work-in-progress, this was my first major Python project, and I am a C programmer at heart--a lot of my code could make you roll your eyes. The goal is to get the job done--and even at this unfinished point, it does that for me.
More features will be added, the language itself may change based on feedback and support.