From 4e3183fec096f7a35f3fc6fbee1b6705d5c25ce4 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Tue, 26 May 2020 16:11:06 -0500 Subject: [PATCH] Implemented #12 --- docs/thoughts | 4 +- onyx | Bin 83176 -> 92544 bytes onyx.c | 5 +-- onyxlex.c | 2 +- onyxparser.c | 1 + onyxparser.h | 7 +-- onyxutils.c | 106 ++++++++++++++++++++++++++++++++++++++++++++- onyxutils.h | 2 +- progs/minimal.onyx | 15 +++++++ 9 files changed, 131 insertions(+), 11 deletions(-) diff --git a/docs/thoughts b/docs/thoughts index ddf255fb..86a7ba5d 100644 --- a/docs/thoughts +++ b/docs/thoughts @@ -4,7 +4,7 @@ Type checking at parse time: * This requires that functions are declared in a particular order like C * This also requires immediate evaluation of external symbols (C #include style) - Don't like this at all - - Want a proper module system + - Want a proper module system <<<< /* foo.onyx */ foo :: proc (a i32) -> f32 { @@ -21,4 +21,4 @@ Type checking at parse time: foo(5) would have a left node of SYMBOL:foo This will be resolved in a later stage between the parsing and semantic pass - + Type checking and resolving would have to occur afterwards diff --git a/onyx b/onyx index 9015a7d81bda3362b478f258095335967a094e0e..0786469358d3d498ecc20b1d390fc2338fbb24ae 100755 GIT binary patch literal 92544 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

okzbNWaEdJJ!y?zrz>Id`xr=? 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 X1R96%xsg=$$0JhmZJr9Ato45ZNt?U4 literal 83176 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 vYG@U1JMhogjcI=curr)) { - u64 len = 0; + u32 len = 1; while (char_is_num(*(tokenizer->curr + 1)) || *(tokenizer->curr + 1) == '.') { len++; INCREMENT_CURR_TOKEN(tokenizer); diff --git a/onyxparser.c b/onyxparser.c index 493527c5..77bc0c47 100644 --- a/onyxparser.c +++ b/onyxparser.c @@ -223,6 +223,7 @@ static OnyxAstNode* parse_factor(OnyxParser* parser) { OnyxAstNode* lit_node = onyx_ast_node_new(parser->allocator, ONYX_AST_NODE_KIND_LITERAL); lit_node->type = &builtin_types[ONYX_TYPE_INFO_KIND_INT64]; lit_node->token = expect(parser, TOKEN_TYPE_LITERAL_NUMERIC); + lit_node->flags |= ONYX_AST_FLAG_COMPTIME; return lit_node; } diff --git a/onyxparser.h b/onyxparser.h index 9b16c10b..dadf29f9 100644 --- a/onyxparser.h +++ b/onyxparser.h @@ -108,9 +108,10 @@ extern OnyxTypeInfo builtin_types[]; // only 32-bits of flags to play with typedef enum OnyxAstFlags { // Top-level flags - ONYX_AST_FLAG_EXPORTED = BH_BIT(1), - ONYX_AST_FLAG_LVAL = BH_BIT(2), - ONYX_AST_FLAG_CONST = BH_BIT(3), + ONYX_AST_FLAG_EXPORTED = BH_BIT(0), + ONYX_AST_FLAG_LVAL = BH_BIT(1), + ONYX_AST_FLAG_CONST = BH_BIT(2), + ONYX_AST_FLAG_COMPTIME = BH_BIT(3), } OnyxAstFlags; struct OnyxAstNodeLocal { diff --git a/onyxutils.c b/onyxutils.c index 5fdddcde..2a07f2a9 100644 --- a/onyxutils.c +++ b/onyxutils.c @@ -1,5 +1,109 @@ #include "onyxutils.h" +#include "onyxlex.h" +#include "onyxparser.h" -void onyx_ast_print(OnyxAstNode* node) { +#define print_indent { if (indent > 0) bh_printf("\n"); for (int i = 0; i < indent; i++) bh_printf(" "); } + +void onyx_ast_print(OnyxAstNode* node, i32 indent) { if (node == NULL) return; + + print_indent; + bh_printf("(%d) %s ", node->flags, onyx_ast_node_kind_string(node->kind)); + + switch (node->kind) { + case ONYX_AST_NODE_KIND_PROGRAM: { + if (node->next) + onyx_ast_print(node->next, indent + 1); + + break; + } + + case ONYX_AST_NODE_KIND_FUNCDEF: { + bh_printf("(%b) ", node->token->token, node->token->length); + OnyxAstNodeFuncDef* fd = &node->as_funcdef; + + print_indent; + bh_printf("Params "); + if (fd->params) + onyx_ast_print((OnyxAstNode *) fd->params, 0); + + print_indent; + bh_printf("Returns %s", fd->return_type->name); + + print_indent; + bh_printf("Body"); + if (fd->body) + onyx_ast_print((OnyxAstNode *) fd->body, indent + 1); + + if (fd->next) + onyx_ast_print((OnyxAstNode *) fd->next, indent); + + break; + } + + case ONYX_AST_NODE_KIND_PARAM: { + OnyxAstNodeParam* param = &node->as_param; + bh_printf("%b %s", param->token->token, param->token->length, param->type->name); + if (param->next && indent == 0) { + bh_printf(", "); + onyx_ast_print((OnyxAstNode *) param->next, 0); + } + + break; + } + + case ONYX_AST_NODE_KIND_BLOCK: { + OnyxAstNodeBlock* block = &node->as_block; + if (block->scope) { + onyx_ast_print((OnyxAstNode *) block->scope, indent + 1); + } + + if (block->body) { + onyx_ast_print((OnyxAstNode *) block->body, indent + 1); + } + + break; + } + + case ONYX_AST_NODE_KIND_SCOPE: { + OnyxAstNodeScope* scope = &node->as_scope; + if (scope->last_local) { + onyx_ast_print((OnyxAstNode *) scope->last_local, 0); + } + + break; + } + + case ONYX_AST_NODE_KIND_LOCAL: { + OnyxAstNodeLocal* local = &node->as_local; + bh_printf("%b %s", local->token->token, local->token->length, local->type->name); + if (local->prev_local && indent == 0) { + bh_printf(", "); + onyx_ast_print((OnyxAstNode *) local->prev_local, 0); + } + break; + } + + case ONYX_AST_NODE_KIND_RETURN: { + if (node->next) { + onyx_ast_print(node->next, indent + 1); + } + + break; + } + + case ONYX_AST_NODE_KIND_LITERAL: { + bh_printf("%b", node->token->token, node->token->length); + break; + } + + default: { + onyx_ast_print(node->left, indent + 1); + onyx_ast_print(node->right, indent + 1); + if (node->next) { + onyx_ast_print(node->next, indent); + } + break; + } + } } diff --git a/onyxutils.h b/onyxutils.h index 4da320b5..63b6f601 100644 --- a/onyxutils.h +++ b/onyxutils.h @@ -2,4 +2,4 @@ #include "onyxparser.h" -void onyx_ast_print(OnyxAstNode* program); +void onyx_ast_print(OnyxAstNode* program, i32 indent); diff --git a/progs/minimal.onyx b/progs/minimal.onyx index ee2e6516..19173392 100644 --- a/progs/minimal.onyx +++ b/progs/minimal.onyx @@ -19,3 +19,18 @@ export mul :: proc (a i32, b i32) -> i32 { return c * d; } + +very_long_function_name :: proc () -> void { + a:i32; + b:i32; + c:i32; + d:i32; + e:i32; + f:i32; + g:i32; + h:i32; + i:i32 = 0 + 2; + j:i32; + k:i32; + l:i32; +} -- 2.25.1