Blob


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