## Lexemes

The regular expressions used by the command line compiler are shown below. This content is printed on the screen with the built-in function `LEXEMES`.

To describe the regular expression the following character classes are used:

- :print: - all printable characters
- :space: - all blanks, tabs and new lines
- :cntr: - all control characters
- :alpha: - all letters ([[a-z]|[A-Z]])
- :alnum: - all letters and digits [0-9]
- :digit: - all decimal numbers [0-9]
- :xdigit: - all hexadecimal numbers [[0-9]|[a-f||[A-F]]

All comments and separators are ignored by the scanner and not passed with the token to the parser. This means that the separators (SEP) are used in the grammar but will never be part of or own tokens.

If a binary entry for a string is possible and no classification is done it is taken as a binary string in local character set representation (c) without null termination. This default can be changed. In this case the help message for this argument should be described the default interpretation of the binary string. For binary strings it is still possible to enter a null-terminated string, but then the prefix s must be used. If no binary entry is feasible, only a null-terminated string in local character representation (s) can be built and taken by default.

    Lexemes (regular expressions) for argument list or parameter file
    --| COMMENT   '#' [:print:]* '#'                              (will be ignored)
    --| LCOMMENT  ';' [:print:]* 'nl'                             (will be ignored)
    --| SEPARATOR [:space: | :cntr: | ',']*                  (abbreviated with SEP)
    --| OPERATOR '=' | '.' | '(' | ')' | '[' | ']' | (SGN, DOT, RBO, RBC, SBO, SBC)
    --|  '=>'| '+' | '-' | '*' | '/' | '{' | '}' (SAB, ADD, SUB, MUL, DIV, CBO,CBC)
    --| KEYWORD   ['-'['-']][:alpha:]+[:alnum: | '_']*          (always predefined)
    --| NUMBER    ([+|-]  [ :digit:]+)  |                       (decimal (default))
    --| num       ([+|-]0b[ :digit:]+)  |                                  (binary)
    --| num       ([+|-]0o[ :digit:]+)  |                                   (octal)
    --| num       ([+|-]0d[ :digit:]+)  |                                 (decimal)
    --| num       ([+|-]0x[ :xdigit:]+) |                             (hexadecimal)
    --| num       ([+|-]0t(yyyy/mm/tt.hh:mm:ss)) |  (relativ (+|-) or absolut time)
    --| FLOAT     ([+|-]  [ :digit:]+.[:digit:]+e|E[:digit:]+) | (decimal(default))
    --| flt       ([+|-]0d[ :digit:]+.[:digit:]+e|E[:digit:]+)            (decimal)
    --| STRING         ''' [:print:]* ''' |          (default (if binary c else s))
    --| str       [s|S]''' [:print:]* ''' |                (null-terminated string)
    --| str       [c|C]''' [:print:]* ''' |  (binary string in local character set)
    --| str       [a|A]''' [:print:]* ''' |                (binary string in ASCII)
    --| str       [e|E]''' [:print:]* ''' |               (binary string in EBCDIC)
    --| str       [x|X]''' [:print:]* ''' |         (binary string in hex notation)
    --| str       [f|F]''' [:print:]* ''' | (read string from file (for passwords))
    --|           Strings can contain two '' to represent one '
    --|           Strings can also be enclosed in " or ` instead of '
    --|           Strings can directly start behind a '=' without enclosing ('`")
    --|              In this case the string ends at the next separator or operator
    --|              and keywords are preferred. To use keywords, separators or
    --|              operators in strings, enclosing quotes are required.
    --|
    --| The predefined constant keyword below can be used in a value expressions
    --| NOW       NUMBER - current time in seconds since 1970 (+0t0000)
    --| MINUTE    NUMBER - minute in seconds (60)
    --| HOUR      NUMBER - hour in seconds   (60*60)
    --| DAY       NUMBER - day in seconds    (24*60*60)
    --| YEAR      NUMBER - year in seconds   (365*24*60*60)
    --| KiB       NUMBER - kilobyte          (1024)
    --| MiB       NUMBER - megabyte          (1024*1024)
    --| GiB       NUMBER - gigabyte          (1024*1024*1024)
    --| TiB       NUMBER - terrabyte         (1024*1024*1024*1024)
    --| RNDn      NUMBER - simple random number with n * 8 bit in length (1,2,4,8)
    --| PI        FLOAT  - PI (3.14159265359)
    --| LCSTAMP   STRING - current local stamp in format:           YYYYMMDD.HHMMSS
    --| LCDATE    STRING - current local date in format:            YYYYMMDD
    --| LCYEAR    STRING - current local year in format:            YYYY
    --| LCYEAR2   STRING - current local year in format:            YY
    --| LCMONTH   STRING - current local month in format:           MM
    --| LCDAY     STRING - current local day in format:             DD
    --| LCTIME    STRING - current local time in format:            HHMMSS
    --| LCHOUR    STRING - current local hour in format:            HH
    --| LCMINUTE  STRING - current local minute in format:          MM
    --| LCSECOND  STRING - current local second in format:          SS
    --| GMSTAMP   STRING - current Greenwich mean stamp in format:  YYYYMMDD.HHMMSS
    --| GMDATE    STRING - current Greenwich mean date in format:   YYYYMMDD
    --| GMYEAR    STRING - current Greenwich mean year in format:   YYYY
    --| GMYEAR2   STRING - current Greenwich mean year in format:   YY
    --| GMMONTH   STRING - current Greenwich mean month in format:  MM
    --| GMDAY     STRING - current Greenwich mean day in format:    DD
    --| GMTIME    STRING - current Greenwich mean time in format:   HHMMSS
    --| GMHOUR    STRING - current Greenwich mean hour in format:   HH
    --| GMMINUTE  STRING - current Greenwich mean minute in format: MM
    --| GMSECOND  STRING - current Greenwich mean second in format: SS
    --| GMSECOND  STRING - current Greenwich mean second in format: SS
    --| SnRND10   STRING - decimal random number of length n (1 to 8)
    --| SnRND16   STRING - hexadecimal random number of length n (1 to 8)
    --|
    --| SUPPLEMENT     '"' [:print:]* '"' |   (null-terminated string (properties))
    --|           Supplements can contain two "" to represent one "
    --|           Supplements can also be enclosed in ' or ` instead of "
    --|           Supplements can also be enclosed in ' or ` instead of "
    --| ENVIRONMENT VARIABLES '<'varnam'>' will replaced by the corresponding value
    --| Escape sequences for critical punctuation characters on EBCDIC systems
    --|    '!' = '&EXC;'   - Exclamation mark
    --|    '$' = '&DLR;'   - Dollar sign
    --|    '#' = '&HSH;'   - Hashtag (number sign)
    --|    '@' = '&ATS;'   - At sign
    --|    '[' = '&SBO;'   - Square bracket open
    --|    '\' = '&BSL;'   - Backslash
    --|    ']' = '&SBC;'   - Square bracket close
    --|    '^' = '&CRT;'   - Caret (circumflex)
    --|    '`' = '&GRV;'   - Grave accent
    --|    '{' = '&CBO;'   - Curly bracket open
    --|    '|' = '&VBR;'   - Vertical bar
    --|    '}' = '&CBC;'   - Curly bracket close
    --|    '~' = '&TLD;'   - Tilde
    --| Define CCSIDs for certain areas in CLP strings on EBCDIC systems (0-reset)
    --|    '&' [:digit:]+ ';  (..."&1047;get.file='&0;%s&1047;'",f)
    --| Escape sequences for hexadecimal byte values
    --|    '&' ['X''x'] :xdigit: :xdigit: ';' ("&xF5;")