X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=oberon.h;h=189369b9c0cb324564b82aca21b21000a416e944;hb=ea5cf056abf2bf42e9f328b9c1f2d94ee96bcc4c;hp=9956fdc09d0a9bc77edff1d295ce48b7d4f35ee5;hpb=c15b86365824545bdee7d813ce0c796f1bdff592;p=dsw-obn.git diff --git a/oberon.h b/oberon.h index 9956fdc..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; @@ -157,6 +161,8 @@ struct oberon_object_s { char * name; int class; + int export; + int read_only; int local; int linked; @@ -226,7 +232,8 @@ struct oberon_context_s char c; int token; char * string; - int integer; + long integer; + double real; /*** END SCANER DATA ***/ /*** PARSER DATA ***/ @@ -236,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; @@ -253,7 +261,9 @@ enum MODE_INDEX, MODE_FIELD, MODE_DEREF, - MODE_NIL + MODE_NIL, + MODE_NEW, + MODE_REAL }; enum @@ -287,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; @@ -304,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; @@ -316,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;