home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / misc / eval / source / src.lha / estack.c < prev    next >
C/C++ Source or Header  |  1993-04-13  |  2KB  |  79 lines

  1. /*
  2. **
  3. ** ESTACK.C     Manipulates a stack of tokens.
  4. **
  5. ** Originally written 6/89 in ANSI C
  6. **
  7. ** Eval is a floating point expression evaluator.
  8. ** This file last updated in version 1.10
  9. ** For the version number, see eval.h
  10. ** Copyright (C) 1993  Will Menninger
  11. **
  12. ** This program is free software; you can redistribute it and/or modify it
  13. ** under the terms of the GNU General Public License as published by the
  14. ** Free Software Foundation; either version 2 of the License, or any
  15. ** later version.
  16. **
  17. ** This program is distributed in the hope that it will be useful, but
  18. ** WITHOUT ANY WARRANTY; without even the implied warranty of
  19. ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  20. ** General Public License for more details.
  21. **
  22. ** You should have received a copy of the GNU General Public License along
  23. ** with this program; if not, write to the Free Software Foundation, Inc.,
  24. ** 675 Mass Ave, Cambridge, MA 02139, USA.
  25. **
  26. ** The author until 9/93 can be contacted at:
  27. ** e-mail:     willus@ilm.pfc.mit.edu
  28. ** U.S. mail:  Will Menninger, 45 River St., #2, Boston, MA 02108-1124
  29. **
  30. **
  31. */
  32.  
  33. #include   "eval.h"
  34.  
  35. static  TOKEN   tstack[MAXINPUT+1];
  36. static  int     tsp;
  37.  
  38.  
  39. void clear_stack(void)
  40.  
  41.     {
  42.     tsp=0;
  43.     }
  44.  
  45.  
  46. BOOLEAN push_token(TOKENPTR t)
  47.  
  48.     {
  49.     if (tsp>MAXINPUT)
  50.         {
  51.         printf("Out of expression stack space.\n");
  52.         return(0);
  53.         }
  54.     tokcpy(&tstack[tsp],t);
  55.     tsp++;
  56.     return(1);
  57.     }
  58.  
  59.  
  60. BOOLEAN pop_token(TOKENPTR t)
  61.  
  62.     {
  63.     if (!tsp)
  64.         return(0);
  65.     tokcpy(t,&tstack[--tsp]);
  66.     return(1);
  67.     }
  68.  
  69.  
  70.  
  71. BOOLEAN top_of_stack(TOKENPTR t)
  72.  
  73.     {
  74.     if (!tsp)
  75.         return(0);
  76.     tokcpy(t,&tstack[tsp-1]);
  77.     return(1);
  78.     }
  79.