148 lines
8.0 KiB
C
148 lines
8.0 KiB
C
/*
|
|
* CDE - Common Desktop Environment
|
|
*
|
|
* Copyright (c) 1993-2012, The Open Group. All rights reserved.
|
|
*
|
|
* These libraries and programs are free software; you can
|
|
* redistribute them and/or modify them under the terms of the GNU
|
|
* Lesser General Public License as published by the Free Software
|
|
* Foundation; either version 2 of the License, or (at your option)
|
|
* any later version.
|
|
*
|
|
* These libraries and programs are distributed in the hope that
|
|
* they will be useful, but WITHOUT ANY WARRANTY; without even the
|
|
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
* PURPOSE. See the GNU Lesser General Public License for more
|
|
* details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with these libraries and programs; if not, write
|
|
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
|
|
* Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
/* $XConsortium: lexrf.c /main/3 1996/06/19 17:15:37 drk $ */
|
|
/* LEXRF: Lexical tables for reference concrete syntax.
|
|
*/
|
|
|
|
#include "config.h"
|
|
#include "entity.h" /* Templates for entity control blocks. */
|
|
#include "synxtrn.h" /* Declarations for concrete syntax constants. */
|
|
#include "action.h" /* Action names for all parsing. */
|
|
#include "lexcode.h"
|
|
|
|
static UNCH SRTAB[] = { TABCHAR, '\0' };
|
|
static UNCH SRRE[] = { RECHAR, '\0' };
|
|
static UNCH SRRS[] = { RSCHAR, '\0' };
|
|
static UNCH SRRSB[] = { RSCHAR, 'B', '\0' };
|
|
static UNCH SRRSRE[] = { RSCHAR, RECHAR, '\0' };
|
|
static UNCH SRRSBRE[] = { RSCHAR, 'B', RECHAR, '\0' };
|
|
static UNCH SRBRE[] = { 'B', RECHAR, '\0' };
|
|
|
|
struct lexical lex = { /* Delimiter set constants for parser use. */
|
|
{ /* Markup strings for text processor use. */
|
|
(UNCH *)"\4&#", /* LEXCON markup string: CRO */
|
|
(UNCH *)"[", /* LEXCON markup string: DSO */
|
|
(UNCH *)"\3&", /* LEXCON markup string: ERO */
|
|
(UNCH *)"\4</", /* LEXMARK markup string: end-tag */
|
|
(UNCH *)"\3\"", /* LEXMARK markup string: LIT */
|
|
(UNCH *)"\3'", /* LEXMARK markup string: LITA */
|
|
(UNCH *)"\3>", /* LEXCON markup string: MDC */
|
|
(UNCH *)"\4<!", /* LEXCON markup string: MDO */
|
|
(UNCH *)"\5]]>", /* LEXCON markup string: mse */
|
|
(UNCH *)"\5<![", /* LEXCON markup string: mss */
|
|
(UNCH *)"\13<![CDATA[", /* LEXCON markup string: mss CDATA */
|
|
(UNCH *)"\14<![RCDATA[", /* LEXCON markup string: mss RCDATA */
|
|
(UNCH *)"\3>", /* LEXCON markup string: PIC */
|
|
(UNCH *)"\4<?", /* LEXCON markup string: PIO */
|
|
(UNCH *)"\3;", /* LEXGRP markup string: ref close. */
|
|
(UNCH *)"\3<", /* LEXMARK markup string: start-tag */
|
|
(UNCH *)"\3>", /* LEXMARK markup string: TAGC */
|
|
(UNCH *)"\3=", /* LEXMARK markup string: VI */
|
|
3, /* LEXMARK: length of null end-tag. */
|
|
2 /* LEXMARK: length of null start-tag. */
|
|
},
|
|
{ /* Short reference delimiters. */
|
|
{ /* Short reference delimiter table. */
|
|
{(UNCH *)"", SRCT}, /* Dummy entry to store SR count. */
|
|
{SRTAB, 1}, /* TAB */
|
|
{SRRE, 2}, /* RE */
|
|
{SRRS, 3}, /* RS */
|
|
{SRRSB, 4}, /* Leading blanks */
|
|
{SRRSRE, 5}, /* Null record */
|
|
{SRRSBRE, 6}, /* Blank record */
|
|
{SRBRE, 7}, /* Trailing blanks */
|
|
{(UNCH *)" ", 8}, /* Space */
|
|
{(UNCH *)"BB", 9}, /* Two or more blanks */
|
|
{(UNCH *)"\"", 10}, /* Quotation mark (first data character) */
|
|
{(UNCH *)"#", 11}, /* Number sign */
|
|
{(UNCH *)"%", 12}, /* FCE CHARACTERS start here */
|
|
{(UNCH *)"'", 13},
|
|
{(UNCH *)"(", 14},
|
|
{(UNCH *)")", 15},
|
|
{(UNCH *)"*", 16},
|
|
{(UNCH *)"+", 17},
|
|
{(UNCH *)",", 18},
|
|
{(UNCH *)"-", 19}, /* Hyphen */
|
|
{(UNCH *)"--", 20}, /* Two hyphens */
|
|
{(UNCH *)":", 21},
|
|
{(UNCH *)";", 22},
|
|
{(UNCH *)"=", 23},
|
|
{(UNCH *)"@", 24},
|
|
{(UNCH *)"[", 25},
|
|
{(UNCH *)"]", 26},
|
|
{(UNCH *)"^", 27},
|
|
{(UNCH *)"_", 28}, /* Low line */
|
|
{(UNCH *)"{", 29},
|
|
{(UNCH *)"|", 30},
|
|
{(UNCH *)"}", 31},
|
|
{(UNCH *)"~", 32},
|
|
{0, 0}
|
|
},
|
|
{ /* Printable form of unprintable SR delims.*/
|
|
"", /* Dummy entry to balance s.dtb. */
|
|
"&#TAB;", /* TAB */
|
|
"&#RE;", /* RE */
|
|
"&#RS;", /* RS */
|
|
"&#RS;B", /* Leading blanks */
|
|
"&#RS;&#RE;", /* Null record */
|
|
"&#RS;B&#RE;", /* Blank record */
|
|
"B&#RE;", /* Trailing blanks */
|
|
"&#SPACE;" /* Space */
|
|
},
|
|
12, /* LEXCNM: Index of first FCE in srdeltab. */
|
|
20, /*LEXCNM:Index of "two hyphens" in srdeltab*/
|
|
10, /* LEXCNM: Index of first SR with data char. */
|
|
19, /* LEXCNM: Index of hyphen in srdeltab. */
|
|
SRNPRT+1, /* LEXCNM: Index of 1st printable SR. */
|
|
8, /* LEXCNM: Index of space in srdeltab. */
|
|
25, /* LEXCNM: Index of left bracket in srdeltab. */
|
|
26, /* LEXCNM: Index of right bracket in srdeltab. */
|
|
}, /* End of short reference delimiters. */
|
|
{ /* General delimiter characters. */
|
|
GENRECHAR, /*LEXCNM:(BS)Generated RE; can't be markup.*/
|
|
'"', /* LEXMARK: Char used as LIT delimiter.*/
|
|
'\'', /* LEXMARK: Char used as LITA delimiter.*/
|
|
'>', /* LEXLMS: Char used as MDC delimiter.*/
|
|
']', /* LEXLMS: Char used as MSC when enabled.*/
|
|
'/', /* LEXCON: Char used as NET when enabled.*/
|
|
'%', /* LEXMARK: Char used as PERO delimiter. */
|
|
'>', /* LEXCON: Char used as PIC delimiter.*/
|
|
'<' /* LEXCON: Char used as TAGO when enabled.*/
|
|
},
|
|
{ /* Lexical table code assignments. */
|
|
FCE, /* LEXCNM: FRE char as entity reference.*/
|
|
FRE, /* LEXLMS: Free character not an entity ref.*/
|
|
LITC, /* LEXLMS: Literal close delimiter enabled. */
|
|
MSC3, /* LEXLMS: Marked section close delim enabled. */
|
|
NET, /* LEXCON: Null end-tag delimiter enabled. */
|
|
ETI, /* LEXCON: NET disabled; still used as ETI. */
|
|
SPCR, /* LEXCNM: Space in use as SHORTREF delim. */
|
|
TGO2, /* LEXCON: Tag open delimiter enabled. */
|
|
CDE /* LEXLMS: CDATA/SDATA delimiters. */
|
|
}
|
|
};
|
|
|
|
UNCH *lextabs[] = {
|
|
lexcnm, lexcon, lexgrp, lexlms, lexmark, lexsd, lextoke, 0
|
|
};
|