1*15567Sedward /* 2*15567Sedward * @(#)context.h 3.1 83/11/22 3*15567Sedward */ 4*15567Sedward 5*15567Sedward struct context { 6*15567Sedward struct context *x_link; /* nested contexts */ 7*15567Sedward char x_type; 8*15567Sedward union { /* input info */ 9*15567Sedward struct { 10*15567Sedward char *X_filename; 11*15567Sedward FILE *X_fp; 12*15567Sedward char X_bol; 13*15567Sedward int X_lineno; 14*15567Sedward int X_errlineno; 15*15567Sedward struct ww *X_errwin; 16*15567Sedward char X_baderr; 17*15567Sedward } x_f; 18*15567Sedward struct { 19*15567Sedward char *X_buf; 20*15567Sedward char *X_bufp; 21*15567Sedward } x_b; 22*15567Sedward } x_un; 23*15567Sedward int x_token; /* holding place for token */ 24*15567Sedward struct value x_val; 25*15567Sedward unsigned x_erred :1; /* parser error flags */ 26*15567Sedward unsigned x_synerred :1; 27*15567Sedward unsigned x_abort :1; 28*15567Sedward }; 29*15567Sedward #define x_buf x_un.x_b.X_buf 30*15567Sedward #define x_bufp x_un.x_b.X_bufp 31*15567Sedward #define x_filename x_un.x_f.X_filename 32*15567Sedward #define x_fp x_un.x_f.X_fp 33*15567Sedward #define x_lineno x_un.x_f.X_lineno 34*15567Sedward #define x_errlineno x_un.x_f.X_errlineno 35*15567Sedward #define x_bol x_un.x_f.X_bol 36*15567Sedward #define x_errwin x_un.x_f.X_errwin 37*15567Sedward #define x_baderr x_un.x_f.X_baderr 38*15567Sedward 39*15567Sedward #define X_FILE 1 40*15567Sedward #define X_BUF 2 41*15567Sedward 42*15567Sedward struct context cx; 43*15567Sedward 44*15567Sedward struct context *x_alloc(); 45