This is where the bulk of the KLL compiler processing occurs. Including all of the datastructures used to contain the parsed expressions.
Brief description of each of the files.
Files that deal with file and expression processing. Including parsing and tokenization.
- emitter.py - Base classes for KLL emitters.
- parse.py - Contains most of the KLL xBNF parsing rules and how to map them to datastructure.
- stage.py - Handles each stage of KLL file processing, from file reading to emitter output. This is where to start if you're unsure.
Datastructure assembly classes used to contain KLL data.
- channel.py - Container classes for KLL pixel channels.
- context.py - Container classes for KLL contexts (e.g. Generic, Configuration, BaseMap, DefaultMap, PartialMap and Merge).
- expression.py - Container classes for KLL expressions (e.g. MapExpression, etc.).
- file.py - Container class for reading kll files.
- id.py - Container classes for KLL id elements (e.g. HIDId, PixelId, ScanCodeId, NoneId, etc.).
- modifier.py - Container classes for KLL modifiers (e.g. AnimationModifier, PixelModifier, etc.).
- organization.py - Container classes for expression organizations. Handles expression merging.
- position.py - Container class for physical KLL positions.
- schedule.py - Container class for KLL schedules and schedule parameters.
Lookup tables and other static data.
- hid_dict.py - Dictionary lookup for USB HID codes (both symbolic and numeric).