Blob


1 extern char errbuf[200];
2 #define ERROR sprintf(errbuf,
3 #define FATAL ), yyerror(errbuf), exit(1)
4 #define WARNING ), yyerror(errbuf)
6 #define dprintf if(dbg)printf
8 #define String 01
9 #define Macro 02
10 #define File 04
11 #define Char 010
12 #define Thru 020
13 #define Free 040
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
21 #define MAXNUM 200
23 #define XFLAG 01
24 #define YFLAG 02
26 #define INTICK 01
27 #define OUTICK 02
29 #define BOT 01
30 #define TOP 02
31 #define RIGHT 04
32 #define LEFT 010
34 #define RJUST 01
35 #define LJUST 02
36 #define ABOVE 04
37 #define BELOW 010
39 typedef struct infile {
40 FILE *fin;
41 char *fname;
42 int lineno;
43 } Infile;
45 typedef struct { /* input source */
46 int type; /* Macro, String, File */
47 char *sp; /* if String or Macro */
48 } Src;
50 extern Src src[], *srcp; /* input source stack */
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;
58 extern Infile infile[10];
59 extern Infile *curfile;
61 typedef struct {
62 struct obj *obj;
63 double x, y;
64 } Point;
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;
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;
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;
98 extern YYSTYPE yylval, yyval;
100 extern int dbg;
102 extern int ntext;
103 extern double num[MAXNUM];
104 extern int nnum;
105 extern int ntick, tside;
107 extern char *tostring(char *);
108 extern char *grow(char *, char *, int, int);
110 extern int lineno;
111 extern int synerr;
112 extern int codegen;
113 extern char *tempfile;
114 extern FILE *tfd;
116 extern Point ptmin, ptmax;
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;
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")
132 #define min(x,y) (((x) <= (y)) ? (x) : (y))
133 #define max(x,y) (((x) >= (y)) ? (x) : (y))
135 extern char *unsharp(char*);
137 extern void yyerror(char *);
138 extern void coord_x(Point);
139 extern void coord_y(Point);
140 extern void coordlog(int);
141 extern void coord(Obj *);
142 extern void resetcoord(Obj *);
143 extern void savenum(int, double);
144 extern void setjust(int);
145 extern void setsize(int, double);
146 extern void range(Point);
147 extern void halfrange(Obj *, int, double);
148 extern Obj *lookup(char *, int);
149 extern double getvar(Obj *);
150 extern double setvar(Obj *, double);
151 extern Point makepoint(Obj *, double, double);
152 extern Attr *makefattr(int, double);
153 extern Attr *makesattr(char *);
154 extern Attr *makeattr(int, double, char *, int, int);
155 extern Attr *addattr(Attr *, Attr *);
156 extern void freeattr(Attr *);
157 extern char *slprint(Attr *);
158 extern char *juststr(int);
159 extern char *sprntf(char *, Attr *);
160 extern void forloop(Obj *, double, double, int, double, char *);
161 extern void nextfor(void);
162 extern void endfor(void);
163 extern char *ifstat(double, char *, char *);
164 extern void frame(void);
165 extern void frameht(double);
166 extern void framewid(double);
167 extern void frameside(int, Attr *);
168 extern void pushsrc(int, char *);
169 extern void popsrc(void);
170 extern void definition(char *);
171 extern char *delimstr(char *);
172 extern int baldelim(int, char *);
173 extern void dodef(Obj *);
174 extern int getarg(char *);
175 extern int input(void);
176 extern int nextchar(void);
177 extern void do_thru(void);
178 extern int unput(int);
179 extern void pbstr(char *);
180 extern double errcheck(double, char *);
181 extern void yyerror(char *);
182 extern void eprint(void);
183 extern int yywrap(void);
184 extern void copyfile(char *);
185 extern void copydef(Obj *);
186 extern Obj *copythru(char *);
187 extern char *addnewline(char *);
188 extern void copyuntil(char *);
189 extern void copy(void);
190 extern void shell_init(void);
191 extern void shell_text(char *);
192 extern void shell_exec(void);
193 extern void labelwid(double);
194 extern void labelmove(int, double);
195 extern void label(int, Attr *);
196 extern void lab_adjust(void);
197 extern char *sizeit(Attr *);
198 extern void line(int, Point, Point, Attr *);
199 extern void circle(double, Point);
200 extern char *xyname(Point);
201 extern void pic(char *);
202 extern void numlist(void);
203 extern void plot(Attr *, Point);
204 extern void plotnum(double, char *, Point);
205 extern void drawdesc(int, Obj *, Attr *, char *);
206 extern void next(Obj *, Point, Attr *);
207 #define print grapprint
208 extern void print(void);
209 extern void endstat(void);
210 extern void graph(char *);
211 extern void setup(void);
212 extern void do_first(void);
213 extern void reset(void);
214 extern void opentemp(void);
215 extern void savetick(double, char *);
216 extern void dflt_tick(double);
217 extern void tickside(int);
218 extern void tickoff(int);
219 extern void gridtickoff(void);
220 extern void setlist(void);
221 extern void tickdir(int, double, int);
222 extern void ticks(void);
223 extern double modfloor(double, double);
224 extern double modceil(double, double);
225 extern void do_autoticks(Obj *);
226 extern void logtick(double, double, double);
227 extern Obj *setauto(void);
228 extern void autoside(Obj *, int);
229 extern void autolog(Obj *, int);
230 extern void iterator(double, double, int, double, char *);
231 extern void ticklist(Obj *, int);
232 extern void print_ticks(int, int, Obj *, char *, char *);
233 extern void maketick(int, char *, int, int, double, char *, char *, char *);
234 extern void griddesc(Attr *);
235 extern void gridlist(Obj *);
236 extern char *desc_str(Attr *);
237 extern int sidelog(int, int);
239 extern Obj *objlist;