diff --git a/src/oberon.c b/src/oberon.c
index d6aefad6c94437641293674e57a730b7de2656e0..07c83c28643623df555292ca429fa5eba776ae9d 100644 (file)
--- a/src/oberon.c
+++ b/src/oberon.c
int start = ctx -> code_index;
oberon_get_char(ctx);
int start = ctx -> code_index;
oberon_get_char(ctx);
- while(isalnum(ctx -> c))
+ while(isalnum(ctx -> c) || ctx -> c == '_')
{
oberon_get_char(ctx);
}
{
oberon_get_char(ctx);
}
oberon_skip_space(ctx);
int c = ctx -> c;
oberon_skip_space(ctx);
int c = ctx -> c;
- if(isalpha(c))
+ if(isalpha(c) || c == '_')
{
oberon_read_ident(ctx);
}
{
oberon_read_ident(ctx);
}
ctx -> system_byte_type = oberon_new_type_ptr(OBERON_TYPE_SYSTEM_BYTE);
oberon_generator_init_type(ctx, ctx -> system_byte_type);
ctx -> system_byte_type = oberon_new_type_ptr(OBERON_TYPE_SYSTEM_BYTE);
oberon_generator_init_type(ctx, ctx -> system_byte_type);
+ ctx -> system_ptr_type = oberon_new_type_ptr(OBERON_TYPE_SYSTEM_PTR);
+ oberon_generator_init_type(ctx, ctx -> system_ptr_type);
+
/* LONG / SHORT support */
ctx -> byte_type -> shorter = NULL;
ctx -> byte_type -> longer = ctx -> shortint_type;
/* LONG / SHORT support */
ctx -> byte_type -> shorter = NULL;
ctx -> byte_type -> longer = ctx -> shortint_type;
/* Types */
oberon_new_intrinsic_type(ctx, "BYTE", ctx -> system_byte_type);
/* Types */
oberon_new_intrinsic_type(ctx, "BYTE", ctx -> system_byte_type);
+ oberon_new_intrinsic_type(ctx, "PTR", ctx -> system_ptr_type);
oberon_end_intrinsic_module(ctx, ctx -> system_module);
oberon_end_intrinsic_module(ctx, ctx -> system_module);