xref: /csrg-svn/local/toolchest/ksh/sh/sym.h (revision 35168)
1*35168Smarc /*
2*35168Smarc 
3*35168Smarc  *      Copyright (c) 1984, 1985, 1986 AT&T
4*35168Smarc  *      All Rights Reserved
5*35168Smarc 
6*35168Smarc  *      THIS IS UNPUBLISHED PROPRIETARY SOURCE
7*35168Smarc  *      CODE OF AT&T.
8*35168Smarc  *      The copyright notice above does not
9*35168Smarc  *      evidence any actual or intended
10*35168Smarc  *      publication of such source code.
11*35168Smarc 
12*35168Smarc  */
13*35168Smarc /* @(#)sym.h	1.1 */
14*35168Smarc /*
15*35168Smarc  *	UNIX shell
16*35168Smarc  *	S. R. Bourne
17*35168Smarc  *	Rewritten by David Korn
18*35168Smarc  */
19*35168Smarc 
20*35168Smarc 
21*35168Smarc /* symbols for parsing */
22*35168Smarc #define DOSYM	0405
23*35168Smarc #define FISYM	0420
24*35168Smarc #define EFSYM	0422
25*35168Smarc #define ELSYM	0421
26*35168Smarc #define INSYM	0412
27*35168Smarc #define BRSYM	0406
28*35168Smarc #define KTSYM	0450
29*35168Smarc #define THSYM	0444
30*35168Smarc #define ODSYM	0441
31*35168Smarc #define ESSYM	0442
32*35168Smarc #define IFSYM	0436
33*35168Smarc #define FORSYM	0435
34*35168Smarc #define WHSYM	0433
35*35168Smarc #define UNSYM	0427
36*35168Smarc #define CASYM	0417
37*35168Smarc #define PROCSYM	0460
38*35168Smarc #define SELSYM	0470
39*35168Smarc #define TIMSYM	0474
40*35168Smarc 
41*35168Smarc #define SYMREP	04000
42*35168Smarc #define ECSYM	(SYMREP|';')
43*35168Smarc #define ANDFSYM	(SYMREP|'&')
44*35168Smarc #define ORFSYM	(SYMREP|'|')
45*35168Smarc #define APPSYM	(SYMREP|'>')
46*35168Smarc #define DOCSYM	(SYMREP|'<')
47*35168Smarc #define SYMALT1	01000
48*35168Smarc #define SYMALT2	010000
49*35168Smarc #define COOPSYM	(SYMALT1|'|')
50*35168Smarc #define IPROC	(SYMALT1|'(')
51*35168Smarc #define OPROC	(SYMALT2|'(')
52*35168Smarc #define EOFSYM	02000
53*35168Smarc #define SYMFLG	0400
54*35168Smarc 
55*35168Smarc /* arg to `cmd' */
56*35168Smarc #define NLFLG	1
57*35168Smarc #define MTFLG	2
58*35168Smarc 
59*35168Smarc /* for peekc */
60*35168Smarc #define MARK	0100000
61*35168Smarc 
62*35168Smarc /* odd chars */
63*35168Smarc #define DQUOTE	'"'
64*35168Smarc #define SQUOTE	'`'
65*35168Smarc #define DOLLAR	'$'
66*35168Smarc #define BRACE	'{'
67*35168Smarc #define LPAREN	'('
68*35168Smarc #define RPAREN	')'
69*35168Smarc 
70*35168Smarc struct sysnod
71*35168Smarc {
72*35168Smarc #ifdef apollo
73*35168Smarc 	/* pointers can not be in readonly sections */
74*35168Smarc 	char   sysnam[28];
75*35168Smarc #else
76*35168Smarc 	char	*sysnam;
77*35168Smarc #endif	/* apollo */
78*35168Smarc 	unsigned sysval;
79*35168Smarc };
80*35168Smarc 
81*35168Smarc #define A_RAW	1		/* string needs no processing */
82*35168Smarc #define A_MAKE	2		/* bit set during argument expansion */
83*35168Smarc #define A_MAC	4		/* string needs macro expansion */
84*35168Smarc #define	A_EXP	8		/* string needs file expansion */
85*35168Smarc 
86*35168Smarc /* dummy for access only */
87*35168Smarc struct argnod
88*35168Smarc {
89*35168Smarc 	struct argnod	*argnxt;
90*35168Smarc 	struct argnod	*argchn;
91*35168Smarc 	char	 argflag;
92*35168Smarc 	char	argval[1];
93*35168Smarc };
94*35168Smarc 
95*35168Smarc typedef struct sysnod	SYSTAB[];
96*35168Smarc typedef struct argnod	*ARGPTR;
97*35168Smarc 
98*35168Smarc extern int	wdval;
99*35168Smarc extern int	wdnum;
100*35168Smarc extern ARGPTR	wdarg;
101*35168Smarc extern ARGPTR	gchain;
102*35168Smarc extern int	subflag;
103*35168Smarc extern SYSTAB	reserved;
104*35168Smarc extern SYSTAB	commands;
105*35168Smarc extern SYSTAB	option_flags;
106*35168Smarc extern SYSTAB	signal_names;
107*35168Smarc extern SYSTAB	sig_messages;
108*35168Smarc extern SYSTAB	testops;
109*35168Smarc extern SYSTAB	attributes;
110*35168Smarc extern MSG	let_syntax;
111*35168Smarc extern MSG	unexpected;
112*35168Smarc extern MSG	unmatched;
113*35168Smarc #ifdef DEVFD
114*35168Smarc extern MSG	devfd;
115*35168Smarc #endif	/* DEVFD */
116