From e20f6b69a44c79a44031209586ed06c4b6c8f42f Mon Sep 17 00:00:00 2001 From: Garrit Franke Date: Thu, 10 Dec 2020 23:30:35 +0100 Subject: [PATCH] Add reverse function to stdlib --- examples/playground.sb | 6 +++--- lib/stdio.sb | 18 ++++++++++++++++++ src/parser/tests.rs | 14 ++++++++++++++ 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/examples/playground.sb b/examples/playground.sb index 9f41721..83f0d66 100644 --- a/examples/playground.sb +++ b/examples/playground.sb @@ -1,5 +1,5 @@ fn main() { - let x = 10 - x = 5 - println("Hello World!") + let arr = [1, 2, 3, 4, 5] + + println(rev(arr)) } diff --git a/lib/stdio.sb b/lib/stdio.sb index 966a8b8..d135d76 100644 --- a/lib/stdio.sb +++ b/lib/stdio.sb @@ -17,4 +17,22 @@ fn len(arr) { } return c +} + +// Reverses an array +// TODO: fix me! +fn rev(arr) { + + let l = len(arr) + let new_arr = [] + + let i = 0 + let j = l + while i < l { + new_arr[i] = arr[j] + i = i - 1 + j = j - 1 + } + + return new_arr } \ No newline at end of file diff --git a/src/parser/tests.rs b/src/parser/tests.rs index 255db51..ace0393 100644 --- a/src/parser/tests.rs +++ b/src/parser/tests.rs @@ -554,3 +554,17 @@ fn test_function_multiple_args() { let tree = parse(tokens, Some(raw.to_string())); assert!(tree.is_ok()) } + +#[test] +#[ignore] +fn test_array_position_assignment() { + let raw = " + fn main() { + new_arr[i] = arr[j] + } + } + "; + let tokens = tokenize(raw); + let tree = parse(tokens, Some(raw.to_string())); + assert!(tree.is_ok()) +}