6645 sgsmsg relies on undefined behaviour of loop-scoped variables
[unleashed.git] / usr / src / cmd / rpcgen / rpc_scan.h
blobaee40648af34b54a44552badaed00b78f660b5f3
1 /*
2 * CDDL HEADER START
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.
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.
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]
19 * CDDL HEADER END
23 * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
24 * Use is subject to license terms.
26 /* Copyright (c) 1983, 1984, 1985, 1986, 1987, 1988, 1989 AT&T */
27 /* All Rights Reserved */
29 * University Copyright- Copyright (c) 1982, 1986, 1988
30 * The Regents of the University of California
31 * All Rights Reserved
33 * University Acknowledgment- Portions of this document are derived from
34 * software developed by the University of California, Berkeley, and its
35 * contributors.
38 #ifndef _RPC_SCAN_H
39 #define _RPC_SCAN_H
42 * rpc_scan.h, Definitions for the RPCL scanner
45 #ifdef __cplusplus
46 extern "C" {
47 #endif
50 * kinds of tokens
52 enum tok_kind {
53 TOK_IDENT,
54 TOK_CHARCONST,
55 TOK_STRCONST,
56 TOK_LPAREN,
57 TOK_RPAREN,
58 TOK_LBRACE,
59 TOK_RBRACE,
60 TOK_LBRACKET,
61 TOK_RBRACKET,
62 TOK_LANGLE,
63 TOK_RANGLE,
64 TOK_STAR,
65 TOK_COMMA,
66 TOK_EQUAL,
67 TOK_COLON,
68 TOK_SEMICOLON,
69 TOK_CONST,
70 TOK_STRUCT,
71 TOK_UNION,
72 TOK_SWITCH,
73 TOK_CASE,
74 TOK_DEFAULT,
75 TOK_ENUM,
76 TOK_TYPEDEF,
77 TOK_INT,
78 TOK_SHORT,
79 TOK_LONG,
80 TOK_HYPER,
81 TOK_UNSIGNED,
82 TOK_FLOAT,
83 TOK_DOUBLE,
84 TOK_QUAD,
85 TOK_OPAQUE,
86 TOK_CHAR,
87 TOK_STRING,
88 TOK_BOOL,
89 TOK_VOID,
90 TOK_ONEWAY,
91 TOK_PROGRAM,
92 TOK_VERSION,
93 TOK_EOF
95 typedef enum tok_kind tok_kind;
98 * a token
100 struct token {
101 tok_kind kind;
102 char *str;
104 typedef struct token token;
107 * routine interface
109 extern void scan(tok_kind, token *);
110 extern void scan2(tok_kind, tok_kind, token *);
111 extern void scan3(tok_kind, tok_kind, tok_kind, token *);
112 extern void scan_num(token *);
113 extern void peek(token *);
114 extern int peekscan(tok_kind, token *);
115 extern void get_token(token *);
117 #ifdef __cplusplus
119 #endif
121 #endif /* _RPC_SCAN_H */