funny.c 709 B

123456789101112131415161718192021222324252627282930
  1. #include "e.h"
  2. #include "y.tab.h"
  3. extern int Funnyps;
  4. extern double Funnyht, Funnybase;
  5. void funny(int n)
  6. {
  7. char *f = 0;
  8. yyval = salloc();
  9. switch (n) {
  10. case SUM:
  11. f = lookup(deftbl, "sum_def")->cval; break;
  12. case UNION:
  13. f = lookup(deftbl, "union_def")->cval; break;
  14. case INTER: /* intersection */
  15. f = lookup(deftbl, "inter_def")->cval; break;
  16. case PROD:
  17. f = lookup(deftbl, "prod_def")->cval; break;
  18. default:
  19. ERROR "funny type %d in funny", n FATAL;
  20. }
  21. printf(".ds %d %s\n", yyval, f);
  22. eht[yyval] = EM(1.0, ps+Funnyps) - EM(Funnyht, ps);
  23. ebase[yyval] = EM(Funnybase, ps);
  24. dprintf(".\tS%d <- %s; h=%g b=%g\n",
  25. yyval, f, eht[yyval], ebase[yyval]);
  26. lfont[yyval] = rfont[yyval] = ROM;
  27. }