2 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
3 * See the copyright notice in the ACK home directory, in the file "Copyright".
5 /* $Id: extern.h,v 0.4 1994/06/24 13:27:17 ceriel Exp $ */
7 extern int maxply; /* amount of lookahead allowed */
8 extern int stackheight; /* # of tokens on fakestack */
9 extern token_t fakestack[]; /* fakestack itself */
10 extern int nallreg; /* number of allocated registers */
11 extern int allreg[]; /* array of allocated registers */
12 extern token_p curtoken; /* pointer to current token */
13 extern result_t dollar[]; /* Values of $1,$2 etc.. */
14 extern int nemlines; /* # of EM instructions in core */
15 extern struct emline emlines[]; /* EM instructions itself */
16 extern struct emline *emp; /* pointer to current instr */
17 extern struct emline *saveemp; /* pointer to start of pattern */
18 extern int tokpatlen; /* length of current stackpattern */
19 extern rl_p curreglist; /* side effect of findcoerc() */
21 extern int Debug; /* on/off debug printout */
25 * Next descriptions are external declarations for tables created
27 * All definitions are to be found in tables.c (Not for humans)
30 extern byte coderules[]; /* pseudo code for cg itself */
31 extern char stregclass[]; /* static register class */
32 extern struct reginfo machregs[]; /* register info */
33 extern tkdef_t tokens[]; /* token info */
34 extern node_t enodes[]; /* expression nodes */
35 extern string codestrings[]; /* table of strings */
36 extern set_t machsets[]; /* token expression table */
37 extern inst_t tokeninstances[]; /* token instance description table */
38 extern move_t moves[]; /* move descriptors */
39 extern test_t tests[]; /* test descriptors */
40 extern byte pattern[]; /* EM patterns */
41 extern int pathash[256]; /* Indices into previous */
42 extern c1_t c1coercs[]; /* coercions type 1 */
44 extern c2_t c2coercs[]; /* coercions type 2 */
46 extern c3_t c3coercs[]; /* coercions type 3 */
47 extern struct reginfo **reglist[]; /* lists of registers per property */
49 #define eqregclass(r1,r2) (stregclass[r1]==stregclass[r2])
52 extern int nregvar[]; /* # of register variables per type */
53 extern int *rvnumbers[]; /* lists of numbers */