inter.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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_belong;
  10. struct Package *package;
  11. struct VarList *var_list;
  12. struct InterData{
  13. FILE *inter_stdout;
  14. FILE *inter_stderr;
  15. FILE *inter_stdin;
  16. bool is_stdout;
  17. bool is_stderr;
  18. bool is_stdin;
  19. struct LinkValue *object;
  20. struct LinkValue *vobject;
  21. struct LinkValue *num;
  22. struct LinkValue *str;
  23. struct LinkValue *bool_;
  24. struct LinkValue *pass_;
  25. struct LinkValue *tuple;
  26. struct LinkValue *list;
  27. struct LinkValue *dict;
  28. struct LinkValue *function;
  29. struct LinkValue *none;
  30. struct LinkValue *list_iter;
  31. struct LinkValue *dict_iter;
  32. struct LinkValue *base_exc;
  33. struct LinkValue *sys_exc;
  34. struct LinkValue *keyInterrupt_exc;
  35. struct LinkValue *quit_exc;
  36. struct LinkValue *exc;
  37. struct LinkValue *type_exc;
  38. struct LinkValue *arg_exc;
  39. struct LinkValue *per_exc;
  40. struct LinkValue *name_exc;
  41. struct LinkValue *goto_exc;
  42. struct LinkValue *result_exc;
  43. struct LinkValue *assert_exc;
  44. struct LinkValue *key_exc;
  45. struct LinkValue *index_exc;
  46. struct LinkValue *stride_exc;
  47. struct LinkValue *super_exc;
  48. struct LinkValue *iterstop_exc;
  49. struct LinkValue *import_exc;
  50. struct LinkValue *include_exp;
  51. wchar_t *var_str_prefix;
  52. wchar_t *var_num_prefix;
  53. wchar_t *var_bool_prefix;
  54. wchar_t *var_none;
  55. wchar_t *var_pass;
  56. wchar_t *var_class_prefix;
  57. wchar_t *var_object_prefix;
  58. wchar_t *object_init;
  59. wchar_t *object_new;
  60. wchar_t *object_call;
  61. wchar_t *object_enter;
  62. wchar_t *object_exit;
  63. wchar_t *object_add;
  64. wchar_t *object_sub;
  65. wchar_t *object_mul;
  66. wchar_t *object_div;
  67. wchar_t *object_del;
  68. wchar_t *object_down;
  69. wchar_t *object_slice;
  70. wchar_t *object_iter;
  71. wchar_t *object_next;
  72. wchar_t *object_repo;
  73. wchar_t *object_bool;
  74. wchar_t *object_name;
  75. wchar_t *object_self;
  76. wchar_t *object_father;
  77. wchar_t *object_message;
  78. wchar_t *object_str;
  79. wchar_t *object_down_assignment;
  80. wchar_t *object_slice_assignment;
  81. wchar_t *object_down_del;
  82. wchar_t *object_slice_del;
  83. int default_pt_type;
  84. } data;
  85. };
  86. typedef struct Inter Inter;
  87. typedef struct Statement Statement;
  88. typedef enum ResultType ResultType;
  89. Inter *makeInter(char *out, char *error_, char *in, LinkValue *belong);
  90. void freeInter(Inter *inter, bool show_gc);
  91. void setBaseInterData(struct Inter *inter);
  92. void runCodeStdin(Inter *inter, char *hello_string);
  93. void runCodeFile(Inter *inter, char *file[]);
  94. bool runParser(char *code_file, Inter *inter, bool is_one, Statement **st);
  95. void mergeInter(Inter *new, Inter *base);
  96. Inter *deriveInter(LinkValue *belong, Inter *inter);
  97. #endif //VIRTUALMATH_INTER_H