[[[ MODES ]]] EXECUTION (aka RUN): the process used to execute the CODE INTERPRET JUST-IN-TIME COMPILE (aka JIT, DYNAMIC COMPILE) COMPILE (aka STATIC COMPILE) SOURCE CODE (aka CODE): the language used to write the text representation of the OPS and TYPES PERL RPERL CPP C XS OPERATIONS (aka OPS): the language used to execute the operations on the TYPES PERL CPP DATA TYPES (aka TYPES): the language used to store the data types PERL_DYNAMIC (aka NONE, should be aka PERL) PERL_STATIC (aka PERL, should be aka RPERL) CPP DATA TYPE CHECKING (aka CHECK): function & method arguments must be correct data type, naturally on for CPP TYPES OFF ON (no report) TRACE (report variable name & calling function) INTERPRET run, PERL code, PERL ops, PERL_DYNAMIC types, OFF check = NORMAL PERL INTERPRET run, PERL code, PERL ops, PERL_STATIC types, TRACE check = RPERL PERLOPS_PERLTYPES aka PURE-PERL MODE ... COMPILE run, RPERL code, CPP ops, PERL_STATIC types, TRACE check = RPERL CPPOPS_PERLTYPES MODE COMPILE run, RPERL code, CPP ops, CPP types, TRACE check = RPERL CPPOPS_CPPTYPES MODE ... INTERPRET run, C code, PERL ops, PERL_DYNAMIC types, OFF check = B::C OUTPUT COMPILE run, C code, PERL ops, PERL_DYNAMIC types, OFF check = B::CC OUTPUT non-typed COMPILE run, C code, PERL ops, PERL_STATIC types, TRACE check = B::CC OUTPUT typed ... [[[ COMPONENTS ]]] SOURCE CODE: highest-level human-readable text data ABSTRACT SYNTAX TREE (aka AST): next-to-highest-level data structure representation of SOURCE CODE DOCUMENT SYNTAX TREE (aka DOCTREE): higher-level static-analysis AST OPERATIONS SYNTAX TREE (aka OPTREE): lower-level dynamic-analysis AST BYTECODE: medium-level intermediate representation, used as MACHINE CODE for VIRTUAL MACHINE ASSEMBLY CODE: next-to-lowest-level text representation of MACHINE CODE MACHINE CODE: lowest-level computer-readable binary data VIRTUAL MACHINE: non-physical software processor, executes OPTREE or BYTECODE MACHINE: physical hardware processor, executes MACHINE CODE TOKEN: individual SOURCE CODE component [[[ ACTIONS ]]] LEXICAL ANALYSIS (aka LEXER, TOKENIZE): convert SOURCE CODE to TOKENS PARSE (aka DECOMPOSE, DECONSTRUCT, ANALYZE): convert SOURCE CODE to AST, or TOKENS to AST, same language DEPARSE (aka COMPOSE, CONSTRUCT, SYNTHESIZE): convert AST to SOURCE CODE, during WALK TREE, same language GENERATE (aka EMIT, RENDER): convert AST to SOURCE CODE, during WALK TREE, different languages STRINGIFY (aka PRETTY PRINT, SERIALIZE): convert DATA TYPES to SOURCE CODE WALK TREE: visit every node in AST TRANSLATE: convert SOURCE CODE to SOURCE CODE, or AST to AST, or MACHINE CODE to MACHINE CODE, different languages COMPILE: convert SOURCE CODE to BYTECODE, or SOURCE CODE to MACHINE CODE, before EXECUTION DECOMPILE: convert BYTECODE to SOURCE CODE, or MACHINE CODE to SOURCE CODE JIT: convert SOURCE CODE to MACHINE CODE, or BYTECODE to MACHINE CODE, during EXECUTION INTERPRET: convert SOURCE CODE to OPTREE, or SOURCE CODE to BYTECODE, during EXECUTION ASSEMBLE: convert ASSEMBLY CODE to MACHINE CODE DISASSEMBLE: convert MACHINE CODE to ASSEMBLY CODE EXECUTION (aka RUNTIME): convert OPERATIONS to DATA, and DATA to different DATA