e.h 4.4 KB

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