#ifndef literal_defined #define literal_defined #include #ifndef PROTO #ifdef __STDC__ #define PROTO(x) x #else #define PROTO(x) /**/ #endif #endif typedef enum { integer, intprim, floatr, doubleprim, floatprim, charr, charprim, string, stringprim, clitlit, norepi, norepr, noreps } Tliteral; typedef struct { Tliteral tag; } *literal; #ifdef __GNUC__ Tliteral tliteral(literal t); extern __inline__ Tliteral tliteral(literal t) { return(t -> tag); } #else /* ! __GNUC__ */ extern Tliteral tliteral PROTO((literal)); #endif /* ! __GNUC__ */ struct Sinteger { Tliteral tag; stringId Xginteger; }; struct Sintprim { Tliteral tag; stringId Xgintprim; }; struct Sfloatr { Tliteral tag; stringId Xgfloatr; }; struct Sdoubleprim { Tliteral tag; stringId Xgdoubleprim; }; struct Sfloatprim { Tliteral tag; stringId Xgfloatprim; }; struct Scharr { Tliteral tag; hstring Xgchar; }; struct Scharprim { Tliteral tag; hstring Xgcharprim; }; struct Sstring { Tliteral tag; hstring Xgstring; }; struct Sstringprim { Tliteral tag; hstring Xgstringprim; }; struct Sclitlit { Tliteral tag; stringId Xgclitlit; stringId Xgclitlit_kind; }; struct Snorepi { Tliteral tag; stringId Xgnorepi; }; struct Snorepr { Tliteral tag; stringId Xgnorepr_n; stringId Xgnorepr_d; }; struct Snoreps { Tliteral tag; hstring Xgnoreps; }; extern literal mkinteger PROTO((stringId)); #ifdef __GNUC__ stringId *Rginteger PROTO((struct Sinteger *)); extern __inline__ stringId *Rginteger(struct Sinteger *t) { #ifdef UGEN_DEBUG if(t -> tag != integer) fprintf(stderr,"ginteger: illegal selection; was %d\n", t -> tag); #endif /* UGEN_DEBUG */ return(& t -> Xginteger); } #else /* ! __GNUC__ */ extern stringId *Rginteger PROTO((struct Sinteger *)); #endif /* ! __GNUC__ */ #define ginteger(xyzxyz) (*Rginteger((struct Sinteger *) (xyzxyz))) extern literal mkintprim PROTO((stringId)); #ifdef __GNUC__ stringId *Rgintprim PROTO((struct Sintprim *)); extern __inline__ stringId *Rgintprim(struct Sintprim *t) { #ifdef UGEN_DEBUG if(t -> tag != intprim) fprintf(stderr,"gintprim: illegal selection; was %d\n", t -> tag); #endif /* UGEN_DEBUG */ return(& t -> Xgintprim); } #else /* ! __GNUC__ */ extern stringId *Rgintprim PROTO((struct Sintprim *)); #endif /* ! __GNUC__ */ #define gintprim(xyzxyz) (*Rgintprim((struct Sintprim *) (xyzxyz))) extern literal mkfloatr PROTO((stringId)); #ifdef __GNUC__ stringId *Rgfloatr PROTO((struct Sfloatr *)); extern __inline__ stringId *Rgfloatr(struct Sfloatr *t) { #ifdef UGEN_DEBUG if(t -> tag != floatr) fprintf(stderr,"gfloatr: illegal selection; was %d\n", t -> tag); #endif /* UGEN_DEBUG */ return(& t -> Xgfloatr); } #else /* ! __GNUC__ */ extern stringId *Rgfloatr PROTO((struct Sfloatr *)); #endif /* ! __GNUC__ */ #define gfloatr(xyzxyz) (*Rgfloatr((struct Sfloatr *) (xyzxyz))) extern literal mkdoubleprim PROTO((stringId)); #ifdef __GNUC__ stringId *Rgdoubleprim PROTO((struct Sdoubleprim *)); extern __inline__ stringId *Rgdoubleprim(struct Sdoubleprim *t) { #ifdef UGEN_DEBUG if(t -> tag != doubleprim) fprintf(stderr,"gdoubleprim: illegal selection; was %d\n", t -> tag); #endif /* UGEN_DEBUG */ return(& t -> Xgdoubleprim); } #else /* ! __GNUC__ */ extern stringId *Rgdoubleprim PROTO((struct Sdoubleprim *)); #endif /* ! __GNUC__ */ #define gdoubleprim(xyzxyz) (*Rgdoubleprim((struct Sdoubleprim *) (xyzxyz))) extern literal mkfloatprim PROTO((stringId)); #ifdef __GNUC__ stringId *Rgfloatprim PROTO((struct Sfloatprim *)); extern __inline__ stringId *Rgfloatprim(struct Sfloatprim *t) { #ifdef UGEN_DEBUG if(t -> tag != floatprim) fprintf(stderr,"gfloatprim: illegal selection; was %d\n", t -> tag); #endif /* UGEN_DEBUG */ return(& t -> Xgfloatprim); } #else /* ! __GNUC__ */ extern stringId *Rgfloatprim PROTO((struct Sfloatprim *)); #endif /* ! __GNUC__ */ #define gfloatprim(xyzxyz) (*Rgfloatprim((struct Sfloatprim *) (xyzxyz))) extern literal mkcharr PROTO((hstring)); #ifdef __GNUC__ hstring *Rgchar PROTO((struct Scharr *)); extern __inline__ hstring *Rgchar(struct Scharr *t) { #ifdef UGEN_DEBUG if(t -> tag != charr) fprintf(stderr,"gchar: illegal selection; was %d\n", t -> tag); #endif /* UGEN_DEBUG */ return(& t -> Xgchar); } #else /* ! __GNUC__ */ extern hstring *Rgchar PROTO((struct Scharr *)); #endif /* ! __GNUC__ */ #define gchar(xyzxyz) (*Rgchar((struct Scharr *) (xyzxyz))) extern literal mkcharprim PROTO((hstring)); #ifdef __GNUC__ hstring *Rgcharprim PROTO((struct Scharprim *)); extern __inline__ hstring *Rgcharprim(struct Scharprim *t) { #ifdef UGEN_DEBUG if(t -> tag != charprim) fprintf(stderr,"gcharprim: illegal selection; was %d\n", t -> tag); #endif /* UGEN_DEBUG */ return(& t -> Xgcharprim); } #else /* ! __GNUC__ */ extern hstring *Rgcharprim PROTO((struct Scharprim *)); #endif /* ! __GNUC__ */ #define gcharprim(xyzxyz) (*Rgcharprim((struct Scharprim *) (xyzxyz))) extern literal mkstring PROTO((hstring)); #ifdef __GNUC__ hstring *Rgstring PROTO((struct Sstring *)); extern __inline__ hstring *Rgstring(struct Sstring *t) { #ifdef UGEN_DEBUG if(t -> tag != string) fprintf(stderr,"gstring: illegal selection; was %d\n", t -> tag); #endif /* UGEN_DEBUG */ return(& t -> Xgstring); } #else /* ! __GNUC__ */ extern hstring *Rgstring PROTO((struct Sstring *)); #endif /* ! __GNUC__ */ #define gstring(xyzxyz) (*Rgstring((struct Sstring *) (xyzxyz))) extern literal mkstringprim PROTO((hstring)); #ifdef __GNUC__ hstring *Rgstringprim PROTO((struct Sstringprim *)); extern __inline__ hstring *Rgstringprim(struct Sstringprim *t) { #ifdef UGEN_DEBUG if(t -> tag != stringprim) fprintf(stderr,"gstringprim: illegal selection; was %d\n", t -> tag); #endif /* UGEN_DEBUG */ return(& t -> Xgstringprim); } #else /* ! __GNUC__ */ extern hstring *Rgstringprim PROTO((struct Sstringprim *)); #endif /* ! __GNUC__ */ #define gstringprim(xyzxyz) (*Rgstringprim((struct Sstringprim *) (xyzxyz))) extern literal mkclitlit PROTO((stringId, stringId)); #ifdef __GNUC__ stringId *Rgclitlit PROTO((struct Sclitlit *)); extern __inline__ stringId *Rgclitlit(struct Sclitlit *t) { #ifdef UGEN_DEBUG if(t -> tag != clitlit) fprintf(stderr,"gclitlit: illegal selection; was %d\n", t -> tag); #endif /* UGEN_DEBUG */ return(& t -> Xgclitlit); } #else /* ! __GNUC__ */ extern stringId *Rgclitlit PROTO((struct Sclitlit *)); #endif /* ! __GNUC__ */ #define gclitlit(xyzxyz) (*Rgclitlit((struct Sclitlit *) (xyzxyz))) #ifdef __GNUC__ stringId *Rgclitlit_kind PROTO((struct Sclitlit *)); extern __inline__ stringId *Rgclitlit_kind(struct Sclitlit *t) { #ifdef UGEN_DEBUG if(t -> tag != clitlit) fprintf(stderr,"gclitlit_kind: illegal selection; was %d\n", t -> tag); #endif /* UGEN_DEBUG */ return(& t -> Xgclitlit_kind); } #else /* ! __GNUC__ */ extern stringId *Rgclitlit_kind PROTO((struct Sclitlit *)); #endif /* ! __GNUC__ */ #define gclitlit_kind(xyzxyz) (*Rgclitlit_kind((struct Sclitlit *) (xyzxyz))) extern literal mknorepi PROTO((stringId)); #ifdef __GNUC__ stringId *Rgnorepi PROTO((struct Snorepi *)); extern __inline__ stringId *Rgnorepi(struct Snorepi *t) { #ifdef UGEN_DEBUG if(t -> tag != norepi) fprintf(stderr,"gnorepi: illegal selection; was %d\n", t -> tag); #endif /* UGEN_DEBUG */ return(& t -> Xgnorepi); } #else /* ! __GNUC__ */ extern stringId *Rgnorepi PROTO((struct Snorepi *)); #endif /* ! __GNUC__ */ #define gnorepi(xyzxyz) (*Rgnorepi((struct Snorepi *) (xyzxyz))) extern literal mknorepr PROTO((stringId, stringId)); #ifdef __GNUC__ stringId *Rgnorepr_n PROTO((struct Snorepr *)); extern __inline__ stringId *Rgnorepr_n(struct Snorepr *t) { #ifdef UGEN_DEBUG if(t -> tag != norepr) fprintf(stderr,"gnorepr_n: illegal selection; was %d\n", t -> tag); #endif /* UGEN_DEBUG */ return(& t -> Xgnorepr_n); } #else /* ! __GNUC__ */ extern stringId *Rgnorepr_n PROTO((struct Snorepr *)); #endif /* ! __GNUC__ */ #define gnorepr_n(xyzxyz) (*Rgnorepr_n((struct Snorepr *) (xyzxyz))) #ifdef __GNUC__ stringId *Rgnorepr_d PROTO((struct Snorepr *)); extern __inline__ stringId *Rgnorepr_d(struct Snorepr *t) { #ifdef UGEN_DEBUG if(t -> tag != norepr) fprintf(stderr,"gnorepr_d: illegal selection; was %d\n", t -> tag); #endif /* UGEN_DEBUG */ return(& t -> Xgnorepr_d); } #else /* ! __GNUC__ */ extern stringId *Rgnorepr_d PROTO((struct Snorepr *)); #endif /* ! __GNUC__ */ #define gnorepr_d(xyzxyz) (*Rgnorepr_d((struct Snorepr *) (xyzxyz))) extern literal mknoreps PROTO((hstring)); #ifdef __GNUC__ hstring *Rgnoreps PROTO((struct Snoreps *)); extern __inline__ hstring *Rgnoreps(struct Snoreps *t) { #ifdef UGEN_DEBUG if(t -> tag != noreps) fprintf(stderr,"gnoreps: illegal selection; was %d\n", t -> tag); #endif /* UGEN_DEBUG */ return(& t -> Xgnoreps); } #else /* ! __GNUC__ */ extern hstring *Rgnoreps PROTO((struct Snoreps *)); #endif /* ! __GNUC__ */ #define gnoreps(xyzxyz) (*Rgnoreps((struct Snoreps *) (xyzxyz))) #endif