package main
-#include_folder "/usr/share/onyx/core"
-
-#include_file "builtin"
-#include_file "wasi"
-#include_file "alloc"
-#include_file "intrinsics"
-#include_file "random"
-#include_file "string"
-#include_file "file"
-
-
+#include_file "core/std/wasi"
// NOTE: Didn't realize this would work so easily
use package core { string_builder_append as sba }
use package core
-
-use package memory
+use package core_file
use package wasi
-use package intrinsics
-use package random
-use package file
-use package stdio
// print_rights :: proc (rights: Rights) {
// print(cast(u32) rights, 2);
// print("\n");
-//
+//
// if rights & Rights.DataSync != cast(Rights) 0 do print("DataSync\n");
// if rights & Rights.Read != cast(Rights) 0 do print("Read\n");
// if rights & Rights.Seek != cast(Rights) 0 do print("Seek\n");
is_prime :: proc (n := 0) -> bool {
sqrt :: cast(i32) (sqrt_f32(cast(f32) n));
- for i: 2, sqrt + 1 do if n % i == 0 do return false;
+ for i: 2 .. sqrt + 1 do if n % i == 0 do return false;
return true;
}
print_arr :: proc (sb: ^StringBuilder, arr: [] $T) {
sb |> string_builder_clear();
- for i: 0, arr.count {
+ for i: 0 .. arr.count {
sb |> sba(cast(u64) arr[i]) |> sba(" ");
}
make_i32_arr :: proc (a := context.allocator, len := 10) -> [] i32 {
arr := cast(^i32) alloc(a, sizeof i32 * len);
- return arr[0 : len];
+ return arr[0 .. len];
}
main :: proc (args: []cstring) {
|> sba(cast(u64) args.count)
|> sba(" arguments.\n");
- for i: 0, args.count do ^sb |> sba(args[i]) |> sba(" ");
+ for i: 0 .. args.count do ^sb |> sba(args[i]) |> sba(" ");
^sb |> sba("\n")
|> string_builder_to_string()
|> print();
print(cont);
sum := 0l;
- for i: 0, 20000 do if is_prime(i) do sum += cast(u64) i;
+ for i: 0 .. 20000 do if is_prime(i) do sum += cast(u64) i;
print("Sum of primes less than 20000 is: ");
print_i64(sum);
print("\n");
defer cfree(matches.data);
string_builder_clear(^sb);
- for i: 0, matches.count {
+ for i: 0 .. matches.count {
^sb |> sba(matches[i])
|> sba("\n");
}
defer cfree(tokens.data);
acc := 0;
- for i: 0, tokens.count {
+ for i: 0 .. tokens.count {
switch tokens[i][0] {
case #char "+" do acc += 1;
case #char "-" do acc -= 1;
arr : [128] i32;
- for i: 0, 128 do arr[i] = i * i;
+ for i: 0 .. 128 do arr[i] = i * i;
- print_arr(^sb, arr[5 : 10]);
+ print_arr(^sb, arr[5 .. 10]);
ss := string_substr("Hello, World!", "World");
if ss.count > 0 do print(ss);
dynarr : [..] Vec3;
array_init(^dynarr);
- for i: 0, 16 do array_add(^dynarr, Vec3.{ cast(f32) i, cast(f32) (i * i), cast(f32) (i * i * i) });
- for i: 0, 16 {
+ for i: 0 .. 16 do array_push(^dynarr, Vec3.{ cast(f32) i, cast(f32) (i * i), cast(f32) (i * i * i) });
+ for i: 0 .. 16 {
print(cast(u32) dynarr.data[i].x);
print(" ");
print(cast(u32) dynarr.data[i].y);
}
make_slice :: proc (ptr: ^$T, count: u32) -> [] T {
- return ptr[4 : count];
+ return ptr[4 .. count];
}
-get_slice_length :: proc (s: ^[] $T) -> u32 do return s.count;
\ No newline at end of file
+get_slice_length :: proc (s: ^[] $T) -> u32 do return s.count;
}
}
- else if (parse_possible_directive(parser, "inline")) {
- func_def->flags |= Ast_Flag_Inline;
- }
-
else if (parse_possible_directive(parser, "foreign")) {
func_def->foreign_module = expect_token(parser, Token_Type_Literal_String);
func_def->foreign_name = expect_token(parser, Token_Type_Literal_String);
}
}
- else if (parse_possible_directive(parser, "nostack")) {
- func_def->flags |= Ast_Flag_No_Stack;
- }
-
else {
OnyxToken* directive_token = expect_token(parser, '#');
OnyxToken* symbol_token = expect_token(parser, Token_Type_Symbol);
break;
case Ast_Kind_Binding: {
- if (((AstBinding *) curr_stmt)->node->flags & Ast_Flag_Private_Package) {
- symbol_introduce(parser->package->private_scope,
- ((AstBinding *) curr_stmt)->token,
- ((AstBinding *) curr_stmt)->node);
-
- } else if (((AstBinding *) curr_stmt)->node->flags & Ast_Flag_Private_File) {
- symbol_introduce(parser->file_scope,
- ((AstBinding *) curr_stmt)->token,
- ((AstBinding *) curr_stmt)->node);
-
- } else {
- symbol_introduce(parser->package->scope,
- ((AstBinding *) curr_stmt)->token,
- ((AstBinding *) curr_stmt)->node);
- }
+ Scope* target_scope = parser->package->scope;
+
+ if (((AstBinding *) curr_stmt)->node->flags & Ast_Flag_Private_Package)
+ target_scope = parser->package->private_scope;
+ if (((AstBinding *) curr_stmt)->node->flags & Ast_Flag_Private_File)
+ target_scope = parser->file_scope;
+
+ symbol_introduce(target_scope,
+ ((AstBinding *) curr_stmt)->token,
+ ((AstBinding *) curr_stmt)->node);
break;
}