/* * 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: synxtrn.h /main/3 1996/06/19 17:18:50 drk $ */ /* SYNXTRN.H: External declarations for concrete syntax constants. */ /* Short References */ #define SRCT 32 /* Number of short reference delimiters. */ #define SRMAXLEN 3 /* Maximum length of a SHORTREF delimiter. */ #define SRNPRT 8 /* Number of non-printable SHORTREF delimiters. */ struct srdel { struct map dtb[SRCT+2]; /* LEXCNM: Short reference delimiters. */ char *pdtb[SRNPRT+1]; /* LEXCNM: Printable form of unprintable SRs. */ int fce; /* LEXCNM: Index of first FCE in srdeltab. */ int hyp2; /* LEXCNM: Index of "two hyphens" in srdeltab. */ int data; /* LEXCNM: Index of first SR with data char. */ int hyp; /* LEXCNM: Index of hyphen in srdeltab. */ int prtmin; /* LEXCNM: Index of 1st printable SR. */ int spc; /* LEXCNM: Index of space in srdeltab. */ int lbr; /* LEXCNM: Index of left bracket in srdeltab. */ int rbr; /* LEXCNM: Index of right bracket in srdeltab. */ }; struct delim { UNCH genre; /* LEXCON: Generated RE; cannot be markup. */ UNCH lit; /* LEXMARK: Char used as LIT delimiter.*/ UNCH lita; /* LEXMARK: Char used as LITA delimiter.*/ UNCH mdc; /* LEXLMS: Char used as MDC delimiter.*/ UNCH msc; /* LEXCON: Char used as MSC delimiter. */ UNCH net; /* LEXCON: Char used as NET when enabled.*/ UNCH pero; /* LEXMARK: Char used as PERO delimiter. */ UNCH pic; /* LEXCON: Char used as PIC delimiter.*/ UNCH tago; /* LEXCON: Char used as TAGO when enabled.*/ }; struct lexcode { UNCH fce; /* LEXCNM: FRE character as entity reference. */ UNCH fre; /* LEXCON: Free character not an entity ref. */ UNCH litc; /* LEXLMS: Literal close delimiter enabled. */ UNCH msc; /* LEXLMS: Marked section close delim enabled. */ UNCH net; /* LEXCON: Null end-tag delimiter enabled. */ UNCH nonet; /* LEXCON: NET disabled; still used as ETI. */ UNCH spcr; /* LEXCNM: Space in use as SHORTREF delimiter. */ UNCH tago; /* LEXCON: Tag open delimiter enabled. */ UNCH cde; /* LEXLMS: CDATA/SDATA delimiters. */ }; struct lexical { struct markup m; /* Markup strings for text processor. */ struct srdel s; /* Short reference delimiters. */ struct delim d; /* General delimiter characters. */ struct lexcode l; /* Lexical table code assignments. */ }; extern struct lexical lex; /* Delimiter set constants. */ extern UNCH lexcnm[]; /* Lexical table: mixed content. */ extern UNCH lexcon[]; /* Lexical table for content (except mixed). */ extern UNCH lexgrp[]; /* Lexical table for groups. */ extern UNCH lexlms[]; /* Lexical table: literals and marked sections. */ extern UNCH lexmark[]; /* Lexical table for markup. */ extern UNCH lexsd[]; /* Lexical table for SGML declaration. */ extern UNCH lextran[]; /* Case translation table for SGML names. */ extern UNCH lextoke[]; /* Lexical table for tokenization. */ extern UNCH *lextabs[]; /* List of all lexical tables. */ extern struct parse pcbconc; /* PCB: character data. */ extern struct parse pcbcone; /* PCB: element content (no data allowed). */ extern struct parse pcbconm; /* PCB: mixed content (data allowed). */ extern struct parse pcbconr; /* PCB: replaceable character data. */ extern struct parse pcbetag; /* PCB: end-tags. */ extern struct parse pcbgrcm; /* PCB: content model group. */ extern struct parse pcbgrcs; /* PCB: content model suffix. */ extern struct parse pcbgrnm; /* PCB: name group. */ extern struct parse pcbgrnt; /* PCB: name token group. */ extern struct parse pcblitc; /* PCB: literal with CDATA. */ extern struct parse pcblitp; /* PCB: literal with CDATA, parm & char refs. */ extern struct parse pcblitr; /* PCB: attribute value with general refs. */ extern struct parse pcblitt; /* PCB: tokenized attribute value. */ extern struct parse pcblitv; /* PCB: literal with CDATA, function char trans.*/ extern struct parse pcbmd; /* PCB: markup declaration. */ extern struct parse pcbmdc; /* PCB: comment declaration. */ extern struct parse pcbmdi; /* PCB: markup declaration (ignored). */ extern struct parse pcbmds; /* PCB: markup declaration subset. */ extern struct parse pcbmsc; /* PCB: marked section in CDATA mode. */ extern struct parse pcbmsi; /* PCB: marked section in IGNORE mode. */ extern struct parse pcbmsrc; /* PCB: marked section in RCDATA mode. */ extern struct parse pcbpro; /* PCB: prolog. */ extern struct parse pcbref; /* PCB: reference. */ extern struct parse pcbstag; /* PCB: start-tag. */ extern struct parse pcbval; /* PCB: attribute value. */ extern struct parse pcbeal; /* PCB: end of attribute list. */ extern struct parse pcbsd; /* PCB: SGML declaration. */ extern int pcbcnda; /* PCBCONM: data in buffer. */ extern int pcbcnet; /* PCBCONM: markup found or data buffer flushed.*/ extern int pcbmdtk; /* PCBMD: token expected. */ extern int pcbstan; /* PCBSTAG: attribute name expected. */ extern int pcblittda; /* PCBLITT: data character found */ #define KANY 0 #define KATTLIST 1 #define KCDATA 2 #define KCONREF 3 #define KCURRENT 4 #define KDEFAULT 5 #define KDOCTYPE 6 #define KELEMENT 7 #define KEMPTY 8 #define KENDTAG 9 #define KENTITIES 10 #define KENTITY 11 #define KFIXED 12 #define KID 13 #define KIDLINK 14 #define KIDREF 15 #define KIDREFS 16 #define KIGNORE 17 #define KIMPLIED 18 #define KINCLUDE 19 #define KINITIAL 20 #define KLINK 21 #define KLINKTYPE 22 #define KMD 23 #define KMS 24 #define KNAME 25 #define KNAMES 26 #define KNDATA 27 #define KNMTOKEN 28 #define KNMTOKENS 29 #define KNOTATION 30 #define KNUMBER 31 #define KNUMBERS 32 #define KNUTOKEN 33 #define KNUTOKENS 34 #define KO 35 #define KPCDATA 36 #define KPI 37 #define KPOSTLINK 38 #define KPUBLIC 39 #define KRCDATA 40 #define KRE 41 #define KREQUIRED 42 #define KRESTORE 43 #define KRS 44 #define KSDATA 45 #define KSHORTREF 46 #define KSIMPLE 47 #define KSPACE 48 #define KSTARTTAG 49 #define KSUBDOC 50 #define KSYSTEM 51 #define KTEMP 52 #define KUSELINK 53 #define KUSEMAP 54 #define NKEYS (KUSEMAP+1) extern UNCH key[NKEYS][REFNAMELEN+1]; /* Holds the SGML keyword (not alterable by concrete syntax). */ extern UNCH sgmlkey[];