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