169 lines
4.1 KiB
C
169 lines
4.1 KiB
C
|
|
#include "nmake.h"
|
|
#include "nmmsg.h"
|
|
#include "proto.h"
|
|
#include "globals.h"
|
|
#include "grammar.h"
|
|
|
|
//
|
|
// Map to determine characteristics of text
|
|
//
|
|
UCHAR Charmap[CHARMAP_SIZE] = {
|
|
LX_EOS, /* 0x0, <end of string marker> */
|
|
LX_ILL, /* 0x1 */
|
|
LX_ILL, /* 0x2 */
|
|
LX_ILL, /* 0x3 */
|
|
LX_ILL, /* 0x4 */
|
|
LX_ILL, /* 0x5 */
|
|
LX_ILL, /* 0x6 */
|
|
LX_ILL, /* 0x7 */
|
|
LX_ILL, /* 0x8 */
|
|
LX_WHITE, /* <horizontal tab> */
|
|
LX_NL, /* <newline> */
|
|
LX_WHITE, /* <vertical tab> */
|
|
LX_WHITE, /* <form feed> */
|
|
LX_CR, /* <really a carriage return> */
|
|
LX_ILL, /* 0xe */
|
|
LX_ILL, /* 0xf */
|
|
LX_ILL, /* 0x10 */
|
|
LX_ILL, /* 0x11 */
|
|
LX_ILL, /* 0x12 */
|
|
LX_ILL, /* 0x13 */
|
|
LX_ILL, /* 0x14 */
|
|
LX_ILL, /* 0x15 */
|
|
LX_ILL, /* 0x16 */
|
|
LX_ILL, /* 0x17 */
|
|
LX_ILL, /* 0x18 */
|
|
LX_ILL, /* 0x19 */
|
|
LX_EOS, /* 0x1a, ^Z */
|
|
LX_ILL, /* 0x1b */
|
|
LX_ILL, /* 0x1c */
|
|
LX_ILL, /* 0x1d */
|
|
LX_ILL, /* 0x1e */
|
|
LX_ILL, /* 0x1f */
|
|
LX_WHITE, /* 0x20 */
|
|
LX_OPERATOR, /* ! */
|
|
LX_DQUOTE, /* " */
|
|
LX_POUND, /* # */
|
|
LX_ASCII, /* $ */
|
|
LX_OPERATOR, /* % */
|
|
LX_OPERATOR, /* & */
|
|
LX_SQUOTE, /* ' */
|
|
LX_OPERATOR, /* ( */
|
|
LX_OPERATOR, /* ) */
|
|
LX_OPERATOR, /* * */
|
|
LX_OPERATOR, /* + */
|
|
LX_COMMA, /* , */
|
|
LX_MINUS, /* - */
|
|
LX_DOT, /* . */
|
|
LX_OPERATOR, /* / */
|
|
LX_NUMBER, /* 0 */
|
|
LX_NUMBER, /* 1 */
|
|
LX_NUMBER, /* 2 */
|
|
LX_NUMBER, /* 3 */
|
|
LX_NUMBER, /* 4 */
|
|
LX_NUMBER, /* 5 */
|
|
LX_NUMBER, /* 6 */
|
|
LX_NUMBER, /* 7 */
|
|
LX_NUMBER, /* 8 */
|
|
LX_NUMBER, /* 9 */
|
|
LX_COLON, /* : */
|
|
LX_SEMI, /* ; */
|
|
LX_OPERATOR, /* < */
|
|
LX_OPERATOR, /* = */
|
|
LX_OPERATOR, /* > */
|
|
LX_EOS, /* ? */
|
|
LX_EACH, /* @ */
|
|
LX_ID, /* A */
|
|
LX_ID, /* B */
|
|
LX_ID, /* C */
|
|
LX_ID, /* D */
|
|
LX_ID, /* E */
|
|
LX_ID, /* F */
|
|
LX_ID, /* G */
|
|
LX_ID, /* H */
|
|
LX_ID, /* I */
|
|
LX_ID, /* J */
|
|
LX_ID, /* K */
|
|
LX_ID, /* L */
|
|
LX_ID, /* M */
|
|
LX_ID, /* N */
|
|
LX_ID, /* O */
|
|
LX_ID, /* P */
|
|
LX_ID, /* Q */
|
|
LX_ID, /* R */
|
|
LX_ID, /* S */
|
|
LX_ID, /* T */
|
|
LX_ID, /* U */
|
|
LX_ID, /* V */
|
|
LX_ID, /* W */
|
|
LX_ID, /* X */
|
|
LX_ID, /* Y */
|
|
LX_ID, /* Z */
|
|
LX_OBRACK, /* [ */
|
|
LX_EOS, /* \ */
|
|
LX_CBRACK, /* ] */
|
|
LX_OPERATOR, /* ^ */
|
|
LX_MACRO, /* _ */
|
|
LX_ASCII, /* ` */
|
|
LX_ID, /* a */
|
|
LX_ID, /* b */
|
|
LX_ID, /* c */
|
|
LX_ID, /* d */
|
|
LX_ID, /* e */
|
|
LX_ID, /* f */
|
|
LX_ID, /* g */
|
|
LX_ID, /* h */
|
|
LX_ID, /* i */
|
|
LX_ID, /* j */
|
|
LX_ID, /* k */
|
|
LX_ID, /* l */
|
|
LX_ID, /* m */
|
|
LX_ID, /* n */
|
|
LX_ID, /* o */
|
|
LX_ID, /* p */
|
|
LX_ID, /* q */
|
|
LX_ID, /* r */
|
|
LX_ID, /* s */
|
|
LX_ID, /* t */
|
|
LX_ID, /* u */
|
|
LX_ID, /* v */
|
|
LX_ID, /* w */
|
|
LX_ID, /* x */
|
|
LX_ID, /* y */
|
|
LX_ID, /* z */
|
|
LX_OBRACE, /* { */
|
|
LX_OPERATOR, /* | */
|
|
LX_CBRACE, /* } */
|
|
LX_OPERATOR, /* ~ */
|
|
LX_ILL, /* 0x7f */
|
|
LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO,
|
|
LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO,
|
|
LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO,
|
|
LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO,
|
|
LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO,
|
|
LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO,
|
|
LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO,
|
|
LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO,
|
|
LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO,
|
|
LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO,
|
|
LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO,
|
|
LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO,
|
|
LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO,
|
|
LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO,
|
|
LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO,
|
|
LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO, LX_MACRO,
|
|
};
|
|
|
|
void NEAR initCharmap(void)
|
|
{
|
|
int i;
|
|
for (i = 0; i <= 127; i++) {
|
|
|
|
// Initialize valid macro chars (besides '_' and >= 128)
|
|
if (_istalnum(i)) {
|
|
Charmap[(UCHAR)i] |= LX_MACRO;
|
|
}
|
|
}
|
|
}
|