X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=oberon.h;h=189369b9c0cb324564b82aca21b21000a416e944;hb=ea5cf056abf2bf42e9f328b9c1f2d94ee96bcc4c;hp=86f95def78e74ccd07b87b82e8bdeefde13601eb;hpb=0833fd8741d5215e8e8576fecd1f5a5f5dfc84f6;p=dsw-obn.git diff --git a/oberon.h b/oberon.h index 86f95de..189369b 100644 --- a/oberon.h +++ b/oberon.h @@ -39,6 +39,7 @@ struct gen_context_s gcc_jit_result * gcc_result; gen_block_t * block; unsigned record_count; + gcc_jit_lvalue * gcc_alloc; }; typedef struct oberon_type_s oberon_type_t; @@ -84,7 +85,8 @@ enum OBERON_TYPE_PROCEDURE, OBERON_TYPE_ARRAY, OBERON_TYPE_RECORD, - OBERON_TYPE_POINTER + OBERON_TYPE_POINTER, + OBERON_TYPE_REAL }; /* @@ -114,6 +116,8 @@ struct oberon_type_s oberon_type_t * base; oberon_object_t * decl; + oberon_module_t * module; + int recursive; int initialized; gen_type_t * gen_type; @@ -228,7 +232,8 @@ struct oberon_context_s char c; int token; char * string; - int integer; + long integer; + double real; /*** END SCANER DATA ***/ /*** PARSER DATA ***/ @@ -238,6 +243,7 @@ struct oberon_context_s oberon_type_t * int_type; oberon_type_t * bool_type; + oberon_type_t * real_type; oberon_type_t * void_type; oberon_type_t * void_ptr_type; oberon_scope_t * world_scope; @@ -255,7 +261,9 @@ enum MODE_INDEX, MODE_FIELD, MODE_DEREF, - MODE_NIL + MODE_NIL, + MODE_NEW, + MODE_REAL }; enum @@ -289,9 +297,11 @@ struct oberon_item_s int is_item; // == 1 oberon_type_t * result; oberon_expr_t * next; + int read_only; int mode; - int integer; + long integer; + double real; int boolean; oberon_object_t * var; @@ -306,6 +316,7 @@ struct oberon_oper_s int is_item; // == 0 oberon_type_t * result; oberon_expr_t * next; + int read_only; int op; oberon_expr_t * left; @@ -318,6 +329,7 @@ union oberon_expr_u int is_item; oberon_type_t * result; oberon_expr_t * next; + int read_only; }; oberon_item_t item;