|
|
1.1 root 1: /*********************************************************************
2: * COPYRIGHT NOTICE *
3: **********************************************************************
4: * This software is copyright (C) 1982 by Pavel Curtis *
5: * *
6: * Permission is granted to reproduce and distribute *
7: * this file by any means so long as no fee is charged *
8: * above a nominal handling fee and so long as this *
9: * notice is always included in the copies. *
10: * *
11: * Other rights are reserved except as explicitly granted *
12: * by written permission of the author. *
13: * Pavel Curtis *
14: * Computer Science Dept. *
15: * 405 Upson Hall *
16: * Cornell University *
17: * Ithaca, NY 14853 *
18: * *
19: * Ph- (607) 256-4934 *
20: * *
21: * Pavel.Cornell@Udel-Relay (ARPAnet) *
22: * decvax!cornell!pavel (UUCPnet) *
23: *********************************************************************/
24:
25: /*
26: * compiler.h - Global variables and structures for the terminfo
27: * compiler.
28: *
29: * $Header: /src386/usr/lib/ncurses/RCS/compiler.h,v 1.7 93/04/12 14:10:47 bin Exp Locker: bin $
30: *
31: * $Log: compiler.h,v $
32: * Revision 1.7 93/04/12 14:10:47 bin
33: * udo: 3rd color update
34: *
35: * Revision 1.2 92/04/13 14:39:59 bin
36: * *** empty log message ***
37: *
38: * Revision 2.1 82/10/25 14:46:04 pavel
39: * Added Copyright Notice
40: *
41: * Revision 2.0 82/10/24 15:17:20 pavel
42: * Beta-one Test Release
43: *
44: * Revision 1.3 82/08/23 22:30:09 pavel
45: * The REAL Alpha-one Release Version
46: *
47: * Revision 1.2 82/08/19 19:10:10 pavel
48: * Alpha Test Release One
49: *
50: * Revision 1.1 82/08/12 18:38:11 pavel
51: * Initial revision
52: *
53: */
54:
55: #include <stdio.h>
56:
57: #ifndef TRUE
58: #define TRUE 1
59: #define FALSE 0
60: #endif
61:
62: #define SINGLE /* only one terminal (actually none) */
63:
64: extern char *destination; /* destination directory for object files */
65:
66: long start_time; /* time at start of compilation */
67: long time();
68:
69: int curr_line; /* current line # in input */
70: long curr_file_pos; /* file offset of current line */
71:
72: int debug_level; /* level of debugging output */
73:
74: #define DEBUG(level, fmt, a1) \
75: if (debug_level >= level)\
76: fprintf(stderr, fmt, a1);
77:
78: /*
79: * These are the types of tokens returned by the scanner.
80: * The first three are also used in the hash table of capability
81: * names. The scanner returns one of these values after loading
82: * the specifics into the global structure curr_token.
83: *
84: */
85:
86: #define BOOLEAN 0 /* Boolean capability */
87: #define NUMBER 1 /* Numeric capability */
88: #define STRING 2 /* String-valued capability */
89: #define CANCEL 3 /* Capability to be cancelled in following tc's */
90: #define NAMES 4 /* The names for a terminal type */
91:
92: /*
93: * The global structure in which the specific parts of a
94: * scanned token are returned.
95: *
96: */
97:
98: struct token
99: {
100: char *tk_name; /* name of capability */
101: int tk_valnumber; /* value of capability (if a number) */
102: char *tk_valstring; /* value of capability (if a string) */
103: };
104:
105: struct token curr_token;
106:
107: /*
108: * The file comp_captab.c contains an array of these structures,
109: * one per possible capability. These are then made into a hash
110: * table array of the same structures for use by the parser.
111: *
112: */
113:
114: struct name_table_entry
115: {
116: struct name_table_entry *nte_link;
117: char *nte_name; /* name to hash on */
118: int nte_type; /* BOOLEAN, NUMBER or STRING */
119: short nte_index; /* index of associated variable in its array */
120: };
121:
122: extern struct name_table_entry cap_table[];
123: extern struct name_table_entry *cap_hash_table[];
124:
125: extern int Captabsize;
126: extern int Hashtabsize;
127:
128: #define NOTFOUND ((struct name_table_entry *) 0)
129: /*
130: * Function types
131: *
132: */
133:
134: struct name_table_entry *find_entry(); /* look up entry in hash table */
135:
136: char next_char();
137: char trans_string();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.