xref: /illumos-gate/usr/src/cmd/sgs/lex/common/ldefs.h (revision 9e3493cb8a0cfe96c9aef9b7da42c6c9b5c24b43)
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License (the "License").
6  * You may not use this file except in compliance with the License.
7  *
8  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9  * or http://www.opensolaris.org/os/licensing.
10  * See the License for the specific language governing permissions
11  * and limitations under the License.
12  *
13  * When distributing Covered Code, include this CDDL HEADER in each
14  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15  * If applicable, add the following below this CDDL HEADER, with the
16  * fields enclosed by brackets "[]" replaced with your own identifying
17  * information: Portions Copyright [yyyy] [name of copyright owner]
18  *
19  * CDDL HEADER END
20  */
21 /*
22  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
23  * Use is subject to license terms.
24  */
25 
26 /*	Copyright (c) 1988 AT&T	*/
27 /*	All Rights Reserved	*/
28 
29 #ifndef	_LDEFS_H
30 #define	_LDEFS_H
31 
32 #include <stdio.h>
33 #include <stdlib.h>
34 
35 #include <widec.h>
36 #include <wctype.h>
37 #include "sgs.h"
38 
39 #define	CHR wchar_t
40 #define	BYTE char
41 #define	Boolean char
42 #define	LONG_WCHAR_T 1
43 
44 #define	PP 1
45 #ifdef u370
46 #define	CWIDTH 8
47 #define	CMASK 0377
48 #define	ASCII 1
49 #else
50 
51 #ifdef unix
52 #define	CWIDTH 7
53 #define	CMASK 0177
54 #define	ASCII 1
55 #endif
56 
57 #ifdef gcos
58 #define	CWIDTH 9
59 #define	CMASK 0777
60 #define	ASCII 1
61 #endif
62 
63 #ifdef ibm
64 #define	CWIDTH 8
65 #define	CMASK 0377
66 #define	EBCDIC 1
67 #endif
68 #endif
69 
70 #define	NCH 256
71 #define	TOKENSIZE 10000
72 #define	DEFSIZE 1000
73 #define	DEFCHAR 2000
74 #define	BUF_SIZ 2000
75 #define	STARTCHAR 2560
76 #define	STARTSIZE 256
77 #define	CCLSIZE 20000
78 
79 
80 #ifdef SMALL
81 #define	TREESIZE 600
82 #define	NTRANS 1500
83 #define	NSTATES 300
84 #define	MAXPOS 1500
85 #define	MAXPOSSTATE 500
86 #define	NOUTPUT 1500
87 #endif
88 
89 #ifndef SMALL
90 #define	TREESIZE 1000
91 #define	NSTATES 500
92 #define	MAXPOS 2500
93 #define	MAXPOSSTATE 4*1000
94 #define	NTRANS 2000
95 #define	NOUTPUT 4*3000
96 #endif
97 #define	NACTIONS 4*1000
98 #define	ALITTLEEXTRA 300
99 
100 #define	RCCL		0x4000
101 #define	RNCCL		0x4001
102 #define	RSTR		0x4002
103 #define	RSCON		0x4003
104 /* XCU4: add RXSCON */
105 #define	RXSCON		0x4011
106 #define	RNEWE		0x4004
107 #define	FINAL		0x4005
108 #define	RNULLS		0x4006
109 #define	RCAT		0x4007
110 #define	STAR		0x4008
111 #define	PLUS		0x4009
112 #define	QUEST		0x400a
113 #define	DIV		0x400b
114 #define	BAR		0x400c
115 #define	CARAT		0x400d
116 #define	S1FINAL		0x400e
117 #define	S2FINAL		0x400f
118 #define	DOT		0x4010
119 #define	ISOPERATOR(n)	((n & 0xc080) == 0x4000)
120 
121 /*
122  * New to JLE; this is not really a node tag.
123  * This is used in a string pointed to by
124  * the leaf of an RCCL or RNCCL node as a
125  * special prefix code that substitutes
126  * the infix '-' range operator.  For
127  * example, a lex character class "[_0-9a-zA-Z]"
128  * would be translated to the intermidiate
129  * form:
130  *	RCCL
131  *	 |
132  *	 |
133  *	 v
134  *       "_<RANGE>09<RANGE>a-z<RANGE>A-Z"
135  */
136 #define	RANGE		0x40ff
137 
138 #define	MAXNCG 1000
139 extern int ncgidtbl;
140 extern int ncg; /* ncg == ncgidtbl * 2 */
141 typedef unsigned long lchar;
142 extern lchar yycgidtbl[];
143 extern int yycgid(wchar_t);
144 extern Boolean handleeuc; /* TRUE iff -w or -e option is specified. */
145 extern Boolean widecio; /* TRUE iff -w option is specified. */
146 
147 #define	DEFSECTION 1
148 #define	RULESECTION 2
149 #define	ENDSECTION 5
150 
151 #define	PC 1
152 #define	PS 1
153 
154 #ifdef DEBUG
155 #define	LINESIZE 110
156 extern int yydebug;
157 extern int debug;		/* 1 = on */
158 extern int charc;
159 #endif
160 
161 #ifndef DEBUG
162 #define	freturn(s) s
163 #endif
164 
165 
166 extern int optind;
167 extern int no_input;
168 extern int sargc;
169 extern char **sargv;
170 extern char *v_stmp;
171 extern char *release_string;
172 extern CHR buf[];
173 extern int ratfor;		/* 1 = ratfor, 0 = C */
174 extern int fatal;
175 extern int n_error;
176 extern int copy_line;
177 extern int yyline;		/* line number of file */
178 extern int sect;
179 extern int eof;
180 extern int lgatflg;
181 extern int divflg;
182 extern int funcflag;
183 extern int pflag;
184 extern int casecount;
185 extern int chset;	/* 1 = CHR set modified */
186 extern FILE *fin, *fout, *fother, *errorf;
187 extern int fptr;
188 extern int prev;	/* previous input character */
189 extern int pres;	/* present input character */
190 extern int peek;	/* next input character */
191 extern int *name;
192 extern int *left;
193 extern int *right;
194 extern int *parent;
195 extern Boolean *nullstr;
196 extern int tptr;
197 extern CHR pushc[TOKENSIZE];
198 extern CHR *pushptr;
199 extern CHR slist[STARTSIZE];
200 extern CHR *slptr;
201 extern CHR **def, **subs, *dchar;
202 extern CHR **sname, *schar;
203 /* XCU4: %x exclusive start */
204 extern int *exclusive;
205 extern CHR *ccl;
206 extern CHR *ccptr;
207 extern CHR *dp, *sp;
208 extern int dptr, sptr;
209 extern CHR *bptr;		/* store input position */
210 extern CHR *tmpstat;
211 extern int count;
212 extern int **foll;
213 extern int *nxtpos;
214 extern int *positions;
215 extern int *gotof;
216 extern int *nexts;
217 extern CHR *nchar;
218 extern int **state;
219 extern int *sfall;		/* fallback state num */
220 extern Boolean *cpackflg;	/* true if state has been character packed */
221 extern int *atable, aptr;
222 extern int nptr;
223 extern Boolean symbol[MAXNCG];
224 extern CHR cindex[MAXNCG];
225 extern int xstate;
226 extern int stnum;
227 extern int ctable[];
228 extern int ZCH;
229 extern int ccount;
230 extern CHR match[MAXNCG];
231 extern BYTE extra[];
232 extern CHR *pcptr, *pchar;
233 extern int pchlen;
234 extern int nstates, maxpos;
235 extern int yytop;
236 extern int report;
237 extern int ntrans, treesize, outsize;
238 extern long rcount;
239 extern int optim;
240 extern int *verify, *advance, *stoff;
241 extern int scon;
242 extern CHR *psave;
243 extern CHR *getl();
244 extern BYTE *myalloc();
245 
246 void phead1(void);
247 void phead2(void);
248 void ptail(void);
249 void statistics(void);
250 void error_tail(void) __NORETURN;
251 void error(char *, ...);
252 void warning(char *, ...);
253 void lgate(void);
254 void scopy(CHR *s, CHR *t);
255 void cclinter(int sw);
256 void cpycom(CHR *p);
257 void munput(int t, CHR *p);
258 void cfoll(int v);
259 void cgoto(void);
260 void mkmatch(void);
261 void layout(void);
262 void remch(wchar_t c);
263 void sortcgidtbl(void);
264 void repbycgid(void);
265 int gch(void);
266 int slength(CHR *s);
267 int yyparse(void);
268 int scomp(CHR *x, CHR *y);
269 int space(int ch);
270 int siconv(CHR *t);
271 int digit(int c);
272 int ctrans(CHR **ss);
273 int cpyact(void);
274 int lookup(CHR *s, CHR **t);
275 int usescape(int c);
276 int alpha(int c);
277 int mn2(int a, int d, int c);
278 int mn1(int a, int d);
279 int mn0(int a);
280 int dupl(int n);
281 
282 extern int isArray;		/* XCU4: for %array %pointer */
283 
284 #endif	/* _LDEFS_H */
285