From 67fac96f38fcbbb2b3f9b34f45155081874f279b Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Tue, 14 Jul 2020 17:42:44 -0500 Subject: [PATCH] small bugfixes --- include/onyxastnodes.h | 70 +++++++++++++---------------------------- include/onyxlex.h | 37 +++++++++++----------- onyx | Bin 233432 -> 233440 bytes progs/basic.onyx | 19 +++++++++-- src/onyxlex.c | 54 ++++++++++++++++--------------- src/onyxparser.c | 10 +++--- src/onyxsymres.c | 2 +- 7 files changed, 90 insertions(+), 102 deletions(-) diff --git a/include/onyxastnodes.h b/include/onyxastnodes.h index ae30f3ae..a39b876c 100644 --- a/include/onyxastnodes.h +++ b/include/onyxastnodes.h @@ -176,62 +176,34 @@ struct AstUse { AstNode base; OnyxToken *filename; }; typedef enum OnyxIntrinsic { ONYX_INTRINSIC_UNDEFINED, - ONYX_INTRINSIC_MEMORY_SIZE, - ONYX_INTRINSIC_MEMORY_GROW, - - ONYX_INTRINSIC_I32_CLZ, - ONYX_INTRINSIC_I32_CTZ, - ONYX_INTRINSIC_I32_POPCNT, - ONYX_INTRINSIC_I32_AND, - ONYX_INTRINSIC_I32_OR, - ONYX_INTRINSIC_I32_XOR, - ONYX_INTRINSIC_I32_SHL, - ONYX_INTRINSIC_I32_SLR, - ONYX_INTRINSIC_I32_SAR, - ONYX_INTRINSIC_I32_ROTL, - ONYX_INTRINSIC_I32_ROTR, - - ONYX_INTRINSIC_I64_CLZ, - ONYX_INTRINSIC_I64_CTZ, - ONYX_INTRINSIC_I64_POPCNT, - ONYX_INTRINSIC_I64_AND, - ONYX_INTRINSIC_I64_OR, - ONYX_INTRINSIC_I64_XOR, - ONYX_INTRINSIC_I64_SHL, - ONYX_INTRINSIC_I64_SLR, - ONYX_INTRINSIC_I64_SAR, - ONYX_INTRINSIC_I64_ROTL, - ONYX_INTRINSIC_I64_ROTR, - - ONYX_INTRINSIC_F32_ABS, - ONYX_INTRINSIC_F32_CEIL, - ONYX_INTRINSIC_F32_FLOOR, - ONYX_INTRINSIC_F32_TRUNC, - ONYX_INTRINSIC_F32_NEAREST, - ONYX_INTRINSIC_F32_SQRT, - ONYX_INTRINSIC_F32_MIN, - ONYX_INTRINSIC_F32_MAX, + ONYX_INTRINSIC_MEMORY_SIZE, ONYX_INTRINSIC_MEMORY_GROW, + + ONYX_INTRINSIC_I32_CLZ, ONYX_INTRINSIC_I32_CTZ, ONYX_INTRINSIC_I32_POPCNT, + ONYX_INTRINSIC_I32_AND, ONYX_INTRINSIC_I32_OR, ONYX_INTRINSIC_I32_XOR, + ONYX_INTRINSIC_I32_SHL, ONYX_INTRINSIC_I32_SLR, ONYX_INTRINSIC_I32_SAR, + ONYX_INTRINSIC_I32_ROTL, ONYX_INTRINSIC_I32_ROTR, + + ONYX_INTRINSIC_I64_CLZ, ONYX_INTRINSIC_I64_CTZ, ONYX_INTRINSIC_I64_POPCNT, + ONYX_INTRINSIC_I64_AND, ONYX_INTRINSIC_I64_OR, ONYX_INTRINSIC_I64_XOR, + ONYX_INTRINSIC_I64_SHL, ONYX_INTRINSIC_I64_SLR, ONYX_INTRINSIC_I64_SAR, + ONYX_INTRINSIC_I64_ROTL, ONYX_INTRINSIC_I64_ROTR, + + ONYX_INTRINSIC_F32_ABS, ONYX_INTRINSIC_F32_SQRT, + ONYX_INTRINSIC_F32_CEIL, ONYX_INTRINSIC_F32_FLOOR, + ONYX_INTRINSIC_F32_TRUNC, ONYX_INTRINSIC_F32_NEAREST, + ONYX_INTRINSIC_F32_MIN, ONYX_INTRINSIC_F32_MAX, ONYX_INTRINSIC_F32_COPYSIGN, - ONYX_INTRINSIC_F64_ABS, - ONYX_INTRINSIC_F64_CEIL, - ONYX_INTRINSIC_F64_FLOOR, - ONYX_INTRINSIC_F64_TRUNC, - ONYX_INTRINSIC_F64_NEAREST, - ONYX_INTRINSIC_F64_SQRT, - ONYX_INTRINSIC_F64_MIN, - ONYX_INTRINSIC_F64_MAX, + ONYX_INTRINSIC_F64_ABS, ONYX_INTRINSIC_F64_SQRT, + ONYX_INTRINSIC_F64_CEIL, ONYX_INTRINSIC_F64_FLOOR, + ONYX_INTRINSIC_F64_TRUNC, ONYX_INTRINSIC_F64_NEAREST, + ONYX_INTRINSIC_F64_MIN, ONYX_INTRINSIC_F64_MAX, ONYX_INTRINSIC_F64_COPYSIGN, } OnyxIntrinsic; // NOTE: This needs to have 'arguments' in the // same position as AstNodeCall -struct AstIntrinsicCall { - AstTyped base; - - AstArgument *arguments; - OnyxIntrinsic intrinsic; -}; +struct AstIntrinsicCall { AstTyped base; AstArgument *arguments; OnyxIntrinsic intrinsic; }; typedef struct OnyxProgram { bh_arr(AstGlobal *) globals; diff --git a/include/onyxlex.h b/include/onyxlex.h index d6b64092..9a6d407a 100644 --- a/include/onyxlex.h +++ b/include/onyxlex.h @@ -26,24 +26,25 @@ typedef enum TokenType { Token_Type_Right_Arrow = 272, Token_Type_Left_Arrow = 273, - - Token_Type_Greater_Equal = 274, - Token_Type_Less_Equal = 275, - Token_Type_Equal_Equal = 276, - Token_Type_Not_Equal = 277, - Token_Type_Plus_Equal = 278, - Token_Type_Minus_Equal = 279, - Token_Type_Star_Equal = 280, - Token_Type_Fslash_Equal = 281, - Token_Type_Percent_Equal = 282, - - Token_Type_Symbol = 283, - Token_Type_Literal_String = 284, - Token_Type_Literal_Numeric = 285, - Token_Type_Literal_True = 286, - Token_Type_Literal_False = 287, - - Token_Type_Count = 288 + Token_Type_Empty_Block = 274, + + Token_Type_Greater_Equal = 275, + Token_Type_Less_Equal = 276, + Token_Type_Equal_Equal = 277, + Token_Type_Not_Equal = 278, + Token_Type_Plus_Equal = 279, + Token_Type_Minus_Equal = 280, + Token_Type_Star_Equal = 281, + Token_Type_Fslash_Equal = 282, + Token_Type_Percent_Equal = 283, + + Token_Type_Symbol = 284, + Token_Type_Literal_String = 285, + Token_Type_Literal_Numeric = 286, + Token_Type_Literal_True = 287, + Token_Type_Literal_False = 288, + + Token_Type_Count = 289, } TokenType; typedef struct OnyxFilePos { diff --git a/onyx b/onyx index 30458373b15b8e4ddb30ddc5489fd9034fdfc1cf..be28846fee968f54df9eca91182a3ede8434a47d 100755 GIT binary patch delta 65127 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
?1}CaRsE>f&;9#U5d(ZdCSM6gSvsw`QB- z6MNdu#ngdmanWk0GPMmHPDdNHYqj$S`v$dWjZ^6c&D99^6i=*i`a2l)Ki=$gO5I0K z#^M;Gx~xYscc)I?p%zhcm(-?Qr=CR;3!>xe@dd0R)%F(r)u?&&_eZts7N`0D02657 APyhe` delta 64827 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�=tdImA1JIp(4AD#+A0YN8K}taiw2QGPu%kulS5G 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 Nm8Kc3_O5nH{x_#(+C=~W diff --git a/progs/basic.onyx b/progs/basic.onyx index f97d4cfd..d8e5bcb8 100644 --- a/progs/basic.onyx +++ b/progs/basic.onyx @@ -10,10 +10,25 @@ test :: proc (a: bool) -> bool { return !a; } +foo :: proc (n: i32) -> i32 { + a :: shl_i32(n, 1); + b :: shl_i32(n, 2); + return or_i32(a, b); +} + export main :: proc { - a : i32 = 0; + a := 16; + print(clz_i32(a)); - cond :: true; + b := 1 + foo(2); + print(b); + if b == 13 + --- + else { + print(1024); + } + + cond :: true; print(test(cond) as i32); } diff --git a/src/onyxlex.c b/src/onyxlex.c index 7d6eabaf..8368a011 100644 --- a/src/onyxlex.c +++ b/src/onyxlex.c @@ -8,32 +8,33 @@ static const char* token_type_names[] = { "TOKEN_TYPE_COMMENT", - "struct", //"TOKEN_TYPE_KEYWORD_STRUCT", - "use", //"TOKEN_TYPE_KEYWORD_USE", - "export", //"TOKEN_TYPE_KEYWORD_EXPORT", - "if", //"TOKEN_TYPE_KEYWORD_IF", - "else", //"TOKEN_TYPE_KEYWORD_ELSE", - "elseif", //"TOKEN_TYPE_KEYWORD_ELSEIF", - "return", //"TOKEN_TYPE_KEYWORD_RETURN", - "foreign", //"TOKEN_TYPE_KEYWORD_FOREIGN", - "proc", //"TOKEN_TYPE_KEYWORD_PROC", - "as", //"TOKEN_TYPE_KEYWORD_CAST", - "while", //"TOKEN_TYPE_KEYWORD_WHILE", - "break", //"TOKEN_TYPE_KEYWORD_BREAK", - "continue", //"TOKEN_TYPE_KEYWORD_CONTINUE, - - "->", //"TOKEN_TYPE_RIGHT_ARROW", - "<-", //"TOKEN_TYPE_LEFT_ARROW", - - ">=", // "TOKEN_TYPE_SYM_GREATER_EQUAL", - "<=", // "TOKEN_TYPE_SYM_LESS_EQUAL", - "==", // "TOKEN_TYPE_SYM_EQUALS_EQUALS", - "!=", // "TOKEN_TYPE_SYM_NOT_EQUAL", - "+=", // "TOKEN_TYPE_SYM_PLUS_EQUAL", - "-=", // "TOKEN_TYPE_SYM_MINUS_EQUAL", - "*=", // "TOKEN_TYPE_SYM_STAR_EQUAL", - "/=", // "TOKEN_TYPE_SYM_FSLASH_EQUAL", - "%=", // "TOKEN_TYPE_SYM_PERCENT_EQUAL", + "struct", + "use", + "export", + "if", + "else", + "elseif", + "return", + "foreign", + "proc", + "as", + "while", + "break", + "continue", + + "->", + "<-", + "---", + + ">=", + "<=", + "==", + "!=", + "+=", + "-=", + "*=", + "/=", + "%=", "TOKEN_TYPE_SYMBOL", "TOKEN_TYPE_LITERAL_STRING", @@ -144,6 +145,7 @@ OnyxToken* onyx_get_token(OnyxTokenizer* tokenizer) { LITERAL_TOKEN("false", 1, Token_Type_Literal_False); 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_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 978d17b1..3a0113ad 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -244,7 +244,7 @@ static AstTyped* parse_factor(OnyxParser* parser) { return NULL; } - if (parser->curr_token->type == Token_Type_Keyword_Cast) { + while (parser->curr_token->type == Token_Type_Keyword_Cast) { parser_next_token(parser); AstUnaryOp* cast_node = make_node(AstUnaryOp, Ast_Kind_Unary_Op); @@ -605,11 +605,9 @@ static AstBlock* parse_block(OnyxParser* parser) { AstLocalGroup* lg = make_node(AstLocalGroup, Ast_Kind_Local_Group); block->locals = lg; - // --- is for an empty block - if (parser->curr_token->type == '-') { - expect(parser, '-'); - expect(parser, '-'); - expect(parser, '-'); + // NOTE: --- is for an empty block + if (parser->curr_token->type == Token_Type_Empty_Block) { + expect(parser, Token_Type_Empty_Block); return block; } diff --git a/src/onyxsymres.c b/src/onyxsymres.c index ee1c7155..1460832f 100644 --- a/src/onyxsymres.c +++ b/src/onyxsymres.c @@ -242,7 +242,7 @@ static b32 symres_statement(OnyxSemPassState* state, AstNode* stmt) { case Ast_Kind_Assignment: symres_assignment(state, (AstAssign *) stmt); return 0; case Ast_Kind_Return: symres_return(state, (AstReturn *) stmt); return 0; case Ast_Kind_If: symres_if(state, (AstIf *) stmt); return 0; - case Ast_Kind_While: symres_while(state, (AstWhile *) stmt); return 0; + case Ast_Kind_While: symres_while(state, (AstWhile *) stmt); return 0; case Ast_Kind_Call: symres_call(state, (AstCall *) stmt); return 0; case Ast_Kind_Argument: symres_expression(state, (AstTyped **) &((AstArgument *)stmt)->value); return 0; case Ast_Kind_Block: symres_block(state, (AstBlock *) stmt); return 0; -- 2.25.1