1 /* PCBRF: Parse tables for reference concrete syntax.
2 */
3 #include "config.h"
4 #include "entity.h"           /* Templates for entity control blocks. */
5 #include "action.h"           /* Action names for all parsing. */
6 #include "synxtrn.h"          /* Declarations for concrete syntax constants. */
7 #include "adl.h"              /* Definitions for attribute list processing. */
8 /* PCBCONM: State and action table for content parse of mixed content.
9             Initial state assumes a start-tag was just processed.
10 */
11 /* Symbols for state names (end with a number). */
12 #define ET0     0   /* Markup found or buffer flushed; no data. */
13 #define DA0     2   /* Data in buffer. */
14 #define DA1     4   /* Data and space in buffer. */
15 #define ER0     6   /* ERO found; start lookahead buffer. */
16 #define CR0     8   /* CRO found (ERO, RNI). */
17 #define RS0    10   /* RS found; possible SR 3-6. */
18 #define ME0    12   /* MSC found; possible SR26. */
19 #define ME1    14   /* MSC, MSC found. */
20 #define ES0    16   /* TAGO found; start lookahead buffer. */
21 #define EE0    18   /* End-tag start (TAGO,ETI); move to lookahead buffer. */
22 #define NE0    20   /* End-tag start (TAGO,NET); process NET if not end-tag. */
23 #define MD0    22   /* MDO found (TAGO, MDO[2]). */
24 #define MC0    24   /* MDO, COM found. */
25 #define SC0    26   /* COM found; possible SR19-20. */
26 #define SP0    28   /* Space found; data pending; possible SR7 or SR9. */
27 #define SR0    30   /* SPCR found; possible SR7 or SR9. */
28 #define TB0    32   /* TAB found; possible SR7 or SR9. */
29 
30 int pcbcnet = ET0;            /* PCBCONM: markup found or data buffer flushed.*/
31 int pcbcnda = DA0;            /* PCBCONM: data in buffer. */
32 
33 static UNCH
34 /*      free nu   nmc  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
35         nmre com  eti  net  lit  spcr mdo  msc  mso  pio  rni  tagc tago fce   */
36 et0 []={DA0 ,DA0 ,DA0 ,DA0 ,SP0 ,ET0 ,ET0 ,ET0 ,RS0 ,ET0 ,TB0 ,DA0 ,ET0 ,ER0 ,
37         ET0 ,SC0 ,DA0 ,ET0 ,ET0 ,SR0 ,DA0 ,ME0 ,ET0 ,DA0 ,ET0 ,DA0 ,ES0 ,ET0 },/*et0*/
38 et0a[]={DAS_,DAS_,DAS_,DAS_,DAS_,NON_,GET_,GET_,RSR_,SR2_,DAS_,DAS_,NSC_,LAS_,
39         REF_,NOP_,DAS_,NED_,SR10,DAS_,DAS_,NOP_,SR25,DAS_,SR11,DAS_,LAS_,FCE_},
40 
41 da0 []={DA0 ,DA0 ,DA0 ,DA0 ,DA1 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,DA0 ,ET0 ,ET0 ,
42         ET0 ,ET0 ,DA0 ,ET0 ,ET0 ,ET0 ,DA0 ,ET0 ,ET0 ,DA0 ,DA0 ,DA0 ,ET0 ,ET0 },/*da0*/
43 da0a[]={NOP_,NOP_,NOP_,NOP_,NOP_,DAF_,DAF_,DAF_,DAF_,DAF_,DAF_,NOP_,DAF_,DAF_,
44         DAF_,DAF_,NOP_,DAF_,DAF_,DAF_,NOP_,DAF_,DAF_,NOP_,NOP_,NOP_,DAF_,DAF_},
45 
46 da1 []={DA0 ,DA0 ,DA0 ,DA0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,DA0 ,ET0 ,ET0 ,
47         ET0 ,ET0 ,DA0 ,ET0 ,ET0 ,ET0 ,DA0 ,ET0 ,ET0 ,DA0 ,DA0 ,DA0 ,ET0 ,ET0 },/*da1*/
48 da1a[]={NOP_,NOP_,NOP_,NOP_,DAR_,DAF_,DAF_,DAR_,DAF_,DAR_,DAR_,NOP_,DAF_,DAF_,
49         DAF_,DAF_,NOP_,DAF_,DAF_,DAR_,NOP_,DAF_,DAF_,NOP_,NOP_,NOP_,DAF_,DAF_},
50 
51 er0 []={ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ER0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,
52         ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,CR0 ,ET0 ,ET0 ,ET0 },/*er0*/
53 er0a[]={LAF_,LAF_,LAF_,ER_ ,LAF_,LAF_,LAF_,GET_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,
54         LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAM_,LAF_,LAF_,LAF_},
55 
56 /*      free nu   nmc  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
57         nmre com  eti  net  lit  spcr mdo  msc  mso  pio  rni  tagc tago fce   */
58 cr0 []={ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,CR0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,
59         ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 },/*cr0*/
60 cr0a[]={NLF_,CRN_,NLF_,CRA_,NLF_,NLF_,NLF_,GET_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,
61         NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_},
62 
63 rs0 []={ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,RS0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,
64         ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 },/*rs0*/
65 rs0a[]={SR3_,SR3_,SR3_,SR3_,SR4_,SR3_,SR3_,GET_,SR3_,SR5_,SR4_,SR3_,SR3_,SR3_,
66         SR3_,SR3_,SR3_,NED_,SR3_,SR4_,SR3_,SR3_,SR3_,SR3_,SR3_,SR3_,SR3_,SR3_},
67 
68 me0 []={ET0, ET0, ET0, ET0, ET0 ,ET0, ET0, ME0, ET0 ,ET0 ,ET0 ,ET0, ET0, ET0,
69         ET0 ,ET0 ,ET0 ,ET0, ET0, ET0, ET0, ME1 ,ET0, ET0, ET0 ,ET0, ET0, ET0 },/*me0*/
70 me0a[]={SR26,SR26,SR26,SR26,SR26,SR26,SR26,GET_,SR26,SR26,SR26,SR26,SR26,SR26,
71         SR26,SR26,SR26,SR26,SR26,SR26,SR26,NOP_,SR26,SR26,SR26,SR26,SR26,SR26},
72 
73 me1 []={ET0, ET0, ET0, ET0, ET0 ,ET0, ET0, ME1, ET0 ,ET0 ,ET0 ,ET0, ET0, ET0,
74         ET0 ,ET0 ,ET0 ,ET0, ET0, ET0, ET0, ET0 ,ET0, ET0, ET0 ,ET0, ET0, ET0 },/*me1*/
75 me1a[]={RBR_,RBR_,RBR_,RBR_,RBR_,RBR_,RBR_,GET_,RBR_,RBR_,RBR_,RBR_,RBR_,RBR_,
76         RBR_,RBR_,RBR_,RBR_,RBR_,RBR_,RBR_,RBR_,RBR_,RBR_,RBR_,MSE_,RBR_,RBR_},
77 
78 /*      free nu   nmc  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
79         nmre com  eti  net  lit  spcr mdo  msc  mso  pio  rni  tagc tago fce   */
80 es0 []={ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ES0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,
81         ET0 ,ET0 ,EE0 ,NE0 ,ET0 ,ET0 ,MD0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 },/*es0*/
82 es0a[]={LAF_,LAF_,LAF_,STG_,LAF_,LAF_,LAF_,GET_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,
83         LAF_,LAF_,LAM_,LAM_,LAF_,LAF_,LAM_,LAF_,LAF_,PIS_,LAF_,NST_,LAF_,LAF_},
84 
85 ee0 []={ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,EE0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,
86         ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 },/*ee0*/
87 ee0a[]={LAF_,LAF_,LAF_,ETG_,LAF_,LAF_,LAF_,GET_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,
88         LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,NET_,LAF_,LAF_},
89 
90 ne0 []={ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,NE0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,
91         ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 },/*ne0*/
92 ne0a[]={NLF_,NLF_,NLF_,ETG_,NLF_,NLF_,NLF_,GET_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,
93         NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NET_,NLF_,NLF_},
94 
95 /*      free nu   nmc  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
96         nmre com  eti  net  lit  spcr mdo  msc  mso  pio  rni  tagc tago fce   */
97 md0 []={ET0, ET0, ET0, ET0, ET0 ,ET0, ET0, MD0, ET0 ,ET0 ,ET0 ,ET0, ET0, ET0,
98         ET0 ,MC0 ,ET0 ,ET0, ET0, ET0, ET0, ET0 ,ET0, ET0, ET0 ,ET0, ET0, ET0 },/*md0*/
99 md0a[]={LAF_,LAF_,LAF_,MD_ ,LAF_,LAF_,LAF_,GET_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,
100         LAF_,LAM_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,MSS_,LAF_,LAF_,MDC_,LAF_,LAF_},
101 
102 mc0 []={ET0, ET0, ET0, ET0, ET0, ET0 ,ET0, MC0, ET0 ,ET0, ET0 ,ET0, ET0, ET0,
103         ET0 ,ET0 ,ET0 ,ET0, ET0, ET0, ET0, ET0 ,ET0 ,ET0 ,ET0 ,ET0, ET0, ET0 },/*mc0*/
104 mc0a[]={NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,GET_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,
105         NLF_,MDC_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_},
106 
107 sc0 []={ET0, ET0, ET0, ET0, ET0, ET0 ,ET0, SC0, ET0 ,ET0, ET0 ,ET0, ET0, ET0,
108         ET0 ,ET0 ,ET0 ,ET0, ET0, ET0, ET0, ET0 ,ET0 ,ET0 ,ET0 ,ET0, ET0, ET0 },/*sc0*/
109 sc0a[]={SR19,SR19,SR19,SR19,SR19,SR19,SR19,GET_,SR19,SR19,SR19,SR19,SR19,SR19,
110         SR19,SR20,SR19,SR19,SR19,SR19,SR19,SR19,SR19,SR19,SR19,SR19,SR19,SR19},
111 
112 /*      free nu   nmc  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
113         nmre com  eti  net  lit  spcr mdo  msc  mso  pio  rni  tagc tago fce   */
114 sp0 []={DA0 ,DA0 ,DA0 ,DA0 ,ET0 ,ET0 ,ET0 ,SP0 ,ET0 ,ET0 ,ET0 ,DA0 ,DA0 ,ET0 ,
115         ET0 ,ET0 ,DA0 ,ET0 ,ET0 ,ET0 ,DA0 ,ET0 ,ET0 ,DA0 ,DA0 ,DA0 ,ET0 ,ET0 },/*sp0*/
116 sp0a[]={NOP_,NOP_,NOP_,NOP_,SR9_,DAF_,DAF_,GTR_,DAF_,SR7_,SR9_,NOP_,NOP_,DAF_,
117         DAF_,DAF_,NOP_,DAF_,DAF_,SR9_,NOP_,DAF_,DAF_,NOP_,NOP_,NOP_,DAF_,DAF_},
118 
119 sr0 []={ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,SR0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,
120         ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 },/*sr0*/
121 sr0a[]={SR8_,SR8_,SR8_,SR8_,SR9_,SR8_,SR8_,GET_,SR8_,SR7_,SR9_,SR8_,SR8_,SR8_,
122         SR8_,SR8_,SR8_,SR8_,SR8_,SR9_,SR8_,SR8_,SR8_,SR8_,SR8_,SR8_,SR8_,SR8_},
123 
124 tb0 []={ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,TB0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,
125         ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 },/*tb0*/
126 tb0a[]={SR1_,SR1_,SR1_,SR1_,SR9_,SR1_,SR1_,GET_,SR1_,SR7_,SR9_,SR1_,SR1_,SR1_,
127         SR1_,SR1_,SR1_,SR1_,SR1_,SR9_,SR1_,SR1_,SR1_,SR1_,SR1_,SR1_,SR1_,SR1_},
128 
129 /*      free nu   nmc  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
130         nmre com  eti  net  lit  spcr mdo  msc  mso  pio  rni  tagc tago fce   */
131 
132 *conmtab[] = {et0, et0a, da0, da0a, da1, da1a, er0, er0a, cr0, cr0a, rs0, rs0a,
133               me0, me0a, me1, me1a, es0, es0a, ee0, ee0a, ne0, ne0a, md0, md0a,
134               mc0, mc0a, sc0, sc0a, sp0, sp0a, sr0, sr0a, tb0, tb0a };
135 struct parse pcbconm = {"CONM", lexcnm, conmtab, 0, 0, 0, 0};
136 #undef ET0
137 #undef DA0
138 #undef DA1
139 #undef ER0
140 #undef CR0
141 #undef RS0
142 #undef ME0
143 #undef ME1
144 #undef ES0
145 #undef EE0
146 #undef NE0
147 #undef MD0
148 #undef MC0
149 #undef SC0
150 #undef SP0
151 #undef SR0
152 #undef TB0
153 /* PCBCONE: State and action table for content parse of element content.
154             Initial state assumes a start-tag was just processed.
155 */
156 /* Symbols for state names (end with a number). */
157 #define ET2     0   /* Markup found. */
158 #define ER2     2   /* ERO found; start lookahead buffer. */
159 #define CR2     4   /* CRO found (ERO, RNI). */
160 #define RS2     6   /* RS found; possible SR 3-6 if they were declared. */
161 #define ME2     8   /* MSC found. */
162 #define ME3    10   /* MSC, MSC found. */
163 #define ES2    12   /* TAGO found; start lookahead buffer. */
164 #define EE2    14   /* End-tag start (TAGO,ETI); move to lookahead buffer. */
165 #define NE2    16   /* End-tag start (TAGO,NET); process NET if not end-tag. */
166 #define MD2    18   /* MDO found (TAGO, MDO[2]). */
167 #define MC2    20   /* MDO, COM found. */
168 #define SC2    22   /* COM found; possible SR19-20 if they were mapped. */
169 #define SP2    24   /* Space found; possible SR7 or SR9. */
170 #define SR2    26   /* SPCR found; possible SR7 or SR9. */
171 #define TB2    28   /* TAB found; possible SR7 or SR9. */
172 
173 static UNCH
174 /*      free nu   nmc  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
175         nmre com  eti  net  lit  spcr mdo  msc  mso  pio  rni  tagc tago fce   */
176 et2 []={ET2 ,ET2 ,ET2 ,ET2 ,SP2 ,ET2 ,ET2 ,ET2 ,RS2 ,ET2 ,TB2 ,ET2 ,ET2 ,ER2 ,
177         ET2 ,SC2 ,ET2 ,ET2 ,ET2 ,SR2 ,ET2 ,ME2 ,ET2 ,ET2 ,ET2 ,ET2 ,ES2 ,ET2 },/*et2*/
178 et2a[]={DCE_,DCE_,DCE_,DCE_,NOP_,DCE_,GET_,GET_,RS_ ,SR2_,NOP_,DCE_,DCE_,LAS_,
179         NOP_,NOP_,DCE_,NED_,SR10,NOP_,DCE_,NOP_,DCE_,DCE_,SR11,DCE_,LAS_,DCE_},
180 
181 er2 []={ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ER2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,
182         ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,CR2 ,ET2 ,ET2 ,ET2 },/*er2*/
183 er2a[]={LAF_,LAF_,LAF_,ER_ ,LAF_,LAF_,LAF_,GET_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,
184         LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAM_,LAF_,LAF_,LAF_},
185 
186 cr2 []={ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,CR2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,
187         ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 },/*cr2*/
188 cr2a[]={NLF_,CRN_,NLF_,CRA_,NLF_,NLF_,NLF_,GET_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,
189         NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_},
190 
191 rs2 []={ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,RS2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,
192         ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 },/*rs2*/
193 rs2a[]={SR3_,SR3_,SR3_,SR3_,SR4_,SR3_,SR3_,GET_,SR3_,SR5_,SR4_,SR3_,SR3_,SR3_,
194         SR3_,SR3_,SR3_,NED_,SR3_,SR4_,SR3_,SR3_,SR3_,SR3_,SR3_,SR3_,SR3_,SR3_},
195 
196 /*      free nu   nmc  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
197         nmre com  eti  net  lit  spcr mdo  msc  mso  pio  rni  tagc tago fce   */
198 me2 []={ET2, ET2, ET2, ET2, ET2 ,ET2, ET2, ME2, ET2 ,ET2 ,ET2 ,ET2, ET2, ET2,
199         ET2 ,ET2, ET2 ,ET2, ET2, ET2, ET2, ME3 ,ET2, ET2, ET2 ,ET2, ET2, ET2 },/*me2*/
200 me2a[]={SR26,SR26,SR26,SR26,SR26,SR26,SR26,GET_,SR26,SR26,SR26,SR26,SR26,SR26,
201         SR26,SR26,SR26,SR26,SR26,SR26,SR26,NOP_,SR26,SR26,SR26,SR26,SR26,SR26},
202 
203 me3 []={ET2, ET2, ET2, ET2, ET2 ,ET2, ET2, ME3, ET2 ,ET2 ,ET2 ,ET2, ET2, ET2,
204         ET2 ,ET2, ET2 ,ET2, ET2, ET2, ET2, ET2 ,ET2, ET2, ET2 ,ET2, ET2, ET2 },/*me3*/
205 me3a[]={RBR_,RBR_,RBR_,RBR_,RBR_,RBR_,RBR_,GET_,RBR_,RBR_,RBR_,RBR_,RBR_,RBR_,
206         RBR_,RBR_,RBR_,RBR_,RBR_,RBR_,RBR_,RBR_,RBR_,RBR_,RBR_,MSE_,RBR_,RBR_},
207 
208 es2 []={ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ES2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,
209         ET2 ,ET2 ,EE2 ,NE2 ,ET2 ,ET2 ,MD2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 },/*es2*/
210 es2a[]={LAF_,LAF_,LAF_,STG_,LAF_,LAF_,LAF_,GET_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,
211         LAF_,LAF_,LAM_,LAM_,LAF_,LAF_,LAM_,LAF_,LAF_,PIS_,LAF_,NST_,LAF_,LAF_},
212 
213 ee2 []={ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,EE2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,
214         ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 },/*ee2*/
215 ee2a[]={LAF_,LAF_,LAF_,ETG_,LAF_,LAF_,LAF_,GET_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,
216         LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,NET_,LAF_,LAF_},
217 
218 /*      free nu   nmc  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
219         nmre com  eti  net  lit  spc  mdo  msc  mso  pio  rni  tagc tago fce   */
220 ne2 []={ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,NE2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,
221         ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 },/*ne2*/
222 ne2a[]={NLF_,NLF_,NLF_,ETG_,NLF_,NLF_,NLF_,GET_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,
223         NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NET_,NLF_,NLF_},
224 
225 md2 []={ET2, ET2, ET2, ET2, ET2 ,ET2, ET2, MD2, ET2 ,ET2 ,ET2 ,ET2, ET2, ET2,
226         ET2 ,MC2, ET2 ,ET2, ET2, ET2, ET2, ET2 ,ET2, ET2, ET2 ,ET2, ET2, ET2 },/*md2*/
227 md2a[]={LAF_,LAF_,LAF_,MD_ ,LAF_,LAF_,LAF_,GET_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,
228         LAF_,LAM_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,MSS_,LAF_,LAF_,MDC_,LAF_,LAF_},
229 
230 mc2 []={ET2, ET2, ET2, ET2, ET2, ET2 ,ET2, MC2, ET2 ,ET2, ET2 ,ET2, ET2, ET2,
231         ET2 ,ET2, ET2 ,ET2, ET2, ET2, ET2, ET2 ,ET2 ,ET2 ,ET2 ,ET2, ET2, ET2 },/*mc2*/
232 mc2a[]={NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,GET_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,
233         NLF_,MDC_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_,NLF_},
234 
235 sc2 []={ET2, ET2, ET2, ET2, ET2, ET2 ,ET2, SC2, ET2 ,ET2, ET2 ,ET2, ET2, ET2,
236         ET2 ,ET2 ,ET2 ,ET2, ET2, ET2, ET2, ET2 ,ET2 ,ET2 ,ET2 ,ET2, ET2, ET2 },/*sc2*/
237 sc2a[]={SR19,SR19,SR19,SR19,SR19,SR19,SR19,GET_,SR19,SR19,SR19,SR19,SR19,SR19,
238         SR19,SR20,SR19,SR19,SR19,SR19,SR19,SR19,SR19,SR19,SR19,SR19,SR19,SR19},
239 
240 /*      free nu   nmc  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
241         nmre com  eti  net  lit  spc  mdo  msc  mso  pio  rni  tagc tago fce   */
242 sp2 []={ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,SP2 ,RS2 ,ET2 ,ET2 ,ET2 ,ET2 ,ER2 ,
243         ET2 ,SC2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ME2 ,ET2 ,ET2 ,ET2 ,ET2 ,ES2 ,ET2 },/*sp2*/
244 sp2a[]={DCE_,DCE_,DCE_,DCE_,SR9_,DCE_,GET_,GET_,RS_ ,SR7_,SR9_,DCE_,DCE_,LAS_,
245         NOP_,NOP_,DCE_,NED_,SR10,SR9_,DCE_,LAS_,DCE_,DCE_,SR11,DCE_,LAS_,DCE_},
246 
247 sr2 []={ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,SR2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,
248         ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 },/*sr2*/
249 sr2a[]={SR8_,SR8_,SR8_,SR8_,SR9_,SR8_,SR8_,GET_,SR8_,SR7_,SR9_,SR8_,SR8_,SR8_,
250         SR8_,SR8_,SR8_,SR8_,SR8_,SR9_,SR8_,SR8_,SR8_,SR8_,SR8_,SR8_,SR8_,SR8_},
251 
252 tb2 []={ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,TB2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,
253         ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 },/*tb2*/
254 tb2a[]={SR1_,SR1_,SR1_,SR1_,SR9_,SR1_,SR1_,GET_,SR1_,SR7_,SR9_,SR1_,SR1_,SR1_,
255         SR1_,SR1_,SR1_,SR1_,SR1_,SR9_,SR1_,SR1_,SR1_,SR1_,SR1_,SR1_,SR1_,SR1_},
256 
257 *conetab[] = {et2, et2a, er2, er2a, cr2, cr2a, rs2, rs2a, me2, me2a, me3, me3a,
258               es2, es2a, ee2, ee2a, ne2, ne2a, md2, md2a, mc2, mc2a, sc2, sc2a,
259               sp2, sp2a, sr2, sr2a, tb2, tb2a  };
260 struct parse pcbcone = {"CONE", lexcnm, conetab, 0, 0, 0, 0};
261 #undef ET2
262 #undef ER2
263 #undef CR2
264 #undef RS2
265 #undef ME2
266 #undef ME3
267 #undef ES2
268 #undef EE2
269 #undef NE2
270 #undef MD2
271 #undef MC2
272 #undef SC2
273 #undef SP2
274 #undef SR2
275 #undef TB2
276 /* PCBCONR: State and action table for content parse of replaceable character
277             data.  Initial state assumes a start-tag was just processed.
278             Only entity references and character references are recognized.
279 */
280 /* Symbols for state names (end with a number). */
281 #define ET4     0   /* Markup found or buffer flushed; no data. */
282 #define DA4     2   /* Data in buffer. */
283 #define ER4     4   /* ERO found; start lookahead buffer. */
284 #define CR4     6   /* CRO found (ER2, RNI). */
285 #define ES4     8   /* TAGO found; start lookahead buffer. */
286 #define EE4    10   /* End-tag start (TAGO,ETI); move to lookahead buffer. */
287 #define NE4    12   /* End-tag start (TAGO,NET); process NET if not end-tag. */
288 
289 static UNCH
290 /*      free nu   nmc  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
291         nmre com  eti  net  mdo  msc  mso  pero pio  rni  tagc tago  */
292 et4 []={DA4 ,DA4 ,DA4 ,DA4 ,DA4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,DA4 ,DA4 ,ET4 ,ER4 ,
293         ET4 ,DA4 ,DA4 ,ET4 ,DA4 ,DA4 ,DA4 ,DA4 ,DA4 ,DA4 ,DA4 ,ES4 },/*et4*/
294 et4a[]={DAS_,DAS_,DAS_,DAS_,DAS_,NON_,EE_ ,GET_,RS_ ,REF_,DAS_,DAS_,NSC_,LAS_,
295         REF_,DAS_,DAS_,NED_,DAS_,DAS_,DAS_,DAS_,DAS_,DAS_,DAS_,LAS_},
296 
297 da4 []={DA4 ,DA4 ,DA4 ,DA4 ,DA4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,DA4 ,DA4 ,ET4 ,ET4 ,
298         ET4 ,DA4 ,DA4 ,ET4 ,DA4 ,DA4 ,DA4 ,DA4 ,DA4 ,DA4 ,DA4 ,ET4 },/*da4*/
299 da4a[]={NOP_,NOP_,NOP_,NOP_,NOP_,DAF_,DAF_,DAF_,DAF_,DAF_,NOP_,NOP_,DAF_,DAF_,
300         DAF_,NOP_,NOP_,DAF_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,DAF_},
301 
302 er4 []={ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ER4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,
303         ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,CR4 ,ET4 ,ET4 },/*er4*/
304 er4a[]={LAF_,LAF_,LAF_,ERX_,LAF_,LAF_,LAF_,GET_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,
305         LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAM_,LAF_,LAF_},
306 
307 cr4 []={ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,CR4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,
308         ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 },/*cr4*/
309 cr4a[]={LAF_,CRN_,LAF_,CRA_,LAF_,LAF_,LAF_,GET_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,
310         LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_},
311 
312 /*      free nu   nmc  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
313         nmre com  eti  net  mdo  msc  mso  pero pio  rni  tagc tago  */
314 es4 []={ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ES4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,
315         ET4 ,ET4 ,EE4 ,NE4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 },/*es4*/
316 es4a[]={LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,GET_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,
317         LAF_,LAF_,LAM_,LAM_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_},
318 
319 ee4 []={ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,EE4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,
320         ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 },/*ee4*/
321 ee4a[]={LAF_,LAF_,LAF_,ETC_,LAF_,LAF_,LAF_,GET_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,
322         LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,NET_,LAF_},
323 
324 ne4 []={EE4 ,EE4 ,EE4 ,ET4 ,EE4 ,EE4 ,EE4 ,NE4 ,EE4 ,EE4 ,EE4 ,EE4 ,EE4 ,EE4 ,
325         EE4 ,EE4 ,EE4 ,EE4 ,EE4 ,EE4 ,EE4 ,EE4 ,EE4 ,EE4 ,ET4 ,EE4 },/*ne4*/
326 ne4a[]={RC2_,RC2_,RC2_,ETC_,RC2_,RC2_,RC2_,GET_,RC2_,RC2_,RC2_,RC2_,RC2_,RC2_,
327         RC2_,RC2_,RC2_,RC2_,RC2_,RC2_,RC2_,RC2_,RC2_,RC2_,NET_,RC2_},
328 
329 *conrtab[] = {et4, et4a, da4, da4a, er4, er4a, cr4, cr4a,
330               es4, es4a, ee4, ee4a, ne4, ne4a};
331 struct parse pcbconr = {"CONR", lexcon, conrtab, 0, 0, 0, 0};
332 #undef ET4
333 #undef DA4
334 #undef ER4
335 #undef CR4
336 #undef ES4
337 #undef EE4
338 #undef NE4
339 /* PCBCONC: State and action table for content parse of character data.
340             Initial state assumes a start-tag was just processed.
341 */
342 /* Symbols for state names (end with a number). */
343 #define ET6     0   /* Markup found or buffer flushed; no data. */
344 #define DA6     2   /* Data in buffer. */
345 #define ES6     4   /* TAGO found; start lookahead buffer. */
346 #define EE6     6   /* End-tag start (TAGO,ETI); move to lookahead buffer. */
347 #define NE6     8   /* End-tag start (TAGO,NET); process NET if not end-tag. */
348 
349 static UNCH
350 /*      free nu   nmc  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
351         nmre com  eti  net  mdo  msc  mso  pero pio  rni  tagc tago  */
352 et6 []={DA6 ,DA6 ,DA6 ,DA6 ,DA6 ,ET6 ,ET6 ,ET6 ,ET6 ,ET6 ,DA6 ,DA6 ,ET6 ,DA6 ,
353         ET6 ,DA6 ,DA6 ,ET6 ,DA6 ,DA6 ,DA6 ,DA6 ,DA6 ,DA6 ,DA6 ,ES6 },/*et6*/
354 et6a[]={DAS_,DAS_,DAS_,DAS_,DAS_,NON_,EOF_,GET_,RS_ ,REF_,DAS_,DAS_,NSC_,DAS_,
355         REF_,DAS_,DAS_,NED_,DAS_,DAS_,DAS_,DAS_,DAS_,DAS_,DAS_,LAS_},
356 
357 da6 []={DA6 ,DA6 ,DA6 ,DA6 ,DA6 ,ET6 ,ET6 ,ET6 ,ET6 ,ET6 ,DA6 ,DA6 ,ET6 ,ET6 ,
358         ET6 ,DA6 ,DA6 ,ET6 ,DA6 ,DA6 ,DA6 ,DA6 ,DA6 ,DA6 ,DA6 ,ET6 },/*da6*/
359 da6a[]={NOP_,NOP_,NOP_,NOP_,NOP_,DAF_,DAF_,DAF_,DAF_,DAF_,NOP_,NOP_,DAF_,DAF_,
360         DAF_,NOP_,NOP_,DAF_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,DAF_},
361 
362 /*      free nu   nmc  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
363         nmre com  eti  net  mdo  msc  mso  pero pio  rni  tagc tago  */
364 es6 []={ET6 ,ET6 ,ET6 ,ET6 ,ET6 ,ET6 ,ET6 ,ES6 ,ET6 ,ET6 ,ET6 ,ET6 ,ET6 ,ET6 ,
365         ET6 ,ET6 ,EE6 ,NE6 ,ET6 ,ET6 ,ET6 ,ET6 ,ET6 ,ET6 ,ET6 ,ET6 },/*es6*/
366 es6a[]={LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,GET_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,
367         LAF_,LAF_,LAM_,LAM_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_},
368 
369 ee6 []={ET6 ,ET6 ,ET6 ,ET6 ,ET6 ,ET6 ,ET6 ,EE6 ,ET6 ,ET6 ,ET6 ,ET6 ,ET6 ,ET6 ,
370         ET6 ,ET6 ,ET6 ,ET6 ,ET6 ,ET6 ,ET6 ,ET6 ,ET6 ,ET6 ,ET6 ,ET6 },/*ee6*/
371 ee6a[]={LAF_,LAF_,LAF_,ETC_,LAF_,LAF_,LAF_,GET_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,
372         LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,NET_,LAF_},
373 
374 ne6 []={EE6 ,EE6 ,EE6 ,ET6 ,EE6 ,EE6 ,EE6 ,NE6 ,EE6 ,EE6 ,EE6 ,EE6 ,EE6 ,EE6 ,
375         EE6 ,EE6 ,EE6 ,EE6 ,EE6 ,EE6 ,EE6 ,EE6 ,EE6 ,EE6 ,ET6 ,EE6 },/*ne6*/
376 ne6a[]={RC2_,RC2_,RC2_,ETC_,RC2_,RC2_,RC2_,GET_,RC2_,RC2_,RC2_,RC2_,RC2_,RC2_,
377         RC2_,RC2_,RC2_,RC2_,RC2_,RC2_,RC2_,RC2_,RC2_,RC2_,NET_,RC2_},
378 
379 *conctab[] = {et6, et6a, da6, da6a, es6, es6a, ee6, ee6a, ne6, ne6a};
380 struct parse pcbconc = {"CONC", lexcon, conctab, 0, 0, 0, 0};
381 #undef ET6
382 #undef DA6
383 #undef ES6
384 #undef EE6
385 #undef NE6
386 /* PCBPRO: State and action table for prolog parse.
387            Initial state assumes document just began.
388 */
389 /* Symbols for state names (end with a number). */
390 #define ET7     0   /* Markup found. */
391 #define ES7     2   /* TAGO found; start lookahead buffer. */
392 #define MD7     4   /* MDO found (TAGO, MDO[2]). */
393 #define MC7     6   /* MDO, COM found. */
394 
395 static UNCH
396 /*      free nu   nmc  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
397         nmre com  eti  net  mdo  msc  mso  pero pio  rni  tagc tago */
398 et7 []={ET7 ,ET7 ,ET7 ,ET7 ,ET7 ,ET7 ,ET7 ,ET7 ,ET7 ,ET7 ,ET7 ,ET7 ,ET7 ,ET7 ,
399         ET7 ,ET7 ,ET7 ,ET7 ,ET7 ,ET7 ,ET7 ,ET7 ,ET7 ,ET7 ,ET7 ,ES7 },/*et7*/
400 et7a[]={DCE_,DCE_,DCE_,DCE_,NOP_,DCE_,EE_ ,GET_,RS_ ,NOP_,NOP_,DCE_,DCE_,DCE_,
401         DCE_,DCE_,DCE_,DCE_,DCE_,DCE_,DCE_,DCE_,DCE_,DCE_,DCE_,LAS_},
402 
403 es7 []={ET7 ,ET7 ,ET7 ,ET7 ,ET7 ,ET7 ,ET7 ,ES7 ,ET7 ,ET7 ,ET7 ,ET7 ,ET7 ,ET7 ,
404         ET7 ,ET7 ,ET7 ,ET7 ,MD7 ,ET7 ,ET7 ,ET7 ,ET7 ,ET7 ,ET7 ,ET7 },/*es7*/
405 es7a[]={PEP_,PEP_,PEP_,STE_,PEP_,PEP_,PEP_,GET_,PEP_,PEP_,PEP_,PEP_,PEP_,PEP_,
406         PEP_,PEP_,PEP_,PEP_,LAM_,PEP_,PEP_,PEP_,PIS_,PEP_,STE_,PEP_},
407 
408 md7 []={ET7, ET7, ET7, ET7, ET7 ,ET7, ET7, MD7, ET7 ,ET7 ,ET7 ,ET7, ET7, ET7,
409         ET7, MC7, ET7, ET7, ET7, ET7 ,ET7, ET7, ET7, ET7 ,ET7, ET7 },/*md7*/
410 md7a[]={LAF_,LAF_,LAF_,DTD_,LAF_,LAF_,LAF_,GET_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,
411         LAF_,LAM_,LAF_,LAF_,LAF_,LAF_,MSP_,LAF_,LAF_,LAF_,NOP_,LAF_},
412 
413 mc7 []={ET7, ET7, ET7, ET7, ET7, ET7 ,ET7, MC7, ET7 ,ET7, ET7 ,ET7, ET7, ET7,
414         ET7, ET7, ET7, ET7, ET7, ET7 ,ET7 ,ET7, ET7 ,ET7 ,ET7, ET7 },/*mc7*/
415 mc7a[]={LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,GET_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,
416         LAF_,MDC_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_},
417 
418 *protab[] = {et7, et7a, es7, es7a, md7, md7a, mc7, mc7a};
419 struct parse pcbpro = {"PRO", lexcon, protab, 0, 0, 0, 0};
420 #undef ET7
421 #undef ES7
422 #undef MD7
423 #undef MC7
424 /* PCBMDS: State and action table for parse of markup declaration subset.
425            Initial state assumes subset just began (MSO found).
426 */
427 /* Symbols for state names (end with a number). */
428 #define ET8     0   /* Markup found. */
429 #define ER8     2   /* PERO found; start lookahead buffer. */
430 #define ME8     4   /* MSC found. */
431 #define ME9     6   /* MSC, MSC found. */
432 #define ES8     8   /* TAGO found; start lookahead buffer. */
433 #define MD8    10   /* MDO found (TAGO, MDO[2]). */
434 #define MC8    12   /* MDO, CD found. */
435 #define DC8    14   /* Data characters found (erroneously). */
436 
437 static UNCH
438 /*      free nu   nmc  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
439         nmre com  eti  net  mdo  msc  mso  pero pio  rni  tagc tago */
440 et8 []={DC8 ,DC8 ,DC8 ,DC8 ,ET8 ,DC8 ,ET8 ,ET8 ,ET8 ,ET8 ,ET8 ,DC8 ,DC8 ,DC8 ,
441         DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,ME8 ,DC8 ,ER8 ,DC8 ,DC8 ,DC8 ,ES8 },/*et8*/
442 et8a[]={NOP_,NOP_,NOP_,NOP_,NOP_,SYS_,GET_,GET_,RS_ ,NOP_,NOP_,NOP_,SYS_,NOP_,
443         NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_},
444 
445 er8 []={DC8 ,DC8 ,DC8 ,ET8 ,DC8 ,DC8 ,DC8 ,ER8 ,DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,
446         DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,DC8 },/*er8*/
447 er8a[]={NOP_,NOP_,NOP_,PER_,NOP_,SYS_,NOP_,GET_,NOP_,NOP_,NOP_,NOP_,SYS_,NOP_,
448         NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_},
449 
450 me8 []={ET8, ET8, ET8, ET8, ET8 ,ET8, ET8, ME8, ET8 ,ET8 ,ET8 ,ET8, ET8, ET8,
451         ET8 ,ET8, ET8 ,ET8, ET8, ME9 ,ET8, ET8, ET8, ET8 ,ET8, ET8 },/*me8*/
452 me8a[]={DTE_,DTE_,DTE_,DTE_,DTE_,DTE_,DTE_,GET_,DTE_,DTE_,DTE_,DTE_,DTE_,DTE_,
453         DTE_,DTE_,DTE_,DTE_,DTE_,NOP_,DTE_,DTE_,DTE_,DTE_,DTE_,DTE_},
454 
455 me9 []={DC8, DC8, DC8, DC8, DC8 ,DC8, DC8, ME9, DC8 ,DC8 ,DC8 ,DC8, DC8, DC8,
456         DC8 ,DC8, DC8 ,DC8, DC8, DC8 ,DC8, DC8, DC8, DC8 ,ET8, DC8 },/*me9*/
457 me9a[]={NOP_,NOP_,NOP_,NOP_,NOP_,SYS_,NOP_,GET_,NOP_,NOP_,NOP_,NOP_,SYS_,NOP_,
458         NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,MSE_,NOP_},
459 
460 /*      free nu   nmc  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
461         nmre com  eti  net  mdo  msc  mso  pero pio  rni  tagc tago */
462 es8 []={DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,ES8 ,DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,
463         DC8 ,DC8 ,DC8 ,DC8 ,MD8 ,DC8 ,DC8 ,DC8 ,ET8 ,DC8 ,DC8 ,DC8 },/*es8*/
464 es8a[]={NOP_,NOP_,NOP_,NOP_,NOP_,SYS_,NOP_,GET_,NOP_,NOP_,NOP_,NOP_,SYS_,NOP_,
465         NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,PIS_,NOP_,NOP_,NOP_},
466 
467 md8 []={DC8, DC8, DC8, ET8, DC8 ,DC8, DC8, MD8, DC8 ,DC8 ,DC8 ,DC8, DC8, DC8,
468         DC8 ,MC8, DC8 ,DC8, DC8, DC8 ,ET8, DC8, DC8, DC8 ,ET8, DC8 },/*md8*/
469 md8a[]={NOP_,NOP_,NOP_,MD_ ,NOP_,SYS_,NOP_,GET_,NOP_,NOP_,NOP_,NOP_,SYS_,NOP_,
470         NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,MSS_,NOP_,NOP_,NOP_,NOP_,NOP_},
471 
472 mc8 []={DC8, DC8, DC8, DC8, DC8, DC8 ,DC8, MC8, DC8 ,DC8, DC8 ,DC8, DC8, DC8,
473         DC8 ,ET8, DC8 ,DC8, DC8, DC8 ,DC8 ,DC8, DC8 ,DC8 ,DC8, DC8 },/*mc8*/
474 mc8a[]={NOP_,NOP_,NOP_,NOP_,NOP_,SYS_,NOP_,GET_,NOP_,NOP_,NOP_,NOP_,SYS_,NOP_,
475         NOP_,MDC_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_},
476 
477 dc8 []={DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,
478         DC8 ,DC8 ,DC8 ,DC8 ,DC8 ,ET8 ,DC8 ,ET8 ,DC8 ,DC8 ,DC8 ,ET8 },/*dc8*/
479 dc8a[]={NOP_,NOP_,NOP_,NOP_,NOP_,SYS_,GET_,GET_,RS_ ,NOP_,NOP_,NOP_,SYS_,NOP_,
480         NOP_,NOP_,NOP_,NOP_,NOP_,CIR_,NOP_,CIR_,NOP_,NOP_,NOP_,CIR_},
481 
482 *mdstab[] = {et8, et8a, er8, er8a, me8, me8a, me9, me9a,
483              es8, es8a, md8, md8a, mc8, mc8a, dc8, dc8a};
484 struct parse pcbmds = {"MDS", lexcon, mdstab, 0, 0, 0, 0};
485 #undef ET8
486 #undef ER8
487 #undef ME8
488 #undef ME9
489 #undef ES8
490 #undef MD8
491 #undef MC8
492 #undef DC8
493 /* PCBGRCM: State and action table for content model group.
494             Groups can nest.  Reserved names are allowed.
495             Data tag token groups are allowed.
496             A non-reserved name or model group can have a suffix.
497             Columns are based on LEXGRP.C.
498 */
499 /* Symbols for state names (end with a number). */
500 #define TK1     0   /* Token expected: name, #CHARS, data tag grp, model. */
501 #define CO1     2   /* Connector between tokens expected. */
502 #define ER1     4   /* PERO found when token was expected. */
503 #define SP1     6   /* Name or model: suffix or connector expected. */
504 #define RN1     8   /* RNI found; possible #PCDATA. */
505 #define DG1    10   /* Data tag: group begun; name expected. */
506 #define DN1    12   /* Data tag: name found; SEQ connector expected. */
507 #define DT1    14   /* Data tag: ignore template and pattern; MSC expected. */
508 #define DR1    16   /* PERO found when data tag name was expected. */
509 #define LI1    18   /* Literal in data tag group; search for LIT. */
510 #define LA1    20   /* Literal in data tag group; search for LITA. */
511 
512 static UNCH
513 /*       bit  nmc  nms  re   spc  non  ee   eob  rs   and  grpc grpo lit  lita
514          dtgc dtgo opt  or   pero plus rep  rni  seq  refc */
515 tk01 []={TK1 ,TK1 ,SP1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,
516          TK1 ,DG1 ,TK1 ,TK1 ,ER1 ,TK1 ,TK1 ,RN1 ,TK1 ,TK1 },/*tk1*/
517 tk01a[]={INV_,INV_,NAS_,NOP_,NOP_,SYS_,EOF_,GET_,RS_ ,INV_,INV_,GRP_,INV_,INV_,
518          INV_,GRP_,INV_,INV_,NOP_,INV_,INV_,NOP_,INV_,INV_},
519 
520 co01 []={TK1 ,TK1 ,TK1 ,CO1 ,CO1 ,CO1 ,CO1 ,CO1 ,CO1 ,TK1 ,SP1 ,TK1 ,TK1 ,TK1 ,
521          TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 },/*co1*/
522 co01a[]={INV_,INV_,INV_,NOP_,NOP_,SYS_,EE_ ,GET_,RS_ ,AND ,GRPE,INV_,INV_,INV_,
523          INV_,INV_,INV_,OR  ,INV_,INV_,INV_,INV_,SEQ ,INV_},
524 
525 er01 []={TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,ER1 ,TK1 ,ER1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,
526          TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 },/*er1*/
527 er01a[]={PCI_,PCI_,PER_,PCI_,PCI_,SYS_,PCI_,GET_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,
528          PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_},
529 
530 sp01 []={TK1 ,TK1 ,TK1 ,CO1 ,CO1 ,SP1 ,CO1 ,SP1 ,CO1 ,TK1 ,SP1 ,TK1 ,TK1 ,TK1 ,
531          TK1 ,TK1 ,CO1 ,TK1 ,TK1 ,CO1 ,CO1 ,TK1 ,TK1 ,TK1 },/*sp1*/
532 sp01a[]={INV_,LEN_,LEN_,NOP_,NOP_,SYS_,EE_ ,GET_,RS_ ,AND ,GRPE,INV_,INV_,INV_,
533          INV_,INV_,OPT ,OR  ,INV_,REP ,OREP,INV_,SEQ ,LEN_},
534 
535 /*       bit  nmc  nms  spc  spc  non  ee   eob  rs   and  grpc grpo lit  lita
536          dtgc dtgo opt  or   pero plus rep  rni  seq  refc  */
537 rn01 []={TK1 ,TK1 ,CO1 ,TK1 ,TK1 ,RN1 ,TK1 ,RN1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,
538          TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 },/*rn1*/
539 rn01a[]={PCI_,PCI_,RNS_,PCI_,PCI_,SYS_,PCI_,GET_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,
540          PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_},
541 
542 dg01 []={TK1 ,TK1 ,DN1 ,DG1 ,DG1 ,DG1 ,DG1 ,DG1 ,DG1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,
543          TK1 ,TK1 ,TK1 ,TK1 ,DR1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 },/*dg1*/
544 dg01a[]={INV_,INV_,NAS_,NOP_,NOP_,SYS_,EOF_,GET_,RS_ ,INV_,INV_,INV_,INV_,INV_,
545          INV_,INV_,INV_,INV_,NOP_,INV_,INV_,INV_,INV_,INV_},
546 
547 dn01 []={TK1 ,TK1 ,TK1 ,DN1 ,DN1 ,DN1 ,DN1 ,DN1 ,DN1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,
548          TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,DT1 ,TK1 },/*dn1*/
549 dn01a[]={INV_,INV_,INV_,NOP_,NOP_,SYS_,EE_ ,GET_,RS_ ,INV_,INV_,INV_,INV_,INV_,
550          INV_,INV_,INV_,INV_,INV_,INV_,INV_,INV_,DTAG,INV_},
551 
552 dt01 []={TK1 ,TK1 ,TK1 ,DT1 ,DT1 ,DT1 ,DT1 ,DT1 ,DT1 ,TK1 ,DT1 ,DT1 ,LI1 ,LA1 ,
553          CO1 ,TK1 ,TK1 ,DT1 ,DT1 ,TK1 ,TK1 ,TK1 ,DT1 ,TK1 },/*dt1*/
554 dt01a[]={INV_,INV_,INV_,NOP_,NOP_,SYS_,EE_ ,GET_,RS_ ,INV_,NOP_,NOP_,NOP_,NOP_,
555          GRPE,INV_,INV_,NOP_,NOP_,INV_,INV_,INV_,NOP_,INV_},
556 
557 /*       bit  nmc  nms  spc  spc  non  ee   eob  rs   and  grpc grpo lit  lita
558          dtgc dtgo opt  or   pero plus rep  rni  seq  refc  */
559 dr01 []={TK1 ,TK1 ,DG1 ,TK1 ,TK1 ,DR1 ,TK1 ,DR1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,
560          TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 },/*dr1*/
561 dr01a[]={PCI_,PCI_,PER_,PCI_,PCI_,SYS_,PCI_,GET_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,
562          PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_},
563 
564 li01 []={LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,DT1 ,LI1 ,
565          LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,LI1 },/*li1*/
566 li01a[]={NOP_,NOP_,NOP_,NOP_,NOP_,SYS_,EOF_,GET_,RS_ ,NOP_,NOP_,NOP_,NOP_,NOP_,
567          NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_},
568 
569 la01 []={LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,DT1 ,
570          LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 },/*la1*/
571 la01a[]={NOP_,NOP_,NOP_,NOP_,NOP_,SYS_,EOF_,GET_,RS_ ,NOP_,NOP_,NOP_,NOP_,NOP_,
572          NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_},
573 
574 *grcmtab[] = {tk01, tk01a, co01, co01a, er01, er01a, sp01, sp01a,
575               rn01, rn01a, dg01, dg01a, dn01, dn01a, dt01, dt01a,
576               dr01, dr01a, li01, li01a, la01, la01a};
577 struct parse pcbgrcm = {"GRCM", lexgrp, grcmtab, 0, 0, 0, 0};
578 #undef TK1
579 #undef CO1
580 #undef ER1
581 #undef SP1
582 #undef RN1
583 #undef DG1
584 #undef DN1
585 #undef DT1
586 #undef DR1
587 #undef LI1
588 #undef LA1
589 /* PCBGRCS: State and action table for content model suffix.
590             If suffix occurs, process it.  Otherwise, put character
591             back for the next parse.
592 */
593 /* Symbols for state names (end with a number). */
594 #define SP4     0   /* Suffix expected. */
595 
596 static UNCH
597 /*       bit  nmc  nms  re   spc  non  ee   eob  rs   and  grpc grpo lit  lita
598          dtgc dtgo opt  or   pero plus rep  rni  seq  refc */
599 sp04 []={SP4 ,SP4 ,SP4 ,SP4 ,SP4 ,SP4 ,SP4 ,SP4 ,SP4 ,SP4 ,SP4 ,SP4 ,SP4 ,SP4 ,
600          SP4 ,SP4 ,SP4 ,SP4 ,SP4 ,SP4 ,SP4 ,SP4 ,SP4 ,SP4 },/*sp4*/
601 sp04a[]={RCR_,RCR_,RCR_,RCR_,RCR_,SYS_,EE_ ,GET_,RCR_,RCR_,RCR_,RCR_,RCR_,RCR_,
602          RCR_,RCR_,OPT ,RCR_,RCR_,REP ,OREP,RCR_,RCR_,RCR_},
603 
604 *grcstab[] = {sp04, sp04a};
605 struct parse pcbgrcs = {"GRCS", lexgrp, grcstab, 0, 0, 0, 0};
606 #undef SP4
607 /* PCBGRNT: State and action table for name token group parse.
608             Groups cannot nest.  Reserved names are not allowed.
609             No suffixes or data tag pattern groups.
610 */
611 /* Symbols for state names (end with a number). */
612 #define TK1     0   /* Token expected: name, #CHARS, data tag grp, model. */
613 #define CO1     2   /* Connector between tokens expected. */
614 #define ER1     4   /* PERO found when token was expected. */
615 
616 static UNCH
617 /*       bit  nmc  nms  re   spc  non  ee   eob  rs   and  grpc grpo lit  lita
618          dtgc dtgo opt  or   pero plus rep  rni  seq  refc  */
619 tk02 []={TK1 ,CO1 ,CO1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,
620          TK1 ,TK1 ,TK1 ,TK1 ,ER1 ,TK1 ,TK1 ,TK1 ,TK1 ,CO1 },/*tk1*/
621 tk02a[]={INV_,NMT_,NMT_,NOP_,NOP_,SYS_,EOF_,GET_,RS_ ,INV_,INV_,INV_,INV_,INV_,
622          INV_,INV_,INV_,INV_,NOP_,INV_,INV_,INV_,INV_,NMT_},
623 
624 co02 []={TK1 ,TK1 ,TK1 ,CO1 ,CO1 ,CO1 ,CO1 ,CO1 ,CO1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,
625          TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 },/*co1*/
626 co02a[]={INV_,INV_,INV_,NOP_,NOP_,SYS_,EE_ ,GET_,RS_ ,NOP_,GRPE,INV_,INV_,INV_,
627          INV_,INV_,INV_,NOP_,INV_,INV_,INV_,INV_,NOP_,INV_},
628 
629 er02 []={TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,ER1 ,TK1 ,ER1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,
630          TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 },/*er1*/
631 er02a[]={PCI_,PCI_,PER_,PCI_,PCI_,SYS_,PCI_,GET_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,
632          PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_},
633 
634 *grnttab[] = {tk02, tk02a, co02, co02a, er02, er02a};
635 struct parse pcbgrnt = {"GRNT", lexgrp, grnttab, 0, 0, 0, 0};
636 #undef TK1
637 #undef CO1
638 #undef ER1
639 /* PCBGRNM: State and action table for name group parse.
640             Groups cannot nest.  Reserved names are not allowed.
641             No suffixes or data tag pattern groups.
642 */
643 /* Symbols for state names (end with a number). */
644 #define TK1     0   /* Token expected: name, #CHARS, data tag grp, model. */
645 #define CO1     2   /* Connector between tokens expected. */
646 #define ER1     4   /* PERO found when token was expected. */
647 
648 static UNCH
649 /*       bit  nmc  nms  re   spc  non  ee   eob  rs   and  grpc grpo lit  lita
650          dtgc dtgo opt  or   pero plus rep  rni  seq  refc  */
651 tk03 []={TK1 ,TK1 ,CO1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,
652          TK1 ,TK1 ,TK1 ,TK1 ,ER1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 },/*tk1*/
653 tk03a[]={INV_,INV_,NAS_,NOP_,NOP_,SYS_,EOF_,GET_,RS_ ,INV_,INV_,INV_,INV_,INV_,
654          INV_,INV_,INV_,INV_,NOP_,INV_,INV_,INV_,INV_,INV_},
655 
656 co03 []={TK1 ,TK1 ,TK1 ,CO1 ,CO1 ,CO1 ,CO1 ,CO1 ,CO1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,
657          TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 },/*co1*/
658 co03a[]={INV_,INV_,INV_,NOP_,NOP_,SYS_,EE_ ,GET_,RS_ ,NOP_,GRPE,INV_,INV_,INV_,
659          INV_,INV_,INV_,NOP_,INV_,INV_,INV_,INV_,NOP_,INV_},
660 
661 er03 []={TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,ER1 ,TK1 ,ER1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,
662          TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 },/*er1*/
663 er03a[]={PCI_,PCI_,PER_,PCI_,PCI_,SYS_,PCI_,GET_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,
664          PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_},
665 
666 *grnmtab[] = {tk03, tk03a, co03, co03a, er03, er03a};
667 struct parse pcbgrnm = {"GRNM", lexgrp, grnmtab, 0, 0, 0, 0};
668 #undef TK1
669 #undef CO1
670 #undef ER1
671 /* PCBREF: State and action table to find the end of entity, parameter entity,
672            and character references.  The opening delimiter and name
673            have already been found; the parse determines whether the
674            tokenization of the name ended normally and processes the REFC.
675 */
676 /* Symbols for state names (end with a number). */
677 #define ER5     0   /* Handle REFC or other entity reference termination. */
678 #define ER6     2   /* Return to caller and reset state for next call. */
679 
680 static UNCH
681 /*       bit  nmc  nms  re   spc  non  ee   eob  rs   and  grpc grpo lit  lita
682          dtgc dtgo opt  or   pero plus rep  rni  seq  refc */
683 er05 []={ER5 ,ER6 ,ER6 ,ER6 ,ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,
684          ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,ER6 },/*er5*/
685 er05a[]={RCR_,LEN_,LEN_,NOP_,RCR_,SYS_,RCR_,GET_,RCR_,RCR_,RCR_,RCR_,RCR_,RCR_,
686          RCR_,RCR_,RCR_,RCR_,RCR_,RCR_,RCR_,RCR_,RCR_,NOP_},
687 
688 er06 []={ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,
689          ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,ER5 ,ER5 },/*er6*/
690 er06a[]={RCR_,RCR_,RCR_,RCR_,RCR_,RCR_,RCR_,RCR_,RCR_,RCR_,RCR_,RCR_,RCR_,RCR_,
691          RCR_,RCR_,RCR_,RCR_,RCR_,RCR_,RCR_,RCR_,RCR_,RCR_},
692 
693 *reftab[]={er05, er05a, er06, er06a};
694 struct parse pcbref = {"ENTREF", lexgrp, reftab, 0, 0, 0, 0};
695 #undef ER5
696 #undef ER6
697 /*
698 Use (typical)           Name   Ending  Chsw References RS   RE   SEP
699 Parameter literal       LITPC  LIT/A   OK   Parm,Char  RSM_ LAM_ LAM_
700      Data tag template                 NO
701 System ID               LITC   LIT/A   n/a  none       RSM_ LAM_ LAM_
702      Processing instruction    PIC
703 Attribute value         LITRV  LIT/A   NO   Gen,Char   RS_  FUN_ FUN_
704 Minimum literal         LITV   LIT/A   n/a  none       RS_  FUN_ MLE_
705 */
706 /* PCBLITP: Literal parse with parameter and character references;
707             no function character translation.
708 */
709 /* Symbols for state names (end with a number). */
710 #define DA0     0   /* Data in buffer. */
711 #define ER0     2   /* ERO found. */
712 #define CR0     4   /* CRO found (ER0, RNI). */
713 #define PR0     6   /* PRO found (for PCBLITP). */
714 
715 static UNCH
716 /*       free num  min  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
717          mdo  msc  mso  pero rni  tagc tago litc */
718 da13 []={DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,ER0 ,
719          DA0 ,DA0 ,DA0 ,PR0 ,DA0 ,DA0 ,DA0 ,DA0 },/*da3*/
720 da13a[]={MLA_,MLA_,MLA_,MLA_,MLA_,NON_,EE_ ,GET_,RSM_,MLA_,MLA_,MLA_,NSC_,NOP_,
721          MLA_,MLA_,MLA_,NOP_,MLA_,MLA_,MLA_,TER_},
722 
723 er13 []={DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,ER0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,
724          DA0 ,DA0 ,DA0 ,DA0 ,CR0 ,DA0 ,DA0 ,DA0 },/*er3*/
725 er13a[]={LPR_,LPR_,LPR_,LPR_,LPR_,LPR_,LPR_,GET_,LPR_,LPR_,LPR_,LPR_,LPR_,LPR_,
726          LPR_,LPR_,LPR_,LPR_,NOP_,LPR_,LPR_,LPR_},
727 
728 cr13 []={DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,CR0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,
729          DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 },/*cr3*/
730 cr13a[]={LP2_,CRN_,LP2_,CRA_,LP2_,LP2_,LP2_,GET_,LP2_,LP2_,LP2_,LP2_,LP2_,LP2_,
731          LP2_,LP2_,LP2_,LP2_,LP2_,LP2_,LP2_,LP2_},
732 
733 pr13 []={DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,PR0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,
734          DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 },/*pr3*/
735 pr13a[]={LPR_,LPR_,LPR_,PEX_,LPR_,LPR_,LPR_,GET_,LPR_,LPR_,LPR_,LPR_,LPR_,LPR_,
736          LPR_,LPR_,LPR_,LPR_,LPR_,LPR_,LPR_,LPR_},
737 
738 *litptab[] = {da13, da13a, er13, er13a, cr13, cr13a, pr13, pr13a};
739 struct parse pcblitp = {"LITP", lexlms, litptab, 0, 0, 0, 0};
740 #undef DA0
741 #undef ER0
742 #undef CR0
743 #undef PR0
744 /* PCBLITC: Literal parse; no references; no function char translation.
745             Used for character data (system data).
746 */
747 /* Symbols for state names (end with a number). */
748 #define DA0     0   /* Data in buffer. */
749 
750 static UNCH
751 /*      free num  min  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
752         mdo  msc  mso  pero rni  tagc tago litc */
753 da2 []={DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,
754         DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 },/*da2*/
755 da2a[]={MLA_,MLA_,MLA_,MLA_,MLA_,SYS_,EOF_,GET_,RSM_,MLA_,MLA_,MLA_,SYS_,MLA_,
756         MLA_,MLA_,MLA_,MLA_,MLA_,MLA_,MLA_,TER_},
757 
758 *litctab[] = {da2, da2a};
759 struct parse pcblitc = {"LITC", lexlms, litctab, 0, 0, 0, 0};
760 #undef DA0
761 /* PCBLITR: Attribute value parse; general and character references;
762             function chars are translated.
763 */
764 /* Symbols for state names (end with a number). */
765 #define DA0     0   /* Data in buffer. */
766 #define ER0     2   /* ERO found. */
767 #define CR0     4   /* CRO found (ER0, RNI). */
768 
769 static UNCH
770 /*       free num  min  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
771          mdo  msc  mso  pero rni  tagc tago litc */
772 da11 []={DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,ER0 ,
773          DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 },/*da1*/
774 da11a[]={MLA_,MLA_,MLA_,MLA_,MLA_,NON_,EE_ ,GET_,RS_ ,FUN_,FUN_,MLA_,NSC_,NOP_,
775          MLA_,MLA_,MLA_,MLA_,MLA_,MLA_,MLA_,TER_},
776 
777 er11 []={DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,ER0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,
778          DA0 ,DA0 ,DA0 ,DA0 ,CR0 ,DA0 ,DA0 ,DA0 },/*er1*/
779 er11a[]={LPR_,LPR_,LPR_,ERX_,LPR_,LPR_,LPR_,GET_,LPR_,LPR_,LPR_,LPR_,LPR_,LPR_,
780          LPR_,LPR_,LPR_,LPR_,NOP_,LPR_,LPR_,LPR_},
781 
782 cr11 []={DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,CR0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,
783          DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 },/*cr1*/
784 cr11a[]={LP2_,CRN_,LP2_,CRA_,LP2_,LP2_,LP2_,GET_,LP2_,LP2_,LP2_,LP2_,LP2_,LP2_,
785          LP2_,LP2_,LP2_,LP2_,LP2_,LP2_,LP2_,LP2_},
786 
787 *litrtab[] = {da11, da11a, er11, er11a, cr11, cr11a};
788 struct parse pcblitr = {"LITR", lexlms, litrtab, 0, 0, 0, 0};
789 #undef DA0
790 #undef ER0
791 #undef CR0
792 /* PCBLITV: Literal parse; no references; RS ignored; RE/SPACE sequences
793             become single SPACE.  Only minimum data characters allowed.
794 */
795 /* Symbols for state names (end with a number). */
796 #define LS0     0   /* Leading SPACE or RE found. */
797 #define VA0     2   /* Valid character found. */
798 #define SP0     4   /* SPACE/RE sequence begun. */
799 
800 static UNCH
801 /*       free num  min  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
802          mdo  msc  mso  pero rni  tagc tago litc */
803 ls10 []={VA0 ,VA0 ,VA0 ,VA0 ,LS0 ,VA0 ,LS0 ,LS0 ,LS0 ,LS0 ,LS0 ,VA0 ,VA0 ,VA0 ,
804          VA0 ,VA0 ,VA0 ,VA0 ,VA0 ,VA0 ,VA0 ,LS0 },/*ls0*/
805 ls10a[]={MLE_,MLA_,MLA_,MLA_,NOP_,SYS_,EOF_,GET_,RS_ ,NOP_,MLE_,SYS_,SYS_,MLE_,
806          MLE_,MLE_,MLE_,MLE_,MLE_,MLE_,MLE_,TER_},
807 va10 []={VA0 ,VA0 ,VA0 ,VA0 ,SP0 ,VA0 ,VA0 ,VA0 ,VA0 ,SP0 ,SP0 ,VA0 ,VA0 ,VA0 ,
808          VA0 ,VA0 ,VA0 ,VA0 ,VA0 ,VA0 ,VA0 ,LS0 },/*va0*/
809 da10a[]={MLE_,MLA_,MLA_,MLA_,MLA_,SYS_,EOF_,GET_,RS_ ,FUN_,MLE_,SYS_,SYS_,MLE_,
810          MLE_,MLE_,MLE_,MLE_,MLE_,MLE_,MLE_,TER_},
811 sp10 []={VA0 ,VA0 ,VA0 ,VA0 ,SP0 ,VA0 ,VA0 ,SP0 ,SP0 ,SP0 ,SP0 ,VA0 ,VA0 ,VA0 ,
812          VA0 ,VA0 ,VA0 ,VA0 ,VA0 ,VA0 ,VA0 ,LS0 },/*sp0*/
813 sp10a[]={MLE_,MLA_,MLA_,MLA_,NOP_,SYS_,EOF_,GET_,RS_ ,NOP_,MLE_,SYS_,SYS_,MLE_,
814          MLE_,MLE_,MLE_,MLE_,MLE_,MLE_,MLE_,RPR_},
815 
816 *litvtab[] = {ls10, ls10a, va10, da10a, sp10, sp10a};
817 struct parse pcblitv = {"LITV", lexlms, litvtab, 0, 0, 0, 0};
818 #undef LS0
819 #undef VA0
820 #undef SP0
821 /* PCBLITT: Tokenized attribute value parse.
822 */
823 
824 /* PCBLITT: Attribute value parse; general and character references;
825             function chars are translated.
826 */
827 /* Symbols for state names (end with a number). */
828 #define SP0	0   /* Ignore spaces */
829 #define DA0     2   /* Data character */
830 #define ER0     4   /* ERO found; ignore space */
831 #define ER1     6   /* ERO found; don't ignore space */
832 #define CR0     8   /* CRO found (ER0, RNI); ignore space */
833 #define CR1     10  /* CR0 found; don't ignore space */
834 
835 int pcblittda = DA0;
836 
837 static UNCH
838 /*       free num  min  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
839          mdo  msc  mso  pero rni  tagc tago litc */
840 
841 sp14 []={DA0 ,DA0 ,DA0 ,DA0 ,SP0 ,DA0 ,DA0 ,SP0 ,SP0 ,SP0 ,SP0 ,DA0 ,DA0 ,ER0 ,
842          DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 },/*sp0*/
843 sp14a[]={MLA_,MLA_,MLA_,MLA_,NOP_,NON_,EE_ ,GET_,RS_ ,NOP_,NOP_,MLA_,NSC_,NOP_,
844          MLA_,MLA_,MLA_,MLA_,MLA_,MLA_,MLA_,TER_},
845 
846 da14 []={DA0 ,DA0 ,DA0 ,DA0 ,SP0 ,DA0 ,DA0 ,DA0 ,DA0 ,SP0 ,SP0 ,DA0 ,DA0 ,ER1 ,
847          DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,SP0 },/*da0*/
848 da14a[]={MLA_,MLA_,MLA_,MLA_,MLA_,NON_,EE_ ,GET_,RS_ ,FUN_,FUN_,MLA_,NSC_,NOP_,
849          MLA_,MLA_,MLA_,MLA_,MLA_,MLA_,MLA_,TER_},
850 
851 er14 []={DA0 ,DA0 ,DA0 ,SP0 ,DA0 ,DA0 ,DA0 ,ER0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,
852          DA0 ,DA0 ,DA0 ,DA0 ,CR0 ,DA0 ,DA0 ,DA0 },/*er0*/
853 er14a[]={LPR_,LPR_,LPR_,ERX_,LPR_,LPR_,LPR_,GET_,LPR_,LPR_,LPR_,LPR_,LPR_,LPR_,
854          LPR_,LPR_,LPR_,LPR_,NOP_,LPR_,LPR_,LPR_},
855 
856 er15 []={DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,ER1 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,
857          DA0 ,DA0 ,DA0 ,DA0 ,CR1 ,DA0 ,DA0 ,DA0 },/*er1*/
858 er15a[]={LPR_,LPR_,LPR_,ERX_,LPR_,LPR_,LPR_,GET_,LPR_,LPR_,LPR_,LPR_,LPR_,LPR_,
859          LPR_,LPR_,LPR_,LPR_,NOP_,LPR_,LPR_,LPR_},
860 
861 cr14 []={DA0 ,DA0 ,DA0 ,SP0 ,DA0 ,DA0 ,DA0 ,CR0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,
862          DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 },/*cr0*/
863 cr14a[]={LP2_,CRN_,LP2_,CRA_,LP2_,LP2_,LP2_,GET_,LP2_,LP2_,LP2_,LP2_,LP2_,LP2_,
864          LP2_,LP2_,LP2_,LP2_,LP2_,LP2_,LP2_,LP2_},
865 
866 cr15 []={DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,CR1 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,
867          DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 },/*cr1*/
868 cr15a[]={LP2_,CRN_,LP2_,CRA_,LP2_,LP2_,LP2_,GET_,LP2_,LP2_,LP2_,LP2_,LP2_,LP2_,
869          LP2_,LP2_,LP2_,LP2_,LP2_,LP2_,LP2_,LP2_},
870 
871 *litttab[] = {sp14, sp14a, da14, da14a, er14, er14a, er15, er15a, cr14, cr14a,
872 	      cr15, cr15a};
873 struct parse pcblitt = {"LITT", lexlms, litttab, 0, 0, 0, 0};
874 #undef SP0
875 #undef DA0
876 #undef ER0
877 #undef ER1
878 #undef CR0
879 #undef CR1
880 /* PCBMD: State and action table for markup declaration tokenization.
881           Columns are based on LEXMARK.C.
882 */
883 /* Symbols for state names (end with a number). */
884 #define SP1     0   /* Separator before token expected. */
885 #define TK1     2   /* Token expected. */
886 #define CM0     4   /* COM[1] found when sep expected: possible comment, MGRP.*/
887 #define CM1     6   /* COM[1] found: possible comment, MGRP, or minus.*/
888 #define CM2     8   /* COM[2] found; in comment. */
889 #define CM3    10   /* Ending COM[1] found; end comment or continue it. */
890 #define PR1    12   /* PERO found when token was expected. */
891 #define PX1    14   /* PLUS found: PGRP or error. */
892 #define RN1    16   /* RNI found; possible reserved name start. */
893 
894 int pcbmdtk = TK1;            /* PCBMD: token expected. */
895 
896 static UNCH
897 /*       bit  nmc  num  nms  spc  non  ee   eob  rs   com  eti  grpo lit  lita
898          dso  dsc  pero plus refc rni  tagc tago vi    */
899 sp21 []={SP1 ,SP1 ,SP1 ,SP1 ,TK1 ,SP1 ,TK1 ,SP1 ,TK1 ,CM0 ,SP1 ,TK1 ,TK1 ,TK1 ,
900          TK1 ,SP1 ,PR1 ,PX1 ,SP1 ,RN1 ,SP1 ,SP1 ,SP1 },
901 sp21a[]={INV_,LEN_,LEN_,LEN_,NOP_,SYS_,EE_ ,GET_,RS_ ,NOP_,INV_,GRPS,LIT ,LITE,
902          MDS ,INV_,NOP_,NOP_,INV_,NOP_,EMD ,INV_,INV_},
903 
904 tk21 []={SP1 ,SP1 ,SP1 ,SP1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,CM1 ,SP1 ,TK1 ,TK1 ,TK1 ,
905          TK1 ,SP1 ,PR1 ,PX1 ,SP1 ,RN1 ,SP1 ,SP1 ,SP1 },
906 tk21a[]={INV_,NMT ,NUM ,NAS ,NOP_,SYS_,EE_ ,GET_,RS_ ,NOP_,INV_,GRPS,LIT ,LITE,
907          MDS ,INV_,NOP_,NOP_,INV_,NOP_,EMD ,INV_,INV_},
908 
909 /*       bit  nmc  num  nms  spc  non  ee   eob  rs   com  eti  grpo lit  lita
910          dso  dsc  pero plus refc rni  tagc tago vi    */
911 cm20 []={SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,CM0 ,SP1 ,CM0 ,SP1 ,CM2 ,SP1 ,SP1 ,SP1 ,SP1 ,
912          SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 },
913 cm20a[]={LNR_,LNR_,LNR_,LNR_,LNR_,SYS_,LNR_,GET_,LNR_,NOP_,LNR_,LNR_,LNR_,LNR_,
914          LNR_,LNR_,LNR_,LNR_,LNR_,LNR_,LNR_,LNR_,LNR_},
915 
916 cm21 []={TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,CM1 ,TK1 ,CM1 ,TK1 ,CM2 ,TK1 ,TK1 ,TK1 ,TK1 ,
917          TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 },
918 cm21a[]={CDR ,CDR ,CDR ,CDR ,CDR ,SYS_,CDR ,GET_,CDR ,NOP_,CDR ,MGRP,CDR ,CDR ,
919          CDR ,CDR ,CDR ,CDR ,CDR ,CDR ,CDR ,CDR ,CDR },
920 
921 cm22 []={CM2 ,CM2 ,CM2 ,CM2 ,CM2 ,CM2 ,TK1 ,CM2 ,CM2 ,CM3 ,CM2 ,CM2 ,CM2 ,CM2 ,
922          CM2 ,CM2 ,CM2 ,CM2 ,CM2 ,CM2 ,CM2 ,CM2 ,CM2 },
923 cm22a[]={NOP_,NOP_,NOP_,NOP_,NOP_,SYS_,EOF_,GET_,RS_ ,NOP_,NOP_,NOP_,NOP_,NOP_,
924          NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_},
925 
926 /*       bit  nmc  num  nms  spc  non  ee   eob  rs   com  eti  grpo lit  lita
927          dso  dsc  pero plus refc rni  tagc tago vi    */
928 cm23 []={CM2 ,CM2 ,CM2 ,CM2 ,CM2 ,CM3 ,TK1 ,CM3 ,CM2 ,TK1 ,CM2 ,CM2 ,CM2 ,CM2 ,
929          CM2 ,CM2 ,CM2 ,CM2 ,CM2 ,CM2 ,CM2 ,CM2 ,CM2 },
930 cm23a[]={NOP_,NOP_,NOP_,NOP_,NOP_,SYS_,EOF_,GET_,RS_ ,NOP_,NOP_,NOP_,NOP_,NOP_,
931          NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_},
932 
933 pr21 []={SP1 ,SP1 ,SP1 ,TK1 ,TK1 ,PR1 ,SP1 ,PR1 ,TK1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,
934          SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,TK1 ,SP1 ,SP1 ,SP1 },
935 pr21a[]={PCI_,PCI_,PCI_,PER_,PEN ,SYS_,PENR,GET_,PEN ,PENR,PCI_,PCI_,PCI_,PCI_,
936          PCI_,PCI_,PENR,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_},
937 
938 px21 []={SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,PX1 ,SP1 ,PX1 ,SP1 ,SP1 ,SP1 ,TK1 ,SP1 ,SP1 ,
939          SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 },
940 px21a[]={PCI_,PCI_,PCI_,PCI_,PCI_,SYS_,PCI_,GET_,PCI_,PCI_,PCI_,PGRP,PCI_,PCI_,
941          PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_},
942 
943 rn21 []={TK1 ,TK1 ,TK1 ,SP1 ,TK1 ,RN1 ,TK1 ,RN1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,
944          TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 },
945 rn21a[]={PCI_,PCI_,PCI_,RNS ,PCI_,SYS_,PCI_,GET_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,
946          PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_},
947 
948 *mdtab[] = {sp21, sp21a, tk21, tk21a, cm20, cm20a, cm21, cm21a, cm22, cm22a,
949             cm23, cm23a, pr21, pr21a, px21, px21a, rn21, rn21a};
950 struct parse pcbmd = {"MD", lexmark, mdtab, 0, 0, 0, 0};
951 #undef SP1
952 #undef TK1
953 #undef CM0
954 #undef CM1
955 #undef CM2
956 #undef CM3
957 #undef PR1
958 #undef PX1
959 #undef RN1
960 /* PCBMDC: State and action table for comment declaration.
961 */
962 /* Symbols for state names (end with a number). */
963 #define CD2     0   /* COM[2] found; in comment. */
964 #define CD3     2   /* Ending COM[1] found; end comment or continue it. */
965 #define EM1     4   /* Ending COM[2] found; start new comment or end. */
966 #define CD1     6   /* COM[1] found; new comment or error. */
967 
968 static UNCH
969 /*      bit  nmc  num  nms  spc  non  ee   eob  rs   com  eti  grpo lit  lita
970         dso  dsc  pero plus refc rni  tagc tago vi    */
971 cd22 []={CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,CD3 ,CD2 ,CD2 ,CD2 ,CD2 ,
972          CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,CD2 },
973 cd22a[]={NOP_,NOP_,NOP_,NOP_,NOP_,SYS_,EOF_,GET_,RS_ ,NOP_,NOP_,NOP_,NOP_,NOP_,
974          NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_},
975 
976 cd23 []={CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,CD3 ,CD2 ,CD3 ,CD2 ,EM1 ,CD2 ,CD2 ,CD2 ,CD2 ,
977          CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,CD2 },
978 cd23a[]={NOP_,NOP_,NOP_,NOP_,NOP_,SYS_,EOF_,GET_,RS_ ,NOP_,NOP_,NOP_,NOP_,NOP_,
979          NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_},
980 
981 em21 []={CD2 ,CD2 ,CD2 ,CD2 ,EM1 ,EM1 ,CD2 ,EM1 ,EM1 ,CD1 ,CD2 ,CD2 ,CD2 ,CD2 ,
982          CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,CD2 },
983 em21a[]={INV_,INV_,INV_,INV_,NOP_,SYS_,EOF_,GET_,RS_ ,NOP_,INV_,INV_,INV_,INV_,
984          INV_,INV_,INV_,INV_,INV_,INV_,EMD ,INV_,INV_},
985 
986 cd21 []={CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,CD1 ,CD2 ,CD1 ,CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,
987          CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,CD2 ,CD2 },
988 cd21a[]={PCI_,PCI_,PCI_,PCI_,PCI_,SYS_,EOF_,GET_,PCI_,NOP_,PCI_,PCI_,PCI_,PCI_,
989          PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_,PCI_},
990 
991 *mdctab[] = {cd22, cd22a, cd23, cd23a, em21, em21a, cd21, cd21a};
992 struct parse pcbmdc = {"MDC", lexmark, mdctab, 0, 0, 0, 0};
993 #undef CD2
994 #undef CD3
995 #undef EM1
996 #undef CD1
997 /* PCBMDI: State and action table for ignoring markup declarations.
998            Literals are handled properly so a TAGC won't end the declaration.
999            An error is noted if the entity ends within a declaration that
1000            is being ignored.
1001            TO DO: Handle nested declaration sets.
1002 */
1003 /* Symbols for state names (end with a number). */
1004 #define NC1     0   /* Not in a comment; TAGC ends declaration. */
1005 #define IC1     2   /* COM[1] found; possible comment. */
1006 #define IC2     4   /* COM[2] found; in comment. */
1007 #define IC3     6   /* Ending COM[1] found; end comment or continue it. */
1008 #define LI1     8   /* Literal parameter; search for LIT. */
1009 #define LA1    10   /* Literal parameter; search for LITA. */
1010 
1011 static UNCH
1012 /*       bit  nmc  num  nms  spc  non  ee   eob  rs   com  eti  grpo lit  lita
1013          dso  dsc  pero plus refc rni  tagc tago vi    */
1014 nc21 []={NC1 ,NC1 ,NC1 ,NC1 ,NC1 ,NC1 ,NC1 ,NC1 ,NC1 ,IC1 ,NC1 ,NC1 ,LI1 ,LA1 ,
1015          NC1 ,NC1 ,NC1 ,NC1 ,NC1 ,NC1 ,NC1 ,NC1 ,NC1 },
1016 nc21a[]={NOP_,NOP_,NOP_,NOP_,NOP_,SYS_,EOF_,GET_,RS_ ,NOP_,NOP_,NOP_,NOP_,NOP_,
1017          NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,EMD ,NOP_,NOP_},
1018 
1019 ic21 []={NC1 ,NC1 ,NC1 ,NC1 ,NC1 ,IC1 ,NC1 ,IC1 ,NC1 ,IC2 ,NC1 ,NC1 ,LI1 ,LA1 ,
1020          NC1 ,NC1 ,NC1 ,NC1 ,NC1 ,NC1 ,NC1 ,NC1 ,NC1 },
1021 ic21a[]={NOP_,NOP_,NOP_,NOP_,NOP_,SYS_,EOF_,GET_,RS_ ,NOP_,NOP_,NOP_,NOP_,NOP_,
1022          NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,EMD ,NOP_,NOP_},
1023 
1024 ic22 []={IC2 ,IC2 ,IC2 ,IC2 ,IC2 ,IC2 ,NC1 ,IC2 ,IC2 ,IC3 ,IC2 ,IC2 ,IC2 ,IC2 ,
1025          IC2 ,IC2 ,IC2 ,IC2 ,IC2 ,IC2 ,IC2 ,IC2 ,IC2 },
1026 ic22a[]={NOP_,NOP_,NOP_,NOP_,NOP_,SYS_,EOF_,GET_,RS_ ,NOP_,NOP_,NOP_,NOP_,NOP_,
1027          NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_},
1028 
1029 ic23 []={IC2 ,IC2 ,IC2 ,IC2 ,IC2 ,IC3 ,NC1 ,IC3 ,IC2 ,NC1 ,IC2 ,IC2 ,IC2 ,IC2 ,
1030          IC2 ,IC2 ,IC2 ,IC2 ,IC2 ,IC2 ,IC2 ,IC2 ,IC2 },/*ic3*/
1031 ic23a[]={NOP_,NOP_,NOP_,NOP_,NOP_,SYS_,EOF_,GET_,RS_ ,NOP_,NOP_,NOP_,NOP_,NOP_,
1032          NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_},
1033 
1034 /*       bit  nmc  num  nms  spc  non  ee   eob  rs   com  eti  grpo lit  lita
1035          dso  dsc  pero plus refc rni  tagc tago vi    */
1036 li21 []={LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,NC1 ,LI1 ,
1037          LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,LI1 ,LI1 },/*li1*/
1038 li21a[]={NOP_,NOP_,NOP_,NOP_,NOP_,SYS_,EOF_,GET_,RS_ ,NOP_,NOP_,NOP_,NOP_,NOP_,
1039          NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_},
1040 
1041 la21 []={LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,NC1 ,
1042          LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 ,LA1 },/*la1*/
1043 la21a[]={NOP_,NOP_,NOP_,NOP_,NOP_,SYS_,EOF_,GET_,RS_ ,NOP_,NOP_,NOP_,NOP_,NOP_,
1044          NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_},
1045 
1046 *mditab[] = {nc21, nc21a, ic21, ic21a, ic22, ic22a,
1047              ic23, ic23a, li21, li21a, la21, la21a};
1048 struct parse pcbmdi = {"MDI", lexmark, mditab, 0, 0, 0, 0};
1049 #undef NC1
1050 #undef IC1
1051 #undef IC2
1052 #undef IC3
1053 #undef LI1
1054 #undef LA1
1055 /* PCBMSRC: State and action table for marked section in RCDATA mode.
1056             Nested marked sections are not recognized; the first MSE ends it.
1057             Initial state assumes an MS declaration was processed.
1058             Columns are based on LEXLMS.C but LITC column needn't exist.
1059 */
1060 /* Symbols for state names (end with a number). */
1061 #define ET0     0   /* MSS processed or buffer flushed; no data. */
1062 #define DA0     2   /* Data in buffer. */
1063 #define ER0     4   /* ERO found; start lookahead buffer. */
1064 #define CR0     6   /* CRO found (ER0, RNI). */
1065 #define ME0     8   /* MSC found. */
1066 #define ME1    10   /* MSC, MSC found. */
1067 
1068 static UNCH
1069 /*       free nu   min  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
1070          mdo  msc  mso  pero rni  tagc tago litc */
1071 et30 []={DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,DA0 ,DA0 ,ET0 ,ER0 ,
1072          DA0 ,ME0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 },/*et0*/
1073 et30a[]={DAS_,DAS_,DAS_,DAS_,DAS_,NON_,EE_ ,GET_,RS_ ,REF_,DAS_,DAS_,NSC_,LAS_,
1074          DAS_,LAS_,DAS_,DAS_,DAS_,DAS_,DAS_,DAS_},
1075 
1076 da30 []={DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,DA0 ,DA0 ,ET0 ,ET0 ,
1077          DA0 ,ET0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 ,DA0 },/*da0*/
1078 da30a[]={NOP_,NOP_,NOP_,NOP_,NOP_,DAF_,DAF_,DAF_,DAF_,DAF_,NOP_,NOP_,DAF_,DAF_,
1079          NOP_,DAF_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_},
1080 
1081 er30 []={ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ER0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,
1082          ET0 ,ET0 ,ET0 ,ET0 ,CR0 ,ET0 ,ET0 ,ET0 },/*er0*/
1083 er30a[]={LAF_,LAF_,LAF_,ERX_,LAF_,LAF_,LAF_,GET_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,
1084          LAF_,LAF_,LAF_,LAF_,LAM_,LAF_,LAF_,LAF_},
1085 
1086 /*       free nu   min  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
1087          mdo  msc  mso  pero rni  tagc tago litc */
1088 cr30 []={ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,CR0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,
1089          ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 ,ET0 },/*cr0*/
1090 cr30a[]={LAF_,CRN_,LAF_,CRA_,LAF_,LAF_,LAF_,GET_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,
1091          LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_},
1092 
1093 me30 []={ET0, ET0, ET0, ET0, ET0 ,ET0, ET0, ME0, ET0 ,ET0 ,ET0 ,ET0, ET0 ,ET0 ,
1094          ET0, ME1, ET0 ,ET0, ET0 ,ET0, ET0 ,ET0 },/*me0*/
1095 me30a[]={LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,GET_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,
1096          LAF_,LAM_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_},
1097 
1098 me31 []={ET0, ET0, ET0, ET0, ET0 ,ET0, ET0, ME1, ET0 ,ET0 ,ET0 ,ET0, ET0 ,ET0 ,
1099          ET0, ET0, ET0 ,ET0, ET0 ,ET0, ET0 ,ET0,},/*me1*/
1100 me31a[]={LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,GET_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,
1101          LAF_,LAF_,LAF_,LAF_,LAF_,MSE_,LAF_,LAF_},
1102 
1103 *msrctab[]={et30, et30a, da30, da30a, er30, er30a, cr30, cr30a,
1104 	    me30, me30a, me31, me31a};
1105 struct parse pcbmsrc = {"MSRCDATA", lexlms, msrctab, 0, 0, 0, 0};
1106 #undef ET0
1107 #undef DA0
1108 #undef ER0
1109 #undef CR0
1110 #undef ME0
1111 #undef ME1
1112 /* PCBMSC: State and action table for marked section in CDATA mode.
1113            Nested marked sections are not recognized; the first MSE ends it.
1114            Initial state assumes an MS declaration was processed.
1115 */
1116 /* Symbols for state names (end with a number). */
1117 #define ET2     0   /* MSS processed or buffer flushed; no data. */
1118 #define DA2     2   /* Data in buffer. */
1119 #define ME2     4   /* MSC found. */
1120 #define ME3     6   /* MSC, MSC found. */
1121 
1122 static UNCH
1123 /*       free nu   min  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
1124          mdo  msc  mso  pero rni  tagc tago litc */
1125 et32 []={DA2 ,DA2 ,DA2 ,DA2 ,DA2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,DA2 ,DA2 ,ET2 ,DA2 ,
1126          DA2 ,ME2 ,DA2 ,DA2 ,DA2 ,DA2 ,DA2 ,DA2 },/*et2*/
1127 et32a[]={DAS_,DAS_,DAS_,DAS_,DAS_,NON_,EOF_,GET_,RS_ ,REF_,DAS_,DAS_,NSC_,DAS_,
1128          DAS_,LAS_,DAS_,DAS_,DAS_,DAS_,DAS_,DAS_},
1129 
1130 da32 []={DA2 ,DA2 ,DA2 ,DA2 ,DA2 ,ET2 ,ET2 ,ET2 ,ET2 ,ET2 ,DA2 ,DA2 ,ET2 ,DA2 ,
1131          DA2 ,ET2 ,DA2 ,DA2 ,DA2 ,DA2 ,DA2 ,DA2 },/*da2*/
1132 da32a[]={NOP_,NOP_,NOP_,NOP_,NOP_,DAF_,DAF_,DAF_,DAF_,DAF_,NOP_,NOP_,DAF_,NOP_,
1133          NOP_,DAF_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_},
1134 
1135 me32 []={ET2, ET2, ET2, ET2, ET2 ,ET2, ET2, ME2, ET2 ,ET2 ,ET2 ,ET2, ET2 ,ET2 ,
1136          ET2, ME3, ET2 ,ET2, ET2 ,ET2, ET2, ET2,},/*me2*/
1137 me32a[]={LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,GET_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,
1138          LAF_,LAM_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_},
1139 
1140 me33 []={ET2, ET2, ET2, ET2, ET2 ,ET2, ET2, ME3, ET2 ,ET2 ,ET2 ,ET2, ET2 ,ET2 ,
1141          ET2, ET2, ET2 ,ET2, ET2 ,ET2, ET2, ET2,},/*me3*/
1142 me33a[]={LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,GET_,LAF_,LAF_,LAF_,LAF_,LAF_,LAF_,
1143          LAF_,LAF_,LAF_,LAF_,LAF_,MSE_,LAF_,LAF_},
1144 
1145 *msctab[]={et32, et32a, da32, da32a, me32, me32a, me33, me33a};
1146 struct parse pcbmsc = {"MSCDATA", lexlms, msctab, 0, 0, 0, 0};
1147 #undef ET2
1148 #undef DA2
1149 #undef ME2
1150 #undef ME3
1151 /* PCBMSI: State and action table for marked section in IGNORE mode.
1152            Nested marked sections are recognized; the matching MSE ends it.
1153            Initial state assumes an MS declaration, MSS, or MSE was processed.
1154 */
1155 /* Symbols for state names (end with a number). */
1156 #define ET4     0   /* Markup found or buffer flushed; no data. */
1157 #define ME4     2   /* MSC found. */
1158 #define ME5     4   /* MSC, MSC found. */
1159 #define ES4     6   /* TAGO found. */
1160 #define MD4     8   /* MDO found (TAGO, MDO[2]). */
1161 
1162 static UNCH
1163 /*       free nu   min  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
1164          mdo  msc  mso  pero rni  tagc tago litc refc */
1165 et34 []={ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,
1166          ET4 ,ME4 ,ET4 ,ET4 ,ET4 ,ET4 ,ES4 ,ET4 ,ET4 },/*et4*/
1167 et34a[]={NOP_,NOP_,NOP_,NOP_,NOP_,SYS_,EOF_,GET_,RS_ ,NOP_,NOP_,NOP_,SYS_,NOP_,
1168          NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_},
1169 
1170 me34 []={ET4, ET4, ET4, ET4, ET4 ,ET4, ET4, ME4, ET4 ,ET4 ,ET4 ,ET4, ET4, ET4 ,
1171          ET4, ME5 ,ET4, ET4, ET4 ,ET4, ET4, ET4, ET4,},/*me4*/
1172 me34a[]={NOP_,NOP_,NOP_,NOP_,NOP_,SYS_,EOF_,GET_,RS_ ,NOP_,NOP_,NOP_,SYS_,NOP_,
1173          NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_},
1174 
1175 me35 []={ET4, ET4, ET4, ET4, ET4 ,ET4, ET4, ME5, ET4 ,ET4 ,ET4 ,ET4, ET4, ET4 ,
1176          ET4, ET4 ,ET4, ET4, ET4 ,ET4, ET4, ET4, ET4,},/*me5*/
1177 me35a[]={NOP_,NOP_,NOP_,NOP_,NOP_,SYS_,EOF_,GET_,RS_ ,NOP_,NOP_,NOP_,SYS_,NOP_,
1178          NOP_,NOP_,NOP_,NOP_,NOP_,MSE_,NOP_,NOP_,NOP_},
1179 
1180 /*       free nu   min  nms  spc  non  ee   eob  rs   re   sep  cde  nsc  ero
1181          mdo  msc  mso  pero rni  tagc tago litc */
1182 es34 []={ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ES4 ,ET4 ,ES4 ,ET4 ,ET4 ,ET4 ,ET4 ,ES4 ,ET4 ,
1183          MD4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 ,ET4 },/*es4*/
1184 es34a[]={NOP_,NOP_,NOP_,NOP_,NOP_,SYS_,EOF_,GET_,RS_ ,NOP_,NOP_,NOP_,SYS_,NOP_,
1185          NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_,NOP_},
1186 
1187 md34 []={ET4, ET4, ET4, ET4, ET4 ,MD4, ET4, MD4, ET4 ,ET4 ,ET4 ,ET4, ET4, ET4 ,
1188          ET4, ET4 ,ET4, ET4, ET4 ,ET4, ET4, ET4,},/*md4*/
1189 md34a[]={NOP_,NOP_,NOP_,NOP_,NOP_,SYS_,EOF_,GET_,RS_ ,NOP_,NOP_,NOP_,SYS_,NOP_,
1190          NOP_,NOP_,MSS_,NOP_,NOP_,NOP_,NOP_,NOP_},
1191 
1192 *msitab[]={et34, et34a, me34, me34a, me35, me35a, es34, es34a, md34, md34a};
1193 struct parse pcbmsi = {"MSIGNORE", lexlms, msitab, 0, 0, 0, 0};
1194 #undef ET4
1195 #undef ME4
1196 #undef ME5
1197 #undef ES4
1198 #undef MD4
1199 #undef NS4
1200 /* PCBSTAG: State and action table for start-tag parse.
1201             Columns are based on LEXMARK.C.
1202 */
1203 /* Symbols for state names (end with a number). */
1204 #define SP1     0   /* Separator before name expected. */
1205 #define AN1     2   /* Attribute name expected. */
1206 #define SP2     4   /* Separator or value indicator expected. */
1207 #define VI1     6   /* Value indicator expected. */
1208 #define AV1     8   /* Attribute value expected. */
1209 
1210 int pcbstan = AN1;            /* PCBSTAG: attribute name expected. */
1211 
1212 static UNCH
1213 /*       bit  nmc  num  nms  spc  non  ee   eob  rs   com  eti  grpo lit  lita
1214          dso  dsc  pero plus refc rni  tagc tago vi    */
1215 sp41 []={SP1 ,SP1 ,SP1 ,SP1 ,AN1 ,SP1 ,SP1 ,SP1 ,AN1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,
1216          SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 },
1217 sp41a[]={INV_,LEN_,LEN_,LEN_,NOP_,SYS_,EOF_,GET_,RS_ ,INV_,ETIC,INV_,INV_,INV_,
1218          INV_,DSC ,INV_,INV_,INV_,INV_,TAGC,TAGO,INV_},
1219 
1220 an41 []={SP1 ,SP1 ,SP1 ,SP2 ,AN1 ,AN1 ,AN1 ,AN1 ,AN1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,
1221          SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 },
1222 an41a[]={INV_,NTV ,NTV ,NVS ,NOP_,SYS_,EOF_,GET_,RS_ ,INV_,ETIC,INV_,INV_,INV_,
1223          INV_,DSC ,INV_,INV_,INV_,INV_,TAGC,TAGO,INV_},
1224 
1225 sp42 []={SP1 ,SP1 ,SP1 ,SP1 ,VI1 ,SP2 ,SP2 ,SP2 ,VI1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,
1226          SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,AV1 },
1227 sp42a[]={INV_,LEN_,LEN_,LEN_,NOP_,SYS_,EOF_,GET_,RS_ ,INV_,NASV,INV_,INV_,INV_,
1228          INV_,NASV,INV_,INV_,INV_,INV_,NASV,NASV,NOP_},
1229 
1230 /*       bit  nmc  num  nms  spc  non  ee   eob  rs   com  eti  grpo lit  lita
1231          dso  dsc  pero plus refc rni  tagc tago vi    */
1232 vi41 []={SP1 ,AN1 ,AN1 ,AN1 ,VI1 ,VI1 ,VI1 ,VI1 ,VI1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,
1233          SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,AV1 },
1234 vi41a[]={INV_,NASV,NASV,NASV,NOP_,SYS_,EOF_,GET_,RS_ ,INV_,NASV,INV_,INV_,INV_,
1235          INV_,NASV,INV_,INV_,INV_,INV_,NASV,NASV,NOP_},
1236 
1237 av41 []={SP1 ,SP1 ,SP1 ,SP1 ,AV1 ,AV1 ,AV1 ,AV1 ,AV1 ,SP1 ,SP1 ,SP1 ,AN1 ,AN1 ,
1238          SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 ,SP1 },
1239 av41a[]={INV_,AVU ,AVU ,AVU ,NOP_,SYS_,EOF_,GET_,RS_ ,INV_,INV_,INV_,AVD ,AVDA,
1240          INV_,INV_,INV_,INV_,INV_,INV_,INV_,INV_,INV_},
1241 
1242 *stagtab[] = {sp41, sp41a, an41, an41a, sp42, sp42a, vi41, vi41a, av41, av41a};
1243 struct parse pcbstag = {"STAG", lexmark, stagtab, 0, 0, 0, 0};
1244 #undef SP1
1245 #undef AN1
1246 #undef SP2
1247 #undef VI1
1248 #undef AV1
1249 /* PCBETAG: State and action table for end-tag parse.
1250 */
1251 #define TC1     0   /* Tag close expected (no attributes allowed). */
1252 
1253 static UNCH
1254 /*       bit  nmc  nu   nms  spc  non  ee   eob  rs   com  eti  grpo lit  lita
1255          dso  dsc  pero plus refc rni  tagc tago vi    */
1256 tc41 []={TC1 ,TC1 ,TC1 ,TC1 ,TC1 ,TC1 ,TC1 ,TC1 ,TC1 ,TC1 ,TC1 ,TC1 ,TC1 ,TC1 ,
1257          TC1 ,TC1 ,TC1 ,TC1 ,TC1 ,TC1 ,TC1 ,TC1 ,TC1 },/*tc1*/
1258 tc41a[]={INV_,INV_,INV_,INV_,NOP_,SYS_,EOF_,GET_,RS_ ,INV_,INV_,INV_,INV_,INV_,
1259          INV_,INV_,INV_,INV_,INV_,INV_,TAGC,TAGO,INV_},
1260 
1261 *etagtab[] = {tc41, tc41a};
1262 struct parse pcbetag = {"ETAG", lexmark, etagtab, 0, 0, 0, 0};
1263 #undef TC1
1264 /* PCBVAL: State and action table for tokenizing attribute values.
1265            Columns are based on lextoke (but EOB cannot occur).
1266 */
1267 /* Symbols for state names (end with a number). */
1268 #define TK1     0   /* Token expected. */
1269 #define SP1     2   /* Separator before token expected. */
1270 
1271 static UNCH
1272 /*       inv  rec  sep  sp   nmc  nms  nu   eob   */
1273 tk51 []={TK1 ,TK1 ,TK1 ,TK1 ,SP1 ,SP1 ,SP1 },/*tk1*/
1274 tk51a[]={INVA,INVA,INVA,NOPA,NMTA,NASA,NUMA},
1275 
1276 sp51 []={TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 },/*sp1*/
1277 sp51a[]={INVA,INVA,INVA,NOPA,LENA,LENA,LENA},
1278 
1279 *valtab[] = {tk51, tk51a, sp51, sp51a};
1280 struct parse pcbval = {"VAL", lextoke, valtab, 0, 0, 0, 0};
1281 #undef TK1
1282 #undef SP1
1283 /* PCBEAL: State and action table for end of attribute specification list.
1284            If delimiter occurs, process it.  Otherwise, put invalid character
1285            back for the next parse.
1286 */
1287 /* Symbols for state names (end with a number). */
1288 #define AL0     0   /* Delimiter expected. */
1289 
1290 static UNCH
1291 /*       bit  nmc  nms  re   spc  non  ee   eob  rs   and  grpc grpo lit  lita
1292          dtgc dtgo opt  or   pero plus rep  rni  seq  refc */
1293 al00 []={AL0 ,AL0 ,AL0 ,AL0 ,AL0 ,AL0 ,AL0 ,AL0 ,AL0 ,AL0 ,AL0 ,AL0 ,AL0 ,AL0 ,
1294          AL0 ,AL0 ,AL0 ,AL0 ,AL0 ,AL0 ,AL0 ,AL0 ,AL0 ,AL0 },/*al0*/
1295 al00a[]={INV_,INV_,INV_,INV_,INV_,SYS_,EE_ ,GET_,INV_,INV_,INV_,INV_,INV_,INV_,
1296          GRPE,INV_,INV_,INV_,INV_,INV_,INV_,INV_,INV_,INV_},
1297 
1298 *ealtab[] = {al00, al00a};
1299 struct parse pcbeal = {"EAL", lexgrp, ealtab, 0, 0, 0, 0};
1300 #undef AL0
1301 
1302 /* PCBSD: State and action tables for SGML declaration parsing. */
1303 
1304 /* Symbols for state names. */
1305 
1306 #define SP1     0   /* Separator before token expected. */
1307 #define TK1     2   /* Token expected. */
1308 #define CM0     4   /* COM[1] found when sep expected: possible comment.*/
1309 #define CM1     6   /* COM[1] found: possible comment.*/
1310 #define CM2     8   /* COM[2] found; in comment. */
1311 #define CM3    10   /* Ending COM[1] found; end comment or continue it. */
1312 
1313 static UNCH
1314 /*       sig  dat  num  nms  spc  non  ee   eob  rs   com  lit  lita tagc  */
1315 
1316 sp31 []={SP1 ,SP1 ,SP1 ,SP1 ,TK1 ,SP1 ,SP1 ,SP1 ,TK1 ,CM0 ,TK1 ,TK1 ,SP1 },
1317 sp31a[]={INV_,ISIG,LEN_,LEN_,NOP_,SYS_,EOF_,GET_,RS_ ,NOP_,LIT1,LIT2,ESGD},
1318 
1319 tk31 []={TK1 ,TK1 ,SP1 ,SP1 ,TK1 ,TK1 ,TK1 ,TK1 ,TK1 ,CM1 ,TK1 ,TK1 ,SP1 },
1320 tk31a[]={INV_,ISIG,NUM1,NAS1,NOP_,SYS_,EOF_,GET_,RS_ ,NOP_,LIT1,LIT2,ESGD},
1321 
1322 cm30 []={SP1 ,CM0 ,SP1 ,SP1 ,SP1 ,CM0 ,SP1 ,CM0 ,SP1 ,CM2 ,SP1 ,SP1 ,SP1 },
1323 cm30a[]={PCI_,ISIG,PCI_,PCI_,PCI_,SYS_,PCI_,GET_,PCI_,NOP_,PCI_,PCI_,PCI_},
1324 
1325 cm31 []={TK1 ,CM1 ,TK1 ,TK1 ,TK1 ,CM1 ,TK1 ,CM1 ,TK1 ,CM2 ,TK1 ,TK1 ,TK1 },
1326 cm31a[]={PCI_,ISIG,PCI_,PCI_,PCI_,SYS_,PCI_,GET_,PCI_,NOP_,PCI_,PCI_,PCI_},
1327 
1328 cm32 []={CM2 ,CM2 ,CM2 ,CM2 ,CM2 ,CM2 ,TK1 ,CM2 ,CM2 ,CM3 ,CM2 ,CM2 ,CM2 },
1329 cm32a[]={NOP_,ISIG,NOP_,NOP_,NOP_,SYS_,EOF_,GET_,RS_ ,NOP_,NOP_,NOP_,NOP_},
1330 
1331 cm33 []={CM2 ,CM3 ,CM2 ,CM2 ,CM2 ,CM3 ,TK1 ,CM3 ,CM2 ,TK1 ,CM2 ,CM2 ,CM2 },
1332 cm33a[]={NOP_,ISIG,NOP_,NOP_,NOP_,SYS_,EOF_,GET_,RS_ ,NOP_,NOP_,NOP_,NOP_},
1333 
1334 *sdtab[]={sp31, sp31a, tk31, tk31a, cm30, cm30a, cm31, cm31a, cm32, cm32a,
1335 	  cm33, cm33a};
1336 
1337 struct parse pcbsd = {"SD", lexsd, sdtab, 0, 0, 0, 0};
1338 
1339 #undef SP1
1340 #undef TK1
1341 #undef CM0
1342 #undef CM1
1343 #undef CM2
1344 #undef CM3
1345