From d3b0e3eb327818209281f4ff6c993e8e6d20ffb7 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Tue, 15 Dec 2020 13:40:20 -0600 Subject: [PATCH] lots of code refactoring; added #context_scope; struct literals are even better --- core/builtin.onyx | 7 +- core/conv.onyx | 190 +++++++++++++++++++++++++++++++++++++++ core/js/webgl.onyx | 4 +- core/std/js.onyx | 2 + core/std/wasi.onyx | 2 + core/stdio.onyx | 132 +++------------------------ core/string.onyx | 172 ----------------------------------- core/string/builder.onyx | 77 ++++++++++++++++ include/onyxastnodes.h | 1 + onyx | Bin 506340 -> 506540 bytes src/onyxbuiltins.c | 6 ++ src/onyxparser.c | 82 +++++++++-------- src/onyxsymres.c | 3 +- 13 files changed, 338 insertions(+), 340 deletions(-) create mode 100644 core/conv.onyx create mode 100644 core/string/builder.onyx diff --git a/core/builtin.onyx b/core/builtin.onyx index 6ac95cb6..de79b973 100644 --- a/core/builtin.onyx +++ b/core/builtin.onyx @@ -3,9 +3,6 @@ package builtin str :: #type []u8; cstr :: #type ^u8; -// CLEANUP: Remove the buffer type from builtin -Buffer :: #type []void; - // NOTE: Because of many implementation details, all fields of this // struct are required to be i32's. range :: struct { @@ -68,6 +65,6 @@ cmp_asc :: proc (a: $T, b: T) -> i32 do return cast(i32) (a - b); cmp_dec :: proc (a: $T, b: T) -> i32 do return cast(i32) (b - a); context : struct { - allocator : Allocator; - temp_allocator : Allocator; + allocator : Allocator; + temp_allocator : Allocator; } diff --git a/core/conv.onyx b/core/conv.onyx new file mode 100644 index 00000000..3402baae --- /dev/null +++ b/core/conv.onyx @@ -0,0 +1,190 @@ +package core.conv + +i64_to_str :: proc (n_: i64, base: u64, buf: [] u8) -> str { + n := cast(u64) n_; + + is_neg := false; + if n_ < 0 && base == 10 { + is_neg = true; + n = cast(u64) -n_; + } + + c := ^buf[buf.count - 1]; + len := 0; + + s :: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/"; + + while n > 0 { + m :: n % base; + + *c = s[cast(u32) m]; + len += 1; + c -= 1; + + n /= base; + + } else { + *c = #char "0"; + len += 1; + c -= 1; + } + + if base == 16 { + *c = #char "x"; + len += 1; + c -= 1; + *c = #char "0"; + len += 1; + c -= 1; + } + + if base == 2 { + *c = #char "b"; + len += 1; + c -= 1; + *c = #char "0"; + len += 1; + c -= 1; + } + + if is_neg { + *c = #char "-"; + len += 1; + c -= 1; + } + + return str.{ data = c + 1, count = len }; +} + +// NOTE: This is a big hack but it will work for now +f64_to_str :: proc (f: f64, buf: [] u8) -> str { + a := f; + a *= 10000.0; + v := cast(i64) a; + + len := 0; + + s1 := i64_to_str(v / 10000, 10, buf); + for i: 0 .. s1.count do buf.data[i] = s1.data[i]; + buf.data[s1.count] = #char "."; + len = s1.count + 1; + + if v < ~~0 do v = -v; + s2 := i64_to_str(v % 10000, 10, buf); + for i: 0 .. s2.count do buf.data[s1.count + 1 + i] = s2.data[i]; + len += s2.count; + + return str.{ buf.data, len }; +} + +str_format :: proc (format: str, buffer: [] u8, va: ...) -> str { + return str_format_va(format, buffer, va); +} + +str_format_va :: proc (format: str, buffer: [] u8, va: vararg) -> str { + len := 0; + state := 0; + + for ch: format do switch (state) { + case 0 { + if ch == #char "%" do state = 1; + else { + buffer[len] = ch; + len += 1; + } + } + + case #default { + switch (ch) { + case #char "%" { buffer[len] = ch; len += 1; } + + case #char "i" { + n : i32; + if !vararg_get(va, ^n) do return; + + ibuf : [128] u8; + istr := i64_to_str(~~n, 10, ibuf[0 .. 128]); + + for a: istr { + buffer[len] = a; + len += 1; + } + } + + case #char "l" { + n : i64; + if !vararg_get(va, ^n) do return; + + ibuf : [128] u8; + istr := i64_to_str(n, 10, ibuf[0 .. 128]); + + for a: istr { + buffer[len] = a; + len += 1; + } + } + + case #char "f" { + n : f32; + if !vararg_get(va, ^n) do return; + + fbuf : [128] u8; + fstr := f64_to_str(~~n, fbuf[0 .. 128]); + + for a: fstr { + buffer[len] = a; + len += 1; + } + } + + case #char "d" { + n : f64; + if !vararg_get(va, ^n) do return; + + fbuf : [128] u8; + fstr := f64_to_str(n, fbuf[0 .. 128]); + + for a: fstr { + buffer[len] = a; + len += 1; + } + } + + case #char "s" { + s : str; + if !vararg_get(va, ^s) do return; + + for a: s { + buffer[len] = a; + len += 1; + } + } + + case #char "p" { + n : rawptr; + if !vararg_get(va, ^n) do return; + + ibuf : [128] u8; + istr := i64_to_str(~~n, 16, ibuf[0 .. 128]); + + for a: istr { + buffer[len] = a; + len += 1; + } + } + + case #char "c" { + c : u8; + if !vararg_get(va, ^c) do return; + + buffer[len] = c; + len += 1; + } + } + + state = 0; + } + } + + return str.{ ~~buffer.data, len }; +} diff --git a/core/js/webgl.onyx b/core/js/webgl.onyx index e89a9761..39d9a4cc 100644 --- a/core/js/webgl.onyx +++ b/core/js/webgl.onyx @@ -736,10 +736,10 @@ blendEquationSeparate :: proc (modeRGB: GLenum, modeAlpha: GLenum) #for blendFunc :: proc (sfactor: GLenum, dfactor: GLenum) #foreign "gl" "blendFunc" --- blendFuncSeparate :: proc (srcRGB: GLenum, dstRGB: GLenum, srcAlpha: GLenum, dstAlpha: GLenum) #foreign "gl" "blendFuncSeparate" --- blitFramebuffer :: proc (sx0: GLint, sy0: GLint, sx1: GLint, sy1: GLint, dx0: GLint, dy0: GLint, dx1: GLint, dy1: GLint, mask: GLbitfield, filter: GLenum) #foreign "gl" "blitFramebuffer" --- -bufferDataWithData :: proc (target: GLenum, buffer: Buffer, usage: GLenum) #foreign "gl" "bufferDataWithData" --- +bufferDataWithData :: proc (target: GLenum, buffer: [] void, usage: GLenum) #foreign "gl" "bufferDataWithData" --- bufferDataNoData :: proc (target: GLenum, size: GLsizeiptr, usage: GLenum) #foreign "gl" "bufferDataNoData" --- bufferData :: proc { bufferDataWithData, bufferDataNoData } -bufferSubData :: proc (target: GLenum, offset: GLsizei, data: Buffer) #foreign "gl" "bufferSubData" --- +bufferSubData :: proc (target: GLenum, offset: GLsizei, data: [] void) #foreign "gl" "bufferSubData" --- canvasSize :: proc (width: GLsizei, height: GLsizei) #foreign "gl" "canvasSize" --- checkFrameBufferStatus :: proc (target: GLenum) -> GLenum #foreign "gl" "checkFrameBufferStatus" --- clear :: proc (mask: GLbitfield) #foreign "gl" "clear" --- diff --git a/core/std/js.onyx b/core/std/js.onyx index 5efe76ba..459ea86b 100644 --- a/core/std/js.onyx +++ b/core/std/js.onyx @@ -4,6 +4,7 @@ package core #include_file "core/alloc" #include_file "core/array" +#include_file "core/conv" #include_file "core/intrinsics" #include_file "core/map" #include_file "core/math" @@ -11,6 +12,7 @@ package core #include_file "core/random" #include_file "core/stdio" #include_file "core/string" +#include_file "core/string/builder" #include_file "core/string/reader" #include_file "core/sys/js" diff --git a/core/std/wasi.onyx b/core/std/wasi.onyx index 28c50274..2a19f1d9 100644 --- a/core/std/wasi.onyx +++ b/core/std/wasi.onyx @@ -4,6 +4,7 @@ package core #include_file "core/alloc" #include_file "core/array" +#include_file "core/conv" #include_file "core/file" #include_file "core/intrinsics" #include_file "core/map" @@ -12,6 +13,7 @@ package core #include_file "core/random" #include_file "core/stdio" #include_file "core/string" +#include_file "core/string/builder" #include_file "core/string/reader" #include_file "core/wasi" diff --git a/core/stdio.onyx b/core/stdio.onyx index 54d7863a..c48ffb2f 100644 --- a/core/stdio.onyx +++ b/core/stdio.onyx @@ -4,24 +4,24 @@ package core // of the system package use package system as system -#private_file print_buffer : string.StringBuilder; +#private_file print_buffer : string.builder.Builder; stdio_init :: proc () { - print_buffer = string.builder_make(2048); + print_buffer = string.builder.make(2048); } print_str :: proc (s: str) { - string.builder_append(^print_buffer, s); + string.builder.append(^print_buffer, s); if s.data[s.count - 1] == #char "\n" do print_buffer_flush(); } -print_cstr :: proc (s: cstr) do string.builder_append(^print_buffer, s); -print_i64 :: proc (n: i64, base: u64 = 10) do string.builder_append(^print_buffer, n, base); -print_i32 :: proc (n: i32, base: u32 = 10) do string.builder_append(^print_buffer, cast(i64) n, cast(u64) base); -print_f64 :: proc (n: f64) do string.builder_append(^print_buffer, n); -print_f32 :: proc (n: f32) do string.builder_append(^print_buffer, cast(f64) n); -print_bool :: proc (b: bool) do string.builder_append(^print_buffer, b); -print_ptr :: proc (p: ^void) do string.builder_append(^print_buffer, cast(i64) p, cast(u64) 16); +print_cstr :: proc (s: cstr) do string.builder.append(^print_buffer, s); +print_i64 :: proc (n: i64, base: u64 = 10) do string.builder.append(^print_buffer, n, base); +print_i32 :: proc (n: i32, base: u32 = 10) do string.builder.append(^print_buffer, cast(i64) n, cast(u64) base); +print_f64 :: proc (n: f64) do string.builder.append(^print_buffer, n); +print_f32 :: proc (n: f32) do string.builder.append(^print_buffer, cast(f64) n); +print_bool :: proc (b: bool) do string.builder.append(^print_buffer, b); +print_ptr :: proc (p: ^void) do string.builder.append(^print_buffer, cast(i64) p, cast(u64) 16); print_range :: proc (r: range, sep := " ") { for i: r { @@ -46,111 +46,7 @@ println :: proc (x: $T) { printf :: proc (format: str, va: ...) { buffer: [2048] u8; - len := 0; - - state := 0; - for ch: format do switch (state) { - case 0 { - if ch == #char "%" do state = 1; - else { - buffer[len] = ch; - len += 1; - } - } - - case #default { - switch (ch) { - case #char "%" { buffer[len] = ch; len += 1; } - - case #char "i" { - n : i32; - if !vararg_get(va, ^n) do return; - - ibuf : [128] u8; - istr := string.i64_to_str(~~n, 10, Buffer.{ ~~ibuf, 128 }); - - for a: istr { - buffer[len] = a; - len += 1; - } - } - - case #char "l" { - n : i64; - if !vararg_get(va, ^n) do return; - - ibuf : [128] u8; - istr := string.i64_to_str(n, 10, Buffer.{ ~~ibuf, 128 }); - - for a: istr { - buffer[len] = a; - len += 1; - } - } - - case #char "f" { - n : f32; - if !vararg_get(va, ^n) do return; - - fbuf : [128] u8; - fstr := string.f64_to_str(~~n, fbuf[0 .. 128]); - - for a: fstr { - buffer[len] = a; - len += 1; - } - } - - case #char "d" { - n : f64; - if !vararg_get(va, ^n) do return; - - fbuf : [128] u8; - fstr := string.f64_to_str(n, fbuf[0 .. 128]); - - for a: fstr { - buffer[len] = a; - len += 1; - } - } - - case #char "s" { - s : str; - if !vararg_get(va, ^s) do return; - - for a: s { - buffer[len] = a; - len += 1; - } - } - - case #char "p" { - n : rawptr; - if !vararg_get(va, ^n) do return; - - ibuf : [128] u8; - istr := string.i64_to_str(~~n, 16, Buffer.{ ~~ibuf, 128 }); - - for a: istr { - buffer[len] = a; - len += 1; - } - } - - case #char "c" { - c : u8; - if !vararg_get(va, ^c) do return; - - buffer[len] = c; - len += 1; - } - } - - state = 0; - } - } - - print(str.{ ~~buffer, len }); + print(conv.str_format_va(format, buffer[0 .. 2048], va)); } // This works on both slices and arrays @@ -164,12 +60,12 @@ print_array :: proc (arr: $T, sep := " ") { } print_buffer_flush :: proc () { - if print_buffer.len == 0 do return; + if print_buffer.data.count == 0 do return; ^print_buffer - |> string.builder_to_str() + |> string.builder.to_str() |> system.output_str(); - ^print_buffer |> string.builder_clear(); + ^print_buffer |> string.builder.clear(); } diff --git a/core/string.onyx b/core/string.onyx index 571725f9..9acd2163 100644 --- a/core/string.onyx +++ b/core/string.onyx @@ -143,178 +143,6 @@ strip_trailing_whitespace :: proc (s: ^str) { } - - -// -// String Builder -// -StringBuilder :: struct { - alloc : Allocator; - - data : ^u8 = null; - len : u32 = 0; - cap : u32 = 0; -} - -builder_make :: proc (initial_cap: u32) -> StringBuilder { - data: ^u8 = null; - - if initial_cap > 0 { - data = cast(^u8) calloc(initial_cap); - } - - return StringBuilder.{ - alloc = context.allocator, - data = data, - cap = initial_cap, - }; -} - -builder_add_str :: proc (use sb: ^StringBuilder, s: str) -> ^StringBuilder { - len_total :: len + s.count; - - if cap >= len_total { - for i: 0 .. s.count do data[len + i] = s[i]; - len += s.count; - return sb; - } - - new_cap := cap; - while new_cap < len_total do new_cap <<= 1; - - new_data := cast(^u8) resize(alloc, data, new_cap); - if new_data == null do return sb; - - data = new_data; - cap = new_cap; - - for i: 0 .. s.count do data[len + i] = s[i]; - len += s.count; - return sb; -} - -builder_add_cstr :: proc (use sb: ^StringBuilder, cstring: cstr) -> ^StringBuilder { - s := make(cstring); - return builder_add_str(sb, s); -} - -i64_to_str :: proc (n_: i64, base: u64, buf: Buffer) -> str { - n := cast(u64) n_; - - is_neg := false; - if n_ < 0 && base == 10 { - is_neg = true; - n = cast(u64) -n_; - } - - c := ^(cast(^u8) buf.data)[buf.count - 1]; - len := 0; - - s :: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/"; - - while n > 0 { - m :: n % base; - - *c = s[cast(u32) m]; - len += 1; - c -= 1; - - n /= base; - - } else { - *c = #char "0"; - len += 1; - c -= 1; - } - - if base == 16 { - *c = #char "x"; - len += 1; - c -= 1; - *c = #char "0"; - len += 1; - c -= 1; - } - - if base == 2 { - *c = #char "b"; - len += 1; - c -= 1; - *c = #char "0"; - len += 1; - c -= 1; - } - - if is_neg { - *c = #char "-"; - len += 1; - c -= 1; - } - - return str.{ data = c + 1, count = len }; -} - -// NOTE: This is a big hack but it will work for now -f64_to_str :: proc (f: f64, buf: [] u8) -> str { - a := f; - a *= 10000.0; - v := cast(i64) a; - - b := Buffer.{ cast(^void) buf.data, buf.count }; - len := 0; - - s1 := i64_to_str(v / 10000, 10, b); - for i: 0 .. s1.count do buf.data[i] = s1.data[i]; - buf.data[s1.count] = #char "."; - len = s1.count + 1; - - if v < ~~0 do v = -v; - s2 := i64_to_str(v % 10000, 10, b); - for i: 0 .. s2.count do buf.data[s1.count + 1 + i] = s2.data[i]; - len += s2.count; - - return str.{ buf.data, len }; -} - -builder_add_i64 :: proc (use sb: ^StringBuilder, n: i64, base: u64 = 10) -> ^StringBuilder { - buf : [256] u8; - s := i64_to_str(n, base, Buffer.{ cast(^void) buf, 256 }); - return builder_add_str(sb, s); -} - -builder_add_f64 :: proc (use sb: ^StringBuilder, f: f64) -> ^StringBuilder { - buf : [256] u8; - s := f64_to_str(f, buf[0 .. 256]); - return builder_add_str(sb, s); -} - -builder_add_bool :: proc (use sb: ^StringBuilder, b: bool) -> ^StringBuilder { - if b { - return builder_add_str(sb, "true"); - } else { - return builder_add_str(sb, "false"); - } - - return null; -} - -builder_append :: proc { - builder_add_str, - builder_add_cstr, - builder_add_i64, - builder_add_f64, - builder_add_bool, -} - -builder_to_str :: proc (use sb: ^StringBuilder) -> str { - return str.{ data, len }; -} - -builder_clear :: proc (use sb: ^StringBuilder) -> ^StringBuilder { - len = 0; - return sb; -} - read_u32 :: proc (s: ^str, out: ^u32) { n := 0; diff --git a/core/string/builder.onyx b/core/string/builder.onyx new file mode 100644 index 00000000..37372e1a --- /dev/null +++ b/core/string/builder.onyx @@ -0,0 +1,77 @@ +package core.string.builder + +use package core.array as array +use package core.string as string +use package core.conv as conv + +Builder :: struct { + alloc : Allocator; + data : [..] u8; +} + +make :: proc (initial_cap := 4, alloc := context.allocator) -> Builder { + builder : Builder; + builder.alloc = alloc; + + #context_scope { + context.allocator = alloc; + array.init(^builder.data, initial_cap); + } + + return builder; +} + +clear :: proc (use sb: ^Builder) -> ^Builder { + data.count = 0; + return sb; +} + +add_str :: proc (use sb: ^Builder, s: str) -> ^Builder { + len_total :: data.count + s.count; + + if data.capacity < len_total do #context_scope { + context.allocator = alloc; + array.ensure_capacity(^data, len_total); + } + + for i: 0 .. s.count do data[data.count + i] = s[i]; + data.count += s.count; + return sb; +} + +add_cstr :: proc (use sb: ^Builder, cstring: cstr) -> ^Builder { + s := string.make(cstring); + return add_str(sb, s); +} + +add_i64 :: proc (use sb: ^Builder, n: i64, base: u64 = 10) -> ^Builder { + buf : [256] u8; + s := conv.i64_to_str(n, base, buf[0 .. 256]); + return add_str(sb, s); +} + +add_f64 :: proc (use sb: ^Builder, f: f64) -> ^Builder { + buf : [256] u8; + s := conv.f64_to_str(f, buf[0 .. 256]); + return add_str(sb, s); +} + +add_bool :: proc (use sb: ^Builder, b: bool) -> ^Builder { + if b do return add_str(sb, "true"); + else do return add_str(sb, "false"); + + return sb; +} + +append :: proc { + add_str, + add_cstr, + add_i64, + add_f64, + add_bool, +} + +to_str :: proc (use sb: ^Builder) -> str { + return str.{ data.data, data.count }; +} + diff --git a/include/onyxastnodes.h b/include/onyxastnodes.h index a4418ca0..ae3c5bf6 100644 --- a/include/onyxastnodes.h +++ b/include/onyxastnodes.h @@ -818,6 +818,7 @@ extern AstType *builtin_range_type; extern Type *builtin_range_type_type; extern AstType *builtin_vararg_type; extern Type *builtin_vararg_type_type; +extern AstTyped *builtin_context_variable; typedef struct BuiltinSymbol { char* package; diff --git a/onyx b/onyx index a58312a8a47ec515e1b61b5916f6802868a0c7fe..94c832ab05734d7bc5c97efd80903e7982e9517c 100755 GIT binary patch delta 85524 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 diff --git a/src/onyxbuiltins.c b/src/onyxbuiltins.c index a47a330e..54b2553f 100644 --- a/src/onyxbuiltins.c +++ b/src/onyxbuiltins.c @@ -43,6 +43,7 @@ AstType *builtin_range_type; Type *builtin_range_type_type; AstType *builtin_vararg_type; Type *builtin_vararg_type_type; +AstTyped *builtin_context_variable; const BuiltinSymbol builtin_symbols[] = { { NULL, "void", (AstNode *) &basic_type_void }, @@ -357,6 +358,11 @@ void initialize_builtins(bh_allocator a, ProgramInfo* prog) { return; } + builtin_context_variable = (AstTyped *) symbol_raw_resolve(p->scope, "context"); + if (builtin_context_variable == NULL) { + onyx_report_error((OnyxFilePos) { 0 }, "'context' variable not found in builtin package."); + return; + } bh_table_init(global_heap_allocator, intrinsic_table, 128); diff --git a/src/onyxparser.c b/src/onyxparser.c index 35857d95..e347af27 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -24,7 +24,7 @@ static OnyxToken* expect_token(OnyxParser* parser, TokenType token_type); static AstNumLit* parse_int_literal(OnyxParser* parser); static AstNumLit* parse_float_literal(OnyxParser* parser); -static b32 parse_possible_struct_literal(OnyxParser* parser, AstTyped** ret); +static b32 parse_possible_struct_literal(OnyxParser* parser, AstTyped* left, AstTyped** ret); static AstTyped* parse_factor(OnyxParser* parser); static AstTyped* parse_expression(OnyxParser* parser); static AstIfWhile* parse_if_stmt(OnyxParser* parser); @@ -187,48 +187,13 @@ static AstNumLit* parse_float_literal(OnyxParser* parser) { return float_node; } -static b32 parse_possible_struct_literal(OnyxParser* parser, AstTyped** ret) { - if (parser->curr->type != Token_Type_Symbol) return 0; - - STORE_PARSER_STATE; - - bh_arr(OnyxToken *) syms = NULL; - bh_arr_new(global_heap_allocator, syms, 4); - - b32 success = 1; - while (parser->curr->type == Token_Type_Symbol) { - if (parser->hit_unexpected_token) break; - - OnyxToken* symbol = soft_expect_token(parser, Token_Type_Symbol); - bh_arr_push(syms, symbol); - - if (!soft_expect_token(parser, '.')) { - success = 0; - break; - } - } - - if (parser->curr->type != '{') success = 0; - - if (!success) { - bh_arr_free(syms); - RESTORE_PARSER_STATE; - return 0; - } +static b32 parse_possible_struct_literal(OnyxParser* parser, AstTyped* left, AstTyped** ret) { + if (parser->curr->type != '.' + || (parser->curr + 1)->type != '{') return 0; AstStructLiteral* sl = make_node(AstStructLiteral, Ast_Kind_Struct_Literal); sl->token = parser->curr; - - sl->stnode = make_node(AstTyped, Ast_Kind_Symbol); - sl->stnode->token = syms[0]; - - for (i32 i = 1; i < bh_arr_length(syms); i++) { - AstFieldAccess* fa = make_node(AstFieldAccess, Ast_Kind_Field_Access); - fa->token = syms[i]; - fa->expr = sl->stnode; - sl->stnode = (AstTyped *) fa; - } - bh_arr_free(syms); + sl->stnode = left; bh_arr_new(global_heap_allocator, sl->values, 4); bh_arr_new(global_heap_allocator, sl->named_values, 4); @@ -237,6 +202,7 @@ static b32 parse_possible_struct_literal(OnyxParser* parser, AstTyped** ret) { sl->named_values[i] = NULL; } + expect_token(parser, '.'); expect_token(parser, '{'); b32 is_named = ((parser->curr + 1)->type == '='); @@ -389,8 +355,6 @@ static AstTyped* parse_factor(OnyxParser* parser) { } case Token_Type_Symbol: { - if (parse_possible_struct_literal(parser, &retval)) return retval; - OnyxToken* sym_token = expect_token(parser, Token_Type_Symbol); AstTyped* sym_node = make_node(AstTyped, Ast_Kind_Symbol); sym_node->token = sym_token; @@ -532,6 +496,12 @@ static AstTyped* parse_factor(OnyxParser* parser) { retval = (AstTyped *) char_lit; break; } + else if (parse_possible_directive(parser, "type")) { + AstTypeAlias* alias = make_node(AstTypeAlias, Ast_Kind_Type_Alias); + alias->to = parse_type(parser); + retval = (AstTyped *) alias; + break; + } onyx_report_error(parser->curr->pos, "invalid directive in expression."); return NULL; @@ -563,6 +533,8 @@ static AstTyped* parse_factor(OnyxParser* parser) { } case '.': { + if (parse_possible_struct_literal(parser, retval, &retval)) return retval; + consume_token(parser); AstFieldAccess* field = make_node(AstFieldAccess, Ast_Kind_Field_Access); field->token = expect_token(parser, Token_Type_Symbol); @@ -1238,6 +1210,32 @@ static AstNode* parse_statement(OnyxParser* parser) { break; } + case '#': { + if (parse_possible_directive(parser, "context_scope")) { + AstLocal* context_tmp = make_node(AstLocal, Ast_Kind_Local); + context_tmp->type_node = builtin_context_variable->type_node; + + AstBinaryOp* assignment = make_node(AstBinaryOp, Ast_Kind_Binary_Op); + assignment->operation = Binary_Op_Assign; + assignment->left = (AstTyped *) context_tmp; + assignment->right = builtin_context_variable; + context_tmp->next = (AstNode *) assignment; + + AstBlock* context_block = parse_block(parser); + needs_semicolon = 0; + assignment->next = (AstNode *) context_block; + + AstBinaryOp* assignment2 = make_node(AstBinaryOp, Ast_Kind_Binary_Op); + assignment2->operation = Binary_Op_Assign; + assignment2->left = builtin_context_variable; + assignment2->right = (AstTyped *) context_tmp; + context_block->next = (AstNode *) assignment2; + + retval = (AstNode *) context_tmp; + break; + } + } + default: break; } diff --git a/src/onyxsymres.c b/src/onyxsymres.c index 832e3de5..8c952926 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -201,7 +201,8 @@ static void symres_local(AstLocal** local) { bh_arr_push(bh_arr_last(semstate.block_stack)->locals, *local); bh_arr_push(semstate.curr_function->locals, *local); - symbol_introduce(semstate.curr_scope, (*local)->token, (AstNode *) *local); + if ((*local)->token != NULL) + symbol_introduce(semstate.curr_scope, (*local)->token, (AstNode *) *local); } static void symres_call(AstCall* call) { -- 2.25.1