====== emit ====== ''emit'' sollte auf kurz oder lang ''print'' ablösen, wobei ''print'' ein ''emit(stdout)'' entsprechen könnte, wobei stdout ausschließlich strings und byte-Arrays akzeptiert. emit bekommt als optionales Argument einen Generator genannt, z.B. C++. ImageSize is enum { Large, Small; }; generator cplusplus { // Variablen, die zum Projekt-Enviroment gehören. enum( e is type ) // irgendein enum { emit "enum "+e$; emit "{"; bool comma = false; for( type t of e.elements() ) { if( comma ) emit ","; emit "\n "+ t$; } emit "\n};"; }; // ImageSize // { // emit "Generator für Typ ImageSize, ansprechbar über value"; // } }; emit(cplusplus) ImageSize; Hier besteht also ein passender Generator, der auch ein enum verarbeiten kann. ImageSize is enum { Large, Small; }; sollte mit gc -e cplusplus imagesize.g -o imagesize.h kompiliert werden können. Dafür wird nachgeprüft, ob auf Festplatte ein "cplusplus"-Generator existiert und falls ja, wird dieser geladen. Existiert dann eine Beschreibung für ImageSize oder als Fallback für enum, dann wird dieser ausgeführt, sobald das enum als Genesys-Code gelesen wurde. Die Genesys-Anweisungen werden nur gelesen und sofort an den Generator weitergeleitet.