Blame


1 5cedca1b 2004-05-15 devnull #include <stdio.h>
2 5cedca1b 2004-05-15 devnull #include <stdlib.h>
3 5cedca1b 2004-05-15 devnull #include <string.h>
4 10b819c6 2005-01-19 devnull #include <errno.h>
5 749481f2 2006-01-06 devnull #include <inttypes.h>
6 5cedca1b 2004-05-15 devnull
7 b237df90 2004-05-16 devnull #undef sqrt
8 b237df90 2004-05-16 devnull #define sqrt p9_sqrt
9 5b23583d 2005-12-30 devnull #define YYSTYPE uintptr_t /* DEC v. GNU garbage */
10 b237df90 2004-05-16 devnull
11 5cedca1b 2004-05-15 devnull enum charclass {
12 5cedca1b 2004-05-15 devnull OTHER, OLET, ILET, DIG, LPAR, RPAR, SLASH, PLUS, ILETF, ILETJ, VBAR,
13 5cedca1b 2004-05-15 devnull NONE, LAST
14 5cedca1b 2004-05-15 devnull };
15 5cedca1b 2004-05-15 devnull extern int class[LAST][LAST];
16 5cedca1b 2004-05-15 devnull
17 5cedca1b 2004-05-15 devnull #define dprintf if (dbg) printf
18 5cedca1b 2004-05-15 devnull #define max(x,y) (((x) >= (y)) ? (x) : (y)) /* beware of side effects */
19 5cedca1b 2004-05-15 devnull #define min(x,y) (((x) <= (y)) ? (x) : (y))
20 5cedca1b 2004-05-15 devnull
21 fa662c95 2009-09-11 russcox #undef sprintf /* Snow Leopard */
22 fa662c95 2009-09-11 russcox
23 5cedca1b 2004-05-15 devnull extern char errbuf[200];
24 5cedca1b 2004-05-15 devnull extern char *cmdname;
25 5cedca1b 2004-05-15 devnull #define ERROR sprintf(errbuf,
26 5cedca1b 2004-05-15 devnull #define FATAL ), error(1, errbuf)
27 5cedca1b 2004-05-15 devnull #define WARNING ), error(0, errbuf)
28 5cedca1b 2004-05-15 devnull #define SYNTAX ), yyerror(errbuf)
29 5cedca1b 2004-05-15 devnull
30 5cedca1b 2004-05-15 devnull #define ROM '1'
31 5cedca1b 2004-05-15 devnull #define ITAL '2'
32 5cedca1b 2004-05-15 devnull #define BLD '3'
33 5cedca1b 2004-05-15 devnull #define BDIT '4'
34 5cedca1b 2004-05-15 devnull
35 5cedca1b 2004-05-15 devnull #define DEFGAP -999 /* default gap in piles */
36 5cedca1b 2004-05-15 devnull
37 5cedca1b 2004-05-15 devnull extern int dbg;
38 5cedca1b 2004-05-15 devnull extern int ct;
39 5cedca1b 2004-05-15 devnull extern int lp[];
40 5cedca1b 2004-05-15 devnull extern int used[]; /* available registers */
41 5cedca1b 2004-05-15 devnull extern int ps; /* dflt init pt size */
42 5cedca1b 2004-05-15 devnull extern int deltaps; /* default change in ps */
43 5cedca1b 2004-05-15 devnull extern int dps_set; /* 1 => -p option used */
44 5cedca1b 2004-05-15 devnull extern int gsize; /* global size */
45 5cedca1b 2004-05-15 devnull extern int ft; /* default font */
46 5cedca1b 2004-05-15 devnull extern int display; /* 1 => inline, 0 => .EQ/.EN */
47 5cedca1b 2004-05-15 devnull extern int synerr; /* 1 if syntax error in this eqn */
48 5cedca1b 2004-05-15 devnull
49 5cedca1b 2004-05-15 devnull extern char *typesetter; /* typesetter name for -T... */
50 5cedca1b 2004-05-15 devnull extern int minsize; /* min size it can print */
51 5cedca1b 2004-05-15 devnull extern int ttype; /* actual type of typesetter: */
52 5cedca1b 2004-05-15 devnull
53 5cedca1b 2004-05-15 devnull #define DEVCAT 1
54 5cedca1b 2004-05-15 devnull #define DEV202 2
55 5cedca1b 2004-05-15 devnull #define DEVAPS 3
56 5cedca1b 2004-05-15 devnull #define DEVPOST 4
57 5cedca1b 2004-05-15 devnull
58 5cedca1b 2004-05-15 devnull extern double eht[];
59 5cedca1b 2004-05-15 devnull extern double ebase[];
60 5cedca1b 2004-05-15 devnull extern int lfont[];
61 5cedca1b 2004-05-15 devnull extern int rfont[];
62 5cedca1b 2004-05-15 devnull extern int lclass[];
63 5cedca1b 2004-05-15 devnull extern int rclass[];
64 b237df90 2004-05-16 devnull extern YYSTYPE yyval; /* DEC cc wants long */
65 b237df90 2004-05-16 devnull extern YYSTYPE yylval; /* DEC cc wants long */
66 5cedca1b 2004-05-15 devnull extern int eqnreg;
67 5cedca1b 2004-05-15 devnull extern double eqnht;
68 5cedca1b 2004-05-15 devnull extern int lefteq, righteq;
69 5cedca1b 2004-05-15 devnull extern int markline; /* 1 if this EQ/EN contains mark or lineup */
70 5cedca1b 2004-05-15 devnull
71 5cedca1b 2004-05-15 devnull #define TBLSIZE 100
72 5cedca1b 2004-05-15 devnull
73 5cedca1b 2004-05-15 devnull typedef struct s_tbl {
74 5cedca1b 2004-05-15 devnull char *name; /* e.g., "max" or "sum" */
75 5cedca1b 2004-05-15 devnull char *cval; /* e.g., "\\f1max\\fP" */
76 5cedca1b 2004-05-15 devnull int ival; /* or SUM */
77 5cedca1b 2004-05-15 devnull struct s_tbl *next;
78 5cedca1b 2004-05-15 devnull } tbl;
79 5cedca1b 2004-05-15 devnull
80 5cedca1b 2004-05-15 devnull extern char *spaceval; /* use in place of normal \x (for pic) */
81 5cedca1b 2004-05-15 devnull
82 5cedca1b 2004-05-15 devnull #define String 01
83 5cedca1b 2004-05-15 devnull #define Macro 02
84 5cedca1b 2004-05-15 devnull #define File 04
85 5cedca1b 2004-05-15 devnull #define Char 010
86 5cedca1b 2004-05-15 devnull #define Free 040
87 5cedca1b 2004-05-15 devnull
88 5cedca1b 2004-05-15 devnull typedef struct infile {
89 5cedca1b 2004-05-15 devnull FILE *fin;
90 5cedca1b 2004-05-15 devnull char *fname;
91 5cedca1b 2004-05-15 devnull int lineno;
92 5cedca1b 2004-05-15 devnull } Infile;
93 5cedca1b 2004-05-15 devnull
94 5cedca1b 2004-05-15 devnull typedef struct { /* input source */
95 5cedca1b 2004-05-15 devnull int type; /* Macro, String, File */
96 5cedca1b 2004-05-15 devnull char *sp; /* if String or Macro */
97 5cedca1b 2004-05-15 devnull } Src;
98 5cedca1b 2004-05-15 devnull
99 5cedca1b 2004-05-15 devnull extern Src src[], *srcp; /* input source stack */
100 5cedca1b 2004-05-15 devnull
101 5cedca1b 2004-05-15 devnull #define MAXARGS 20
102 5cedca1b 2004-05-15 devnull typedef struct { /* argument stack */
103 5cedca1b 2004-05-15 devnull char *argstk[MAXARGS]; /* pointers to args */
104 5cedca1b 2004-05-15 devnull char *argval; /* points to space containing args */
105 5cedca1b 2004-05-15 devnull } Arg;
106 5cedca1b 2004-05-15 devnull
107 5cedca1b 2004-05-15 devnull typedef struct { /* font number and name */
108 5cedca1b 2004-05-15 devnull int ft;
109 5cedca1b 2004-05-15 devnull char name[10];
110 5cedca1b 2004-05-15 devnull } Font;
111 5cedca1b 2004-05-15 devnull
112 5cedca1b 2004-05-15 devnull extern Font ftstack[];
113 5cedca1b 2004-05-15 devnull extern Font *ftp;
114 5cedca1b 2004-05-15 devnull
115 5cedca1b 2004-05-15 devnull extern int szstack[];
116 5cedca1b 2004-05-15 devnull extern int nszstack;
117 5cedca1b 2004-05-15 devnull
118 5cedca1b 2004-05-15 devnull extern Infile infile[10];
119 5cedca1b 2004-05-15 devnull extern Infile *curfile;
120 5cedca1b 2004-05-15 devnull
121 5cedca1b 2004-05-15 devnull extern tbl *lookup(tbl **tblp, char *name);
122 5cedca1b 2004-05-15 devnull extern void install(tbl **tblp, char *name, char *cval, int ival);
123 5cedca1b 2004-05-15 devnull extern tbl *keytbl[], *deftbl[], *restbl[], *ftunetbl[];
124 5cedca1b 2004-05-15 devnull
125 5cedca1b 2004-05-15 devnull extern int salloc(void);
126 5cedca1b 2004-05-15 devnull extern void sfree(int);
127 5cedca1b 2004-05-15 devnull extern void nrwid(int, int, int);
128 5cedca1b 2004-05-15 devnull extern char *ABSPS(int);
129 5cedca1b 2004-05-15 devnull extern char *DPS(int, int);
130 5cedca1b 2004-05-15 devnull extern int EFFPS(int);
131 5cedca1b 2004-05-15 devnull extern double EM(double, int);
132 5cedca1b 2004-05-15 devnull extern double REL(double, int);
133 5cedca1b 2004-05-15 devnull extern char *pad(int);
134 5cedca1b 2004-05-15 devnull extern void getstr(char *, int);
135 5cedca1b 2004-05-15 devnull extern char *strsave(char *);
136 5cedca1b 2004-05-15 devnull
137 5cedca1b 2004-05-15 devnull extern int input(void);
138 5cedca1b 2004-05-15 devnull extern int unput(int);
139 5cedca1b 2004-05-15 devnull extern void pbstr(char *);
140 5cedca1b 2004-05-15 devnull extern void error(int, char *);
141 5cedca1b 2004-05-15 devnull extern void yyerror(char *);
142 5cedca1b 2004-05-15 devnull
143 5cedca1b 2004-05-15 devnull extern void diacrit(int, int);
144 5cedca1b 2004-05-15 devnull extern void eqnbox(int, int, int);
145 5cedca1b 2004-05-15 devnull extern void setfont(char *);
146 5cedca1b 2004-05-15 devnull extern void font(int, int);
147 5cedca1b 2004-05-15 devnull extern void globfont(void);
148 5cedca1b 2004-05-15 devnull extern void fatbox(int);
149 5cedca1b 2004-05-15 devnull extern void fromto(int, int, int);
150 5cedca1b 2004-05-15 devnull extern void funny(int);
151 5cedca1b 2004-05-15 devnull extern void integral(int, int, int);
152 5cedca1b 2004-05-15 devnull extern void setintegral(void);
153 5cedca1b 2004-05-15 devnull extern void pushsrc(int, char *);
154 5cedca1b 2004-05-15 devnull extern void popsrc(void);
155 5cedca1b 2004-05-15 devnull extern void putout(int);
156 5cedca1b 2004-05-15 devnull extern void text(int, char *);
157 5cedca1b 2004-05-15 devnull extern void subsup(int, int, int);
158 5cedca1b 2004-05-15 devnull extern void bshiftb(int, int, int);
159 5cedca1b 2004-05-15 devnull extern void shift2(int, int, int);
160 5cedca1b 2004-05-15 devnull extern void setsize(char *);
161 5cedca1b 2004-05-15 devnull extern void size(int, int);
162 5cedca1b 2004-05-15 devnull extern void globsize(void);
163 5cedca1b 2004-05-15 devnull extern void sqrt(int);
164 5cedca1b 2004-05-15 devnull extern void text(int, char *);
165 5cedca1b 2004-05-15 devnull extern void boverb(int, int);
166 5cedca1b 2004-05-15 devnull extern void lineup(int);
167 5cedca1b 2004-05-15 devnull extern void mark(int);
168 5cedca1b 2004-05-15 devnull extern void paren(int, int, int);
169 5cedca1b 2004-05-15 devnull extern void move(int, int, int);
170 5cedca1b 2004-05-15 devnull extern void pile(int);
171 5cedca1b 2004-05-15 devnull extern int startcol(int);
172 5cedca1b 2004-05-15 devnull extern void column(int, int);
173 5cedca1b 2004-05-15 devnull extern void matrix(int);