input:  1
       ;
output: 1
       ;
aliases:
       SPACE   = 32
               ;
       QUERY   = 63
               ;

       SLASH   = 47
               ;
       CONSONANT       = (`('|`)'|`+'|`#'|`&'|`$'| % $
               `B'|`G'|`D'|`H'|`W'|`Z'|`X'|`Y'|`K'|`L'|`M'|`N'|
               `S'|`P'|`C'|`Q'|`R'|`T')
               ;
       VOWEL           = ( `A'|`F'|`I'|`E'|`"'|`O'|`U'|`.'|`:'|`-'|
                       `.'|`''|`*'|`]')
               ;
       DIGIT           = (`0'-`9')
               ;
       PRINTABLE       = ({CONSONANT}|{VOWEL}|{DIGIT})
               ;
       NONPRINTABLE    = ^({CONSONANT}|{VOWEL}|{DIGIT})
               ;
expressions:
%% The only purpose of this `pre-BHS' otp is to map the question mark
%% and slash into nulls.  I don't know what else these characters are
%% good for.
       {QUERY} =>
               ;
       {SLASH} =>
               ;
%%      {NONPRINTABLE}  =>      32
%%              ;
       .               => \1
               ;