ENIGMA: Description: | The Extensible Non-Interpreted Game Maker Augmentation Comprises: - Compiler - Engine Engine: Description: | The game engine upon which output games are built. The engine is written in the native output language and is meant to be used with translated EDL only (with rare exception). Comprises: - Universal Systems - Systems Interfaces - Environment Editables Universal Systems: Description: | Contains platform-independent, system-agnostic code to run the game. Systems Interfaces: Description: | Contains code for specialized systems which may be platform-dependent or specific to certain types of games. Environment Editables: Description: | The folder into which translated user code is written, along with other game-specific code which needs to be generated by the [[compiler]] to properly interface games with the engine. Compiler: Description: | Builds your game, written in [[EDL]], to a native language. Comprises: - Definitions Parser - Parser - Language Adapter Definitions Parser: Description: | Any mechanism which operates on the [[Engine]] source code to generate [[native definitions]] objects for use by the [[Parser]]. Comprises: - JustDefineIt Produces: - Native definitions JDI: Synonym: JustDefineIt JustDefineIt: Description: | The framework on which the ENIGMA compiler is built. Used to represent definitions harvested from the engine code, in order to interpret users' [[EDL]] code. Comprises: - JDI::Context - C++ Parser C++ Parser: Instance of: Definitions parser Description: | The JustDefineIt storage hierarchy was designed around parsing C++ code. JDI provides a full C++ parser which is used by the C++ [[Language Adapter]] to enumerate functions and data types declared in ENIGMA's [[engine]]. Only those types and functions declared in namespace `enigma_user` are considered. Produces: - C++ Definitions C++ Definitions: Instance of: Native definitions Description: | Native definitions pulled from the [[C++ engine]], as read in by the [[C++ parser]]. These are likely to include many data types representing actual C++ structures and classes, and functions corresponding to actual C++ function overloads. Parser: Description: | ENIGMA's parser is a native-language-insensitive mechanism which interprets [[EDL]] code and builds abstract information about it. Comprises: - EDL Lexer Requires: - Native Definitions Produces: - EDL AST - Object usage graph Native Definitions: Description: | Classes (defined in [[JDI]]) denoting functions and data types available in user code, as supported by the [[engine]] of the current language. Language Adapter: Description: | Enables the compiler to interface with and export to a particular language. Comprises: - Code Generator - Definitions Parser Code Generator: Description: | Outputs used code from the parser into the native language meant to be compiled further or run on the system. Requires: - EDL AST - Object usage graph