|
|
1.1 root 1: /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1984. */
2: /* $Header: tabl.h,v 2.0 84/06/18 15:47:24 guido Exp $ */
3:
4: /*
5: * B editor -- Grammar table structure.
6: */
7:
8:
9: typedef char classelem;
10: /* change into short if symbol or lexical values can exceed 127! */
11:
12: typedef classelem *classptr;
13:
14: struct classinfo {
15: classptr c_class; /* List of possible classes */
16: /* The following fields are initialized dynamically */
17: classptr c_insert; /* List of pairs (char, class) for insertion */
18: classptr c_append; /* Ditto for append to child already there */
19: classptr c_join; /* Ditto for join of child with new node */
20: };
21:
22: #define MAXCHILD 4 /* Max. # of children per node. */
23:
24:
25: struct table {
26: short r_symbol; /* Redundant, used for checking consistency */
27: string r_name;
28: string r_repr[MAXCHILD+1];
29: /* There are entries [0..nch] inclusive. */
30: struct classinfo *r_class[MAXCHILD];
31: /* Must be indexed with [ich-1] !! */
32: node r_node;
33: };
34:
35: extern struct table *table;
36:
37: #define TABLEN (Hole+1)
38:
39: extern char code_array[];
40: extern char invcode_array[];
41: extern int lastcode;
42:
43: #define Code(c) code_array[c]
44: #define Invcode(code) invcode_array[code]
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.