home *** CD-ROM | disk | FTP | other *** search
/ gdead.berkeley.edu / gdead.berkeley.edu.tar / gdead.berkeley.edu / pub / cad-tools / ciftomann.tar / edger_dir / parser.h < prev    next >
C/C++ Source or Header  |  1988-01-28  |  1KB  |  55 lines

  1. #include <stdio.h>
  2.  
  3. #define ALLOC(type) (type *) malloc(sizeof(type))
  4.  
  5. #define FREE(ptr) free( (char *) (ptr) )
  6.  
  7. #define NIL(type) ((type *) 0)
  8.  
  9. typedef enum {FALSE = 0, TRUE} boolean;
  10.  
  11. typedef int type_type;
  12.  
  13. typedef struct point_tag {
  14.    int x;
  15.    int y;
  16.    struct point_tag *next;
  17. } point;
  18.  
  19. typedef struct {
  20.     enum trans_type { ROTATE,TRANSLATE,MIRROR_X,MIRROR_Y } type;
  21.     point *point;
  22. } transform;
  23.  
  24.     /* the various classes of characters */
  25. #define BLANK '\001'
  26. #define UPPER_CHAR '\002'
  27. #define DIGIT '\004'
  28. #define SPECIAL '\010'
  29. #define SEP (BLANK | UPPER_CHAR)
  30.  
  31. #define INFINITE 017777777777
  32. #define MAX_INT 017777777776
  33.  
  34. #define IS(type,char) ( (type) & char_type[(int) (char)] )
  35.  
  36. extern type_type char_type[];
  37. extern int line_number;
  38.  
  39. extern char current_char;
  40. extern int current_int;
  41. extern FILE *infile;
  42.  
  43. #define GET_CHAR ( ((current_int = getc(infile)) == EOF) ?\
  44.             error("Unexpected end of file"),(char) 0 :\
  45.             ((current_char = (char) current_int) == '\n' ?\
  46.             line_number++, current_char : current_char))
  47.  
  48. int get_integer();
  49. point *get_path();
  50. point *get_point();
  51. char *get_shortname();
  52. int get_sinteger();
  53. get_transform();
  54. transform *get_transterm();
  55.