Nife version Beta
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

127 lines
4.5 KiB

  1. /* Copyright (C) 2011-2022 Patrick H. E. Foubet - S.E.R.I.A.N.E.
  2. This program is free software: you can redistribute it and/or modify
  3. it under the terms of the GNU General Public License as published by
  4. the Free Software Foundation, either version 3 of the License, or any
  5. later version.
  6. This program is distributed in the hope that it will be useful,
  7. but WITHOUT ANY WARRANTY; without even the implied warranty of
  8. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  9. GNU General Public License for more details.
  10. You should have received a copy of the GNU General Public License
  11. along with this program. If not, see <http://www.gnu.org/licenses/>
  12. *******************************************************************/
  13. /* stackF.h */
  14. #ifndef __NIFE_STACKF_H__
  15. #define __NIFE_STACKF_H__
  16. extern int FctInTask;
  17. typedef unsigned char Code;
  18. #define T_NOP ((Code)0) /* No OPeration */
  19. #define T_RET ((Code)1) /* RETURN in function */
  20. #define T_NUM ((Code)2) /* Numeric element */
  21. #define T_CHA ((Code)3) /* Character element */
  22. #define T_LIB ((Code)4) /* Standard Library function */
  23. #define T_FCT ((Code)5) /* User function */
  24. #define T_IF ((Code)6) /* IF */
  25. #define T_ELSE ((Code)7) /* THEN */
  26. #define T_THEN ((Code)8) /* ELSE */
  27. #define T_JMP ((Code)9) /* JUMP depl */
  28. #define T_BEGI ((Code)10)/* BEGIN */
  29. #define T_AGAI ((Code)11)/* AGAIN */
  30. #define T_UNTI ((Code)12)/* UNTIL */
  31. #define T_WHIL ((Code)13)/* WHILE */
  32. #define T_REPE ((Code)14)/* REPEAT */
  33. #define T_DO ((Code)15)/* DO */
  34. #define T_LOOP ((Code)16)/* LOOP */
  35. #define T_PLOO ((Code)17)/* +LOOP */
  36. #define T_BREA ((Code)18)/* BREAK in all loops */
  37. #define T_GOTO ((Code)19)/* GOTO */
  38. #define T_MYSF ((Code)20)/* MYSELF for current function */
  39. #define T_IFN ((Code)21)/* IF NOT */
  40. #define T_IFD ((Code)22)/* IF in DO */
  41. #define T_DO_I ((Code)23)/* INDEX of DO */
  42. #define T_DO_J ((Code)24)/* INDEX of DO PREVIOUS LEVEL */
  43. #define T_DO_K ((Code)25)/* INDEX of DO 2 LEVELS UP */
  44. #define T_VAR ((Code)26)/* Variable */
  45. #define T_BKC ((Code)27)/* Back Compilation */
  46. #define T_BKC1 ((Code)28)/* Back Compilation on 1st time */
  47. #define T_ONER ((Code)29)/* onerr: for current function */
  48. #define T_END ((Code)30)/* end: for current function */
  49. #define T_JEND ((Code)31)/* goto end: for current function */
  50. #define T_EXEK ((Code)32)/* "execk code */
  51. #define T_FCTD ((Code)33)/* Dynamic User function */
  52. #define T_FCTP ((Code)34)/* Primary Dynamic User function */
  53. #define T_FCTDW ((Code)35)/* Dynamic User function without remove string */
  54. #define T_CHAS ((Code)36)/* Character element Stopped */
  55. #define T_VARS ((Code)37)/* Variable Stopped */
  56. #define T_FCTDS ((Code)38)/* Dynamic User funct. Stopped */
  57. #define T_FCTDWS ((Code)39)/* Dynamic User funct. Stopped without remove str. */
  58. #define T_EXEKS ((Code)40)/* "execk code Stopped */
  59. extern int D_Cod;
  60. extern void IF_show_stackF(void);
  61. extern void IFD_show_stackF(void);
  62. extern void IF_debFct(void);
  63. extern void IF_debFctS(void);
  64. extern void IF_finFct(void);
  65. extern void updDynFct(void *A, int Mode);
  66. extern void rmLastFct(void);
  67. extern void makeFct(Code c, void * E);
  68. extern int IF_execFct(char * L);
  69. extern void IF_delFct(void);
  70. extern void IF_delAFct(void);
  71. extern void IF_delOFct(void);
  72. extern void IF_scanFct(void);
  73. extern void IF_DO_Leave(void);
  74. extern void IF_DO_MLeave(void);
  75. extern void IF_DO_Next(void);
  76. extern void IF_DO_Show(void);
  77. extern void execCode(void *C);
  78. extern void * fctByName(char *L);
  79. extern void * fctByInd(long i);
  80. extern void * fctByCode(void *C);
  81. extern void execFctV(void * A);
  82. extern char * fctByAddr(void *A);
  83. extern long iFctByAddr(void *A);
  84. extern char * codByAddr(void *A);
  85. extern void IF_nDO(void);
  86. extern void IF_execCS(void);
  87. extern void IF_execCSv(void);
  88. extern void IF_execCSl(void);
  89. extern void IF_execCSvl(void);
  90. extern void IF_RET(void);
  91. extern void IF_IF(void);
  92. extern void IF_THEN(void);
  93. extern void IF_ELSE(void);
  94. extern void IF_BEGIN(void);
  95. extern void IF_AGAIN(void);
  96. extern void IF_UNTIL(void);
  97. extern void IF_WHILE(void);
  98. extern void IF_REPEAT(void);
  99. extern void IF_BREAK(void);
  100. extern void IF_MYSELF(void);
  101. extern void IF_ONERR(void);
  102. extern void IF_END(void);
  103. extern void IF_JEND(void);
  104. extern void IF_DO(void);
  105. extern void IF_LOOP(void);
  106. extern void IF_PLOOP(void);
  107. extern void IF_I_DO(void);
  108. extern void IF_J_DO(void);
  109. extern void IF_K_DO(void);
  110. extern void IF_EXEK(void);
  111. extern void IF_debBackC(void);
  112. extern void IF_debBackC1(void);
  113. extern void dump_stackF(int fd);
  114. extern void restore_stackF(int fd);
  115. #endif