diff --git a/oberon.h b/oberon.h
index 30c4cbe47e3bf7b847aab2a5ea966f2f484fa31b..09a24c98caeaa08f59b50e8b562035b261acd9d7 100644 (file)
--- a/oberon.h
+++ b/oberon.h
OBERON_CLASS_FIELD
};
+enum
+{
+ OBERON_SYSPROC_ABS
+};
+
/*
* Структура oberon_object_s (oberon_object_t) описывает все
* объявления которые могут иметь имя. От констант, до процедур.
* next -- ссылка на следующий объект в списке.
*/
+typedef oberon_expr_t * (*GenerateFuncCallback)(oberon_context_t *, int, oberon_expr_t *);
+typedef void (*GenerateProcCallback)(oberon_context_t *, int, oberon_expr_t *);
+
struct oberon_object_s
{
char * name;
int initialized;
oberon_object_t * parent;
+
oberon_scope_t * scope; // for proc
int has_return; // for proc
-
+ int sysproc;
+ GenerateFuncCallback genfunc;
+ GenerateProcCallback genproc;
oberon_type_t * type;
oberon_item_t * value;
enum
{
- OP_LOGIC_NOT,
OP_UNARY_MINUS,
+ OP_BITWISE_NOT,
+ OP_LOGIC_NOT,
+ OP_ABS,
+
OP_ADD,
OP_SUB,
OP_MUL,
OP_DIV,
OP_MOD,
+ OP_BITWISE_AND,
+ OP_BITWISE_XOR,
+ OP_BITWISE_OP,
OP_LOGIC_AND,
OP_LOGIC_OR,
+
OP_EQ,
OP_NEQ,
OP_LSS,