Blame sgmls-1.1/lexrf.c

Packit Service 87bb26
/* LEXRF: Lexical tables for reference concrete syntax.
Packit Service 87bb26
*/
Packit Service 87bb26
Packit Service 87bb26
#include "config.h"
Packit Service 87bb26
#include "entity.h"           /* Templates for entity control blocks. */
Packit Service 87bb26
#include "synxtrn.h"          /* Declarations for concrete syntax constants. */
Packit Service 87bb26
#include "action.h"           /* Action names for all parsing. */
Packit Service 87bb26
#include "lexcode.h"
Packit Service 87bb26
Packit Service 87bb26
static UNCH SRTAB[] = { TABCHAR, '\0' };
Packit Service 87bb26
static UNCH SRRE[] = { RECHAR, '\0' };
Packit Service 87bb26
static UNCH SRRS[] = { RSCHAR, '\0' };
Packit Service 87bb26
static UNCH SRRSB[] = { RSCHAR, 'B', '\0' };
Packit Service 87bb26
static UNCH SRRSRE[] = { RSCHAR, RECHAR, '\0' };
Packit Service 87bb26
static UNCH SRRSBRE[] = { RSCHAR, 'B', RECHAR, '\0' };
Packit Service 87bb26
static UNCH SRBRE[] = { 'B', RECHAR, '\0' };
Packit Service 87bb26
Packit Service 87bb26
struct lexical lex = {        /* Delimiter set constants for parser use. */
Packit Service 87bb26
     {                        /* Markup strings for text processor use. */
Packit Service 87bb26
          (UNCH *)"\4&#",                 /* LEXCON markup string: CRO        */
Packit Service 87bb26
          (UNCH *)"[",                     /* LEXCON markup string: DSO        */
Packit Service 87bb26
          (UNCH *)"\3&",                   /* LEXCON markup string: ERO        */
Packit Service 87bb26
          (UNCH *)"\4</",                  /* LEXMARK markup string: end-tag   */
Packit Service 87bb26
          (UNCH *)"\3\"",                  /* LEXMARK markup string: LIT       */
Packit Service 87bb26
          (UNCH *)"\3'",                   /* LEXMARK markup string: LITA      */
Packit Service 87bb26
          (UNCH *)"\3>",                   /* LEXCON markup string: MDC        */
Packit Service 87bb26
          (UNCH *)"\4
Packit Service 87bb26
          (UNCH *)"\5]]>",                 /* LEXCON markup string: mse        */
Packit Service 87bb26
          (UNCH *)"\5
Packit Service 87bb26
          (UNCH *)"\13
Packit Service 87bb26
          (UNCH *)"\14
Packit Service 87bb26
          (UNCH *)"\3>",                   /* LEXCON markup string: PIC        */
Packit Service 87bb26
          (UNCH *)"\4
Packit Service 87bb26
          (UNCH *)"\3;",                   /* LEXGRP markup string: ref close. */
Packit Service 87bb26
          (UNCH *)"\3<",                   /* LEXMARK markup string: start-tag */
Packit Service 87bb26
          (UNCH *)"\3>",                   /* LEXMARK markup string: TAGC      */
Packit Service 87bb26
          (UNCH *)"\3=",                   /* LEXMARK markup string: VI        */
Packit Service 87bb26
          3,                       /* LEXMARK: length of null end-tag. */
Packit Service 87bb26
          2                        /* LEXMARK: length of null start-tag. */
Packit Service 87bb26
     },
Packit Service 87bb26
     {                        /* Short reference delimiters. */
Packit Service 87bb26
          {                        /* Short reference delimiter table. */
Packit Service 87bb26
               {(UNCH *)"",       SRCT},        /* Dummy entry to store SR count. */
Packit Service 87bb26
               {SRTAB,		  1},           /* TAB */
Packit Service 87bb26
               {SRRE,             2},           /* RE */
Packit Service 87bb26
               {SRRS,             3},           /* RS */
Packit Service 87bb26
               {SRRSB,            4},           /* Leading blanks */
Packit Service 87bb26
               {SRRSRE,           5},           /* Null record */
Packit Service 87bb26
               {SRRSBRE,          6},           /* Blank record */
Packit Service 87bb26
               {SRBRE,            7},           /* Trailing blanks */
Packit Service 87bb26
               {(UNCH *)" ",      8},           /* Space */
Packit Service 87bb26
               {(UNCH *)"BB",     9},           /* Two or more blanks */
Packit Service 87bb26
               {(UNCH *)"\"",    10},           /* Quotation mark (first data character) */
Packit Service 87bb26
               {(UNCH *)"#",     11},           /* Number sign */
Packit Service 87bb26
               {(UNCH *)"%",     12},           /* FCE CHARACTERS start here */
Packit Service 87bb26
               {(UNCH *)"'",     13},
Packit Service 87bb26
               {(UNCH *)"(",     14},
Packit Service 87bb26
               {(UNCH *)")",     15},
Packit Service 87bb26
               {(UNCH *)"*",     16},
Packit Service 87bb26
               {(UNCH *)"+",     17},
Packit Service 87bb26
               {(UNCH *)",",     18},
Packit Service 87bb26
               {(UNCH *)"-",     19},           /* Hyphen */
Packit Service 87bb26
               {(UNCH *)"--",    20},           /* Two hyphens */
Packit Service 87bb26
               {(UNCH *)":",     21},
Packit Service 87bb26
               {(UNCH *)";",     22},
Packit Service 87bb26
               {(UNCH *)"=",     23},
Packit Service 87bb26
               {(UNCH *)"@",     24},
Packit Service 87bb26
               {(UNCH *)"[",     25},
Packit Service 87bb26
               {(UNCH *)"]",     26},
Packit Service 87bb26
               {(UNCH *)"^",     27},
Packit Service 87bb26
               {(UNCH *)"_",     28},           /* Low line */
Packit Service 87bb26
               {(UNCH *)"{",     29},
Packit Service 87bb26
               {(UNCH *)"|",     30},
Packit Service 87bb26
               {(UNCH *)"}",     31},
Packit Service 87bb26
               {(UNCH *)"~",     32},
Packit Service 87bb26
               {0,     0}
Packit Service 87bb26
          },
Packit Service 87bb26
          {                        /* Printable form of unprintable SR delims.*/
Packit Service 87bb26
               "",                      /* Dummy entry to balance s.dtb. */
Packit Service 87bb26
               "&#TAB;",                /* TAB */
Packit Service 87bb26
               "&#RE;",                 /* RE */
Packit Service 87bb26
               "&#RS;",                 /* RS */
Packit Service 87bb26
               "&#RS;B",                /* Leading blanks */
Packit Service 87bb26
               "&#RS;&#RE;",            /* Null record */
Packit Service 87bb26
               "&#RS;B&#RE;",           /* Blank record */
Packit Service 87bb26
               "B&#RE;",                /* Trailing blanks */
Packit Service 87bb26
               "&#SPACE;"               /* Space */
Packit Service 87bb26
          },
Packit Service 87bb26
          12,                      /* LEXCNM: Index of first FCE in srdeltab. */
Packit Service 87bb26
          20,                      /*LEXCNM:Index of "two hyphens" in srdeltab*/
Packit Service 87bb26
          10,                      /* LEXCNM: Index of first SR with data char. */
Packit Service 87bb26
          19,                      /* LEXCNM: Index of hyphen in srdeltab. */
Packit Service 87bb26
          SRNPRT+1,                /* LEXCNM: Index of 1st printable SR. */
Packit Service 87bb26
          8,                       /* LEXCNM: Index of space in srdeltab. */
Packit Service 87bb26
	  25,			   /* LEXCNM: Index of left bracket in srdeltab. */
Packit Service 87bb26
	  26,			   /* LEXCNM: Index of right bracket in srdeltab. */
Packit Service 87bb26
     },                       /* End of short reference delimiters. */
Packit Service 87bb26
     {                        /* General delimiter characters. */
Packit Service 87bb26
          GENRECHAR,               /*LEXCNM:(BS)Generated RE; can't be markup.*/
Packit Service 87bb26
          '"',                     /* LEXMARK: Char used as LIT delimiter.*/
Packit Service 87bb26
          '\'',                    /* LEXMARK: Char used as LITA delimiter.*/
Packit Service 87bb26
          '>',                     /* LEXLMS: Char used as MDC delimiter.*/
Packit Service 87bb26
          ']',                     /* LEXLMS: Char used as MSC when enabled.*/
Packit Service 87bb26
          '/',                     /* LEXCON: Char used as NET when enabled.*/
Packit Service 87bb26
          '%',                     /* LEXMARK: Char used as PERO delimiter. */
Packit Service 87bb26
          '>',                     /* LEXCON: Char used as PIC delimiter.*/
Packit Service 87bb26
          '<'                      /* LEXCON: Char used as TAGO when enabled.*/
Packit Service 87bb26
     },
Packit Service 87bb26
     {                        /* Lexical table code assignments. */
Packit Service 87bb26
          FCE,                    /* LEXCNM: FRE char as entity reference.*/
Packit Service 87bb26
          FRE,                    /* LEXLMS: Free character not an entity ref.*/
Packit Service 87bb26
          LITC,                   /* LEXLMS: Literal close delimiter enabled. */
Packit Service 87bb26
          MSC3,                   /* LEXLMS: Marked section close delim enabled. */
Packit Service 87bb26
          NET,                    /* LEXCON: Null end-tag delimiter enabled. */
Packit Service 87bb26
          ETI,                    /* LEXCON: NET disabled; still used as ETI. */
Packit Service 87bb26
          SPCR,                   /* LEXCNM: Space in use as SHORTREF delim. */
Packit Service 87bb26
          TGO2,                   /* LEXCON: Tag open delimiter enabled. */
Packit Service 87bb26
          CDE                     /* LEXLMS: CDATA/SDATA delimiters. */
Packit Service 87bb26
     }
Packit Service 87bb26
};
Packit Service 87bb26
Packit Service 87bb26
UNCH *lextabs[] = {
Packit Service 87bb26
     lexcnm, lexcon, lexgrp, lexlms, lexmark, lexsd, lextoke, 0
Packit Service 87bb26
};