cim.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188
  1. /* from glovar */
  2. #define varnum 500 /* dlina steka lokalxnyh peremennyh */
  3. a v[varnum];
  4. /* stek lokalxnyh peremennyh */
  5. long base; /* 1-j swobodnyj |l-t steka perem.*/
  6. long mybase; /* baza dlq tek.aktiwn. prawila */
  7. a vs[1];
  8. /* stek lok.per. dlq sr-prostr.*/
  9. /* vs[1] ukazywaet na s-kod rigal-programmy */
  10. /* adres glawnogo deskriptora spiska */
  11. long sbase; /* tek. dlina vs */
  12. a teklexem; /* tek.zna~enie $$ */
  13. /* ustanawl.w spatt i vpatt */
  14. boolean break_; /* true -prerwatx ohwatyw. iteratiwnu` */
  15. /* konstrukci` */
  16. boolean continue_; /* false -w prawile wypolnilsq */
  17. /* return ili fail */
  18. boolean fail; /* byl operator fail(=true) */
  19. a atomt; /* s-adres atoma t, sozd. w prolog */
  20. boolean debugrule; /* true-wkl`~ena trassirowka */
  21. a atomrules, atomnorules;
  22. /* adresa atomow rules,norules -sozd.w prolog */
  23. /* ispolxz. w debug */
  24. string80 run_param_array[10];
  25. long run_param_cnt;
  26. /* kod o{ibki */
  27. extern Void err PP((long n));
  28. extern Void getval PP((long *m));
  29. /* kod o{ibki */
  30. extern Void errstr PP((long n, Char *s));
  31. /* usepasu */
  32. /*interpreter access*/
  33. /* number of option */
  34. /* pointer to argument list */
  35. extern Void usepas PP((long n, ptr_ *pl, long *rez));
  36. /* result */
  37. /* from psu */
  38. extern Void push PV();
  39. extern Void pratom PP((long aa_));
  40. /* adres nom.wstr.prawila */
  41. extern Void prblt PP((long nn));
  42. /* adres w sr-prostr. (<>0) deskr.atoma */
  43. /* ili peremennoj w {ablone */
  44. /* adres w st-prostr. (<>0) glawnogo */
  45. /* fragmenta deskr.spiska */
  46. extern boolean compnames PP((long p, long ld));
  47. extern Void srchrule PP((long rd, ptr_ *pp));
  48. extern Void srchrule1 PP((long rd, ptr_ *pp));
  49. extern Void lastop PV();
  50. /* from aru */
  51. /* kod op. */
  52. extern Void arithm PP((long op));
  53. extern Void unmins PV();
  54. extern Void selctr PV();
  55. /* cequ(=), cnequ(<>) */
  56. extern Void eqop PP((long o));
  57. /* cequ(=), cnequ(<>) */
  58. extern Void eqop1 PP((long o, long a1, long a2, boolean *rez1));
  59. extern Void copyop PV();
  60. extern Void indxop PV();
  61. extern Void add PP((long *d, long *r));
  62. /* from beiu */
  63. extern Void concop PP((long *a1, long a2));
  64. extern Void nameop PV();
  65. extern Void explode PP((long kk, long *rez));
  66. /* 1-j argument */
  67. /* nomer wstr.prawila */
  68. extern Void bltin PP((long *rez, boolean *success, ptr_ *pl, long n));
  69. /* 1-j argument */
  70. extern Void implode PP((ptr_ *pl, long *rez));
  71. /* from ci */
  72. extern Void rule PP((long *rez, boolean *success, ptr_ *pl, ptr_ *pp));
  73. extern Void expression PP((ptr_ *c, long *rez));
  74. extern Void pattern PP((long *rez, boolean *success, ptr_ *pl, ptr_ *p));
  75. extern Void statement PP((long p, boolean *succ, long *rez));
  76. extern Void contre PP((ptr_ *c));
  77. extern Void objexpr PP((ptr_ *c, long *nvar, boolean *t));
  78. /* tip operatora (specadres)*/
  79. /* ssylka na deskriptor spiska
  80. operatora */
  81. extern Void assgn PP((long ot, long p));
  82. /* s-adres spiska operatora w
  83. sr-prostranstwe*/
  84. /* dlq wozwrata
  85. neuspeha iz fail */
  86. /* dlq wozwrata rezulxtata iz
  87. return */
  88. extern Void cond PP((long p, boolean *succ, long *rez));
  89. /* s-adres spiska operatora */
  90. /* dlq wozwrata
  91. neuspeha iz fail */
  92. /* dlq wozwrata rez.iz return
  93. */
  94. extern Void loop PP((long p, boolean *succ, long *rez));
  95. extern Void inout PP((long p, long ot));
  96. /* ukaz.na 1-` leksemu */
  97. /* prodwigaetsq wpered */
  98. /* adres |l-ta {ablona
  99. (alxternatiwa) */
  100. extern Void alter PP((long *rez, boolean *success, ptr_ *pl, long p));
  101. /* ukaz.tek.leksemu */
  102. /* s-adres |l-ta {ablona */
  103. /* (+...+) -true, (*...* )- false */
  104. extern Void starlist PP((long *rez, boolean *success, ptr_ *pl, long p,
  105. boolean pluslist));
  106. /* ukaz.na 1-` leksemu, */
  107. /* prodwigaetsq wpered */
  108. /* s-adres |l-ta {ablona */
  109. extern Void facult PP((long *rez, boolean *success, ptr_ *pl, long p));
  110. /* ukazatelx na deskriptor derewa leksem */
  111. /* |l-t {ablona */
  112. extern Void tree PP((long *parmrez, boolean *parmsuccess, ptr_ *parmpl,
  113. long p, boolean star));
  114. /* ukazatelx na deskriptor spiska (leksema) */
  115. /* ukazatelx na |l-t {ablona */
  116. extern Void list PP((long *rez, boolean *success, ptr_ *pl, long p));
  117. /* spat or vpat */
  118. extern Void spatt PP((long *rez, boolean *success, ptr_ *pl, long p, long y));
  119. /*===================*/
  120. /* s-, ili v- {ablon */
  121. /*===================*/
  122. /* tek.leksema */
  123. /* ukazatelx na spisok
  124. wetwi (prostogo prawila)*/
  125. extern Void simple PP((long *rez, boolean *success, ptr_ *pl, long p));
  126. /* na~alo konstruktora, a'13312. */
  127. /* c prodw.wpered, rez. (. .) w */
  128. /* steke v[ ] */
  129. extern Void conlst PP((ptr_ *c));
  130. extern Void int11 PP((boolean debug, long code));
  131. extern Void prolog PP((ptr_ *y, boolean debug, long code));
  132. extern Void epilog PV();