/* * 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", /* LEXCON markup string: MDC */ (UNCH *)"\4", /* LEXCON markup string: mse */ (UNCH *)"\5", /* LEXCON markup string: PIC */ (UNCH *)"\4", /* 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 };