X-Git-Url: http://deadsoftware.ru/gitweb?p=dsw-obn.git;a=blobdiff_plain;f=oberon.h;h=09a24c98caeaa08f59b50e8b562035b261acd9d7;hp=30c4cbe47e3bf7b847aab2a5ea966f2f484fa31b;hb=1bf625553dc35ac4a5c1afceb6950fd44776a424;hpb=7d4370a6cf1df8bacbead0511e4a9a1b6941003e diff --git a/oberon.h b/oberon.h index 30c4cbe..09a24c9 100644 --- a/oberon.h +++ b/oberon.h @@ -139,6 +139,11 @@ enum OBERON_CLASS_FIELD }; +enum +{ + OBERON_SYSPROC_ABS +}; + /* * Структура oberon_object_s (oberon_object_t) описывает все * объявления которые могут иметь имя. От констант, до процедур. @@ -149,6 +154,9 @@ enum * 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; @@ -159,9 +167,12 @@ struct oberon_object_s 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; @@ -241,15 +252,22 @@ enum 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,