extern.h 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /*
  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".
  4. */
  5. /* $Id$ */
  6. extern int maxply; /* amount of lookahead allowed */
  7. extern int stackheight; /* # of tokens on fakestack */
  8. extern token_t fakestack[]; /* fakestack itself */
  9. extern int nallreg; /* number of allocated registers */
  10. extern int allreg[]; /* array of allocated registers */
  11. extern token_p curtoken; /* pointer to current token */
  12. extern result_t dollar[]; /* Values of $1,$2 etc.. */
  13. extern int nemlines; /* # of EM instructions in core */
  14. extern struct emline emlines[]; /* EM instructions itself */
  15. extern struct emline *emp; /* pointer to current instr */
  16. extern struct emline *saveemp; /* pointer to start of pattern */
  17. extern int tokpatlen; /* length of current stackpattern */
  18. extern rl_p curreglist; /* side effect of findcoerc() */
  19. #ifndef NDEBUG
  20. extern int Debug; /* on/off debug printout */
  21. #endif
  22. /*
  23. * Next descriptions are external declarations for tables created
  24. * by bootgram.
  25. * All definitions are to be found in tables.c (Not for humans)
  26. */
  27. extern byte coderules[]; /* pseudo code for cg itself */
  28. extern char stregclass[]; /* static register class */
  29. extern struct reginfo machregs[]; /* register info */
  30. extern tkdef_t tokens[]; /* token info */
  31. extern node_t enodes[]; /* expression nodes */
  32. extern string codestrings[]; /* table of strings */
  33. extern set_t machsets[]; /* token expression table */
  34. extern inst_t tokeninstances[]; /* token instance description table */
  35. extern move_t moves[]; /* move descriptors */
  36. extern byte pattern[]; /* EM patterns */
  37. extern int pathash[256]; /* Indices into previous */
  38. extern c1_t c1coercs[]; /* coercions type 1 */
  39. #ifdef MAXSPLIT
  40. extern c2_t c2coercs[]; /* coercions type 2 */
  41. #endif /* MAXSPLIT */
  42. extern c3_t c3coercs[]; /* coercions type 3 */
  43. extern struct reginfo **reglist[]; /* lists of registers per property */
  44. #define eqregclass(r1,r2) (stregclass[r1]==stregclass[r2])
  45. #ifdef REGVARS
  46. extern int nregvar[]; /* # of register variables per type */
  47. extern int *rvnumbers[]; /* lists of numbers */
  48. #endif