DEADSOFTWARE

Добавлен тип SET
[dsw-obn.git] / src / oberon-internals.h
index 5dd3582576af7e07980552a59f3763025a098fa8..96fd1662ba6c3e46c429995160342afbca87a2e3 100644 (file)
@@ -45,7 +45,8 @@ enum oberon_type_kind
        OBERON_TYPE_POINTER,
        OBERON_TYPE_REAL,
        OBERON_TYPE_CHAR,
-       OBERON_TYPE_STRING
+       OBERON_TYPE_STRING,
+       OBERON_TYPE_SET
 };
 
 typedef oberon_expr_t * (*GenerateFuncCallback)(oberon_context_t *, int, oberon_expr_t *);
@@ -155,6 +156,7 @@ struct oberon_context_t
        oberon_type_t * longreal_type;
        oberon_type_t * char_type;
        oberon_type_t * string_type;
+       oberon_type_t * set_type;
 
        oberon_scope_t * world_scope;
        oberon_module_t * module_list;
@@ -176,13 +178,13 @@ enum oberon_mode_kind
        MODE_REAL,
        MODE_CHAR,
        MODE_STRING,
-       MODE_TYPE
+       MODE_TYPE,
+       MODE_SET
 };
 
 enum oberon_operator_kind
 {
        OP_UNARY_MINUS,
-       OP_BITWISE_NOT,
        OP_LOGIC_NOT,
        OP_ABS,
 
@@ -191,9 +193,6 @@ enum oberon_operator_kind
        OP_MUL,
        OP_DIV,
        OP_MOD,
-       OP_BITWISE_AND,
-       OP_BITWISE_XOR,
-       OP_BITWISE_OR,
        OP_LOGIC_AND,
        OP_LOGIC_OR,
 
@@ -205,7 +204,14 @@ enum oberon_operator_kind
        OP_GEQ,
 
        OP_CAST,
-       OP_IS
+       OP_IS,
+
+       OP_RANGE,
+       OP_UNION,
+       OP_INTERSECTION,
+       OP_DIFFERENCE,
+       OP_SYM_DIFFERENCE,
+       OP_COMPLEMENTATION
 };
 
 struct oberon_item_t