/*
    This file is part of GNU APL, a free implementation of the
    ISO/IEC Standard 13751, "Programming Language APL, Extended"

    Copyright © 2008-2025  Dr. Jürgen Sauermann

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

/** The characters used in the interpreter.

    Macro char_def( ,  xx) defines characters in ⎕AV which have APL relevance.

    Macro char_def( , 0xx) defines characters in ⎕AV without APL relevance.
    These characters come from the IBM APL2 Workstation ⎕AV and are subject
    to being removed in favour of new APL characters with APL relevance.

    Macro char_uni() defines characters not in ⎕AV, have no APL relevance,
    but were declared as members UNI_xxx in \b enum \b Unicode so that they
    can be referenced with name in the C++ source files.
**/

//      (Name                Unicode  Token          Flags      Pos)
//------------------------------------------------------------------
char_def(NUL               , 0x00   , END          , NONE     ,  00)
char_def(SOH               , 0x01   , END          , NONE     ,  01)
char_def(STX               , 0x02   , END          , NONE     ,  02)
char_def(ETX               , 0x03   , END          , NONE     ,  03)
char_def(EOT               , 0x04   , END          , NONE     ,  04)
char_def(ENQ               , 0x05   , END          , NONE     ,  05)
char_def(ACK               , 0x06   , END          , NONE     ,  06)
char_def(BEL               , 0x07   , END          , NONE     ,  07)
char_def(BS                , 0x08   , END          , NONE     ,  08)
char_def(HT                , 0x09   , SPACE        , NONE     ,  09)
char_def(LF                , 0x0A   , NEWLINE      , NONE     ,  0A)
char_def(VT                , 0x0B   , END          , NONE     ,  0B)
char_def(FF                , 0x0C   , END          , NONE     ,  0C)
char_def(CR                , 0x0D   , SPACE        , NONE     ,  0D)
char_def(SO                , 0x0E   , END          , NONE     ,  0E)
char_def(SI                , 0x0F   , END          , NONE     ,  0F)
char_def(DLE               , 0x10   , END          , NONE     ,  10)
char_def(DC1               , 0x11   , END          , NONE     ,  11)
char_def(DC2               , 0x12   , END          , NONE     ,  12)
char_def(DC3               , 0x13   , END          , NONE     ,  13)
char_def(DC4               , 0x14   , END          , NONE     ,  14)
char_def(NAK               , 0x15   , END          , NONE     ,  15)
char_def(SYN               , 0x16   , END          , NONE     ,  16)
char_def(ETB               , 0x17   , END          , NONE     ,  17)
char_def(CAN               , 0x18   , END          , NONE     ,  18)
char_def(EM                , 0x19   , END          , NONE     ,  19)
char_def(SUB               , 0x1A   , END          , NONE     ,  1A)
char_def(ESC               , 0x1B   , END          , NONE     ,  1B)
char_def(FS                , 0x1C   , END          , NONE     ,  1C)
char_def(GS                , 0x1D   , END          , NONE     ,  1D)
char_def(RS                , 0x1E   , END          , NONE     ,  1E)
char_def(US                , 0x1F   , END          , NONE     ,  1F)
char_def(SPACE             , ' '    , SPACE        , NO_SPACE ,  20)
char_def(EXCLAM            , '!'    , F12_BINOM    , NO_SPACE ,  21)
char_def(DOUBLE_QUOTE      , '"'    , QUOTE2       , NONE     ,  22)
char_def(NUMBER_SIGN       , '#'    , END          , NONE     ,  23)
char_def(DOLLAR_SIGN       , '$'    , NUMERIC      , NONE     ,  24)
char_def(PERCENT           , '%'    , END          , NONE     ,  25)
char_def(AMPERSAND         , '&'    , END          , NONE     ,  26)
char_def(SINGLE_QUOTE      , '\''   , QUOTE1       , NONE     ,  27)
char_def(L_PARENT          , '('    , L_PARENT     , NO_SPACE ,  28)
char_def(R_PARENT          , ')'    , R_PARENT     , NO_SPACE ,  29)
char_def(ASTERISK          , '*'    , F12_POWER    , NO_SPACE ,  2A)
char_def(PLUS              , '+'    , F12_PLUS     , NO_SPACE ,  2B)
char_def(COMMA             , ','    , F12_COMMA    , NO_SPACE ,  2C)
char_def(MINUS             , '-'    , F12_MINUS    , NO_SPACE ,  2D)
char_def(FULLSTOP          , '.'    , OPER2_INNER  , NO_SPACE ,  2E)
char_def(SLASH             , '/'    , OPER1_REDUCE , NO_SPACE ,  2F)
char_def(0                 , '0'    , NUMERIC      , NUMERIC  ,  30)
char_def(1                 , '1'    , NUMERIC      , NUMERIC  ,  31)
char_def(2                 , '2'    , NUMERIC      , NUMERIC  ,  32)
char_def(3                 , '3'    , NUMERIC      , NUMERIC  ,  33)
char_def(4                 , '4'    , NUMERIC      , NUMERIC  ,  34)
char_def(5                 , '5'    , NUMERIC      , NUMERIC  ,  35)
char_def(6                 , '6'    , NUMERIC      , NUMERIC  ,  36)
char_def(7                 , '7'    , NUMERIC      , NUMERIC  ,  37)
char_def(8                 , '8'    , NUMERIC      , NUMERIC  ,  38)
char_def(9                 , '9'    , NUMERIC      , NUMERIC  ,  39)
char_def(COLON             , ':'    , COLON        , NO_SPACE ,  3A)
char_def(SEMICOLON         , ';'    , SEMICOL      , NO_SPACE ,  3B)
char_def(LESS              , '<'    , F2_LESS      , NO_SPACE ,  3C)
char_def(EQUAL             , '='    , F2_EQUAL     , NO_SPACE ,  3D)
char_def(GREATER           , '>'    , F2_GREATER   , NO_SPACE ,  3E)
char_def(QUESTION          , '?'    , F12_ROLL     , NO_SPACE ,  3F)
char_def(AT_SIGN           , '@'    , MARKER       , NO_SPACE ,  40)
char_def(A                 , 'A'    , SYMBOL       , SYMBOL   ,  41)
char_def(B                 , 'B'    , SYMBOL       , SYMBOL   ,  42)
char_def(C                 , 'C'    , SYMBOL       , SYMBOL   ,  43)
char_def(D                 , 'D'    , SYMBOL       , SYMBOL   ,  44)
char_def(E                 , 'E'    , SYMBOL       , SYMBOL   ,  45)
char_def(F                 , 'F'    , SYMBOL       , SYMBOL   ,  46)
char_def(G                 , 'G'    , SYMBOL       , SYMBOL   ,  47)
char_def(H                 , 'H'    , SYMBOL       , SYMBOL   ,  48)
char_def(I                 , 'I'    , SYMBOL       , SYMBOL   ,  49)
char_def(J                 , 'J'    , SYMBOL       , SYMBOL   ,  4A)
char_def(K                 , 'K'    , SYMBOL       , SYMBOL   ,  4B)
char_def(L                 , 'L'    , SYMBOL       , SYMBOL   ,  4C)
char_def(M                 , 'M'    , SYMBOL       , SYMBOL   ,  4D)
char_def(N                 , 'N'    , SYMBOL       , SYMBOL   ,  4E)
char_def(O                 , 'O'    , SYMBOL       , SYMBOL   ,  4F)
char_def(P                 , 'P'    , SYMBOL       , SYMBOL   ,  50)
char_def(Q                 , 'Q'    , SYMBOL       , SYMBOL   ,  51)
char_def(R                 , 'R'    , SYMBOL       , SYMBOL   ,  52)
char_def(S                 , 'S'    , SYMBOL       , SYMBOL   ,  53)
char_def(T                 , 'T'    , SYMBOL       , SYMBOL   ,  54)
char_def(U                 , 'U'    , SYMBOL       , SYMBOL   ,  55)
char_def(V                 , 'V'    , SYMBOL       , SYMBOL   ,  56)
char_def(W                 , 'W'    , SYMBOL       , SYMBOL   ,  57)
char_def(X                 , 'X'    , SYMBOL       , SYMBOL   ,  58)
char_def(Y                 , 'Y'    , SYMBOL       , SYMBOL   ,  59)
char_def(Z                 , 'Z'    , SYMBOL       , SYMBOL   ,  5A)
char_def(L_BRACK           , '['    , L_BRACK      , NO_SPACE ,  5B)
char_def(BACKSLASH         , '\\'   , OPER1_SCAN   , NO_SPACE ,  5C)
char_def(R_BRACK           , ']'    , R_BRACK      , NO_SPACE ,  5D)
char_def(CIRCUMFLEX        , '^'    , F2_AND       , NO_SPACE ,  5E)
char_def(UNDERSCORE        , '_'    , SYMBOL       , SYMBOL   ,  5F)
char_def(ACCENT_GRAVE      , '`'    , END          , NO_SPACE ,  60)
char_def(a                 , 'a'    , SYMBOL       , SYMBOL   ,  61)
char_def(b                 , 'b'    , SYMBOL       , SYMBOL   ,  62)
char_def(c                 , 'c'    , SYMBOL       , SYMBOL   ,  63)
char_def(d                 , 'd'    , SYMBOL       , SYMBOL   ,  64)
char_def(e                 , 'e'    , SYMBOL       , SYMBOL   ,  65)
char_def(f                 , 'f'    , SYMBOL       , SYMBOL   ,  66)
char_def(g                 , 'g'    , SYMBOL       , SYMBOL   ,  67)
char_def(h                 , 'h'    , SYMBOL       , SYMBOL   ,  68)
char_def(i                 , 'i'    , SYMBOL       , SYMBOL   ,  69)
char_def(j                 , 'j'    , SYMBOL       , SYMBOL   ,  6A)
char_def(k                 , 'k'    , SYMBOL       , SYMBOL   ,  6B)
char_def(l                 , 'l'    , SYMBOL       , SYMBOL   ,  6C)
char_def(m                 , 'm'    , SYMBOL       , SYMBOL   ,  6D)
char_def(n                 , 'n'    , SYMBOL       , SYMBOL   ,  6E)
char_def(o                 , 'o'    , SYMBOL       , SYMBOL   ,  6F)
char_def(p                 , 'p'    , SYMBOL       , SYMBOL   ,  70)
char_def(q                 , 'q'    , SYMBOL       , SYMBOL   ,  71)
char_def(r                 , 'r'    , SYMBOL       , SYMBOL   ,  72)
char_def(s                 , 's'    , SYMBOL       , SYMBOL   ,  73)
char_def(t                 , 't'    , SYMBOL       , SYMBOL   ,  74)
char_def(u                 , 'u'    , SYMBOL       , SYMBOL   ,  75)
char_def(v                 , 'v'    , SYMBOL       , SYMBOL   ,  76)
char_def(w                 , 'w'    , SYMBOL       , SYMBOL   ,  77)
char_def(x                 , 'x'    , SYMBOL       , SYMBOL   ,  78)
char_def(y                 , 'y'    , SYMBOL       , SYMBOL   ,  79)
char_def(z                 , 'z'    , SYMBOL       , SYMBOL   ,  7A)
char_def(L_CURLY           , '{'    , L_CURLY      , NO_SPACE ,  7B)
char_def(BAR               , '|'    , F12_STILE    , NO_SPACE ,  7C)
char_def(R_CURLY           , '}'    , R_CURLY      , NO_SPACE ,  7D)
char_def(TILDE             , '~'    , F12_WITHOUT  , NO_SPACE ,  7E)
char_def(DELETE            , 0x7F   , END          , NO_SPACE , 07F)
char_def(NO_BREAK_SPACE    , 0x00A0 , END          , NO_SPACE ,  FF) /*   */
char_uni(INVERTED_EXCLAM   , 0x00A1 , END          , NO_SPACE      ) /* ¡ */
char_def(POUND             , 0x00A3 , END          , NO_SPACE ,  9C) /* £ */
char_def(YEN               , 0x00A5 , END          , NO_SPACE , 080) /* ¥ */
char_def(DIAERESIS         , 0x00A8 , OPER1_EACH   , NO_SPACE ,  FE) /* ¨ */
char_def(LEFT_DAQ          , 0x00AB , QUOTE2       , NO_SPACE ,  85) /* « */
char_def(OVERBAR           , 0x00AF , NUMERIC      , SYMBOL   ,  FD) /* ¯ */
char_def(PAD_U2            , 0x00B2 , SYMBOL       , SYMBOL   , 089) /* ² */
char_uni(PAD_U3            , 0x00B3 , END          , NO_SPACE      ) /* ³ */
char_uni(PAD_U1            , 0x00B9 , END          , NO_SPACE      ) /* ¹ */
char_def(RIGHT_DAQ         , 0x00BB , QUOTE2       , NO_SPACE ,  8D) /* » */
char_def(MULTIPLY          , 0x00D7 , F12_TIMES    , NO_SPACE ,  F5) /* × */
char_def(DIVIDE            , 0x00F7 , F12_DIVIDE   , NO_SPACE ,  F6) /* ÷ */
char_def(LAMBDA            , 0x03BB , SYMBOL       , SYMBOL   ,  99) /* λ */
char_def(MUE               , 0x03BC , END          , SYMBOL   ,  8B) /* μ */
char_def(CHI               , 0x03C7 , SYMBOL       , SYMBOL   ,  A2) /* χ */
char_def(ELEMENT           , 0x03F5 , F12_ELEMENT  , NO_SPACE ,  EE) /* ϵ */
char_uni(SINGLE_QUOTE1     , 0x2018 , QUOTE1       , NONE          ) /* ‘ */
char_uni(SINGLE_QUOTE2     , 0x2019 , QUOTE1       , NONE          ) /* ‘ */
char_uni(PAD_U0            , 0x2070 , END          , NO_SPACE      ) /* ⁰ */
char_uni(PAD_U4            , 0x2074 , END          , NO_SPACE      ) /* ⁴ */
char_uni(PAD_U5            , 0x2075 , END          , NO_SPACE      ) /* ⁵ */
char_uni(PAD_U6            , 0x2076 , END          , NO_SPACE      ) /* ⁶ */
char_uni(PAD_U7            , 0x2077 , END          , NO_SPACE      ) /* ⁷ */
char_uni(PAD_U8            , 0x2078 , END          , NO_SPACE      ) /* ⁸ */
char_uni(PAD_U9            , 0x2079 , END          , NO_SPACE      ) /* ⁹ */
char_uni(PAD_Un            , 0x207F , END          , NO_SPACE      ) /* ⁿ */
char_uni(PAD_L0            , 0x2080 , END          , NO_SPACE      ) /* ₀ */
char_uni(PAD_L1            , 0x2081 , END          , NO_SPACE      ) /* ₁ */
char_uni(PAD_L2            , 0x2082 , END          , NO_SPACE      ) /* ₂ */
char_uni(PAD_L3            , 0x2083 , END          , NO_SPACE      ) /* ₃ */
char_uni(PAD_L4            , 0x2084 , END          , NO_SPACE      ) /* ₄ */
char_uni(PAD_L5            , 0x2085 , END          , NO_SPACE      ) /* ₅ */
char_uni(PAD_L6            , 0x2086 , END          , NO_SPACE      ) /* ₆ */
char_uni(PAD_L7            , 0x2087 , END          , NO_SPACE      ) /* ₇ */
char_uni(PAD_L8            , 0x2088 , END          , NO_SPACE      ) /* ₈ */
char_uni(PAD_L9            , 0x2089 , END          , NO_SPACE      ) /* ₉ */
char_uni(PAD_Lk            , 0x2096 , END          , NO_SPACE      ) /* ₖ */
char_uni(PAD_Ln            , 0x2099 , END          , NO_SPACE      ) /* ₙ */
char_def(EURO              , 0x20AC , END          , NO_SPACE , 081) /* € */
char_def(LEFT_ARROW        , 0x2190 , ASSIGN       , NO_SPACE ,  BD) /* ← */
char_def(UP_ARROW          , 0x2191 , F12_TAKE     , NO_SPACE ,  C6) /* ↑ */
char_def(RIGHT_ARROW       , 0x2192 , R_ARROW      , NO_SPACE ,  B8) /* → */
char_def(DOWN_ARROW        , 0x2193 , F12_DROP     , NO_SPACE ,  C7) /* ↓ */
char_def(RIGHT_LEFT_ARROW  , 0x21C4 , END          , NO_SPACE , 082) /* ⇄ */
char_uni(DOUBLE_ARROW_L    , 0x21E8 , END          , NO_SPACE      ) /* ⇨ */
char_def(DELTA             , 0x2206 , SYMBOL       , SYMBOL   ,  B6) /* ∆ */
char_def(NABLA             , 0x2207 , END          , NO_SPACE ,  B7) /* ∇ */
char_uni(ELEMENT1          , 0x2208 , F12_ELEMENT  , NO_SPACE      ) /* ∈ */
char_uni(ELEMENT2          , 0x220A , F12_ELEMENT  , NO_SPACE      ) /* ∊ */
char_def(RING_OPERATOR     , 0x2218 , JOT          , NO_SPACE ,  F8) /* ∘ */
char_uni(INFINITY          , 0x221E , END          , NO_SPACE      ) /* ∞ */
char_def(DIVIDES           , 0x2223 , F12_STILE    , NO_SPACE ,  B2) /* ∣ */
char_def(AND               , 0x2227 , F2_AND       , NO_SPACE ,  83) /* ∧ */
char_def(OR                , 0x2228 , F2_OR        , NO_SPACE ,  EB) /* ∨ */
char_def(INTERSECTION      , 0x2229 , F2_INTER     , NO_SPACE ,  EF) /* ∩ */
char_def(UNION             , 0x222A , F12_UNION    , NO_SPACE ,  AC) /* ∪ */
char_def(DOTTED_DEL        , 0x2235 , END          , NO_SPACE ,  D2) /* ∵ */
char_def(TILDE_OPERATOR    , 0x223C , F12_WITHOUT  , NO_SPACE ,  84) /* ∼ */
char_def(NOT_EQUAL         , 0x2260 , F2_UNEQU     , NO_SPACE ,  F4) /* ≠ */
char_def(EQUIVALENT        , 0x2261 , F12_EQUIV    , NO_SPACE ,  CF) /* ≡ */
char_def(NEQUIVALENT       , 0x2262 , F12_NEQUIV   , NO_SPACE ,  A3) /* ≢ */
char_def(LESS_OR_EQUAL     , 0x2264 , F2_LEQU      , NO_SPACE ,  F3) /* ≤ */
char_def(MORE_OR_EQUAL     , 0x2265 , F2_MEQU      , NO_SPACE ,  F2) /* ≥ */
char_uni(BETWEEN           , 0x226C , END          , NO_SPACE      ) /* ≬ */
char_def(SUBSET            , 0x2282 , F12_PARTITION, NO_SPACE ,  E2) /* ⊂ */
char_def(SUPERSET          , 0x2283 , F12_PICK     , NO_SPACE ,  E3) /* ⊃ */
char_def(CIRCLE_BAR        , 0x2296 , F12_ROTATE1  , NO_SPACE ,  E9) /* ⊖ */
char_def(RIGHT_TACK        , 0x22A2 , F2_RIGHT     , NO_SPACE ,  D6) /* ⊢ */
char_def(LEFT_TACK         , 0x22A3 , F2_LEFT      , NO_SPACE ,  D7) /* ⊣ */
char_def(DOWN_TACK         , 0x22A4 , F12_ENCODE   , NO_SPACE ,  98) /* ⊤ */
char_def(UP_TACK           , 0x22A5 , F12_DECODE   , NO_SPACE ,  9D) /* ⊥ */
char_def(STAR_OPERATOR     , 0x22C6 , F12_POWER    , NO_SPACE ,  86) /* ⋆ */
char_def(EPSILON_UBAR      , 0x22F8 , F2_FIND      , NO_SPACE ,  87) /* ⋸ */
char_def(LEFT_CEILING      , 0x2308 , F12_RND_UP   , NO_SPACE ,  A9) /* ⌈ */
char_def(LEFT_FLOOR        , 0x230A , F12_RND_DN   , NO_SPACE ,  BE) /* ⌊ */
char_def(I_BEAM            , 0x2336 , END          , NO_SPACE ,  9F) /* ⌶ */
char_def(SQUISH_Quad       , 0x2337 , F2_INDEX     , NO_SPACE ,  D3) /* ⌷ */
char_def(Quad_EQUAL        , 0x2338 , END          , NO_SPACE , 088) /* ⌸ */
char_def(Quad_DIVIDE       , 0x2339 , F12_DOMINO   , NO_SPACE ,  92) /* ⌹ */
char_uni(Quad_DIAMOND      , 0x233A , END          , NO_SPACE      ) /* ⌺ */
char_def(Quad_JOT          , 0x233B , END          , NO_SPACE ,  D5) /* ⌻ */
char_def(Quad_CIRCLE       , 0x233C , END          , NO_SPACE , 08A) /* ⌼ */
char_def(CIRCLE_STILE      , 0x233D , F12_ROTATE   , NO_SPACE ,  E8) /* ⌽ */
char_uni(CIRCLE_JOT        , 0x233E , END          , NO_SPACE      ) /* ⌾ */
char_def(SLASH_BAR         , 0x233F , OPER1_REDUCE1, NO_SPACE ,  F0) /* ⌿ */
char_def(BACKSLASH_BAR     , 0x2340 , OPER1_SCAN1  , NO_SPACE ,  F1) /* ⍀ */
char_def(Quad_SLASH        , 0x2341 , END          , NO_SPACE , 08C) /* ⍁ */
char_def(Quad_BACKSLASH    , 0x2342 , END          , NO_SPACE ,  D4) /* ⍂ */
char_uni(Quad_LESS_THAN    , 0x2343 , END          , NO_SPACE      ) /* ⍃ */
char_uni(Quad_GREATER_THAN , 0x2344 , END          , NO_SPACE      ) /* ⍄ */
char_def(LEFT_VANE         , 0x2345 , END          , NO_SPACE , 08F) /* ⍅ */
char_def(RIGHT_VANE        , 0x2346 , END          , NO_SPACE , 093) /* ⍆ */
char_def(Quad_LEFT_ARROW   , 0x2347 , END          , NO_SPACE , 095) /* ⍇ */
char_def(Quad_RIGHT_ARROW  , 0x2348 , END          , NO_SPACE , 096) /* ⍈ */
char_def(TRANSPOSE         , 0x2349 , F12_TRANSPOSE, NO_SPACE ,  ED) /* ⍉ */
char_def(DTACK_UNDERBAR    , 0x234A , END          , NO_SPACE , 097) /* ⍊ */
char_def(SORT_ASCENDING    , 0x234B , F12_SORT_ASC , NO_SPACE ,  FB) /* ⍋ */
char_def(Quad_DELTA        , 0x234D , END          , NO_SPACE , 09A) /* ⍍ */
char_def(EXECUTE           , 0x234E , F1_EXECUTE   , NO_SPACE ,  AF) /* ⍎ */
char_def(UP_VANE           , 0x234F , END          , NO_SPACE , 09B) /* ⍏ */
char_def(Quad_UP_ARROW     , 0x2350 , END          , NO_SPACE , 0A0) /* ⍐ */
char_def(UP_TACK_OVERBAR   , 0x2351 , END          , NO_SPACE , 0A1) /* ⍑ */
char_def(SORT_DECENDING    , 0x2352 , F12_SORT_DES , NO_SPACE ,  FC) /* ⍒ */
char_def(FORMAT            , 0x2355 , F12_FORMAT   , NO_SPACE ,  AE) /* ⍕ */
char_def(DOWN_VANE         , 0x2356 , END          , NO_SPACE , 0A4) /* ⍖ */
char_def(Quad_DOWN_ARROW   , 0x2357 , END          , NO_SPACE , 0A5) /* ⍗ */
char_def(QUOTE_UNDERBAR    , 0x2358 , END          , NO_SPACE , 0A6) /* ⍘ */
char_def(DELTA_UNDERBAR    , 0x2359 , SYMBOL       , SYMBOL   ,  F7) /* ⍙ */
char_def(DIAMOND_UNDERBAR  , 0x235A , END          , NO_SPACE , 0A7) /* ⍚ */
char_def(JOT_UNDERBAR      , 0x235B , END          , NO_SPACE , 0A8) /* ⍛ */
char_def(CIRCLE_UNDERBAR   , 0x235C , END          , NO_SPACE , 0AA) /* ⍜ */
char_def(COMMENT           , 0x235D , END          , NO_SPACE ,  E4) /* ⍝ */
char_def(QUOTE_Quad        , 0x235E , Quad_QUOTE   , NO_SPACE ,  91) /* ⍞ */
char_def(LOGARITHM         , 0x235F , F12_LOGA     , NO_SPACE ,  B5) /* ⍟ */
char_uni(Quad_COLON        , 0x2360 , END          , NO_SPACE      ) /* ⍠ */
char_uni(UTACK_DIAERESIS   , 0x2361 , END          , NO_SPACE      ) /* ⍡ */
char_def(DEL_DIAERESIS     , 0x2362 , END          , NO_SPACE , 0AB) /* ⍢ */
char_def(STAR_DIAERESIS    , 0x2363 , OPER2_POWER  , NO_SPACE ,  8E) /* ⍣ */
char_def(JOT_DIARESIS      , 0x2364 , OPER2_RANK   , NO_SPACE ,  94) /* ⍤ */
char_uni(CIRCLE_DIARESIS   , 0x2365 , END          , NO_SPACE      ) /* ⍥ */
char_uni(DOWN_SHOE_STILE   , 0x2366 , END          , NO_SPACE      ) /* ⍦ */
char_uni(LEFT_SHOE_STILE   , 0x2367 , END          , NO_SPACE      ) /* ⍧ */
char_def(TILDE_DIAERESIS   , 0x2368 , OPER1_COMMUTE, NO_SPACE ,  AD) /* ⍨ */
char_uni(GT_THAN_DIAERESIS , 0x2369 , END          , NO_SPACE      ) /* ⍩ */
char_def(COMMA_BAR         , 0x236A , F12_COMMA1   , NO_SPACE ,  B1) /* ⍪ */
char_def(DEL_TILDE         , 0x236B , END          , NO_SPACE ,  FA) /* ⍫ */
char_def(ZILDE             , 0x236C , F0_ZILDE     , NO_SPACE ,  B0) /* ⍬ */
char_uni(STILE_TILDE       , 0x236D , END          , NO_SPACE      ) /* ⍭ */
char_uni(SEMICOL_UNDERBAR  , 0x236E , END          , NO_SPACE      ) /* ⍮ */
char_uni(Quad_NOT_EQUAL    , 0x236F , END          , NO_SPACE      ) /* ⍯ */
char_uni(Quad_QUEST_MARK   , 0x2370 , END          , NO_SPACE      ) /* ⍰ */
char_def(NOR               , 0x2371 , F2_NOR       , NO_SPACE ,  E7) /* ⍱ */
char_def(NAND              , 0x2372 , F2_NAND      , NO_SPACE ,  E5) /* ⍲ */
char_def(IOTA              , 0x2373 , F12_INDEX_OF , NO_SPACE ,  EC) /* ⍳ */
char_def(RHO               , 0x2374 , F12_RHO      , NO_SPACE ,  E6) /* ⍴ */
char_def(OMEGA             , 0x2375 , SYMBOL       , NONE     ,  F9) /* ⍵ */
char_def(ALPHA_UNDERBAR    , 0x2376 , SYMBOL       , NONE     ,  9E) /* ⍶ */
char_def(EPSILON_UNDERBAR  , 0x2377 , F2_FIND      , NO_SPACE ,  D1) /* ⍷ */
char_def(INDEX_UNDERBAR    , 0x2378 , F12_INTERVAL_INDEX
                                                   , NO_SPACE,   D0) /* ⍸ */
char_def(OMEGA_UNDERBAR    , 0x2379 , SYMBOL       , NONE     ,  E1) /* ⍹ */
char_def(ALPHA             , 0x237A , SYMBOL       , NONE     ,  E0) /* ⍺ */
char_def(Quad_Quad         , 0x2395 , Quad_Quad    , NONE     ,  90) /* ⎕ */
char_def(LINE_HORI         , 0x2500 , END          , NO_SPACE ,  C4) /* ─ */
char_uni(LINE_HORI2        , 0x2501 , END          , NO_SPACE      ) /* ━ */
char_def(LINE_VERT         , 0x2502 , END          , NO_SPACE ,  B3) /* │ */
char_uni(LINE_VERT2        , 0x2503 , END          , NO_SPACE      ) /* ┃ */
char_def(LINE_DOWN_RIGHT   , 0x250C , END          , NO_SPACE ,  DA) /* ┌ */
char_uni(LINE_DOWN2_RIGHT2 , 0x250F , END          , NO_SPACE      ) /* ┏ */
char_def(LINE_DOWN_LEFT    , 0x2510 , END          , NO_SPACE ,  BF) /* ┐ */
char_uni(LINE_DOWN2_LEFT2  , 0x2513 , END          , NO_SPACE      ) /* ┓ */
char_def(LINE_UP_RIGHT     , 0x2514 , END          , NO_SPACE ,  C0) /* └ */
char_uni(LINE_UP2_RIGHT2   , 0x2517 , END          , NO_SPACE      ) /* ┗ */
char_def(LINE_UP_LEFT      , 0x2518 , END          , NO_SPACE ,  D9) /* ┘ */
char_uni(LINE_UP2_LEFT2    , 0x251B , END          , NO_SPACE      ) /* ┛ */
char_def(LINE_VERT_RIGHT   , 0x251C , END          , NO_SPACE ,  C3) /* ├ */
char_def(LINE_VERT_LEFT    , 0x2524 , END          , NO_SPACE ,  B4) /* ┤ */
char_def(LINE_DOWN_HORI    , 0x252C , END          , NO_SPACE ,  C2) /* ┬ */
char_def(LINE_UP_HORI      , 0x2534 , END          , NO_SPACE ,  C1) /* ┴ */
char_def(LINE_VERT_HORI    , 0x253C , END          , NO_SPACE ,  C5) /* ┼ */
char_def(LINE2_HORI        , 0x2550 , END          , NO_SPACE ,  CD) /* ═ */
char_def(LINE2_VERT        , 0x2551 , END          , NO_SPACE ,  BA) /* ║ */
char_def(LINE2_DOWN_RIGHT  , 0x2554 , END          , NO_SPACE ,  C8) /* ╔ */
char_def(LINE2_DOWN_LEFT   , 0x2557 , END          , NO_SPACE ,  BB) /* ╗ */
char_def(LINE2_UP_RIGHT    , 0x255A , END          , NO_SPACE ,  C9) /* ╚ */
char_def(LINE2_UP_LEFT     , 0x255D , END          , NO_SPACE ,  BC) /* ╝ */
char_def(LINE2_VERT_RIGHT  , 0x2560 , END          , NO_SPACE ,  CC) /* ╠ */
char_def(LINE2_VERT_LEFT   , 0x2563 , END          , NO_SPACE ,  B9) /* ╣ */
char_def(LINE2_HORI_DOWN   , 0x2566 , END          , NO_SPACE ,  CB) /* ╦ */
char_def(LINE2_HORI_UP     , 0x2569 , END          , NO_SPACE ,  CA) /* ╩ */
char_def(LINE2_VERT_HORI   , 0x256C , END          , NO_SPACE ,  CE) /* ╬ */
char_def(UPPER_HALF_BLOCK  , 0x2580 , END          , NO_SPACE ,  DF) /* ▀ */
char_def(LOWER_HALF_BLOCK  , 0x2584 , END          , NO_SPACE ,  DC) /* ▄ */
char_def(FULL_BLOCK        , 0x2588 , END          , NO_SPACE ,  DB) /* █ */
char_def(LEFT_HALF_BLOCK   , 0x258C , END          , NO_SPACE ,  DD) /* ▌ */
char_uni(Quad_Quad1        , 0x25AF , END          , NO_SPACE      ) /* ▯ */
char_def(RIGHT_HALF_BLOCK  , 0x2590 , END          , NO_SPACE ,  DE) /* ▐ */
char_def(DIAMOND           , 0x25CA , DIAMOND      , NO_SPACE ,  D8) /* ◊ */
char_def(CIRCLE            , 0x25CB , F12_CIRCLE   , NO_SPACE ,  EA) /* ○ */
char_uni(AV_MAX            , 0x25CC , END          , NO_SPACE      ) /* ◌ */
//------------------------------------------------------------------

#undef char_def
#undef char_uni

