From 0ca39e43765090cd310ac610937fd878a44207d1 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Thu, 23 Jul 2020 12:22:39 -0500 Subject: [PATCH] Added boolean logical operators --- docs/plan | 11 ++++-- include/onyxastnodes.h | 20 ++++++---- include/onyxlex.h | 15 ++++--- onyx | Bin 302696 -> 303264 bytes progs/structs.onyx | 29 ++++++++++++-- progs/ufc.onyx | 87 +++++++++++++++++++++++++++++++++++++++++ src/onyxchecker.c | 18 ++++++++- src/onyxlex.c | 3 ++ src/onyxparser.c | 20 +++++++--- src/onyxwasm.c | 4 ++ 10 files changed, 179 insertions(+), 28 deletions(-) create mode 100644 progs/ufc.onyx diff --git a/docs/plan b/docs/plan index 91f99cf7..091acd8b 100644 --- a/docs/plan +++ b/docs/plan @@ -102,17 +102,22 @@ HOW: - 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] Struct splatting in arguments and parameters [X] UFC syntax for structs - [ ] Enum types + [X] Logical boolean operators - [ ] Procedures as arguments + [ ] Bitwise operators + + [ ] Enum types [ ] Start work on evaluating compile time known values. - An expression marked COMPTIME will be reduced to its value in the parse tree. + [ ] Switch statements + + [ ] Procedures as arguments diff --git a/include/onyxastnodes.h b/include/onyxastnodes.h index 8d6d42fe..3b46add3 100644 --- a/include/onyxastnodes.h +++ b/include/onyxastnodes.h @@ -146,14 +146,18 @@ typedef enum BinaryOp { Binary_Op_Greater = 9, Binary_Op_Greater_Equal = 10, - Binary_Op_Assign_Start = 11, - Binary_Op_Assign = 12, - Binary_Op_Assign_Add = 13, - Binary_Op_Assign_Minus = 14, - Binary_Op_Assign_Multiply = 15, - Binary_Op_Assign_Divide = 16, - Binary_Op_Assign_Modulus = 17, - Binary_Op_Assign_End = 18, + Binary_Op_Bool_And = 11, + Binary_Op_Bool_Or = 12, + Binary_Op_Bool_Xor = 13, + + Binary_Op_Assign_Start = 14, + Binary_Op_Assign = 15, + Binary_Op_Assign_Add = 16, + Binary_Op_Assign_Minus = 17, + Binary_Op_Assign_Multiply = 18, + Binary_Op_Assign_Divide = 19, + Binary_Op_Assign_Modulus = 20, + Binary_Op_Assign_End = 21, } BinaryOp; typedef enum OnyxIntrinsic { diff --git a/include/onyxlex.h b/include/onyxlex.h index a8726ec5..7909d530 100644 --- a/include/onyxlex.h +++ b/include/onyxlex.h @@ -39,14 +39,17 @@ typedef enum TokenType { Token_Type_Star_Equal = 283, Token_Type_Fslash_Equal = 284, Token_Type_Percent_Equal = 285, + Token_Type_And_And = 286, + Token_Type_Or_Or = 287, + Token_Type_Xor_Xor = 288, - Token_Type_Symbol = 286, - Token_Type_Literal_String = 287, - Token_Type_Literal_Numeric = 288, - Token_Type_Literal_True = 289, - Token_Type_Literal_False = 290, + Token_Type_Symbol = 289, + Token_Type_Literal_String = 290, + Token_Type_Literal_Numeric = 291, + Token_Type_Literal_True = 292, + Token_Type_Literal_False = 293, - Token_Type_Count = 291, + Token_Type_Count = 294, } TokenType; typedef struct OnyxFilePos { diff --git a/onyx b/onyx index 2b68828bf89f06aa5813d97f264fb8e0b9c1aff9..0449ac056154b8f57265a5bd4bc80e11b9d46a7f 100755 GIT binary patch delta 113299 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 Ie7#oWbVv2Lszw`2AP(3}!`U+V%9o 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 EKW-z i32 { return n - k; } +Fool :: struct { + bar : ^Bar; +} + +Bar :: struct { + i: i32; + j: i64; +} + +print_bar :: proc (bar: Bar) { + print(bar.i); + print(bar.j); +} + proc #export "main" { v2 := alloc(sizeof Vec2) as ^Vec2; v2.x = 5; @@ -133,9 +147,16 @@ proc #export "main" { v3.z = 1; print(v3.magnitude()); - vec2_splat(*v2, *v3); + (*v2).vec2_splat(*v3); print((1).minus(2)); + + foo := alloc(sizeof Fool) as ^Fool; + foo.bar = alloc(sizeof Bar) as ^Bar; + foo.bar.i = 50; + foo.bar.j = 70 as i64; + + (*foo.bar).print_bar(); } SOA :: struct { @@ -149,13 +170,13 @@ vec2_set :: proc (v: ^Vec2) { v.y = 5678; } -vec2_splat :: proc (vx: i32, vy: i32, other: Vec3) { +vec2_splat :: proc (v: Vec2, other: Vec3) { print(other.x); print(other.y); print(other.z); - print(vx); - print(vy); + print(v.x); + print(v.y); } soa_test :: proc #export "main9" { diff --git a/progs/ufc.onyx b/progs/ufc.onyx new file mode 100644 index 00000000..ce5af6de --- /dev/null +++ b/progs/ufc.onyx @@ -0,0 +1,87 @@ +use "progs/intrinsics" +use "progs/print_funcs" + +alloc :: proc (size: u32) -> rawptr { + heap_u32 :: __heap_start as ^u32; + + curr_offset := *heap_u32; + if curr_offset == 0 curr_offset = 8; + + *heap_u32 = curr_offset + size; + + return ((__heap_start as u32) + curr_offset) as rawptr; +} + + + + + + + + + + + + + + + + + + + + + + + +Vec2 :: struct { + x : f32; + y : f32; +} + +vec2_magnitude :: proc (v: ^Vec2) -> i32 { + return sqrt_f32(v.x * v.x + v.y * v.y) as i32; +} + +Vec3 :: struct { + x : f32; + y : f32; + z : f32; +} + +vec3_magnitude :: proc (v: ^Vec3) -> f32 { + return sqrt_f32(v.x * v.x + v.y * v.y + v.z * v.z); +} + +magnitude :: proc #overloaded { + vec2_magnitude, + vec3_magnitude, +} + +dot :: proc (v: Vec2, u: Vec2) -> f32 { + return v.x * u.x + v.y * u.y; +} + +proc #export "main" { + vec := alloc(sizeof Vec2) as ^Vec2; + vec.x = 5.0f; + vec.y = 12.0f; + + print(vec.x); + print(vec.y); + + mag :: vec.magnitude(); + + print(mag); + + print((*vec).dot(1.0f, 1.0f)); + print(dot(2.0f, 4.0f, -6.0f, 3.0f)); + + + v3 := alloc(sizeof Vec3) as ^Vec3; + v3.x = 5.0f; + v3.y = 12.0f; + v3.z = 13.0f; + + print(v3.magnitude()); +} \ No newline at end of file diff --git a/src/onyxchecker.c b/src/onyxchecker.c index 44dbd8a8..b8f19192 100644 --- a/src/onyxchecker.c +++ b/src/onyxchecker.c @@ -198,6 +198,8 @@ CHECK(call, AstCall* call) { arg->token = actual_param->token; arg->next = actual_param->next; + call->arg_count++; + *prev_param = (AstNode *) arg; prev_param = (AstNode **) &arg->next; } @@ -417,11 +419,25 @@ CHECK(binaryop, AstBinaryOp* binop, b32 assignment_is_ok) { return 1; } - if (binop->operation >= Binary_Op_Equal + if (binop->operation >= Binary_Op_Bool_And + && binop->operation <= Binary_Op_Bool_Xor) { + + if (!type_is_bool(binop->left->type) || !type_is_bool(binop->right->type)) { + onyx_message_add(Msg_Type_Literal, + binop->token->pos, + "boolean operator expects boolean types for both operands"); + return 1; + } + + binop->type = &basic_types[Basic_Kind_Bool]; + + } else if (binop->operation >= Binary_Op_Equal && binop->operation <= Binary_Op_Greater_Equal) { binop->type = &basic_types[Basic_Kind_Bool]; + } else if (binop_is_assignment(binop)) { binop->type = &basic_types[Basic_Kind_Void]; + } else { binop->type = binop->left->type; } diff --git a/src/onyxlex.c b/src/onyxlex.c index 6db48c72..f1015a3e 100644 --- a/src/onyxlex.c +++ b/src/onyxlex.c @@ -149,6 +149,9 @@ OnyxToken* onyx_get_token(OnyxTokenizer* tokenizer) { LITERAL_TOKEN("->", 0, Token_Type_Right_Arrow); LITERAL_TOKEN("<-", 0, Token_Type_Right_Arrow); LITERAL_TOKEN("---", 0, Token_Type_Empty_Block); + LITERAL_TOKEN("&&", 0, Token_Type_And_And); + LITERAL_TOKEN("||", 0, Token_Type_Or_Or); + LITERAL_TOKEN("^^", 0, Token_Type_Xor_Xor); LITERAL_TOKEN("<=", 0, Token_Type_Less_Equal); LITERAL_TOKEN(">=", 0, Token_Type_Greater_Equal); LITERAL_TOKEN("==", 0, Token_Type_Equal_Equal); diff --git a/src/onyxparser.c b/src/onyxparser.c index ee617e42..c12a1a61 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -324,12 +324,16 @@ static AstTyped* parse_factor(OnyxParser* parser) { static inline i32 get_precedence(BinaryOp kind) { switch (kind) { - case Binary_Op_Assign: return 2; - case Binary_Op_Assign_Add: return 2; - case Binary_Op_Assign_Minus: return 2; - case Binary_Op_Assign_Multiply: return 2; - case Binary_Op_Assign_Divide: return 2; - case Binary_Op_Assign_Modulus: return 2; + case Binary_Op_Assign: return 1; + case Binary_Op_Assign_Add: return 1; + case Binary_Op_Assign_Minus: return 1; + case Binary_Op_Assign_Multiply: return 1; + case Binary_Op_Assign_Divide: return 1; + case Binary_Op_Assign_Modulus: return 1; + + case Binary_Op_Bool_And: return 2; + case Binary_Op_Bool_Or: return 2; + case Binary_Op_Bool_Xor: return 2; case Binary_Op_Equal: return 3; case Binary_Op_Not_Equal: return 3; @@ -398,6 +402,10 @@ static AstTyped* parse_expression(OnyxParser* parser) { case '/': bin_op_kind = Binary_Op_Divide; break; case '%': bin_op_kind = Binary_Op_Modulus; break; + case Token_Type_And_And: bin_op_kind = Binary_Op_Bool_And; break; + case Token_Type_Or_Or: bin_op_kind = Binary_Op_Bool_Or; break; + case Token_Type_Xor_Xor: bin_op_kind = Binary_Op_Bool_Xor; break; + case '=': bin_op_kind = Binary_Op_Assign; break; case Token_Type_Plus_Equal: bin_op_kind = Binary_Op_Assign_Add; break; case Token_Type_Minus_Equal: bin_op_kind = Binary_Op_Assign_Minus; break; diff --git a/src/onyxwasm.c b/src/onyxwasm.c index 35053e65..6acc2d91 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -586,6 +586,10 @@ static const WasmInstructionType binop_map[][4] = { /* LTE */ { WI_I32_LE_S, WI_I64_LE_S, WI_F32_LE, WI_F64_LE }, /* GT */ { WI_I32_GT_S, WI_I64_GT_S, WI_F32_GT, WI_F64_GT }, /* GTE */ { WI_I32_GE_S, WI_I64_GE_S, WI_F32_GE, WI_F64_GE }, + + /* AND */ { WI_I32_AND, WI_I64_AND, WI_NOP, WI_NOP }, + /* OR */ { WI_I32_OR, WI_I64_OR, WI_NOP, WI_NOP }, + /* XOR */ { WI_I32_XOR, WI_I64_XOR, WI_NOP, WI_NOP }, }; COMPILE_FUNC(binop, AstBinaryOp* binop) { -- 2.25.1