home *** CD-ROM | disk | FTP | other *** search
/ Atari FTP / ATARI_FTP_0693.zip / ATARI_FTP_0693 / Mint / Editors / mjovesrc.zoo / ctype.c < prev    next >
C/C++ Source or Header  |  1992-04-04  |  10KB  |  251 lines

  1. /***************************************************************************
  2.  * This program is Copyright (C) 1986, 1987, 1988 by Jonathan Payne.  JOVE *
  3.  * is provided to you without charge, and with no warranty.  You may give  *
  4.  * away copies of JOVE, including sources, provided that this notice is    *
  5.  * included in all the files.                                              *
  6.  ***************************************************************************/
  7.  
  8. #include "jove.h"
  9. #include "ctype.h"
  10.  
  11. const unsigned char    *SyntaxTable = CharTable[FUNDAMENTAL];    /* Current table to use. */
  12.  
  13. #define    cU    C_UPPER    /* Upper case */
  14. #define    cL    C_LOWER    /* Lower case */
  15. #define    cN    C_DIGIT    /* Numeric */
  16. #define    cP    C_PUNCT    /* Punctuation */
  17. #define    cC    C_CTRL    /* Control */
  18. #define    cW    C_WORD    /* Word */
  19. #define    cOp    C_BRA    /* Open Parenthesis */
  20. #define    cCl    C_KET    /* Close Parenthesis */
  21.  
  22. const unsigned char CharTable[NMAJORS][NCHARS] = {
  23.     /* FUNDAMENTAL mode */
  24.     {
  25.     cC,    cC,    cC,    cC,    cC,    cC,    cC,    cC,
  26.     cC,    cC,    cC,    cC,    cC,    cC,    cC,    cC,
  27.     cC,    cC,    cC,    cC,    cC,    cC,    cC,    cC,
  28.     cC,    cC,    cC,    cC,    cC,    cC,    cC,    cC,
  29.     cP,    cP,    cP,    cP,    cP,    cP,    cP,    cP,
  30.     cOp|cP,    cCl|cP,    cP,    cP,    cP,    cP,    cP,    cP,
  31.     cW|cN,    cW|cN,    cW|cN,    cW|cN,    cW|cN,    cW|cN,    cW|cN,    cW|cN,
  32.     cW|cN,    cW|cN,    cP,    cP,    cP,    cP,    cP,    cP,
  33.     cP,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,
  34.     cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,
  35.     cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,
  36.     cW|cU,    cW|cU,    cW|cU,    cOp|cP,    cP,    cCl|cP,    cP,    cP,
  37.     cP,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,
  38.     cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,
  39.     cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,
  40.     cW|cL,    cW|cL,    cW|cL,    cOp|cP,    cP,    cCl|cP,    cP,    cC,
  41. #ifdef    IBMPC
  42.     0, cW|cL, 0, 0, cW|cL, 0, 0, 0, 0, 0, 0, 0, 0, 0, cW|cU, 0,
  43.     0, 0, 0, 0, cW|cL, 0, 0, 0, 0, cW|cU, cW|cU, 0, 0, 0, 0, 0,
  44.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  45.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  46.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  47.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  48.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  49.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  50. #endif    /* IBMPC */
  51. #ifdef    MAC    /* See Inside Macintosh Vol One p. 247 */
  52.     cW|cU, cW|cU, cW|cU, cW|cU, cW|cU, cW|cU, cW|cU, cW|cL,
  53.     cW|cL, cW|cL, cW|cL, cW|cL, cW|cL, cW|cL, cW|cL, cW|cL,
  54.     cW|cL, cW|cL, cW|cL, cW|cL, cW|cL, cW|cL, cW|cL, cW|cL,
  55.     cW|cL, cW|cL, cW|cL, cW|cL, cW|cL, cW|cL, cW|cL, cW|cL,
  56.     cP, cP, cP, cP, cP, cP, cP, cP,
  57.     cP, cP, cP, cP, cP, cP, cW|cU, cW|cU,
  58.     cP, cP, cP, cP, cP, cW|cU, cW|cL, cW|cU,
  59.     cW|cU, cW|cL, cP, cP, cP, cW|cU, cW|cL, cW|cL,
  60.     cP, cP, cP, cP, cP, cP, cW|cU, cP,
  61.     cP, cP, cP, cW|cU, cW|cU, cW|cU, cW|cU, cW|cU,
  62.     cP, cP, cP, cP, cP, cP, cP, cP,
  63.     cW|cU, 0, 0, 0, 0, 0, 0, 0,
  64.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  65.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  66. #endif    /* MAC */
  67.     },
  68.  
  69.     /* TEXT mode */
  70.     {
  71.     cC,    cC,    cC,    cC,    cC,    cC,    cC,    cC,
  72.     cC,    cC,    cC,    cC,    cC,    cC,    cC,    cC,
  73.     cC,    cC,    cC,    cC,    cC,    cC,    cC,    cC,
  74.     cC,    cC,    cC,    cC,    cC,    cC,    cC,    cC,
  75.     cP,    cP,    cP,    cP,    cP,    cP,    cP,    cP|cW,
  76.     cOp|cP,    cCl|cP,    cP,    cP,    cP,    cP,    cP,    cP,
  77.     cW|cN,    cW|cN,    cW|cN,    cW|cN,    cW|cN,    cW|cN,    cW|cN,    cW|cN,
  78.     cW|cN,    cW|cN,    cP,    cP,    cP,    cP,    cP,    cP,
  79.     cP,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,
  80.     cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,
  81.     cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,
  82.     cW|cU,    cW|cU,    cW|cU,    cOp|cP,    cP,    cCl|cP,    cP,    cP,
  83.     cP,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,
  84.     cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,
  85.     cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,
  86.     cW|cL,    cW|cL,    cW|cL,    cOp|cP,    cP,    cCl|cP,    cP,    cC,
  87. #ifdef    IBMPC
  88.     0, cW|cL, 0, 0, cW|cL, 0, 0, 0, 0, 0, 0, 0, 0, 0, cW|cU, 0,
  89.     0, 0, 0, 0, cW|cL, 0, 0, 0, 0, cW|cU, cW|cU, 0, 0, 0, 0, 0,
  90.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  91.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  92.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  93.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  94.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  95.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  96. #endif    /* IBMPC */
  97. #ifdef    MAC    /* See Inside Macintosh Vol One p. 247 */
  98.     cW|cU, cW|cU, cW|cU, cW|cU, cW|cU, cW|cU, cW|cU, cW|cL,
  99.     cW|cL, cW|cL, cW|cL, cW|cL, cW|cL, cW|cL, cW|cL, cW|cL,
  100.     cW|cL, cW|cL, cW|cL, cW|cL, cW|cL, cW|cL, cW|cL, cW|cL,
  101.     cW|cL, cW|cL, cW|cL, cW|cL, cW|cL, cW|cL, cW|cL, cW|cL,
  102.     cP, cP, cP, cP, cP, cP, cP, cP,
  103.     cP, cP, cP, cP, cP, cP, cW|cU, cW|cU,
  104.     cP, cP, cP, cP, cP, cW|cU, cW|cL, cW|cU,
  105.     cW|cU, cW|cL, cP, cP, cP, cW|cU, cW|cL, cW|cL,
  106.     cP, cP, cP, cP, cP, cP, cW|cU, cP,
  107.     cP, cP, cP, cW|cU, cW|cU, cW|cU, cW|cU, cW|cU,
  108.     cP, cP, cP, cP, cP, cP, cP, cP,
  109.     cW|cU, 0, 0, 0, 0, 0, 0, 0,
  110.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  111.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  112. #endif    /* MAC */
  113.     },
  114.  
  115.     /* CMODE */
  116.     {
  117.     cC,    cC,    cC,    cC,    cC,    cC,    cC,    cC,
  118.     cC,    cC,    cC,    cC,    cC,    cC,    cC,    cC,
  119.     cC,    cC,    cC,    cC,    cC,    cC,    cC,    cC,
  120.     cC,    cC,    cC,    cC,    cC,    cC,    cC,    cC,
  121.     cP,    cP,    cP,    cP,    cP|cW,    cP,    cP,    cP,
  122.     cOp|cP,    cCl|cP,    cP,    cP,    cP,    cP,    cP,    cP,
  123.     cW|cN,    cW|cN,    cW|cN,    cW|cN,    cW|cN,    cW|cN,    cW|cN,    cW|cN,
  124.     cW|cN,    cW|cN,    cP,    cP,    cP,    cP,    cP,    cP,
  125.     cP,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,
  126.     cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,
  127.     cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,
  128.     cW|cU,    cW|cU,    cW|cU,    cOp|cP,    cP,    cCl|cP,    cP,    cP|cW,
  129.     cP,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,
  130.     cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,
  131.     cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,
  132.     cW|cL,    cW|cL,    cW|cL,    cOp|cP,    cP,    cCl|cP,    cP,    cC,
  133. #ifndef    ASCII7
  134.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  135.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  136.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  137.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  138.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  139.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  140.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  141.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  142. #endif    /* !ASCII7 */
  143.     },
  144.  
  145.     /* LISP mode */
  146. #ifdef    LISP
  147.     {
  148.     cC,    cC,    cC,    cC,    cC,    cC,    cC,    cC,
  149.     cC,    cC,    cC,    cC,    cC,    cC,    cC,    cC,
  150.     cC,    cC,    cC,    cC,    cC,    cC,    cC,    cC,
  151.     cC,    cC,    cC,    cC,    cC,    cC,    cC,    cC,
  152.     cP,    cW|cP,    cP,    cP,    cW|cP,    cW|cP,    cW|cP,    cP,
  153.     cOp|cP,    cCl|cP,    cW|cP,    cW|cP,    cP,    cW|cP,    cP,    cW,
  154.     cW|cN,    cW|cN,    cW|cN,    cW|cN,    cW|cN,    cW|cN,    cW|cN,    cW|cN,
  155.     cW|cN,    cW|cN,    cW|cP,    cP,    cW|cP,    cW|cP,    cW|cP,    cW|cP,
  156.     cW|cP,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,
  157.     cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,
  158.     cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,    cW|cU,
  159.     cW|cU,    cW|cU,    cW|cU,    cOp|cP,    cP,    cCl|cP,    cW|cP,    cW|cP,
  160.     cP,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,
  161.     cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,
  162.     cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,    cW|cL,
  163.     cW|cL,    cW|cL,    cW|cL,    cOp|cW|cP,    cW|cP,    cCl|cW|cP,    cW|cP,    cW|cC,
  164. #ifndef    ASCII7
  165.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  166.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  167.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  168.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  169.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  170.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  171.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  172.     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  173. #endif    /* !ASCII7 */
  174.     },
  175. #endif    /* LISP */
  176. };
  177.  
  178. #undef    cU
  179. #undef    cL
  180. #undef    cN
  181. #undef    cP
  182. #undef    cC
  183. #undef    cW
  184. #undef    cOp
  185. #undef    cCl
  186.  
  187. int
  188. ismword(c)
  189. int    c;
  190. {
  191.     return ((CharTable[curbuf->b_major])[c]&(C_WORD));
  192. }
  193.  
  194. /* Map lower case characters to upper case and the rest to themselves. */
  195.  
  196. const char    RaiseTable[NCHARS] = {
  197.     '\000',    '\001',    '\002',    '\003',    '\004',    '\005',    '\006',    '\007',
  198.     '\010',    '\011',    '\012',    '\013',    '\014',    '\015',    '\016',    '\017',
  199.     '\020',    '\021',    '\022',    '\023',    '\024',    '\025',    '\026',    '\027',
  200.     '\030',    '\031',    '\032',    '\033',    '\034',    '\035',    '\036',    '\037',
  201.     '\040',    '!',    '"',    '#',    '$',    '%',    '&',    '\'',
  202.     '(',    ')',    '*',    '+',    ',',    '-',    '.',    '/',
  203.     '0',    '1',    '2',    '3',    '4',    '5',    '6',    '7',
  204.     '8',    '9',    ':',    ';',    '<',    '=',    '>',    '?',
  205.     '@',    'A',    'B',    'C',    'D',    'E',    'F',    'G',
  206.     'H',    'I',    'J',    'K',    'L',    'M',    'N',    'O',
  207.     'P',    'Q',    'R',    'S',    'T',    'U',    'V',    'W',
  208.     'X',    'Y',    'Z',    '[',    '\\',    ']',    '^',    '_',
  209.     '`',    'A',    'B',    'C',    'D',    'E',    'F',    'G',
  210.     'H',    'I',    'J',    'K',    'L',    'M',    'N',    'O',
  211.     'P',    'Q',    'R',    'S',    'T',    'U',    'V',    'W',
  212.     'X',    'Y',    'Z',    '{',    '|',    '}',    '~',    '\177',
  213. #ifdef    IBMPC
  214.     /* Only lower case codes are Umlauted u, a, and o (indented) */
  215.     0x80,     0x9A,    0x82,    0x83,     0x8E,    0x85,    0x86,    0x87,
  216.     0x88,    0x89,    0x8A,    0x8B,    0x8C,    0x8D,    0x8E,    0x8F,
  217.     0x90,    0x91,    0x92,    0x93,     0x99,    0x95,    0x96,    0x97,
  218.     0x98,    0x99,    0x9A,    0x9B,    0x9C,    0x9D,    0x9E,    0x9F,
  219.     0xA0,    0xA1,    0xA2,    0xA3,    0xA4,    0xA5,    0xA6,    0xA7,
  220.     0xA8,    0xA9,    0xAA,    0xAB,    0xAC,    0xAD,    0xAE,    0xAF,
  221.     0xB0,    0xB1,    0xB2,    0xB3,    0xB4,    0xB5,    0xB6,    0xB7,
  222.     0xB8,    0xB9,    0xBA,    0xBB,    0xBC,    0xBD,    0xBE,    0xBF,
  223.     0xC0,    0xC1,    0xC2,    0xC3,    0xC4,    0xC5,    0xC6,    0xC7,
  224.     0xC8,    0xC9,    0xCA,    0xCB,    0xCC,    0xCD,    0xCE,    0xCF,
  225.     0xD0,    0xD1,    0xD2,    0xD3,    0xD4,    0xD5,    0xD6,    0xD7,
  226.     0xD8,    0xD9,    0xDA,    0xDB,    0xDC,    0xDD,    0xDE,    0xDF,
  227.     0xE0,    0xE1,    0xE2,    0xE3,    0xE4,    0xE5,    0xE6,    0xE7,
  228.     0xE8,    0xE9,    0xEA,    0xEB,    0xEC,    0xED,    0xEE,    0xEF,
  229.     0xF0,    0xF1,    0xF2,    0xF3,    0xF4,    0xF5,    0xF6,    0xF7,
  230.     0xF8,    0xF9,    0xFA,    0xFB,    0xFC,    0xFD,    0xFE,    0xFF,
  231. #endif    /*!IBMPC*/
  232. #ifdef    MAC
  233.     0x80,    0x81,    0x82,    0x83,    0x84,    0x85,    0x86,    0x87,
  234.      0xCB,    0x89,     0x80,     0xCC,     0x81,     0x82,     0x83,    0x8F,
  235.     0x90,    0x91,    0x92,    0x93,    0x94,    0x95,     0x84,    0x97,
  236.     0x98,    0x99,     0x85,     0xCD,    0x9C,    0x9D,    0x9E,     0x86,
  237.     0xA0,    0xA1,    0xA2,    0xA3,    0xA4,    0xA5,    0xA6,    0xA7,
  238.     0xA8,    0xA9,    0xAA,    0xAB,    0xAC,    0xAD,    0xAE,    0xAF,
  239.     0xB0,    0xB1,    0xB2,    0xB3,    0xB4,    0xB5,    0xC6,    0xB7,
  240.     0xB8,     0xB8,    0xBA,    0xBB,    0xBC,    0xBD,    0xAE,    0xAF,
  241.     0xC0,    0xC1,    0xC2,    0xC3,    0xC4,    0xC5,    0xC6,    0xC7,
  242.     0xC8,    0xC9,    0xCA,    0xCB,    0xCC,    0xCD,    0xCE,     0xCE,
  243.     0xD0,    0xD1,    0xD2,    0xD3,    0xD4,    0xD5,    0xD6,    0xD7,
  244.     0xD8,    0xD9,    0xDA,    0xDB,    0xDC,    0xDD,    0xDE,    0xDF,
  245.     0xE0,    0xE1,    0xE2,    0xE3,    0xE4,    0xE5,    0xE6,    0xE7,
  246.     0xE8,    0xE9,    0xEA,    0xEB,    0xEC,    0xED,    0xEE,    0xEF,
  247.     0xF0,    0xF1,    0xF2,    0xF3,    0xF4,    0xF5,    0xF6,    0xF7,
  248.     0xF8,    0xF9,    0xFA,    0xFB,    0xFC,    0xFD,    0xFE,    0xFF,
  249. #endif    /*MAC*/
  250. };
  251.