/* @(#)rpc←parse.h 1.1 90/10/29 (C) 1987 SMI */ /* * rpc←parse.h, Definitions for the RPCL parser * Copyright (C) 1987, Sun Microsystems, Inc. */ enum defkind { DEF←CONST, DEF←STRUCT, DEF←UNION, DEF←ENUM, DEF←TYPEDEF, DEF←PROGRAM }; typedef enum defkind defkind; typedef char *const←def; enum relation { REL←VECTOR, /* fixed length array */ REL←ARRAY, /* variable length array */ REL←POINTER, /* pointer */ REL←ALIAS, /* simple */ }; typedef enum relation relation; struct typedef←def { char *old←prefix; char *old←type; relation rel; char *array←max; }; typedef struct typedef←def typedef←def; struct enumval←list { char *name; char *assignment; struct enumval←list *next; }; typedef struct enumval←list enumval←list; struct enum←def { enumval←list *vals; }; typedef struct enum←def enum←def; struct declaration { char *prefix; char *type; char *name; relation rel; char *array←max; }; typedef struct declaration declaration; struct decl←list { declaration decl; struct decl←list *next; }; typedef struct decl←list decl←list; struct struct←def { decl←list *decls; }; typedef struct struct←def struct←def; struct case←list { char *case←name; declaration case←decl; struct case←list *next; }; typedef struct case←list case←list; struct union←def { declaration enum←decl; case←list *cases; declaration *default←decl; }; typedef struct union←def union←def; struct proc←list { char *proc←name; char *proc←num; char *arg←type; char *arg←prefix; char *res←type; char *res←prefix; struct proc←list *next; }; typedef struct proc←list proc←list; struct version←list { char *vers←name; char *vers←num; proc←list *procs; struct version←list *next; }; typedef struct version←list version←list; struct program←def { char *prog←num; version←list *versions; }; typedef struct program←def program←def; struct definition { char *def←name; defkind def←kind; union { const←def co; struct←def st; union←def un; enum←def en; typedef←def ty; program←def pr; } def; }; typedef struct definition definition; definition *get←definition();