diff --git a/src/oberon-internals.h b/src/oberon-internals.h
index f0a6bed23e96fa8ec6b70d9cafc3a133713485ba..3c6fb853f1a824330eb773fa55a95b7ac0ffd16d 100644 (file)
--- a/src/oberon-internals.h
+++ b/src/oberon-internals.h
int local;
oberon_object_t * parent;
oberon_type_t * parent_type;
int local;
oberon_object_t * parent;
oberon_type_t * parent_type;
+
+ gen_label_t * exit_label;
};
enum oberon_type_kind
{
};
enum oberon_type_kind
{
- OBERON_TYPE_VOID,
+ OBERON_TYPE_NOTYPE,
OBERON_TYPE_INTEGER,
OBERON_TYPE_BOOLEAN,
OBERON_TYPE_PROCEDURE,
OBERON_TYPE_INTEGER,
OBERON_TYPE_BOOLEAN,
OBERON_TYPE_PROCEDURE,
OBERON_TYPE_POINTER,
OBERON_TYPE_REAL,
OBERON_TYPE_CHAR,
OBERON_TYPE_POINTER,
OBERON_TYPE_REAL,
OBERON_TYPE_CHAR,
- OBERON_TYPE_STRING
+ OBERON_TYPE_STRING,
+ OBERON_TYPE_SET,
+ OBERON_TYPE_NIL
};
typedef oberon_expr_t * (*GenerateFuncCallback)(oberon_context_t *, int, oberon_expr_t *);
};
typedef oberon_expr_t * (*GenerateFuncCallback)(oberon_context_t *, int, oberon_expr_t *);
oberon_module_t * mod;
/*** END PARSER DATA ***/
oberon_module_t * mod;
/*** END PARSER DATA ***/
- oberon_type_t * void_type;
- oberon_type_t * void_ptr_type;
+ oberon_type_t * notype_type;
+ oberon_type_t * nil_type;
oberon_type_t * bool_type;
oberon_type_t * byte_type;
oberon_type_t * shortint_type;
oberon_type_t * bool_type;
oberon_type_t * byte_type;
oberon_type_t * shortint_type;
oberon_type_t * longreal_type;
oberon_type_t * char_type;
oberon_type_t * string_type;
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;
oberon_scope_t * world_scope;
oberon_module_t * module_list;
MODE_NEW,
MODE_REAL,
MODE_CHAR,
MODE_NEW,
MODE_REAL,
MODE_CHAR,
- MODE_STRING
+ MODE_STRING,
+ MODE_TYPE,
+ MODE_SET
};
enum oberon_operator_kind
{
OP_UNARY_MINUS,
};
enum oberon_operator_kind
{
OP_UNARY_MINUS,
- OP_BITWISE_NOT,
OP_LOGIC_NOT,
OP_ABS,
OP_LOGIC_NOT,
OP_ABS,
OP_MUL,
OP_DIV,
OP_MOD,
OP_MUL,
OP_DIV,
OP_MOD,
- OP_BITWISE_AND,
- OP_BITWISE_XOR,
- OP_BITWISE_OR,
OP_LOGIC_AND,
OP_LOGIC_OR,
OP_LOGIC_AND,
OP_LOGIC_OR,
OP_GRT,
OP_GEQ,
OP_GRT,
OP_GEQ,
- OP_CAST
+ OP_CAST,
+ OP_IS,
+
+ OP_RANGE,
+ OP_UNION,
+ OP_INTERSECTION,
+ OP_DIFFERENCE,
+ OP_SYM_DIFFERENCE,
+ OP_COMPLEMENTATION,
+ OP_IN
};
struct oberon_item_t
};
struct oberon_item_t
enum oberon_mode_kind mode;
long integer;
double real;
enum oberon_mode_kind mode;
long integer;
double real;
- int boolean;
char * string;
oberon_object_t * var;
char * string;
oberon_object_t * var;