inter.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #ifndef VIRTUALMATH_INTER_H
  2. #define VIRTUALMATH_INTER_H
  3. struct Result;
  4. struct Inter{
  5. struct Value *base;
  6. struct LinkValue *link_base;
  7. struct HashTable *hash_base;
  8. struct Var *base_var;
  9. struct LinkValue *base_father;
  10. struct VarList *var_list;
  11. struct InterData{
  12. struct Value *object;
  13. struct Value *vobject;
  14. struct Value *num;
  15. struct Value *str;
  16. struct Value *bool_;
  17. struct Value *pass_;
  18. struct Value *list;
  19. struct Value *dict;
  20. struct Value *function;
  21. struct Value *none;
  22. struct Value *list_iter;
  23. struct Value *dict_iter;
  24. FILE *debug;
  25. FILE *error;
  26. char *log_dir; // 记录log文件夹的位置
  27. char *var_str_prefix;
  28. char *var_num_prefix;
  29. char *var_bool_prefix;
  30. char *var_none;
  31. char *var_pass;
  32. char *var_class_prefix;
  33. char *var_object_prefix;
  34. char *object_init;
  35. char *object_new;
  36. char *object_call;
  37. char *object_enter;
  38. char *object_exit;
  39. char *object_add;
  40. char *object_sub;
  41. char *object_mul;
  42. char *object_div;
  43. char *object_del;
  44. char *object_down;
  45. char *object_slice;
  46. char *object_iter;
  47. char *object_next;
  48. int default_pt_type;
  49. } data;
  50. };
  51. typedef struct Inter Inter;
  52. typedef struct Statement Statement;
  53. Inter *makeInter(char *debug, struct LinkValue *belong);
  54. void freeInter(Inter *inter, bool show_gc);
  55. void setBaseInterData(struct Inter *inter);
  56. int runCodeBlock(char *code_file, Inter *inter);
  57. void runParser(char *code_file, Inter *inter, Statement **st);
  58. void runCode(Statement *st, Inter *inter);
  59. void mergeInter(Inter *new, Inter *base);
  60. #endif //VIRTUALMATH_INTER_H