1/*
2 */
3/*
4 * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
5 * unrestricted use provided that this legend is included on all tape
6 * media and as a part of the software program in whole or part.  Users
7 * may copy or modify Sun RPC without charge, but are not authorized
8 * to license or distribute it to anyone else except as part of a product or
9 * program developed by the user.
10 *
11 * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
12 * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
13 * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
14 *
15 * Sun RPC is provided with no support and without any obligation on the
16 * part of Sun Microsystems, Inc. to assist in its use, correction,
17 * modification or enhancement.
18 *
19 * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
20 * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
21 * OR ANY PART THEREOF.
22 *
23 * In no event will Sun Microsystems, Inc. be liable for any lost revenue
24 * or profits or other special, indirect and consequential damages, even if
25 * Sun has been advised of the possibility of such damages.
26 *
27 * Sun Microsystems, Inc.
28 * 2550 Garcia Avenue
29 * Mountain View, California  94043
30 */
31/*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
32/*	  All Rights Reserved  	*/
33
34/*	THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T	*/
35/*	The copyright notice above does not evidence any   	*/
36/*	actual or intended publication of such source code.	*/
37
38
39
40/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
41*	PROPRIETARY NOTICE (Combined)
42*
43* This source code is unpublished proprietary information
44* constituting, or derived under license from AT&T's UNIX(r) System V.
45* In addition, portions of such source code were derived from Berkeley
46* 4.3 BSD under license from the Regents of the University of
47* California.
48*
49*
50*
51*	Copyright Notice
52*
53* Notice of copyright on this source code product does not indicate
54*  publication.
55*
56*	(c) 1986,1987,1988.1989  Sun Microsystems, Inc
57*	(c) 1983,1984,1985,1986,1987,1988,1989  AT&T.
58*          All rights reserved.
59*/
60
61/*
62 * rpc_scan.h, Definitions for the RPCL scanner
63 */
64
65/*
66 * kinds of tokens
67 */
68enum tok_kind {
69	TOK_IDENT,
70	TOK_CHARCONST,
71	TOK_STRCONST,
72	TOK_LPAREN,
73	TOK_RPAREN,
74	TOK_LBRACE,
75	TOK_RBRACE,
76	TOK_LBRACKET,
77	TOK_RBRACKET,
78	TOK_LANGLE,
79	TOK_RANGLE,
80	TOK_STAR,
81	TOK_COMMA,
82	TOK_EQUAL,
83	TOK_COLON,
84	TOK_SEMICOLON,
85	TOK_CONST,
86	TOK_STRUCT,
87	TOK_UNION,
88	TOK_SWITCH,
89	TOK_CASE,
90	TOK_DEFAULT,
91	TOK_ENUM,
92	TOK_TYPEDEF,
93	TOK_INT,
94	TOK_SHORT,
95	TOK_LONG,
96	TOK_HYPER,
97	TOK_UNSIGNED,
98	TOK_FLOAT,
99	TOK_DOUBLE,
100	TOK_QUAD,
101	TOK_OPAQUE,
102	TOK_CHAR,
103	TOK_STRING,
104	TOK_BOOL,
105	TOK_VOID,
106	TOK_PROGRAM,
107	TOK_VERSION,
108	TOK_EOF
109};
110typedef enum tok_kind tok_kind;
111
112/*
113 * a token
114 */
115struct token {
116	tok_kind kind;
117	const char *str;
118};
119typedef struct token token;
120
121
122/*
123 * routine interface
124 */
125void scan(tok_kind expect, token *tokp);
126void scan2(tok_kind expect1, tok_kind expect2, token *tokp);
127void scan3(tok_kind expect1, tok_kind expect2, tok_kind expect3, token *tokp);
128void scan_num(token *tokp);
129void peek(token *tokp);
130int peekscan(tok_kind expect, token *tokp);
131void get_token(token *tokp);
132