From 6b1a290541690d2ce018562913222869bd8e9f6e Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Wed, 22 Jul 2020 08:33:25 -0500 Subject: [PATCH] Added UFC syntax for function calls on structs --- docs/plan | 15 +++++-- onyx | Bin 298760 -> 299056 bytes progs/structs.onyx | 100 +++++++++++++++++++-------------------------- src/onyxmsgs.c | 19 +++++---- src/onyxparser.c | 83 +++++++++++++++++++------------------ src/onyxsymres.c | 29 +++++++++++-- 6 files changed, 130 insertions(+), 116 deletions(-) diff --git a/docs/plan b/docs/plan index 1c0078d9..91f99cf7 100644 --- a/docs/plan +++ b/docs/plan @@ -88,20 +88,28 @@ HOW: - Adds '.onyx' to the end of the file name list - Only searches in current directory for now - [ ] Completely overhaul the type system + [X] Completely overhaul the type system - Keep the builtins - Add pointers - Add structs - [ ] Output 'drop' instruction for functions whose return value isn't used + [X] Output 'drop' instruction for functions whose return value isn't used [ ] Devise and implement a simple set of implicit type casting rules. - Numeric literals always type cast to whatever type is needed (very flexible). - [ ] Strings should work as pointers to data. + [X] Strings should work as pointers to data. - Literals should be placed in data section with pointers to the start. - Should strings be null-terminated or a length at the start of the string? + [ ] Struct splatting in arguments and parameters + + [X] UFC syntax for structs + + [ ] Enum types + + [ ] Procedures as arguments + [ ] Start work on evaluating compile time known values. - An expression marked COMPTIME will be reduced to its value in the parse tree. @@ -131,6 +139,5 @@ HOW: - diff --git a/onyx b/onyx index 6cb71073c234edd54da55f98b507d8b0cd4ce380..982db0e14864bb625e5b685461b7541bed3589c3 100755 GIT binary patch delta 92641 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

p((1#Z*AS`GmV_ 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�^n<7esY|Oc0ynRhE=Z0A(iU)RHnrxxo@} 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 Tc@WM6-`GwxO*Xma7LojaP6`5N delta 92085 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%0DAz9Z)l-G4z1zleYN`pK$Mb~|Cg>Z94 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 F{~zs%zdZl| diff --git a/progs/structs.onyx b/progs/structs.onyx index 23bcce71..a0608d71 100644 --- a/progs/structs.onyx +++ b/progs/structs.onyx @@ -3,12 +3,6 @@ use "progs/intrinsics" N :: 5 -Vec3 :: struct { - x : f32; - y : f32; - z : f32; -} - Foo :: struct { v : Vec3; i : i32; @@ -37,55 +31,6 @@ foo_get :: proc (fooarr: []Foo, i: i32) -> ^Foo { return ^fooarr[i]; } -proc #export "main3" { - // foo := foo_make(); - // other_foo := foo_make(); - // other_foo.i = 1234; - - // foo.foo = other_foo; - // print(foo.foo.i); - foo1 := foo_make(); - foo1.v.y = 123.0f; - print(foo1.v.y); - - foo := alloc(sizeof [N]Foo) as [N]Foo; - - for i: 1, 6 { - foo[i - 1].v.x = (i + 3) as f32; - foo[i - 1].v.y = (i + 4) as f32; - - foo[i - 1].i = i; - foo[i - 1].l = (i * 10) as i64; - foo[i - 1].f = (i * 100) as f32; - foo[i - 1].d = (i * 1000) as f64; - - foo[i - 1].foo = foo as ^Foo; - } - - print(foo[3].v.x); // 7 - print(foo[4].i); // 5 - print(foo[2].d); // 3000.0 - print(foo[3].f); // 400.0 - print(foo[0].l); // 10 - - print(foo as i32); - print((^(foo[3].l)) as i32); // 84 - - print(foo[2].foo[4].foo[3].f); // 400.0 - - foo_get(foo, 2).f = 1234.5f; - print(foo[2].f); - - print(1000000000000); - link_test(); - - print(foo[3].v.x); // 7 - print(foo[4].i); // 5 - print(foo[2].d); // 3000.0 - print(foo[3].f); // 400.0 - print(foo[0].l); // 10 -} - Mut1 :: struct { bar : i32; other : Mut2; @@ -156,6 +101,45 @@ Vec2 :: struct { y : i32; } +Vec3 :: struct { + x : i32; + y : i32; + z : i32; +} + +v2magnitude :: proc (v: ^Vec2) -> f32 { + return sqrt_f32((v.x * v.x + v.y * v.y) as f32); +} + +v3magnitude :: proc (v: ^Vec3) -> f32 { + return sqrt_f32((v.x * v.x + v.y * v.y + v.z * v.z) as f32); +} + +magnitude :: proc #overloaded { v2magnitude, v3magnitude }; + +minus :: proc (n: i32, k: i32) -> i32 { + return n - k; +} + +foo :: proc (f: (i32, i32) -> i32) -> i32 { + return f(5, 6); +} + +proc #export "main" { + v2 := alloc(sizeof Vec2) as ^Vec2; + v2.x = 5; + v2.y = 12; + print(v2.magnitude()); + + v3 := alloc(sizeof Vec3) as ^Vec3; + v3.x = 1; + v3.y = 1; + v3.z = 1; + print(v3.magnitude()); + + print((1).minus(2)); +} + SOA :: struct { positions : [10] Vec2; velocities : [10] Vec2; @@ -167,7 +151,7 @@ vec2_set :: proc (v: ^Vec2) { v.y = 5678; } -soa_test :: proc #export "main" { +soa_test :: proc #export "main9" { // print(sizeof SOA); // 240 @@ -185,6 +169,8 @@ soa_test :: proc #export "main" { vec2_set(^(soa.positions[6])); vec2_set(soa.things[2]); + print((^(soa.positions[6])).v2magnitude()); + print(soa.positions[5].y); print(soa.velocities[2].x); print(soa.things[2].x); @@ -199,6 +185,6 @@ soa_test :: proc #export "main" { m_arr[y][x] = x + y * 5; } } - + for i: 0, 25 print((m_arr as [] i32)[i]); } \ No newline at end of file diff --git a/src/onyxmsgs.c b/src/onyxmsgs.c index afd76686..37f0fd97 100644 --- a/src/onyxmsgs.c +++ b/src/onyxmsgs.c @@ -61,21 +61,22 @@ void onyx_message_add(MsgType type, OnyxFilePos pos, ...) { } static void print_detailed_message(Message* msg, bh_file_contents* fc) { - bh_printf("(%s:%l:%l) %s\n", msg->pos.filename, msg->pos.line, msg->pos.column, msg->text); + bh_printf("(%s:%l,%l) %s\n", msg->pos.filename, msg->pos.line, msg->pos.column, msg->text); i32 linelength = 0; char* walker = msg->pos.line_start; while (*walker != '\n') linelength++, walker++; - bh_printf("| %b\n", msg->pos.line_start, linelength); + i32 numlen = bh_printf(" %d |", msg->pos.line); + bh_printf("%b\n", msg->pos.line_start, linelength); - char* pointer_str = bh_alloc_array(global_scratch_allocator, char, linelength); - memset(pointer_str, ' ', linelength); - memset(pointer_str + msg->pos.column, '~', msg->pos.length - 1); - pointer_str[msg->pos.column - 1] = '^'; - pointer_str[msg->pos.column + msg->pos.length - 1] = 0; + char* pointer_str = bh_alloc_array(global_scratch_allocator, char, linelength + numlen); + memset(pointer_str, ' ', linelength + numlen); + memset(pointer_str + msg->pos.column + numlen, '~', msg->pos.length - 1); + pointer_str[msg->pos.column + numlen - 1] = '^'; + pointer_str[msg->pos.column + numlen + msg->pos.length - 1] = 0; - bh_printf("| %s\n", pointer_str); + bh_printf("%s\n", pointer_str); } void onyx_message_print() { @@ -88,7 +89,7 @@ void onyx_message_print() { print_detailed_message(msg, fc); } else { - bh_printf("(%l:%l) %s\n", msg->pos.line, msg->pos.column, msg->text); + bh_printf("(%l,%l) %s\n", msg->pos.line, msg->pos.column, msg->text); } msg = msg->next; } diff --git a/src/onyxparser.c b/src/onyxparser.c index fc827d86..bdef91ea 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -192,47 +192,7 @@ static AstTyped* parse_factor(OnyxParser* parser) { AstTyped* sym_node = make_node(AstTyped, Ast_Kind_Symbol); sym_node->token = sym_token; - if (parser->curr->type != '(') { - retval = sym_node; - break; - } - - // NOTE: Function call - AstCall* call_node = make_node(AstCall, Ast_Kind_Call); - call_node->token = expect_token(parser, '('); - call_node->callee = (AstNode *) sym_node; - call_node->arg_count = 0; - - AstArgument** prev = &call_node->arguments; - AstArgument* curr = NULL; - while (parser->curr->type != ')') { - curr = make_node(AstArgument, Ast_Kind_Argument); - curr->token = parser->curr; - curr->value = parse_expression(parser); - - if (curr != NULL && curr->kind != Ast_Kind_Error) { - *prev = curr; - prev = (AstArgument **) &curr->next; - - call_node->arg_count++; - } - - if (parser->curr->type == ')') - break; - - if (parser->curr->type != ',') { - onyx_message_add(Msg_Type_Expected_Token, - parser->curr->pos, - token_name(','), - token_name(parser->curr->type)); - return (AstTyped *) &error_node; - } - - consume_token(parser); - } - consume_token(parser); - - retval = (AstTyped *) call_node; + retval = sym_node; break; } @@ -282,7 +242,7 @@ static AstTyped* parse_factor(OnyxParser* parser) { } while (parser->curr->type == '[' || parser->curr->type == Token_Type_Keyword_Cast - || parser->curr->type == '.') { + || parser->curr->type == '.' || parser->curr->type == '(') { switch ((u16) parser->curr->type) { case '[': { @@ -317,6 +277,45 @@ static AstTyped* parse_factor(OnyxParser* parser) { retval = (AstTyped *) cast_node; break; } + + case '(': { + AstCall* call_node = make_node(AstCall, Ast_Kind_Call); + call_node->token = expect_token(parser, '('); + call_node->callee = (AstNode *) retval; + call_node->arg_count = 0; + + AstArgument** prev = &call_node->arguments; + AstArgument* curr = NULL; + while (parser->curr->type != ')') { + curr = make_node(AstArgument, Ast_Kind_Argument); + curr->token = parser->curr; + curr->value = parse_expression(parser); + + if (curr != NULL && curr->kind != Ast_Kind_Error) { + *prev = curr; + prev = (AstArgument **) &curr->next; + + call_node->arg_count++; + } + + if (parser->curr->type == ')') + break; + + if (parser->curr->type != ',') { + onyx_message_add(Msg_Type_Expected_Token, + parser->curr->pos, + token_name(','), + token_name(parser->curr->type)); + return (AstTyped *) &error_node; + } + + consume_token(parser); + } + consume_token(parser); + + retval = (AstTyped *) call_node; + break; + } } } diff --git a/src/onyxsymres.c b/src/onyxsymres.c index f2a59202..d056573d 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -1,5 +1,6 @@ #define BH_DEBUG #include "onyxsempass.h" +#include "onyxparser.h" AstBasicType basic_type_void = { { Ast_Kind_Basic_Type, 0, NULL, "void" }, &basic_types[Basic_Kind_Void] }; AstBasicType basic_type_bool = { { Ast_Kind_Basic_Type, 0, NULL, "bool" }, &basic_types[Basic_Kind_Bool] }; @@ -46,7 +47,7 @@ static void scope_leave(); static AstType* symres_type(AstType* type); static void symres_local(AstLocal** local); -static void symres_call(AstCall* call); +static void symres_call(AstCall** pcall); static void symres_size_of(AstSizeOf* so); static void symres_expression(AstTyped** expr); static void symres_return(AstReturn* ret); @@ -185,7 +186,27 @@ static void symres_local(AstLocal** local) { symbol_introduce((*local)->token, (AstNode *) *local); } -static void symres_call(AstCall* call) { +static void symres_call(AstCall** pcall) { + AstCall* call = *pcall; + + if (call->callee->kind == Ast_Kind_Field_Access) { + AstFieldAccess* fa = (AstFieldAccess *) call->callee; + + AstTyped* symbol = onyx_ast_node_new(semstate.node_allocator, sizeof(AstTyped), Ast_Kind_Symbol); + symbol->token = fa->token; + + AstArgument* implicit_arg = onyx_ast_node_new(semstate.node_allocator, sizeof(AstArgument), Ast_Kind_Argument); + implicit_arg->value = fa->expr; + implicit_arg->token = fa->expr->token; + implicit_arg->next = (AstNode *) call->arguments; + + (*pcall)->callee = (AstNode *) symbol; + (*pcall)->arguments = implicit_arg; + (*pcall)->arg_count++; + + call = *pcall; + } + AstNode* callee = symbol_resolve(call->callee->token); if (callee) call->callee = callee; @@ -222,7 +243,7 @@ static void symres_expression(AstTyped** expr) { break; case Ast_Kind_Unary_Op: symres_unaryop((AstUnaryOp **) expr); break; - case Ast_Kind_Call: symres_call((AstCall *) *expr); break; + case Ast_Kind_Call: symres_call((AstCall **) expr); break; case Ast_Kind_Block: symres_block((AstBlock *) *expr); break; case Ast_Kind_Symbol: @@ -300,7 +321,7 @@ static b32 symres_statement(AstNode* stmt) { case Ast_Kind_If: symres_if((AstIf *) stmt); return 0; case Ast_Kind_While: symres_while((AstWhile *) stmt); return 0; case Ast_Kind_For: symres_for((AstFor *) stmt); return 0; - case Ast_Kind_Call: symres_call((AstCall *) stmt); return 0; + case Ast_Kind_Call: symres_call((AstCall **) &stmt); return 0; case Ast_Kind_Argument: symres_expression((AstTyped **) &((AstArgument *)stmt)->value); return 0; case Ast_Kind_Block: symres_block((AstBlock *) stmt); return 0; -- 2.25.1