583 lines
29 KiB
C
583 lines
29 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: lextaba.c /main/3 1996/06/19 17:15:41 drk $ */
|
||
/* lextaba.c: lexical tables for ASCII. */
|
||
|
||
/* These tables are munged by setnonsgml(). */
|
||
|
||
#include "config.h"
|
||
#include "entity.h"
|
||
#include "lexcode.h"
|
||
#include "sgmldecl.h"
|
||
|
||
/* LEXCNM: Lexical table for mixed content (PCBCONM) parse.
|
||
*/
|
||
/* Symbols for SGML character set divisions and function characters. */
|
||
#define NU 1 /* NUMERAL Numerals */
|
||
#define NMC 2 /* LC/UCNMCHAR . - Period and hyphen */
|
||
#define NMS 3 /* LC/UCNMSTRT Lower and uppercase letters */
|
||
#define SPC 4 /* SPACE 32 Space */
|
||
#define NON 5 /* NONSGML 0-31 127 255 Unused, except for: */
|
||
#define EE 6 /* NONSGML 00 26 Entity end (end of file) */
|
||
#define EOB 7 /* NONSGML 28 End disk buffer */
|
||
#define RS 8 /* Function 10 Line feed */
|
||
#define RE 9 /* Function 13 Carrier return */
|
||
#define SEP 10 /* SEPCHAR 09 TAB: horizontal tab */
|
||
#define NSC 12 /* NONSGML delnonch Non-SGML character prefix */
|
||
|
||
/* Symbols for SGML delimiter roles in CON and CXT.
|
||
ETI and NET must be the same in LEXCNM and LEXCON.
|
||
FRE characters are changed to FCE if an FCE entity is declared.
|
||
They are changed back to FRE when the entity is canceled.
|
||
*/
|
||
#define ERO 13 /* & Also CRO[1] */
|
||
#define NMRE 14 /* 08 Generated non-markup RE */
|
||
#define COM 15 /* - For MDO context; also SR19 and SR20. */
|
||
#undef LIT1
|
||
#define LIT1 18 /* " SR10 */
|
||
#define MDO 20 /* ! Actually MDO[2] */
|
||
#define MSC1 21 /* ] Both MSC[1] and MSC[2]; also SR26. */
|
||
#define MSO 22 /* [ For MDO context; also SR25. */
|
||
#define PIO 23 /* ? Actually PIO[2] */
|
||
#define RNI 24 /* # For CRO[2]; also SR11. */
|
||
#define TGC1 25 /* > For TAGO and MSC context; also MDC, PIC */
|
||
#define TGO1 26 /* < TAGO; also MDO[1], PIO[1] */
|
||
|
||
UNCH lexcnm[256] = { /*
|
||
000 001 bs tab lf home ff cr so si */
|
||
EE, NON, NON, NON, NON, NON, NON, NON, NMRE,SEP, RS, NON, NON, RE, NON, NON, /*
|
||
eof esc rt left up down */
|
||
NON, NON, NON, NON, NON, NON, NON, NON, NON, NON, EE, NON, EOB, NON, NON, NSC, /*
|
||
032 ! " # $ % & ' ( ) * + , - . / */
|
||
SPC, MDO, LIT1,RNI, FRE, FRE ,ERO, FRE, FRE, FRE, FRE, FRE, FRE, COM, NMC, ETI, /*
|
||
0 1 2 3 4 5 6 7 8 9 : ; < = > ? */
|
||
NU , NU , NU , NU , NU , NU , NU , NU , NU , NU , FRE, FRE, TGO1,FRE, TGC1,PIO, /*
|
||
@ A B C D E F G H I J K L M N O */
|
||
FRE, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, /*
|
||
P Q R S T U V W X Y Z [ \ ] ^ _ */
|
||
NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, MSO, FRE, MSC1,FRE, FRE, /*
|
||
` a b c d e f g h i j k l m n o */
|
||
FRE, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, /*
|
||
p q r s t u v w x y z { | } ~ 127 */
|
||
NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, FRE, FRE, FRE, FRE, NON,
|
||
FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE,
|
||
FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE,
|
||
FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE,
|
||
FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE,
|
||
FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE,
|
||
FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE,
|
||
FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE,
|
||
FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, NON
|
||
};
|
||
/* free nu nmc nms spc non ee eob rs re sep cde nsc ero
|
||
nmre com eti lit spcr mdo msc mso net pio rni tagc tago fce */
|
||
#undef ERO
|
||
#undef NMRE
|
||
#undef COM
|
||
#undef LIT1
|
||
/* def SPCR*/
|
||
#undef MDO
|
||
#undef MSC1
|
||
#undef MSO
|
||
#undef PIO
|
||
#undef RNI
|
||
#undef TGC1
|
||
/* def TGO1*/
|
||
/* def FCE*/
|
||
/* LEXCON: Lexical table for RCDATA and CDATA content (PCBCON?),
|
||
prolog (PCBPRO), and nested declaration set (PCBMDS) parses.
|
||
Note: NMC is same as FRE; kept for consistency with LEXCNM and LEXLMS.
|
||
*/
|
||
/* Symbols for SGML character set divisions and function characters. */
|
||
/* Same as for LEXCNM. */
|
||
|
||
/* Symbols for SGML delimiter roles in CON, CXT, and DS.
|
||
ETI and NET must be the same in LEXCNM and LEXCON.
|
||
FRE characters are changed to FCE if an FCE entity is declared.
|
||
They are changed back to FRE when the entity is canceled.
|
||
*/
|
||
#define ERO 13 /* & Also CRO[1] */
|
||
#define NMRE 14 /* 08 Generated non-markup RE */
|
||
#define COM 15 /* - For MDO context. */
|
||
/*#define ETI 16 / Actually ETAGO[2] */
|
||
/*#define NET 17 / When enabled. */
|
||
#define MDO 18 /* ! Actually MDO[2] */
|
||
#define MSC2 19 /* ] Both MSC[1] and MSC[2]. */
|
||
#define MSO 20 /* [ For MDO context. */
|
||
#define PERO 21 /* % For prolog */
|
||
#define PIO 22 /* ? Actually PIO[2] */
|
||
#define RNI 23 /* # For CRO[2]. */
|
||
#define TGC2 24 /* > For TAGO and MSC context; also MDC, PIC */
|
||
|
||
UNCH lexcon[256] = { /*
|
||
000 001 bs tab lf home ff cr so si */
|
||
EE, NON, NON, NON, NON, NON, NON, NON, NMRE,SEP, RS, NON, NON, RE, NON, NON, /*
|
||
eof esc rt left up down */
|
||
NON, NON, NON, NON, NON, NON, NON, NON, NON, NON, EE, NON, EOB, NON, NON, NSC, /*
|
||
032 ! " # $ % & ' ( ) * + , - . / */
|
||
SPC, MDO, FRE, RNI, FRE, PERO,ERO, FRE, FRE, FRE, FRE, FRE, FRE, COM, NMC, ETI, /*
|
||
0 1 2 3 4 5 6 7 8 9 : ; < = > ? */
|
||
NU , NU , NU , NU , NU , NU , NU , NU , NU , NU , FRE, FRE, TGO2,FRE, TGC2,PIO, /*
|
||
@ A B C D E F G H I J K L M N O */
|
||
FRE, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, /*
|
||
P Q R S T U V W X Y Z [ \ ] ^ _ */
|
||
NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, MSO, FRE, MSC2,FRE, FRE, /*
|
||
` a b c d e f g h i j k l m n o */
|
||
FRE, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, /*
|
||
p q r s t u v w x y z { | } ~ 127 */
|
||
NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, FRE, FRE, FRE, FRE, NON,
|
||
FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE,
|
||
FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE,
|
||
FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE,
|
||
FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE,
|
||
FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE,
|
||
FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE,
|
||
FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE,
|
||
FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, NON
|
||
};
|
||
/* free nu nmc nms spc non ee eob rs re sep cde nsc ero
|
||
nmre com eti net mdo msc mso pero pio rni tagc tago */
|
||
#undef FRE
|
||
#undef NU
|
||
#undef NMC
|
||
#undef NMS
|
||
#undef SPC
|
||
#undef NON
|
||
#undef EE
|
||
#undef EOB
|
||
#undef RS
|
||
#undef RE
|
||
#undef SEP
|
||
#undef NSC
|
||
#undef ERO
|
||
#undef NMRE
|
||
#undef COM
|
||
/* def ETI*/
|
||
/* def NET*/
|
||
#undef MDO
|
||
#undef MSC2
|
||
#undef MSO
|
||
#undef PERO
|
||
#undef PIO
|
||
#undef RNI
|
||
#undef TGC2
|
||
/* LEXGRP: Lexical table for group parses, including PCBREF.
|
||
*/
|
||
/* Symbols for SGML character set divisions. */
|
||
#define BIT 0 /* Bit combinations (not NONCHAR) not allowed in a group. */
|
||
#define NMC 1 /* NAMECHAR . - Period, underscore, and numerals */
|
||
#define NMS 2 /* NAMESTRT Lower and uppercase letters */
|
||
#define RE 3 /* Function 13 Carrier return */
|
||
#define SPC 4 /* SPACE 32 09 Space; includes TAB */
|
||
#define NON 5 /* NONCHAR 0-31 127 255 Unused, except for: */
|
||
#define EE 6 /* Function 26 00 EE: entity end (end of file) */
|
||
#define EOB 7 /* NONCHAR 28 End disk buffer. */
|
||
#define RS 8 /* Function 10 RS: record start (line feed) */
|
||
|
||
/* Symbols for SGML delimiter roles in GRP. */
|
||
#define AND1 9 /* & */
|
||
#define GRPC 10 /* ) */
|
||
#define GRPO 11 /* ( */
|
||
#undef LIT2
|
||
#define LIT2 12 /* " For datatags. */
|
||
#define LITA 13 /* ' For datatags. */
|
||
#define DTGC 14 /* ] For datatags. */
|
||
#define DTGO 15 /* [ For datatags. */
|
||
#define OPT1 16 /* ? */
|
||
#define OR1 17 /* | */
|
||
#define PERO 18 /* % */
|
||
#define PLUS 19 /* + */
|
||
#define REP1 20 /* * */
|
||
#define RNI 21 /* # For #CHARS */
|
||
#define SEQ1 22 /* , */
|
||
#define REFC 23 /* ; For references */
|
||
|
||
UNCH lexgrp[256] = { /*
|
||
000 001 bs tab lf home ff cr so si */
|
||
EE , NON, NON, NON, NON, NON, NON, NON, NON, SPC, RS, NON, NON, RE, NON, NON, /*
|
||
eof esc rt left up down */
|
||
NON, NON, NON, NON, NON, NON, NON, NON, NON, NON, EE , NON, EOB, NON, NON, NON, /*
|
||
032 ! " # $ % & ' ( ) * + , - . / */
|
||
SPC, BIT, LIT2,RNI, BIT, PERO,AND1,LITA,GRPO,GRPC,REP1,PLUS,SEQ1,NMC, NMC, BIT, /*
|
||
0 1 2 3 4 5 6 7 8 9 : ; < = > ? */
|
||
NMC, NMC, NMC, NMC, NMC, NMC, NMC, NMC, NMC, NMC, BIT, REFC,BIT, BIT, BIT, OPT1,/*
|
||
@ A B C D E F G H I J K L M N O */
|
||
BIT, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, /*
|
||
P Q R S T U V W X Y Z [ \ ] ^ _ */
|
||
NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, DTGO,BIT, DTGC,BIT, BIT, /*
|
||
` a b c d e f g h i j k l m n o */
|
||
BIT, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, /*
|
||
p q r s t u v w x y z { | } ~ 127 */
|
||
NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, BIT, OR1, BIT, BIT, NON,
|
||
BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT,
|
||
BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT,
|
||
BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT,
|
||
BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT,
|
||
BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT,
|
||
BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT,
|
||
BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT,
|
||
BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, NON
|
||
};
|
||
/* bit nmc nms re spc non ee eob rs and grpc grpo lit lita
|
||
dtgc dtgo opt or pero plus rep rni seq refc */
|
||
#undef BIT
|
||
#undef NMC
|
||
#undef NMS
|
||
#undef RE
|
||
#undef SPC
|
||
#undef NON
|
||
#undef EE
|
||
#undef EOB
|
||
#undef RS
|
||
#undef AND1
|
||
#undef GRPC
|
||
#undef GRPO
|
||
#undef LIT2
|
||
#undef LITA
|
||
#undef DTGC
|
||
#undef DTGO
|
||
#undef OPT1
|
||
#undef OR1
|
||
#undef PERO
|
||
#undef PLUS
|
||
#undef REP1
|
||
#undef RNI
|
||
#undef SEQ1
|
||
#undef REFC
|
||
/* LEXLMS: Lexical table for literal parses and marked sections.
|
||
*/
|
||
/* Symbols for SGML character set divisions and function characters.
|
||
*/
|
||
#define FRE 0 /* Free char: not in a delimiter or minimum literal. */
|
||
#define NU 1 /* Numeral Numerals */
|
||
#undef MIN
|
||
#define MIN 2 /* Minimum literal '()+,-./:?= */
|
||
#define NMS 3 /* LC/UCNMSTRT Lower and uppercase letters */
|
||
#define SPC 4 /* SPACE 32 Space */
|
||
#define NON 5 /* NONSGML 0-31 127 255 Unused, except for: */
|
||
#define EE 6 /* NONSGML 00 26 Entity end (end of file) */
|
||
#define EOB 7 /* NONSGML 28 End disk buffer */
|
||
#define RS 8 /* Function 10 Line feed */
|
||
#define RE 9 /* Function 13 Carrier return */
|
||
#define SEP 10 /* SEPCHAR 09 TAB: horizontal tab */
|
||
/*#define CDE 11 NONSGML delcdata CDATA/SDATA delimiter */
|
||
#define NSC 12 /* NONSGML delnonch Non-SGML character prefix */
|
||
/* Symbols for SGML delimiter roles in LIT, PI, and marked sections.
|
||
Either LIT, LITA, PIC, or EE, is changed to LITC when a literal is begun.
|
||
It is changed back when the LITC occurs (i.e., when the literal ends).
|
||
*/
|
||
#define ERO 13 /* & */
|
||
#define MDO 14 /* ! Actually MDO[2] */
|
||
#define MSO 16 /* [ For MDO context. */
|
||
#define PERO 17 /* % For prolog. */
|
||
#define RNI 18 /* # For CRO[2] */
|
||
#define TGC3 19 /* > Also MDC for MSC context. */
|
||
#define TGO3 20 /* < TAGO; also MDO[1] */
|
||
|
||
/* Room has been left in the parse tables in case re-parsing of text
|
||
is eventually supported (i.e., saved parsed text is used by the
|
||
application to create a new SGML document, but CDATA and SDATA
|
||
entities in literals, and non-SGML characters, are left in their
|
||
parsed state to avoid the overhead of reconstituting the original
|
||
markup). In such a case, the two non-SGML characters DELCDATA and
|
||
DELSDATA are changed to CDE.
|
||
NOTE: The idea is a bad one, because the generated document would
|
||
be non-conforming, as it would contain non-SGML characters.
|
||
*/
|
||
UNCH lexlms[256] = { /*
|
||
000 001 bs tab lf home ff cr so si */
|
||
EE, NON, NON, NON, NON, NON, NON, NON, NON ,SEP, RS, NON, NON, RE, NON, NON, /*
|
||
eof esc rt left up down */
|
||
NON, NON, NON, NON, NON, NON, NON, NON, NON, NON, EE, NON, EOB, NON, NON, NSC, /*
|
||
032 ! " # $ % & ' ( ) * + , - . / */
|
||
SPC, MDO, FRE, RNI, FRE, PERO,ERO, MIN, MIN, MIN, FRE, MIN, MIN, MIN, MIN, MIN, /*
|
||
0 1 2 3 4 5 6 7 8 9 : ; < = > ? */
|
||
NU , NU , NU , NU , NU , NU , NU , NU , NU , NU , MIN, FRE, TGO3,MIN, TGC3,MIN, /*
|
||
@ A B C D E F G H I J K L M N O */
|
||
FRE, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, /*
|
||
P Q R S T U V W X Y Z [ \ ] ^ _ */
|
||
NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, MSO, FRE, MSC3,FRE, FRE, /*
|
||
` a b c d e f g h i j k l m n o */
|
||
FRE, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, /*
|
||
p q r s t u v w x y z { | } ~ 127 */
|
||
NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, FRE, FRE, FRE, FRE, NON,
|
||
FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE,
|
||
FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE,
|
||
FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE,
|
||
FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE,
|
||
FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE,
|
||
FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE,
|
||
FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE,
|
||
FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, FRE, NON
|
||
};
|
||
/* free nu min nms spc non ee eob rs re sep cde nsc ero
|
||
mdo msc mso pero rni tago tagc litc */
|
||
/* def FRE*/
|
||
#undef NU
|
||
#undef MIN
|
||
#undef NMS
|
||
#undef SPC
|
||
#undef NON
|
||
#undef EE
|
||
#undef EOB
|
||
#undef RS
|
||
#undef RE
|
||
#undef SEP
|
||
/* def CDE*/
|
||
/* def NSC*/
|
||
#undef ERO
|
||
#undef MDO
|
||
/* def MSC3*/
|
||
#undef MSO
|
||
#undef PERO
|
||
#undef RNI
|
||
#undef TGC3
|
||
#undef TGO3
|
||
/* def LITC*/
|
||
/* LEXMARK: Lexical scan table for markup: PCBMD? and PCB?TAG.
|
||
*/
|
||
/* Symbols for SGML character set divisions. */
|
||
#define BIT 0 /* Bit combinations not allowed; includes ESC SO SI */
|
||
#define NMC 1 /* NAMECHAR . _ Period and underscore */
|
||
#define NU 2 /* NUMERAL Numerals */
|
||
#define NMS 3 /* NAMESTRT Lower and uppercase letters */
|
||
#define SPC 4 /* SPACE 32 13 09 Space; includes RE TAB */
|
||
#define NON 5 /* NONCHAR 0-31 127 255 Unused, except for: */
|
||
#define EE 6 /* Function 26 00 EE: entity end (end of file) */
|
||
#define EOB 7 /* NONCHAR 28 End disk buffer. */
|
||
#define RS 8 /* Function 10 RS: record start (line feed) */
|
||
|
||
/* Symbols for SGML delimiter roles in MD and TAG. */
|
||
#define COM1 9 /* - Actually COM[1]; also COM[2], MINUS. */
|
||
#define ETIB 10 /* / ETI; actually ETAGO[2]. */
|
||
#define GRPO 11 /* ( */
|
||
#define LIT3 12 /* " */
|
||
#define LITA 13 /* ' */
|
||
#define DSO 14 /* [ */
|
||
#define DSC1 15 /* ] For data attribute specifications */
|
||
#define PERO 16 /* % */
|
||
#define PLUS 17 /* + */
|
||
#define REFC 18 /* ; For references */
|
||
#define RNI 19 /* # Also CRO[2] */
|
||
#define TGC4 20 /* > Also MDC, PIC */
|
||
#define TGO4 21 /* < TAGO; also MDO[1] */
|
||
#define VI 22 /* = */
|
||
|
||
UNCH lexmark[256] = { /*
|
||
000 001 bs tab lf home ff cr so si */
|
||
EE , NON, NON, NON, NON, NON, NON, NON, NON, SPC, RS, NON, NON, SPC, NON, NON, /*
|
||
eof esc rt left up down */
|
||
NON, NON, NON, NON, NON, NON, NON, NON, NON, NON, EE , NON, EOB, NON, NON, NON, /*
|
||
032 ! " # $ % & ' ( ) * + , - . / */
|
||
SPC, BIT, LIT3,RNI, BIT, PERO,BIT, LITA,GRPO,BIT, BIT, PLUS,BIT, COM1,NMC ,ETIB,/*
|
||
0 1 2 3 4 5 6 7 8 9 : ; < = > ? */
|
||
NU, NU, NU, NU, NU, NU, NU, NU, NU, NU, BIT, REFC,TGO4,VI, TGC4,BIT, /*
|
||
@ A B C D E F G H I J K L M N O */
|
||
BIT, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, /*
|
||
P Q R S T U V W X Y Z [ \ ] ^ _ */
|
||
NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, DSO, BIT, DSC1, BIT, BIT, /*
|
||
` a b c d e f g h i j k l m n o */
|
||
BIT, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, /*
|
||
p q r s t u v w x y z { | } ~ 127 */
|
||
NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, BIT, BIT, BIT, BIT, NON,
|
||
BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT,
|
||
BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT,
|
||
BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT,
|
||
BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT,
|
||
BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT,
|
||
BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT,
|
||
BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT,
|
||
BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, BIT, NON
|
||
};
|
||
/* bit nmc nu nms spc non ee eob rs com eti grpo lit lita
|
||
dso pero plus refc rni tagc tago vi */
|
||
#undef BIT
|
||
#undef NMC
|
||
#undef NU
|
||
#undef NMS
|
||
#undef SPC
|
||
#undef NON
|
||
#undef EE
|
||
#undef EOB
|
||
#undef RS
|
||
#undef COM1
|
||
#undef ETIB
|
||
#undef GRPO
|
||
#undef LIT3
|
||
#undef LITA
|
||
#undef DSO
|
||
#undef DSC
|
||
#undef PERO
|
||
#undef PLUS
|
||
#undef REFC
|
||
#undef RNI
|
||
#undef TGC4
|
||
#undef TGO4
|
||
#undef VI
|
||
/* LEXSD: Lexical scan table for SGML declaration.
|
||
*/
|
||
|
||
/* Symbols for SGML character set divisions. */
|
||
#define SIG 0 /* Significant SGML characters. */
|
||
#define DAT 1 /* DATACHAR Not significant, and not non-sgml. */
|
||
#define NU 2 /* NUMERAL Numerals */
|
||
#define NMS 3 /* NAMESTRT Lower and uppercase letters */
|
||
#define SPC 4 /* SPACE 32 13 09 Space; includes RE TAB */
|
||
#define NON 5 /* NONCHAR NONSGML */
|
||
#define EE 6 /* Function 26 00 EE: entity end (end of file) */
|
||
#define EOB 7 /* NONCHAR 28 End disk buffer. */
|
||
#define RS 8 /* Function 10 RS: record start (line feed) */
|
||
/* Symbols for SGML delimiter roles in SGML declaration. */
|
||
#define COM1 9 /* - Actually COM[1]; also COM[2]. */
|
||
#define LIT3 10 /* " */
|
||
#define LITA 11 /* ' */
|
||
#define TGC4 12 /* > Also MDC, PIC */
|
||
|
||
UNCH lexsd[256] = { /*
|
||
000 001 bs tab lf home ff cr so si */
|
||
EE , NON, NON, NON, NON, NON, NON, NON, NON, SPC, RS, NON, NON, SPC, NON, NON, /*
|
||
eof esc rt left up down */
|
||
NON, NON, NON, NON, NON, NON, NON, NON, NON, NON, EE , NON, EOB, NON, NON, NON, /*
|
||
032 ! " # $ % & ' ( ) * + , - . / */
|
||
SPC, SIG, LIT3,SIG, DAT, SIG ,SIG, LITA,SIG, SIG, SIG, SIG, SIG, COM1,SIG ,SIG,/*
|
||
0 1 2 3 4 5 6 7 8 9 : ; < = > ? */
|
||
NU, NU, NU, NU, NU, NU, NU, NU, NU, NU, SIG, SIG, SIG, SIG, TGC4,SIG, /*
|
||
@ A B C D E F G H I J K L M N O */
|
||
SIG, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, /*
|
||
P Q R S T U V W X Y Z [ \ ] ^ _ */
|
||
NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, SIG, DAT, SIG, SIG, SIG, /*
|
||
` a b c d e f g h i j k l m n o */
|
||
DAT, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, /*
|
||
p q r s t u v w x y z { | } ~ 127 */
|
||
NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, SIG, SIG, SIG, SIG, NON,
|
||
DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT,
|
||
DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT,
|
||
DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT,
|
||
DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT,
|
||
DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT,
|
||
DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT,
|
||
DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT,
|
||
DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, DAT, NON
|
||
};
|
||
|
||
#undef SIG
|
||
#undef DAT
|
||
#undef NON
|
||
#undef NU
|
||
#undef NMS
|
||
#undef SPC
|
||
#undef EE
|
||
#undef EOB
|
||
#undef RS
|
||
#undef COM1
|
||
#undef LIT3
|
||
#undef LITA
|
||
#undef TGC4
|
||
|
||
/* LEXTRAN: Translation table for SGML names.
|
||
*/
|
||
UNCH lextran[256] = { /*
|
||
000 001 bs tab lf home ff cr so si */
|
||
0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , /*
|
||
eof esc rt left up down */
|
||
16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , /*
|
||
space! " # $ % & ' ( ) * + , - . / */
|
||
32 , 33 , 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , /*
|
||
0 1 2 3 4 5 6 7 8 9 : ; < = > ? */
|
||
48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 , 62 , 63 , /*
|
||
@ A B C D E F G H I J K L M N O */
|
||
64 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , /*
|
||
P Q R S T U V W X Y Z [ \ ] ^ _ */
|
||
80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , 91 , 92 , 93 , 94 , 95 , /*
|
||
` a b c d e f g h i j k l m n o */
|
||
96 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 76 , 77 , 78 , 79 , /*
|
||
p q r s t u v w x y z { | } ~ 127 */
|
||
80 , 81 , 82 , 83 , 84 , 85 , 86 , 87 , 88 , 89 , 90 , 123, 124, 125, 126, 127,
|
||
128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
|
||
144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
|
||
160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
|
||
176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
|
||
192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
|
||
208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
|
||
224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
|
||
240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255
|
||
};
|
||
/* LEXTOKE: Lexical class table for tokenization scan.
|
||
*/
|
||
#include "lextoke.h" /* Symbols for tokenization lexical classes. */
|
||
UNCH lextoke[256] = { /*
|
||
|
||
000 001 bs tab lf home ff cr */
|
||
INV, INV, INV, INV, INV, INV, INV, INV, INV, SEP, REC, INV, INV, REC, INV, INV, /*
|
||
eof esc rt left up down */
|
||
INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, EOB, INV, INV, INV, /*
|
||
space! " # $ % & ' ( ) * + , - . / */
|
||
SP , INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, NMC, NMC, INV, /*
|
||
0 1 2 3 4 5 6 7 8 9 : ; < = > ? */
|
||
NU , NU , NU , NU , NU , NU , NU , NU , NU , NU , INV, INV, INV, INV, INV, INV, /*
|
||
@ A B C D E F G H I J K L M N O */
|
||
INV, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, /*
|
||
P Q R S T U V W X Y Z [ \ ] ^ _ */
|
||
NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, INV, INV, INV, INV, INV, /*
|
||
` a b c d e f g h i j k l m n o */
|
||
INV, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, /*
|
||
p q r s t u v w x y z { | } ~ 127 */
|
||
NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, NMS, INV, INV, INV, INV, INV,
|
||
INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV,
|
||
INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV,
|
||
INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV,
|
||
INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV,
|
||
INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV,
|
||
INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV,
|
||
INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV,
|
||
INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV, INV
|
||
};
|
||
|
||
/* This table maps ASCII to the system character set. */
|
||
int asciicharset[] = {
|
||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
|
||
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
|
||
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
|
||
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
||
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
|
||
96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
|
||
112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
|
||
UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED,
|
||
UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED,
|
||
UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED,
|
||
UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED,
|
||
UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED,
|
||
UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED,
|
||
UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED,
|
||
UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED,
|
||
UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED,
|
||
UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED,
|
||
UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED,
|
||
UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED,
|
||
UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED,
|
||
UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED,
|
||
UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED,
|
||
UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED, UNUSED,
|
||
};
|