Non-standard input

The symbol table generated by the script, and handed to the language personalities, can have any sort of replacement tags and associated values. The structure is a top level table (generated by IN-based values), which includes a FLAG table and a preprocessor generated symbol table. The order of precedence is Preprocessor > FLAG > IN. In addition to the standard values created for an IN-based input, the standard value may also generate sister values, generally based on different capitalization rules, or on handling of arrays. For example, the CommandName value "FooFnorb" will result in commandname "foofnorb", and COMMANDNAME "FOOFNORB" respectively. For array behavior, see the comments above on the -set and -get command line arguments.

FLAG symbols have no additional processing, they are simply 1:1 replacements.

Arbitrary, additional templates may be supplied for own use. These may require their own replacements, which can be supplied as the normal IN-type symbol replacements, or FLAGbased entries in a .cdb file or preprocessor directives (for static replacements), or they can be the target for a dynamic replacement, if a Personality is created or extended to be aware of them (see below).

The decision to base additional inputs on IN, FLAG, preprocessor or custom depends on if additional processing is expected on the input data (which is the case for handling arrays). In general, IN-based values are added when extending or developing new personalities or when extending the outer scripts or utilities. FLAG-based values are much less intensive and can be added quickly to existing templates without much effort, obviating the need for custom tags.