| /* |
| * Copyright (c) 2009, Sun Microsystems, Inc. |
| * All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions are met: |
| * - Redistributions of source code must retain the above copyright notice, |
| * this list of conditions and the following disclaimer. |
| * - Redistributions in binary form must reproduce the above copyright notice, |
| * this list of conditions and the following disclaimer in the documentation |
| * and/or other materials provided with the distribution. |
| * - Neither the name of Sun Microsystems, Inc. nor the names of its |
| * contributors may be used to endorse or promote products derived |
| * from this software without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
| * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
| * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
| * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
| * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
| * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
| * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
| * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
| * POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| /* @(#)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_INT32, |
| 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; |
| char *str; |
| }; |
| typedef struct token token; |
| |
| |
| /* |
| * routine interface |
| */ |
| void scan(); |
| void scan2(); |
| void scan3(); |
| void scan_num(); |
| void peek(); |
| int peekscan(); |
| void get_token(); |
| void expected1(tok_kind); |
| void expected2(tok_kind, tok_kind); |
| void expected3(tok_kind, tok_kind, tok_kind); |
| |