2 |
- |
1 |
extern char errbuf[200];
|
|
|
2 |
#define ERROR sprintf(errbuf,
|
|
|
3 |
#define FATAL ), yyerror(errbuf), exit(1)
|
|
|
4 |
#define WARNING ), yyerror(errbuf)
|
|
|
5 |
|
|
|
6 |
#define dprintf if(dbg)printf
|
|
|
7 |
|
|
|
8 |
#define String 01
|
|
|
9 |
#define Macro 02
|
|
|
10 |
#define File 04
|
|
|
11 |
#define Char 010
|
|
|
12 |
#define Thru 020
|
|
|
13 |
#define Free 040
|
|
|
14 |
|
|
|
15 |
#define MARGIN 0.07 /* default margin around data */
|
|
|
16 |
#define SLOP 1.001 /* slop for limits of for loops */
|
|
|
17 |
#define FRAMEWID 3 /* default width for boxes and ellipses */
|
|
|
18 |
#define FRAMEHT 2 /* default height and line length */
|
|
|
19 |
#define TICKLEN 0.1
|
|
|
20 |
|
|
|
21 |
#define MAXNUM 200
|
|
|
22 |
|
|
|
23 |
#define XFLAG 01
|
|
|
24 |
#define YFLAG 02
|
|
|
25 |
|
|
|
26 |
#define INTICK 01
|
|
|
27 |
#define OUTICK 02
|
|
|
28 |
|
|
|
29 |
#define BOT 01
|
|
|
30 |
#define TOP 02
|
|
|
31 |
#define RIGHT 04
|
|
|
32 |
#define LEFT 010
|
|
|
33 |
|
|
|
34 |
#define RJUST 01
|
|
|
35 |
#define LJUST 02
|
|
|
36 |
#define ABOVE 04
|
|
|
37 |
#define BELOW 010
|
|
|
38 |
|
|
|
39 |
typedef struct infile {
|
|
|
40 |
FILE *fin;
|
|
|
41 |
char *fname;
|
|
|
42 |
int lineno;
|
|
|
43 |
} Infile;
|
|
|
44 |
|
|
|
45 |
typedef struct { /* input source */
|
|
|
46 |
int type; /* Macro, String, File */
|
|
|
47 |
char *sp; /* if String or Macro */
|
|
|
48 |
} Src;
|
|
|
49 |
|
|
|
50 |
extern Src src[], *srcp; /* input source stack */
|
|
|
51 |
|
|
|
52 |
#define MAXARGS 100
|
|
|
53 |
typedef struct { /* argument stack */
|
|
|
54 |
char *argstk[MAXARGS]; /* pointers to args */
|
|
|
55 |
char *argval; /* points to space containing args */
|
|
|
56 |
} Arg;
|
|
|
57 |
|
|
|
58 |
extern Infile infile[10];
|
|
|
59 |
extern Infile *curfile;
|
|
|
60 |
|
|
|
61 |
typedef struct {
|
|
|
62 |
struct obj *obj;
|
|
|
63 |
double x, y;
|
|
|
64 |
} Point;
|
|
|
65 |
|
|
|
66 |
typedef struct attr { /* e.g., DASH 1.1 or "..." rjust size *.5 */
|
|
|
67 |
int type;
|
|
|
68 |
double fval;
|
|
|
69 |
char *sval;
|
|
|
70 |
int just; /* justification, for STRING type */
|
|
|
71 |
int op; /* optional operator, ditto */
|
|
|
72 |
struct attr *next;
|
|
|
73 |
} Attr;
|
|
|
74 |
|
|
|
75 |
typedef struct obj { /* a name and its properties */
|
|
|
76 |
char *name;
|
|
|
77 |
char *val; /* body of define, etc. */
|
|
|
78 |
double fval; /* if a numeric variable */
|
|
|
79 |
Point pt; /* usually for max and min */
|
|
|
80 |
Point pt1;
|
|
|
81 |
int type; /* NAME, DEFNAME, ... */
|
|
|
82 |
int first; /* 1 after 1st item seen */
|
|
|
83 |
int coord; /* 1 if coord system specified for this name */
|
|
|
84 |
int log; /* x, y, or z (= x+y) */
|
|
|
85 |
Attr *attr; /* DASH, etc., for now */
|
|
|
86 |
struct obj *next;
|
|
|
87 |
} Obj;
|
|
|
88 |
|
|
|
89 |
typedef union { /* the yacc stack type */
|
|
|
90 |
int i;
|
|
|
91 |
char *p;
|
|
|
92 |
double f;
|
|
|
93 |
Point pt;
|
|
|
94 |
Obj *op;
|
|
|
95 |
Attr *ap;
|
|
|
96 |
} YYSTYPE;
|
|
|
97 |
|
|
|
98 |
extern YYSTYPE yylval, yyval;
|
|
|
99 |
|
|
|
100 |
extern int dbg;
|
|
|
101 |
|
|
|
102 |
extern int ntext;
|
|
|
103 |
extern double num[MAXNUM];
|
|
|
104 |
extern int nnum;
|
|
|
105 |
extern int ntick, tside;
|
|
|
106 |
|
|
|
107 |
extern char *tostring(char *);
|
|
|
108 |
extern char *grow(char *, char *, int, int);
|
|
|
109 |
|
|
|
110 |
extern int lineno;
|
|
|
111 |
extern int synerr;
|
|
|
112 |
extern int codegen;
|
|
|
113 |
extern char tempfile[];
|
|
|
114 |
extern FILE *tfd;
|
|
|
115 |
|
|
|
116 |
extern Point ptmin, ptmax;
|
|
|
117 |
|
|
|
118 |
extern char *dflt_coord;
|
|
|
119 |
extern char *curr_coord;
|
|
|
120 |
extern int ncoord;
|
|
|
121 |
extern int auto_x;
|
|
|
122 |
extern double margin;
|
|
|
123 |
extern int autoticks;
|
|
|
124 |
extern int pointsize, ps_set;
|
|
|
125 |
|
|
|
126 |
|
|
|
127 |
#define logit(x) (x) = log10(x)
|
|
|
128 |
#define Log10(x) errcheck(log10(x), "log")
|
|
|
129 |
#define Exp(x) errcheck(exp(x), "exp")
|
|
|
130 |
#define Sqrt(x) errcheck(sqrt(x), "sqrt")
|
|
|
131 |
|
|
|
132 |
#define min(x,y) (((x) <= (y)) ? (x) : (y))
|
|
|
133 |
#define max(x,y) (((x) >= (y)) ? (x) : (y))
|
|
|
134 |
|
|
|
135 |
extern void yyerror(char *);
|
|
|
136 |
extern void coord_x(Point);
|
|
|
137 |
extern void coord_y(Point);
|
|
|
138 |
extern void coordlog(int);
|
|
|
139 |
extern void coord(Obj *);
|
|
|
140 |
extern void resetcoord(Obj *);
|
|
|
141 |
extern void savenum(int, double);
|
|
|
142 |
extern void setjust(int);
|
|
|
143 |
extern void setsize(int, double);
|
|
|
144 |
extern void range(Point);
|
|
|
145 |
extern void halfrange(Obj *, int, double);
|
|
|
146 |
extern Obj *lookup(char *, int);
|
|
|
147 |
extern double getvar(Obj *);
|
|
|
148 |
extern double setvar(Obj *, double);
|
|
|
149 |
extern Point makepoint(Obj *, double, double);
|
|
|
150 |
extern Attr *makefattr(int, double);
|
|
|
151 |
extern Attr *makesattr(char *);
|
|
|
152 |
extern Attr *makeattr(int, double, char *, int, int);
|
|
|
153 |
extern Attr *addattr(Attr *, Attr *);
|
|
|
154 |
extern void freeattr(Attr *);
|
|
|
155 |
extern char *slprint(Attr *);
|
|
|
156 |
extern char *juststr(int);
|
|
|
157 |
extern char *sprntf(char *, Attr *);
|
|
|
158 |
extern void forloop(Obj *, double, double, int, double, char *);
|
|
|
159 |
extern void nextfor(void);
|
|
|
160 |
extern void endfor(void);
|
|
|
161 |
extern char *ifstat(double, char *, char *);
|
|
|
162 |
extern void frame(void);
|
|
|
163 |
extern void frameht(double);
|
|
|
164 |
extern void framewid(double);
|
|
|
165 |
extern void frameside(int, Attr *);
|
|
|
166 |
extern void pushsrc(int, char *);
|
|
|
167 |
extern void popsrc(void);
|
|
|
168 |
extern void definition(char *);
|
|
|
169 |
extern char *delimstr(char *);
|
|
|
170 |
extern int baldelim(int, char *);
|
|
|
171 |
extern void dodef(Obj *);
|
|
|
172 |
extern int getarg(char *);
|
|
|
173 |
extern int input(void);
|
|
|
174 |
extern int nextchar(void);
|
|
|
175 |
extern void do_thru(void);
|
|
|
176 |
extern int unput(int);
|
|
|
177 |
extern void pbstr(char *);
|
|
|
178 |
extern double errcheck(double, char *);
|
|
|
179 |
extern void yyerror(char *);
|
|
|
180 |
extern void eprint(void);
|
|
|
181 |
extern int yywrap(void);
|
|
|
182 |
extern void copyfile(char *);
|
|
|
183 |
extern void copydef(Obj *);
|
|
|
184 |
extern Obj *copythru(char *);
|
|
|
185 |
extern char *addnewline(char *);
|
|
|
186 |
extern void copyuntil(char *);
|
|
|
187 |
extern void copy(void);
|
|
|
188 |
extern void shell_init(void);
|
|
|
189 |
extern void shell_text(char *);
|
|
|
190 |
extern void shell_exec(void);
|
|
|
191 |
extern void labelwid(double);
|
|
|
192 |
extern void labelmove(int, double);
|
|
|
193 |
extern void label(int, Attr *);
|
|
|
194 |
extern void lab_adjust(void);
|
|
|
195 |
extern char *sizeit(Attr *);
|
|
|
196 |
extern void line(int, Point, Point, Attr *);
|
|
|
197 |
extern void circle(double, Point);
|
|
|
198 |
extern char *xyname(Point);
|
|
|
199 |
extern void pic(char *);
|
|
|
200 |
extern void numlist(void);
|
|
|
201 |
extern void plot(Attr *, Point);
|
|
|
202 |
extern void plotnum(double, char *, Point);
|
|
|
203 |
extern void drawdesc(int, Obj *, Attr *, char *);
|
|
|
204 |
extern void next(Obj *, Point, Attr *);
|
|
|
205 |
extern void print(void);
|
|
|
206 |
extern void endstat(void);
|
|
|
207 |
extern void graph(char *);
|
|
|
208 |
extern void setup(void);
|
|
|
209 |
extern void do_first(void);
|
|
|
210 |
extern void reset(void);
|
|
|
211 |
extern void opentemp(void);
|
|
|
212 |
extern void savetick(double, char *);
|
|
|
213 |
extern void dflt_tick(double);
|
|
|
214 |
extern void tickside(int);
|
|
|
215 |
extern void tickoff(int);
|
|
|
216 |
extern void gridtickoff(void);
|
|
|
217 |
extern void setlist(void);
|
|
|
218 |
extern void tickdir(int, double, int);
|
|
|
219 |
extern void ticks(void);
|
|
|
220 |
extern double modfloor(double, double);
|
|
|
221 |
extern double modceil(double, double);
|
|
|
222 |
extern void do_autoticks(Obj *);
|
|
|
223 |
extern void logtick(double, double, double);
|
|
|
224 |
extern Obj *setauto(void);
|
|
|
225 |
extern void autoside(Obj *, int);
|
|
|
226 |
extern void autolog(Obj *, int);
|
|
|
227 |
extern void iterator(double, double, int, double, char *);
|
|
|
228 |
extern void ticklist(Obj *, int);
|
|
|
229 |
extern void print_ticks(int, int, Obj *, char *, char *);
|
|
|
230 |
extern void maketick(int, char *, int, int, double, char *, char *, char *);
|
|
|
231 |
extern void griddesc(Attr *);
|
|
|
232 |
extern void gridlist(Obj *);
|
|
|
233 |
extern char *desc_str(Attr *);
|
|
|
234 |
extern int sidelog(int, int);
|
|
|
235 |
|
|
|
236 |
extern Obj *objlist;
|