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