glibc/sunrpc/rpc_scan.h

108 lines
2.6 KiB
C

/*
* Sun RPC is a product of Sun Microsystems, Inc. and is provided for
* unrestricted use provided that this legend is included on all tape
* media and as a part of the software program in whole or part. Users
* may copy or modify Sun RPC without charge, but are not authorized
* to license or distribute it to anyone else except as part of a product or
* program developed by the user or with the express written consent of
* Sun Microsystems, Inc.
*
* SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
* WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
* PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
*
* Sun RPC is provided with no support and without any obligation on the
* part of Sun Microsystems, Inc. to assist in its use, correction,
* modification or enhancement.
*
* SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
* INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
* OR ANY PART THEREOF.
*
* In no event will Sun Microsystems, Inc. be liable for any lost revenue
* or profits or other special, indirect and consequential damages, even if
* Sun has been advised of the possibility of such damages.
*
* Sun Microsystems, Inc.
* 2550 Garcia Avenue
* Mountain View, California 94043
*/
/* @(#)rpc_scan.h 1.3 90/08/29 (C) 1987 SMI */
/*
* rpc_scan.h, Definitions for the RPCL scanner
*/
/*
* kinds of tokens
*/
enum tok_kind {
TOK_IDENT,
TOK_CHARCONST,
TOK_STRCONST,
TOK_LPAREN,
TOK_RPAREN,
TOK_LBRACE,
TOK_RBRACE,
TOK_LBRACKET,
TOK_RBRACKET,
TOK_LANGLE,
TOK_RANGLE,
TOK_STAR,
TOK_COMMA,
TOK_EQUAL,
TOK_COLON,
TOK_SEMICOLON,
TOK_CONST,
TOK_STRUCT,
TOK_UNION,
TOK_SWITCH,
TOK_CASE,
TOK_DEFAULT,
TOK_ENUM,
TOK_TYPEDEF,
TOK_INT,
TOK_SHORT,
TOK_LONG,
TOK_HYPER,
TOK_UNSIGNED,
TOK_FLOAT,
TOK_DOUBLE,
TOK_OPAQUE,
TOK_CHAR,
TOK_STRING,
TOK_BOOL,
TOK_VOID,
TOK_PROGRAM,
TOK_VERSION,
TOK_EOF
};
typedef enum tok_kind tok_kind;
/*
* a token
*/
struct token {
tok_kind kind;
const char *str;
};
typedef struct token token;
/*
* routine interface
*/
void scan(tok_kind expect, token *tokp);
void scan2(tok_kind expect1, tok_kind expect2, token *tokp);
void scan3(tok_kind expect1, tok_kind expect2, tok_kind expect3, token *tokp);
void scan_num(token *tokp);
void peek(token *tokp);
int peekscan(tok_kind expect, token *tokp);
void get_token(token *tokp);
void expected1(tok_kind exp1) __attribute__ ((noreturn));
void expected2(tok_kind exp1, tok_kind exp2) __attribute__ ((noreturn));
void expected3(tok_kind exp1, tok_kind exp2, tok_kind exp3)
__attribute__ ((noreturn));