home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 10 / Fresh_Fish_10_2352.bin / new / dev / lang / sgmls / src / synxtrn.h < prev    next >
C/C++ Source or Header  |  1994-07-10  |  7KB  |  155 lines

  1. /* SYNXTRN.H: External declarations for concrete syntax constants.
  2. */
  3. /* Short References
  4. */
  5. #define SRCT    32            /* Number of short reference delimiters. */
  6. #define SRMAXLEN 3            /* Maximum length of a SHORTREF delimiter. */
  7. #define SRNPRT   8            /* Number of non-printable SHORTREF delimiters. */
  8. struct srdel {
  9.      struct map dtb[SRCT+2];  /* LEXCNM: Short reference delimiters. */
  10.      char *pdtb[SRNPRT+1];    /* LEXCNM: Printable form of unprintable SRs. */
  11.      int fce;                 /* LEXCNM: Index of first FCE in srdeltab. */
  12.      int hyp2;                /* LEXCNM: Index of "two hyphens" in srdeltab. */
  13.      int data;                /* LEXCNM: Index of first SR with data char. */
  14.      int hyp;                 /* LEXCNM: Index of hyphen in srdeltab. */
  15.      int prtmin;              /* LEXCNM: Index of 1st printable SR. */
  16.      int spc;                 /* LEXCNM: Index of space in srdeltab. */
  17.      int lbr;              /* LEXCNM: Index of left bracket in srdeltab. */
  18.      int rbr;              /* LEXCNM: Index of right bracket in srdeltab. */
  19. };
  20. struct delim {
  21.      UNCH genre;              /* LEXCON: Generated RE; cannot be markup. */
  22.      UNCH lit;                /* LEXMARK: Char used as LIT delimiter.*/
  23.      UNCH lita;               /* LEXMARK: Char used as LITA delimiter.*/
  24.      UNCH mdc;                /* LEXLMS: Char used as MDC delimiter.*/
  25.      UNCH msc;                /* LEXCON: Char used as MSC delimiter. */
  26.      UNCH net;                /* LEXCON: Char used as NET when enabled.*/
  27.      UNCH pero;               /* LEXMARK: Char used as PERO delimiter. */
  28.      UNCH pic;                /* LEXCON: Char used as PIC delimiter.*/
  29.      UNCH tago;               /* LEXCON: Char used as TAGO when enabled.*/
  30. };
  31. struct lexcode {
  32.      UNCH fce;                /* LEXCNM: FRE character as entity reference. */
  33.      UNCH fre;                /* LEXCON: Free character not an entity ref. */
  34.      UNCH litc;               /* LEXLMS: Literal close delimiter enabled. */
  35.      UNCH minlitc;          /* LEXMIN: Literal close delimiter enabled. */
  36.      UNCH msc;                /* LEXLMS: Marked section close delim enabled. */
  37.      UNCH net;                /* LEXCON: Null end-tag delimiter enabled. */
  38.      UNCH nonet;              /* LEXCON: NET disabled; still used as ETI. */
  39.      UNCH spcr;               /* LEXCNM: Space in use as SHORTREF delimiter. */
  40.      UNCH tago;               /* LEXCON: Tag open delimiter enabled. */
  41.      UNCH cde;                /* LEXLMS: CDATA/SDATA delimiters. */
  42. };
  43. struct lexical {
  44.      struct markup m;         /* Markup strings for text processor. */
  45.      struct srdel s;          /* Short reference delimiters. */
  46.      struct delim d;          /* General delimiter characters. */
  47.      struct lexcode l;        /* Lexical table code assignments. */
  48. };
  49. extern struct lexical lex;    /* Delimiter set constants. */
  50. extern UNCH lexcnm[];         /* Lexical table: mixed content. */
  51. extern UNCH lexcon[];         /* Lexical table for content (except mixed). */
  52. extern UNCH lexgrp[];         /* Lexical table for groups. */
  53. extern UNCH lexlms[];         /* Lexical table: literals and marked sections. */
  54. extern UNCH lexmin[];         /* Lexical table: minimum data literal. */
  55. extern UNCH lexmark[];        /* Lexical table for markup. */
  56. extern UNCH lexsd[];          /* Lexical table for SGML declaration. */
  57. extern UNCH lextran[];        /* Case translation table for SGML names. */
  58. extern UNCH lextoke[];        /* Lexical table for tokenization. */
  59. extern UNCH *lextabs[];       /* List of all lexical tables. */
  60. extern struct parse pcbconc;  /* PCB: character data. */
  61. extern struct parse pcbcone;  /* PCB: element content (no data allowed). */
  62. extern struct parse pcbconm;  /* PCB: mixed content (data allowed). */
  63. extern struct parse pcbconr;  /* PCB: replaceable character data. */
  64. extern struct parse pcbetag;  /* PCB: end-tags. */
  65. extern struct parse pcbgrcm;  /* PCB: content model group. */
  66. extern struct parse pcbgrcs;  /* PCB: content model suffix. */
  67. extern struct parse pcbgrnm;  /* PCB: name group. */
  68. extern struct parse pcbgrnt;  /* PCB: name token group. */
  69. extern struct parse pcblitc;  /* PCB: literal with CDATA. */
  70. extern struct parse pcblitp;  /* PCB: literal with CDATA, parm & char refs. */
  71. extern struct parse pcblitr;  /* PCB: attribute value with general refs. */
  72. extern struct parse pcblitt;  /* PCB: tokenized attribute value. */
  73. extern struct parse pcblitv;  /* PCB: literal with CDATA, function char trans.*/
  74. extern struct parse pcbmd;    /* PCB: markup declaration. */
  75. extern struct parse pcbmdc;   /* PCB: comment declaration. */
  76. extern struct parse pcbmdi;   /* PCB: markup declaration (ignored). */
  77. extern struct parse pcbmds;   /* PCB: markup declaration subset. */
  78. extern struct parse pcbmsc;   /* PCB: marked section in CDATA mode. */
  79. extern struct parse pcbmsi;   /* PCB: marked section in IGNORE mode. */
  80. extern struct parse pcbmsrc;  /* PCB: marked section in RCDATA mode. */
  81. extern struct parse pcbpro;   /* PCB: prolog. */
  82. extern struct parse pcbref;   /* PCB: reference. */
  83. extern struct parse pcbstag;  /* PCB: start-tag. */
  84. extern struct parse pcbval;   /* PCB: attribute value. */
  85. extern struct parse pcbeal;   /* PCB: end of attribute list. */
  86. extern struct parse pcbsd;    /* PCB: SGML declaration. */
  87. extern int pcbcnda;           /* PCBCONM: data in buffer. */
  88. extern int pcbcnet;           /* PCBCONM: markup found or data buffer flushed.*/
  89. extern int pcbmdtk;           /* PCBMD: token expected. */
  90. extern int pcbstan;           /* PCBSTAG: attribute name expected. */
  91. extern int pcblittda;          /* PCBLITT: data character found */
  92.  
  93. #define KANY 0
  94. #define KATTLIST 1
  95. #define KCDATA 2
  96. #define KCONREF 3
  97. #define KCURRENT 4
  98. #define KDEFAULT 5
  99. #define KDOCTYPE 6
  100. #define KELEMENT 7
  101. #define KEMPTY 8
  102. #define KENDTAG 9
  103. #define KENTITIES 10
  104. #define KENTITY 11
  105. #define KFIXED 12
  106. #define KID 13
  107. #define KIDLINK 14
  108. #define KIDREF 15
  109. #define KIDREFS 16
  110. #define KIGNORE 17
  111. #define KIMPLIED 18
  112. #define KINCLUDE 19
  113. #define KINITIAL 20
  114. #define KLINK 21
  115. #define KLINKTYPE 22
  116. #define KMD 23
  117. #define KMS 24
  118. #define KNAME 25
  119. #define KNAMES 26
  120. #define KNDATA 27
  121. #define KNMTOKEN 28
  122. #define KNMTOKENS 29
  123. #define KNOTATION 30
  124. #define KNUMBER 31
  125. #define KNUMBERS 32
  126. #define KNUTOKEN 33
  127. #define KNUTOKENS 34
  128. #define KO 35
  129. #define KPCDATA 36
  130. #define KPI 37
  131. #define KPOSTLINK 38
  132. #define KPUBLIC 39
  133. #define KRCDATA 40
  134. #define KRE 41
  135. #define KREQUIRED 42
  136. #define KRESTORE 43
  137. #define KRS 44
  138. #define KSDATA 45
  139. #define KSHORTREF 46
  140. #define KSIMPLE 47
  141. #define KSPACE 48
  142. #define KSTARTTAG 49
  143. #define KSUBDOC 50
  144. #define KSYSTEM 51
  145. #define KTEMP 52
  146. #define KUSELINK 53
  147. #define KUSEMAP 54
  148.  
  149. #define NKEYS (KUSEMAP+1)
  150.  
  151. extern UNCH key[NKEYS][REFNAMELEN+1];
  152.  
  153. /* Holds the SGML keyword (not alterable by concrete syntax). */
  154. extern UNCH sgmlkey[];
  155.