|
|
1.1 ! root 1: /* ! 2: * @(#)context.h 3.7 4/24/85 ! 3: */ ! 4: ! 5: /* ! 6: * Copyright (c) 1983 Regents of the University of California, ! 7: * All rights reserved. Redistribution permitted subject to ! 8: * the terms of the Berkeley Software License Agreement. ! 9: */ ! 10: ! 11: #include <stdio.h> ! 12: ! 13: struct context { ! 14: struct context *x_link; /* nested contexts */ ! 15: char x_type; /* tag for union */ ! 16: union { ! 17: struct { /* input is a file */ ! 18: char *X_filename; /* input file name */ ! 19: FILE *X_fp; /* input stream */ ! 20: short X_lineno; /* current line number */ ! 21: char X_bol; /* at beginning of line */ ! 22: char X_noerr; /* don't report errors */ ! 23: struct ww *X_errwin; /* error window */ ! 24: } x_f; ! 25: struct { /* input is a buffer */ ! 26: char *X_buf; /* input buffer */ ! 27: char *X_bufp; /* current position in buf */ ! 28: struct value *X_arg; /* argument for alias */ ! 29: int X_narg; /* number of arguments */ ! 30: } x_b; ! 31: } x_un; ! 32: /* holding place for current token */ ! 33: int x_token; /* the token */ ! 34: struct value x_val; /* values associated with token */ ! 35: /* parser error flags */ ! 36: unsigned x_erred :1; /* had an error */ ! 37: unsigned x_synerred :1; /* had syntax error */ ! 38: unsigned x_abort :1; /* fatal error */ ! 39: }; ! 40: #define x_buf x_un.x_b.X_buf ! 41: #define x_bufp x_un.x_b.X_bufp ! 42: #define x_arg x_un.x_b.X_arg ! 43: #define x_narg x_un.x_b.X_narg ! 44: #define x_filename x_un.x_f.X_filename ! 45: #define x_fp x_un.x_f.X_fp ! 46: #define x_lineno x_un.x_f.X_lineno ! 47: #define x_bol x_un.x_f.X_bol ! 48: #define x_errwin x_un.x_f.X_errwin ! 49: #define x_noerr x_un.x_f.X_noerr ! 50: ! 51: /* x_type values, 0 is reserved */ ! 52: #define X_FILE 1 /* input is a file */ ! 53: #define X_BUF 2 /* input is a buffer */ ! 54: ! 55: struct context cx; /* the current context */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.