From 05785c100d7031d6369f2a34abe4ac1b42a273c5 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Wed, 22 Jul 2020 09:12:37 -0500 Subject: [PATCH] removed old example files; added arbitrary break and continue targets --- docs/new_symbol_resolution | 19 ------- docs/parse_grammar | 78 -------------------------- include/onyxastnodes.h | 10 +++- onyx | Bin 299008 -> 299664 bytes progs/break_test.onyx | 45 --------------- progs/minimal.onyx | 78 -------------------------- progs/new_minimal.onyx | 30 ---------- progs/structs.onyx | 2 +- progs/test.onyx | 112 ------------------------------------- src/onyxparser.c | 32 +++++++++-- src/onyxwasm.c | 13 +++-- 11 files changed, 42 insertions(+), 377 deletions(-) delete mode 100644 docs/new_symbol_resolution delete mode 100644 docs/parse_grammar delete mode 100644 progs/break_test.onyx delete mode 100644 progs/minimal.onyx delete mode 100644 progs/new_minimal.onyx delete mode 100644 progs/test.onyx diff --git a/docs/new_symbol_resolution b/docs/new_symbol_resolution deleted file mode 100644 index 71c909ca..00000000 --- a/docs/new_symbol_resolution +++ /dev/null @@ -1,19 +0,0 @@ -The current way I do symbol resolution is: - - Join all top level symbols at parse time into a single struct - - Add all top level symbols to a string table that maps from - their name to their AST node - - Then step through every function linearly and resolve each symbol using the table - * Function locals are added when they are declared and then removed at the end - of their scope as would be expected - -This method works, but it is not great and feels like a hack. - - References to other things are just pointers to the AST node - - This produces a heavy reliance on the AST instead of other, more efficient data structures - - - - -PROPOSED NEW METHOD: - Every top level declaration will add a declinfo entry that will contain the following information: - - Identifier - - Pointer to AST node diff --git a/docs/parse_grammar b/docs/parse_grammar deleted file mode 100644 index 1a714f72..00000000 --- a/docs/parse_grammar +++ /dev/null @@ -1,78 +0,0 @@ -Note: ~ is empty -Goal: Design the language to have no ambiguity (so a greedy algorithm can work) - - -SOURCE_FILE = TOP_LEVEL_STATEMENT ; SOURCE_FILE | ~ - -TOP_LEVEL_STATEMENT - = COMMENT -- Should comments not be passed to the parser? Depends if I need to look at them. Probably not - | USE_DECLARATION - | EXPORT_DECLARATION - | FOREIGN_DECLARATION - | TOP_LEVEL_DECLARATION - -COMMENT = TOKEN_TYPE_COMMENT - -USE_DECLARATION = use TOKEN_TYPE_LITERAL_STRING - -EXPORT_DECLARATION = export TOP_LEVEL_DECLARATION - -FOREIGN_DECLARATION = foreign TOKEN_TYPE_LITERAL_STRING TOKEN_TYPE_LITERAL_STRING :: TOP_LEVEL_VALUE - -TOP_LEVEL_DECLARATION = TOKEN_TYPE_SYMBOL :: TOP_LEVEL_VALUE - -TOP_LEVEL_VALUE - = FUNCTION_DECLARATION - | STRUCT_DECLARATION - -FUNCTION_DECLARATION = proc FUNCTION_TYPE BLOCK - -FUNCTION_TYPE = ( FUNCTION_PARAMS ) -> TOKEN_TYPE_SYMBOL - --- This may be too weird... -BLOCK = { STATEMENTS | --- -STATEMENTS = STATEMENT ; STATEMENTS | } - -STATEMENT - = ASSIGNMENT_STATEMENT - | IF_STATEMENT - | FOR_STATEMENT - | RETURN_STATEMENT - | EXPRESSION - -ASSIGNMENT_STATEMENT = TOKEN_TYPE_SYMBOL = EXPRESSION - -IF_STATEMENT - = if EXPRESSION BLOCK ELSE_IF_STATEMENT ELSE_STATEMENT - -ELSEIF_STATEMENT = elseif EXPRESSION BLOCK ELSEIF_STATEMENT | ~ - -ELSE_STATEMENT = else BLOCK | ~ - --- This needs to be better -FOR_STATEMENT = for STATEMENT ; EXPRESSION ; STATEMENT BLOCK - -RETURN_STATEMENT = return EXPRESSION - --- Remove abiguity in implementation -EXPRESSION - = EXPRESSION + EXPRESSION - | EXPRESSION - EXPRESSION - | EXPRESSION * EXPRESSION - | EXPRESSION / EXPRESSION - | EXPRESSION % EXPRESSION - | do BLOCK - | FUNCTION_CALL -- This could have some abiguity with just the symbol - | ( EXPRESSION ) - | TOKEN_TYPE_SYMBOL - -FUNCTION_CALL = TOKEN_TYPE_SYMBOL ( EXPRESSION_LIST ) - --- Implement just using a loop -COMMA_LIST(T) = T | T , COMMA_LIST(T) - -FUNCTION_PARAMS = COMMA_LIST(TOKEN_TYPE_SYMBOL :: TOKEN_TYPE_SYMBOL) -EXPRESSION_LIST = COMMA_LIST(EXPRESSION) - -STRUCT_DECLARATION = struct { STRUCT_MEMBERS } -STRUCT_MEMBERS = COMMA_LIST(TOKEN_TYPE_SYMBOL :: TOKEN_TYPE_SYMBOL) diff --git a/include/onyxastnodes.h b/include/onyxastnodes.h index 2eb636fc..7c80e385 100644 --- a/include/onyxastnodes.h +++ b/include/onyxastnodes.h @@ -23,6 +23,8 @@ typedef struct AstFieldAccess AstFieldAccess; typedef struct AstSizeOf AstSizeOf; typedef struct AstReturn AstReturn; +typedef struct AstBreak AstBreak; +typedef struct AstContinue AstContinue; typedef struct AstBlock AstBlock; typedef struct AstIf AstIf; @@ -227,11 +229,13 @@ struct AstFieldAccess { AstTyped_base; AstTyped *expr; u64 offset; }; struct AstSizeOf { AstTyped_base; AstType *so_type; u64 size; }; // Intruction Node -struct AstReturn { AstNode_base; AstTyped* expr; }; +struct AstReturn { AstNode_base; AstTyped* expr; }; +struct AstBreak { AstNode_base; u64 count; }; +struct AstContinue { AstNode_base; u64 count; }; // Structure Nodes -struct AstBlock { AstNode_base; AstNode *body; Scope *scope; }; -struct AstWhile { AstNode_base; AstTyped *cond; AstNode *stmt; }; +struct AstBlock { AstNode_base; AstNode *body; Scope *scope; }; +struct AstWhile { AstNode_base; AstTyped *cond; AstNode *stmt; }; struct AstFor { AstNode_base; diff --git a/onyx b/onyx index 7bd00ea4e5893c19f319dfc64d97557baf6acdf8..7e20302084da8389fec557c6b1daa23b601b856c 100755 GIT binary patch delta 79965 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ϡ*x=Pu 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 W^!djCE!fYkdUgn#mppsa-2VWSRUG;N diff --git a/progs/break_test.onyx b/progs/break_test.onyx deleted file mode 100644 index f2847cca..00000000 --- a/progs/break_test.onyx +++ /dev/null @@ -1,45 +0,0 @@ - -print :: foreign "host" "print" proc (val: i32) --- - -export main :: proc { - - while true { - print(8000); - break; - } - - x := 0; - while x < 10 { - - if x == 4 { - - x := 1; - while x < 1000000 { - print(x); - - if x > 4 { break; } - - x = x + 1; - } - - } - - if x == 2 { - - x := 1; - while x <= 5 { - if x == 3 { - x = x + 1; - continue; - } - - print(x); - x = x + 1; - } - - } - - x = x + 1; - } - -} diff --git a/progs/minimal.onyx b/progs/minimal.onyx deleted file mode 100644 index 3d4fac4f..00000000 --- a/progs/minimal.onyx +++ /dev/null @@ -1,78 +0,0 @@ - -print :: foreign "host" "print" proc (value: i32) --- -print_float :: foreign "host" "print" proc (value: f32) --- -print_if :: foreign "host" "print" proc (i: i32, f: f32) --- - -export main :: proc { - output := do_stuff() - 1; - - if output == -66 { - new_output := abs(output) * 2; - print(new_output); - - } elseif output == -67 { - print(factorial(6)); - - } else { - print(-1); - } - - print(fib(5)); - - print(output); - print_float(float_test()); - - print_if(output, float_test()); -} - -factorial :: proc (n: i32) -> i32 { - if n <= 1 { return 1; } - - return n * factorial(n - 1); -} - -foo :: proc -> i32 { - return 10; -} - -add :: proc (a: i32, b: i32) -> i32 { - return a + b; -} - -// NOTE: There is a weird bug here if the else is used instead -// This is because the WASM embedder does not think that it -// is possible that all code paths are covered with returning -// an i32. This will need to be fixed. -abs :: proc (val: i32) -> i32 { - if val <= 0 { return -val; } - // else { return val; }; - return val; -} - -fib :: proc (n: i32) -> i32 { - if n <= 1 { return 1; } - return fib(n - 1) + fib(n - 2); -} - -diff_square :: proc (a: i32, b: i32) -> i32 { - // Typechecked - c := a - b; // Mutable - d :: a + b; // Constant - - { - c := a * 2; - d := (b + a) * 2; - } - - return c * d; -} - -do_stuff :: proc -> i32 { - res := diff_square(4 + 5, 2 + 3); - res = res + foo(); - return res * -1; -} - -float_test :: proc -> f32 { - return 3.14159f; -} diff --git a/progs/new_minimal.onyx b/progs/new_minimal.onyx deleted file mode 100644 index d561a466..00000000 --- a/progs/new_minimal.onyx +++ /dev/null @@ -1,30 +0,0 @@ -print :: foreign "host" "print" proc (value: i32) --- - -simple_test :: proc { - a: i32 = 5; - b: i32 = 6; - - if a > b { - foo := 123; - print(foo); - } - - c :: a + foo(); - print(c); -} - -fib :: proc (n: i32) -> i32 { - if n <= 1 { return 1; } - - return fib(n - 1) + fib(n - 2); -} - -foo :: proc -> i32 { - return 10; -} - -print_nums :: proc (a: i32, b: i32, c: i32) { - print(a); - print(b); - print(c); -} diff --git a/progs/structs.onyx b/progs/structs.onyx index 4ec4729f..1b20acc9 100644 --- a/progs/structs.onyx +++ b/progs/structs.onyx @@ -162,7 +162,7 @@ soa_test :: proc #export "main9" { soa.positions[5].x = 1; soa.positions[5].y = 2; soa.positions[2].x = 1001; - vec2_set(^(soa.positions[6])); + (^(soa.positions[6])).vec2_set(); vec2_set(soa.things[2]); print((^(soa.positions[6])).v2magnitude()); diff --git a/progs/test.onyx b/progs/test.onyx deleted file mode 100644 index 3d546c15..00000000 --- a/progs/test.onyx +++ /dev/null @@ -1,112 +0,0 @@ -use "progs/print_funcs" -use "progs/other" -use "progs/intrinsics" - -something_else :: proc (n: i32) -> i32 { - return 100 * n + global_value; -} - -in_unit_circle :: proc #export (x: f32, y: f32) -> bool { - return (x * x) + (y * y) < 1.0f; -} - -echo :: proc (n: i32) -> i32 { - print_i32(n); - return n; -} - -global_value :: echo(fib(4) * 2); - -test_proc :: local_brute; - -local_brute :: proc { - a := 123; - b := 123.0f; - c := 123.0; - - { - d := 5.0f; - e := 12.3; - - print_f32(d); - print_f64(e); - } - - print_i32(a); - print_f32(b); - print_f64(c); -} - -// This is the entry point -main2 :: proc #export { - i := 0; - while i < 10 { - res :: clz_i32(fib(i)); - print_i32(res); - i += 1; - } - - i = 0; - while i < 10 { - res :: factorial(i); - print_i32(res); - i += 1; - } - - x : i32; - y := 0; - while y < 5 { - - x = 0; - while x < 5 { - if x == 3 { - x += 1; - continue; - } - - print_i32((x + y * 5) % 10); - x += 1; - } - - if y > 2 { break; } - - y += 1; - } -} - -// Foo :: struct { -// bar : Bar; -// something : i32; -// other : i64; -// } -// -// Bar :: struct { -// x : f32; -// y : f32; -// z : f32; -// } - -main :: proc #export { - test_proc(); - local_brute(); - - print_i32(clz_i32(16)); - print_f32(sqrt_f32(2.0f)); - - print_i32(5 * 6 + 2 * 3); - print_bool(in_unit_circle(0.5f, 0.5f)); - - big_num := fib(factorial(4)); - - something :: other_value(0); - something_else :: other_value(1); - - condition := big_num < something; - - if condition { - print_i32(big_num); - print_i32(something); - print_i32(something_else); - } -} - diff --git a/src/onyxparser.c b/src/onyxparser.c index bdef91ea..ee617e42 100644 --- a/src/onyxparser.c +++ b/src/onyxparser.c @@ -650,15 +650,35 @@ static AstNode* parse_statement(OnyxParser* parser) { retval = (AstNode *) parse_for_stmt(parser); break; - case Token_Type_Keyword_Break: - retval = make_node(AstNode, Ast_Kind_Break); - retval->token = expect_token(parser, Token_Type_Keyword_Break); + case Token_Type_Keyword_Break: { + AstBreak* bnode = make_node(AstBreak, Ast_Kind_Break); + bnode->token = expect_token(parser, Token_Type_Keyword_Break); + + u64 count = 1; + while (parser->curr->type == Token_Type_Keyword_Break) { + consume_token(parser); + count++; + } + bnode->count = count; + + retval = (AstNode *) bnode; break; + } - case Token_Type_Keyword_Continue: - retval = make_node(AstNode, Ast_Kind_Break); - retval->token = expect_token(parser, Token_Type_Keyword_Continue); + case Token_Type_Keyword_Continue: { + AstContinue* cnode = make_node(AstBreak, Ast_Kind_Continue); + cnode->token = expect_token(parser, Token_Type_Keyword_Continue); + + u64 count = 1; + while (parser->curr->type == Token_Type_Keyword_Continue) { + consume_token(parser); + count++; + } + cnode->count = count; + + retval = (AstNode *) cnode; break; + } default: break; diff --git a/src/onyxwasm.c b/src/onyxwasm.c index 228561e3..7f98398d 100644 --- a/src/onyxwasm.c +++ b/src/onyxwasm.c @@ -280,16 +280,19 @@ COMPILE_FUNC(block, AstBlock* block) { *pcode = code; } -COMPILE_FUNC(structured_jump, b32 jump_backward) { +COMPILE_FUNC(structured_jump, i32 jump_count) { bh_arr(WasmInstruction) code = *pcode; i32 labelidx = 0; - u8 wanted = jump_backward ? 2 : 1; + u8 wanted = (jump_count < 0) ? 2 : 1; b32 success = 0; + if (jump_count < 0) jump_count = -jump_count; + i32 len = bh_arr_length(mod->structured_jump_target) - 1; for (u8* t = &bh_arr_last(mod->structured_jump_target); len >= 0; len--, t--) { - if (*t == wanted) { + if (*t == wanted) jump_count--; + if (jump_count == 0) { success = 1; break; } @@ -314,8 +317,8 @@ COMPILE_FUNC(statement, AstNode* stmt) { case Ast_Kind_If: compile_if(mod, &code, (AstIf *) stmt); break; case Ast_Kind_While: compile_while(mod, &code, (AstWhile *) stmt); break; case Ast_Kind_For: compile_for(mod, &code, (AstFor *) stmt); break; - case Ast_Kind_Break: compile_structured_jump(mod, &code, 0); break; - case Ast_Kind_Continue: compile_structured_jump(mod, &code, 1); break; + case Ast_Kind_Break: compile_structured_jump(mod, &code, ((AstBreak *) stmt)->count); break; + case Ast_Kind_Continue: compile_structured_jump(mod, &code, -((AstContinue *) stmt)->count); break; case Ast_Kind_Block: compile_block(mod, &code, (AstBlock *) stmt); break; default: compile_expression(mod, &code, (AstTyped *) stmt); break; } -- 2.25.1