diff --git a/benchmark/fib.hk b/benchmark/fib.hk index 59a2c14..a4a8f50 100644 --- a/benchmark/fib.hk +++ b/benchmark/fib.hk @@ -4,5 +4,5 @@ fn fib(n) => let n = to_int(args[0]); let m = to_int(args[1]); -for (mut i = 0; i < n; i++) +for (var i = 0; i < n; i++) println(fib(m)); diff --git a/docs/built-in.md b/docs/built-in.md index ace5ea9..a285238 100644 --- a/docs/built-in.md +++ b/docs/built-in.md @@ -649,7 +649,7 @@ fn valid(it: iterator) -> bool; Example: ```rust -mut it = iter(1..3); +var it = iter(1..3); println(valid(it)); // true it = next(it); println(valid(it)); // true @@ -670,7 +670,7 @@ fn current(it: iterator) -> any; Example: ```rust -mut it = iter(1..3); +var it = iter(1..3); println(current(it)); // 1 it = next(it); println(current(it)); // 2 @@ -691,7 +691,7 @@ fn next(it: iterator) -> iterator; Example: ```rust -mut it = iter(1..3); +var it = iter(1..3); println(current(it)); // 1 it = next(it); println(current(it)); // 2 diff --git a/docs/core-modules.md b/docs/core-modules.md index 7658cf8..813c8c1 100644 --- a/docs/core-modules.md +++ b/docs/core-modules.md @@ -1957,7 +1957,7 @@ fn len(list: userdata) -> number; Example: ```rust -mut list = lists.new_linked_list(); +var list = lists.new_linked_list(); list = lists.push_back(list, 1); list = lists.push_back(list, 2); list = lists.push_back(list, 3); @@ -1990,7 +1990,7 @@ fn push_front(list: userdata, value: any) -> userdata; Example: ```rust -mut list = lists.new_linked_list(); +var list = lists.new_linked_list(); list = lists.push_front(list, 1); list = lists.push_front(list, 2); println(lists.front(list)); // 2 @@ -2009,7 +2009,7 @@ fn push_back(list: userdata, value: any) -> userdata; Example: ```rust -mut list = lists.new_linked_list(); +var list = lists.new_linked_list(); list = lists.push_back(list, 1); list = lists.push_back(list, 2); println(lists.front(list)); // 1 @@ -2027,7 +2027,7 @@ fn pop_front(list: userdata) -> userdata; Example: ```rust -mut list1 = lists.new_linked_list(); +var list1 = lists.new_linked_list(); list1 = lists.push_back(list1, 1); list1 = lists.push_back(list1, 2); let list2 = lists.pop_front(list1); @@ -2045,7 +2045,7 @@ fn pop_back(list: userdata) -> userdata; Example: ```rust -mut list1 = lists.new_linked_list(); +var list1 = lists.new_linked_list(); list1 = lists.push_back(list1, 1); list1 = lists.push_back(list1, 2); let list2 = lists.pop_back(list1); @@ -2063,7 +2063,7 @@ fn front(list: userdata) -> any; Example: ```rust -mut list = lists.new_linked_list(); +var list = lists.new_linked_list(); list = lists.push_back(list, 1); list = lists.push_back(list, 2); println(lists.front(list)); // 1 @@ -2080,7 +2080,7 @@ fn back(list: userdata) -> any; Example: ```rust -mut list = lists.new_linked_list(); +var list = lists.new_linked_list(); list = lists.push_back(list, 1); list = lists.push_back(list, 2); println(lists.back(list)); // 2 diff --git a/docs/grammar.ebnf b/docs/grammar.ebnf index 4bce616..a2e1987 100644 --- a/docs/grammar.ebnf +++ b/docs/grammar.ebnf @@ -1,119 +1,120 @@ -chunk ::= statement* EOF +chunk ::= stmt* EOF -statement ::= import_statement - | variable_declaration ';' +stmt ::= import_stmt + | var_decl ';' | assign_call ';' - | struct_declaration - | function_declaration - | delete_statement - | if_statement - | match_statement - | loop_statement - | while_statement - | for_statement - | break_statement - | return_statement + | struct_decl + | fn_decl + | del_stmt + | if_stmt + | match_stmt + | loop_stmt + | while_stmt + | for_stmt + | break_stmt + | return_stmt | block -import_statement ::= 'import' NAME ( 'as' NAME )? ';' +import_stmt ::= 'import' NAME ( 'as' NAME )? ';' | 'import' STRING 'as' NAME ';' | 'import' '{' NAME ( ',' NAME )* '}' 'from' ( NAME | STRING ) ';' -variable_declaration ::= 'let' NAME '=' expression - | 'mut' NAME ( '=' expression )? - | ( 'let' | 'mut' ) '[' '_' | NAME ( ',' '_' | NAME )* ']' '=' expression - | ( 'let' | 'mut' ) '{' NAME ( ',' NAME )* '}' '=' expression +var_decl ::= 'let' NAME '=' expr + | 'var' NAME ( '=' expr )? + | ( 'let' | 'var' ) '[' '_' | NAME ( ',' '_' | NAME )* ']' '=' expr + | ( 'let' | 'var' ) '{' NAME ( ',' NAME )* '}' '=' expr -assign_call ::= NAME subscript* assign_op expression - | NAME subscript* ( '++' | '--' ) - | NAME subscript* '[' ']' '=' expression - | NAME subscript* subscript '=' expression - | NAME ( subscript | call )* call +assign_call ::= NAME subsc* assign_op expr + | NAME subsc* ( '++' | '--' ) + | NAME subsc* '[' ']' '=' expr + | NAME subsc* subsc '=' expr + | NAME ( subsc | call )* call -struct_declaration ::= 'struct' NAME '{' ( string | NAME ( ',' string | NAME )* )? '}' +struct_decl ::= 'struct' NAME '{' ( string | NAME ( ',' string | NAME )* )? '}' -function_declaration ::= 'fn' NAME '(' ( 'mut'? NAME ( ',' 'mut'? NAME )* )? ')' ( '=>' expression ";" | block ) +fn_decl ::= 'fn' NAME '(' ( NAME ( ',' NAME )* )? ')' ( '=>' expr ";" | block ) -delete_statement ::= 'del' NAME subscript* '[' expression ']' ';' +del_stmt ::= 'del' NAME subsc* '[' expr ']' ';' -if_statement ::= ( 'if' | 'if!' ) '(' ( variable_declaration ';' )? expression ')' - statement ( 'else' statement )? +if_stmt ::= ( 'if' | 'if!' ) '(' ( var_decl ';' )? expr ')' + stmt ( 'else' stmt )? -match_statement ::= 'match' '(' ( variable_declaration ';' )? expression ')' - '{' ( expression '=>' statement )+ ( '_' '=>' statement )? '}' +match_stmt ::= 'match' '(' ( var_decl ';' )? expr ')' + '{' ( expr '=>' stmt )+ ( '_' '=>' stmt )? '}' -loop_statement ::= 'loop' statement +loop_stmt ::= 'loop' stmt -while_statement ::= ( 'while' | 'while!' ) '(' expression ')' statement - | 'do' statement ( 'while' | 'while!' ) '(' expression ')' ';' +while_stmt ::= ( 'while' | 'while!' ) '(' expr ')' stmt + | 'do' stmt ( 'while' | 'while!' ) '(' expr ')' ';' -for_statement ::= 'for' '(' ( variable_declaration | assign_call )? ';' expression? ';' assign_call? ')' statement - | 'foreach' '(' NAME 'in' expression ')' statement +for_stmt ::= 'for' '(' ( var_decl | assign_call )? ';' expr? + ';' assign_call? ')' stmt + | 'foreach' '(' NAME 'in' expr ')' stmt -break_statement ::= ( 'break' | 'continue' ) ';' +break_stmt ::= ( 'break' | 'continue' ) ';' -return_statement ::= 'return' expression? ';' +return_stmt ::= 'return' expr? ';' block ::= '{' stmt* '}' assign_op ::= '=' | '|=' | '^=' | '&=' | '<<=' | '>>=' | '+=' | '-=' | '*=' | '/=' | '~/=' | '%=' -subscript ::= '[' expression ']' | '.' NAME +subsc ::= '[' expr ']' | '.' NAME -call ::= '(' ( expression ( ',' expression )* )? ')' +call ::= '(' ( expr ( ',' expr )* )? ')' -expression ::= and_expression ( '||' and_expression )* +expr ::= and_expr ( '||' and_expr )* -and_expression ::= equal_expression ( '&&' equal_expression )* +and_expr ::= equal_expr ( '&&' equal_expr )* -equal_expression ::= comp_expression ( ( '==' | '!=' ) comp_expression )* +equal_expr ::= comp_expr ( ( '==' | '!=' ) comp_expr )* -comp_expression ::= bor_expression ( ( '>' | '>=' | '<' | '<=' ) bor_expression )* +comp_expr ::= bor_expr ( ( '>' | '>=' | '<' | '<=' ) bor_expr )* -bor_expression ::= bxor_expression ( '|' bxor_expression )* +bor_expr ::= bxor_expr ( '|' bxor_expr )* -bxor_expression ::= band_expression ( '^' band_expression )* +bxor_expr ::= band_expr ( '^' band_expr )* -band_expression ::= shift_expression ( '&' shift_expression )* +band_expr ::= shift_expr ( '&' shift_expr )* -shift_expression ::= range_expression ( ( '<<' | '>>' ) range_expression )* +shift_expr ::= range_expr ( ( '<<' | '>>' ) range_expr )* -range_expression ::= add_expression ( '..' add_expression )? +range_expr ::= add_expr ( '..' add_expr )? -add_expression ::= mul_expression ( ( '+' | '-' ) mul_expression )* +add_expr ::= mul_expr ( ( '+' | '-' ) mul_expr )* -mul_expression ::= unary_expression ( ( '*' | '/' | '~/' | '%' ) unary_expression )* +mul_expr ::= unary_expr ( ( '*' | '/' | '~/' | '%' ) unary_expr )* -unary_expression ::= ( '-' | '!' | '~' ) unary_expression | primary_expression +unary_expr ::= ( '-' | '!' | '~' ) unary_expr | primary_expr -primary_expression ::= literal +primary_expr ::= literal | array_constructor | struct_constructor | anonymous_struct - | anonymous_function - | if_expression - | match_expression - | subscript_call - | group_expression + | anonymous_fn + | if_expr + | match_expr + | subsc_call + | group_expr literal ::= 'nil' | 'false' | 'true' | number | string -array_constructor ::= '[' ( expression ( ',' expression )* )? ']' +array_constructor ::= '[' ( expr ( ',' expr )* )? ']' -struct_constructor ::= '{' ( string | NAME ':' expression ( ',' string | NAME ':' expression )* )? '}' +struct_constructor ::= '{' ( string | NAME ':' expr ( ',' string | NAME ':' expr )* )? '}' anonymous_struct ::= 'struct' '{' ( string | NAME ( ',' string | NAME )* )? '}' -anonymous_function ::= '|' ( 'mut'? NAME ( ',' 'mut'? NAME )* )? '|' ( '=>' expression | block ) - | '||' ( '=>' expression | block ) +anonymous_fn ::= '|' ( NAME ( ',' NAME )* )? '|' ( '=>' expr | block ) + | '||' ( '=>' expr | block ) -if_expression ::= ( 'if' | 'if!' ) '(' expression ')' expression 'else' expression +if_expr ::= ( 'if' | 'if!' ) '(' expr ')' expr 'else' expr -match_expression ::= 'match' '(' expression ')' '{' expression '=>' expression ( ',' expression '=>' expression )* - ',' '_' '=>' expression '}' +match_expr ::= 'match' '(' expr ')' '{' expr '=>' expr ( ',' expr '=>' expr )* + ',' '_' '=>' expr '}' -subscript_call ::= NAME ( subscript | call )* ( '{' ( expression ( ',' expression )* )? '}' )? +subsc_call ::= NAME ( subsc | call )* ( '{' ( expr ( ',' expr )* )? '}' )? -group_expression ::= '(' expression ')' +group_expr ::= '(' expr ')' diff --git a/docs/grammar.md b/docs/grammar.md index 682d9f2..7bb223e 100644 --- a/docs/grammar.md +++ b/docs/grammar.md @@ -88,13 +88,13 @@ Keywords are reserved words that have a special meaning and cannot be used as na let loop match - mut nil + return - return struct true + var while while! @@ -180,122 +180,123 @@ In addition, Hook uses a special token to indicate the end of a file. This token The complete syntactic grammar of Hook is defined by the following EBNF grammar: ```ebnf -chunk ::= statement* EOF +chunk ::= stmt* EOF -statement ::= import_statement - | variable_declaration ';' +stmt ::= import_stmt + | var_decl ';' | assign_call ';' - | struct_declaration - | function_declaration - | delete_statement - | if_statement - | match_statement - | loop_statement - | while_statement - | for_statement - | break_statement - | return_statement + | struct_decl + | fn_decl + | del_stmt + | if_stmt + | match_stmt + | loop_stmt + | while_stmt + | for_stmt + | break_stmt + | return_stmt | block -import_statement ::= 'import' NAME ( 'as' NAME )? ';' +import_stmt ::= 'import' NAME ( 'as' NAME )? ';' | 'import' STRING 'as' NAME ';' | 'import' '{' NAME ( ',' NAME )* '}' 'from' ( NAME | STRING ) ';' -variable_declaration ::= 'let' NAME '=' expression - | 'mut' NAME ( '=' expression )? - | ( 'let' | 'mut' ) '[' '_' | NAME ( ',' '_' | NAME )* ']' '=' expression - | ( 'let' | 'mut' ) '{' NAME ( ',' NAME )* '}' '=' expression +var_decl ::= 'let' NAME '=' expr + | 'var' NAME ( '=' expr )? + | ( 'let' | 'var' ) '[' '_' | NAME ( ',' '_' | NAME )* ']' '=' expr + | ( 'let' | 'var' ) '{' NAME ( ',' NAME )* '}' '=' expr -assign_call ::= NAME subscript* assign_op expression - | NAME subscript* ( '++' | '--' ) - | NAME subscript* '[' ']' '=' expression - | NAME subscript* subscript '=' expression - | NAME ( subscript | call )* call +assign_call ::= NAME subsc* assign_op expr + | NAME subsc* ( '++' | '--' ) + | NAME subsc* '[' ']' '=' expr + | NAME subsc* subsc '=' expr + | NAME ( subsc | call )* call -struct_declaration ::= 'struct' NAME '{' ( string | NAME ( ',' string | NAME )* )? '}' +struct_decl ::= 'struct' NAME '{' ( string | NAME ( ',' string | NAME )* )? '}' -function_declaration ::= 'fn' NAME '(' ( 'mut'? NAME ( ',' 'mut'? NAME )* )? ')' ( '=>' expression ";" | block ) +fn_decl ::= 'fn' NAME '(' ( NAME ( ',' NAME )* )? ')' ( '=>' expr ";" | block ) -delete_statement ::= 'del' NAME subscript* '[' expression ']' ';' +del_stmt ::= 'del' NAME subsc* '[' expr ']' ';' -if_statement ::= ( 'if' | 'if!' ) '(' ( variable_declaration ';' )? expression ')' - statement ( 'else' statement )? +if_stmt ::= ( 'if' | 'if!' ) '(' ( var_decl ';' )? expr ')' + stmt ( 'else' stmt )? -match_statement ::= 'match' '(' ( variable_declaration ';' )? expression ')' - '{' ( expression '=>' statement )+ ( '_' '=>' statement )? '}' +match_stmt ::= 'match' '(' ( var_decl ';' )? expr ')' + '{' ( expr '=>' stmt )+ ( '_' '=>' stmt )? '}' -loop_statement ::= 'loop' statement +loop_stmt ::= 'loop' stmt -while_statement ::= ( 'while' | 'while!' ) '(' expression ')' statement - | 'do' statement ( 'while' | 'while!' ) '(' expression ')' ';' +while_stmt ::= ( 'while' | 'while!' ) '(' expr ')' stmt + | 'do' stmt ( 'while' | 'while!' ) '(' expr ')' ';' -for_statement ::= 'for' '(' ( variable_declaration | assign_call )? ';' expression? ';' assign_call? ')' statement - | 'foreach' '(' NAME 'in' expression ')' statement +for_stmt ::= 'for' '(' ( var_decl | assign_call )? ';' expr? + ';' assign_call? ')' stmt + | 'foreach' '(' NAME 'in' expr ')' stmt -break_statement ::= ( 'break' | 'continue' ) ';' +break_stmt ::= ( 'break' | 'continue' ) ';' -return_statement ::= 'return' expression? ';' +return_stmt ::= 'return' expr? ';' block ::= '{' stmt* '}' assign_op ::= '=' | '|=' | '^=' | '&=' | '<<=' | '>>=' | '+=' | '-=' | '*=' | '/=' | '~/=' | '%=' -subscript ::= '[' expression ']' | '.' NAME +subsc ::= '[' expr ']' | '.' NAME -call ::= '(' ( expression ( ',' expression )* )? ')' +call ::= '(' ( expr ( ',' expr )* )? ')' -expression ::= and_expression ( '||' and_expression )* +expr ::= and_expr ( '||' and_expr )* -and_expression ::= equal_expression ( '&&' equal_expression )* +and_expr ::= equal_expr ( '&&' equal_expr )* -equal_expression ::= comp_expression ( ( '==' | '!=' ) comp_expression )* +equal_expr ::= comp_expr ( ( '==' | '!=' ) comp_expr )* -comp_expression ::= bor_expression ( ( '>' | '>=' | '<' | '<=' ) bor_expression )* +comp_expr ::= bor_expr ( ( '>' | '>=' | '<' | '<=' ) bor_expr )* -bor_expression ::= bxor_expression ( '|' bxor_expression )* +bor_expr ::= bxor_expr ( '|' bxor_expr )* -bxor_expression ::= band_expression ( '^' band_expression )* +bxor_expr ::= band_expr ( '^' band_expr )* -band_expression ::= shift_expression ( '&' shift_expression )* +band_expr ::= shift_expr ( '&' shift_expr )* -shift_expression ::= range_expression ( ( '<<' | '>>' ) range_expression )* +shift_expr ::= range_expr ( ( '<<' | '>>' ) range_expr )* -range_expression ::= add_expression ( '..' add_expression )? +range_expr ::= add_expr ( '..' add_expr )? -add_expression ::= mul_expression ( ( '+' | '-' ) mul_expression )* +add_expr ::= mul_expr ( ( '+' | '-' ) mul_expr )* -mul_expression ::= unary_expression ( ( '*' | '/' | '~/' | '%' ) unary_expression )* +mul_expr ::= unary_expr ( ( '*' | '/' | '~/' | '%' ) unary_expr )* -unary_expression ::= ( '-' | '!' | '~' ) unary_expression | primary_expression +unary_expr ::= ( '-' | '!' | '~' ) unary_expr | primary_expr -primary_expression ::= literal +primary_expr ::= literal | array_constructor | struct_constructor | anonymous_struct - | anonymous_function - | if_expression - | match_expression - | subscript_call - | group_expression + | anonymous_fn + | if_expr + | match_expr + | subsc_call + | group_expr literal ::= 'nil' | 'false' | 'true' | number | string -array_constructor ::= '[' ( expression ( ',' expression )* )? ']' +array_constructor ::= '[' ( expr ( ',' expr )* )? ']' -struct_constructor ::= '{' ( string | NAME ':' expression ( ',' string | NAME ':' expression )* )? '}' +struct_constructor ::= '{' ( string | NAME ':' expr ( ',' string | NAME ':' expr )* )? '}' anonymous_struct ::= 'struct' '{' ( string | NAME ( ',' string | NAME )* )? '}' -anonymous_function ::= '|' ( 'mut'? NAME ( ',' 'mut'? NAME )* )? '|' ( '=>' expression | block ) - | '||' ( '=>' expression | block ) +anonymous_fn ::= '|' ( NAME ( ',' NAME )* )? '|' ( '=>' expr | block ) + | '||' ( '=>' expr | block ) -if_expression ::= ( 'if' | 'if!' ) '(' expression ')' expression 'else' expression +if_expr ::= ( 'if' | 'if!' ) '(' expr ')' expr 'else' expr -match_expression ::= 'match' '(' expression ')' '{' expression '=>' expression ( ',' expression '=>' expression )* - ',' '_' '=>' expression '}' +match_expr ::= 'match' '(' expr ')' '{' expr '=>' expr ( ',' expr '=>' expr )* + ',' '_' '=>' expr '}' -subscript_call ::= NAME ( subscript | call )* ( '{' ( expression ( ',' expression )* )? '}' )? +subsc_call ::= NAME ( subsc | call )* ( '{' ( expr ( ',' expr )* )? '}' )? -group_expression ::= '(' expression ')' +group_expr ::= '(' expr ')' ``` diff --git a/docs/keywords.txt b/docs/keywords.txt index 30fc638..103b0a7 100644 --- a/docs/keywords.txt +++ b/docs/keywords.txt @@ -17,10 +17,10 @@ in let loop match -mut nil return struct true +var while while! diff --git a/docs/tokens.txt b/docs/tokens.txt index aba30d4..491fc06 100644 --- a/docs/tokens.txt +++ b/docs/tokens.txt @@ -69,11 +69,11 @@ TOKEN_KIND_IN_KW 'in' TOKEN_KIND_LET_KW 'let' TOKEN_KIND_LOOP_KW 'loop' TOKEN_KIND_MATCH_KW 'match' -TOKEN_KIND_MUT_KW 'mut' TOKEN_KIND_NIL_KW 'nil' TOKEN_KIND_RETURN_KW 'return' TOKEN_KIND_STRUCT_KW 'struct' TOKEN_KIND_TRUE_KW 'true' +TOKEN_KIND_VAR_KW 'var' TOKEN_KIND_WHILE_KW 'while' TOKEN_KIND_WHILEBANG_KW 'while!' TOKEN_KIND_NAME_KW NAME diff --git a/examples/100doors.hk b/examples/100doors.hk index 140bd1b..d32a8b3 100644 --- a/examples/100doors.hk +++ b/examples/100doors.hk @@ -2,12 +2,12 @@ // 100doors.hk // -mut square = 1; -mut increment = 3; +var square = 1; +var increment = 3; println("The open doors are: "); -for (mut door = 1; door <= 100; door++) +for (var door = 1; door <= 100; door++) { if (door != square) continue; diff --git a/examples/99bottles.hk b/examples/99bottles.hk index 7fe8082..2bc7546 100644 --- a/examples/99bottles.hk +++ b/examples/99bottles.hk @@ -2,7 +2,7 @@ // 99bottles.hk // -mut n = 99; +var n = 99; while (n > 1) { println(to_string(n) + " bottles of beer on the wall,"); diff --git a/examples/binary_search.hk b/examples/binary_search.hk index e0b77ec..7c402cf 100644 --- a/examples/binary_search.hk +++ b/examples/binary_search.hk @@ -3,8 +3,8 @@ // fn binary_search(arr, key) { - mut low = 0; - mut high = len(arr) - 1; + var low = 0; + var high = len(arr) - 1; while (low <= high) { let middle = to_int((low + high) / 2); let cmp = compare(key, arr[middle]); diff --git a/examples/bubble_sort.hk b/examples/bubble_sort.hk index 9f3b4f8..c42171f 100644 --- a/examples/bubble_sort.hk +++ b/examples/bubble_sort.hk @@ -2,13 +2,13 @@ // bubble_sort.hk // -fn sort(mut arr) { - mut n = len(arr); - mut has_changed; +fn sort(arr) { + var n = len(arr); + var has_changed; do { has_changed = false; n--; - for (mut i = 0; i < n; i++) { + for (var i = 0; i < n; i++) { if (arr[i] > arr[i + 1]) { let t = arr[i]; arr[i] = arr[i + 1]; diff --git a/examples/coin_flip.hk b/examples/coin_flip.hk index cff3530..c206e9e 100644 --- a/examples/coin_flip.hk +++ b/examples/coin_flip.hk @@ -9,9 +9,9 @@ import { round } from math; srand(time()); fn coin_flip(times) { - mut heads = 0; - mut tails = 0; - for (mut i = 0; i < times; i++) { + var heads = 0; + var tails = 0; + for (var i = 0; i < times; i++) { let n = round(rand() * 1); if (n == 0) heads++; diff --git a/examples/collatz.hk b/examples/collatz.hk index 25d5a4f..9dd567d 100644 --- a/examples/collatz.hk +++ b/examples/collatz.hk @@ -2,8 +2,8 @@ // collatz.hk // -fn collatz(mut n) { - mut count = 0; +fn collatz(n) { + var count = 0; while (n != 1) { count++; if (n % 2 == 0) diff --git a/examples/fractal.hk b/examples/fractal.hk index af65dd6..7adfdc7 100644 --- a/examples/fractal.hk +++ b/examples/fractal.hk @@ -8,14 +8,14 @@ let x_min = -1.5; let x_max = -1.1; let pixels = " .:;+=xX$&"; -for (mut y = 0; y < 40; y++) { +for (var y = 0; y < 40; y++) { let y0 = (y / 40.0) * (y_max - y_min) + y_min; - for (mut x = 0; x < 79; x++) { + for (var x = 0; x < 79; x++) { let x0 = (x / 78.0) * (x_max - x_min) + x_min; - mut x = x0; - mut y = y0; - mut pixel = ' '; - for (mut i = 0; i < 80; i++) { + var x = x0; + var y = y0; + var pixel = ' '; + for (var i = 0; i < 80; i++) { x = x * x - y * y + x0; y = 2 * x * y + y0; if (x * x + y * y > 4) { diff --git a/examples/guessing_game.hk b/examples/guessing_game.hk index 29d3b14..c934a2a 100644 --- a/examples/guessing_game.hk +++ b/examples/guessing_game.hk @@ -15,7 +15,7 @@ let secret_number = to_int(1 + rand() * 99); loop { println("Please input your guess."); - mut guess = readln(stdin); + var guess = readln(stdin); guess = trim(guess); diff --git a/examples/hailstone.hk b/examples/hailstone.hk index 8eb3060..30a6c2b 100644 --- a/examples/hailstone.hk +++ b/examples/hailstone.hk @@ -2,8 +2,8 @@ // hailstone.hk // -fn hailstone(mut n) { - mut seq = [n]; +fn hailstone(n) { + var seq = [n]; while (n != 1) { if (n % 2 == 0) n /= 2; diff --git a/examples/knapsack.hk b/examples/knapsack.hk index 62e78be..536bc1d 100644 --- a/examples/knapsack.hk +++ b/examples/knapsack.hk @@ -3,14 +3,14 @@ // fn knapsack(weight_cap, weights, values) { - mut high = 0; + var high = 0; let n = len(weights); - for (mut i = 0; i < n; i++) { - mut cap = weights[i]; - mut value = values[i]; + for (var i = 0; i < n; i++) { + var cap = weights[i]; + var value = values[i]; let new_cap = weights[i]; let new_value = values[i]; - for (mut j = i + 1; j < n; j++) { + for (var j = i + 1; j < n; j++) { if (cap < weight_cap && cap + weights[j] <= weight_cap) { cap += weights[j]; value += values[j]; diff --git a/examples/knuth_shuffle.hk b/examples/knuth_shuffle.hk index 5f58859..f35441f 100644 --- a/examples/knuth_shuffle.hk +++ b/examples/knuth_shuffle.hk @@ -7,9 +7,9 @@ import { time } from os; srand(time()); -fn shuffle(mut arr) { +fn shuffle(arr) { let n = len(arr); - for (mut i = n - 1; i >= 0; i--) { + for (var i = n - 1; i >= 0; i--) { let j = to_int(rand() * (i - 1)); let tmp = arr[i]; arr[i] = arr[j]; diff --git a/examples/mandelbrot.hk b/examples/mandelbrot.hk index c1c89ec..3532988 100644 --- a/examples/mandelbrot.hk +++ b/examples/mandelbrot.hk @@ -10,16 +10,16 @@ let y_max = 0.1; let x_min = -1.5; let x_max = -1.1; -for (mut y_pixel = 0; y_pixel < 24; y_pixel++) { +for (var y_pixel = 0; y_pixel < 24; y_pixel++) { let y = (y_pixel / 24) * (y_max - y_min) + y_min; - for (mut x_pixel = 0; x_pixel < 80; x_pixel++) { + for (var x_pixel = 0; x_pixel < 80; x_pixel++) { let x = (x_pixel / 79) * (x_max - x_min) + x_min; - mut pixel = " "; - mut x0 = x; - mut y0 = y; - for (mut iter = 0; iter < 80; iter++) { - mut x1 = (x0 * x0) - (y0 * y0); - mut y1 = 2 * x0 * y0; + var pixel = " "; + var x0 = x; + var y0 = y; + for (var iter = 0; iter < 80; iter++) { + var x1 = (x0 * x0) - (y0 * y0); + var y1 = 2 * x0 * y0; x1 = x1 + x; y1 = y1 + y; x0 = x1; diff --git a/examples/nbody.hk b/examples/nbody.hk index 07b98d3..76a2ef2 100644 --- a/examples/nbody.hk +++ b/examples/nbody.hk @@ -60,12 +60,12 @@ fn neptune() => Body { 5.15138902046611451e-05 * SOLAR_MASS }; -fn offset_momentum(mut bodies) { - mut px = 0; - mut py = 0; - mut pz = 0; +fn offset_momentum(bodies) { + var px = 0; + var py = 0; + var pz = 0; let size = len(bodies); - mut i = 0; + var i = 0; while (i < size) { let body = bodies[i]; let mass = body.mass; @@ -80,17 +80,17 @@ fn offset_momentum(mut bodies) { return bodies; } -fn advance(mut bodies, dt) { +fn advance(bodies, dt) { let size = len(bodies); - mut i = 0; + var i = 0; while (i < size) { - mut bodyi = bodies[i]; - mut vxi = bodyi.vx; - mut vyi = bodyi.vy; - mut vzi = bodyi.vz; - mut j = i + 1; + var bodyi = bodies[i]; + var vxi = bodyi.vx; + var vyi = bodyi.vy; + var vzi = bodyi.vz; + var j = i + 1; while (j < size) { - mut bodyj = bodies[j]; + var bodyj = bodies[j]; let dx = bodyi.x - bodyj.x; let dy = bodyi.y - bodyj.y; let dz = bodyi.z - bodyj.z; @@ -124,14 +124,14 @@ fn advance(mut bodies, dt) { } fn energy(bodies) { - mut e = 0; + var e = 0; let size = len(bodies); - mut i = 0; + var i = 0; while (i < size) { let bodyi = bodies[i]; e += 0.5 * bodyi.mass * ( bodyi.vx * bodyi.vx + bodyi.vy * bodyi.vy + bodyi.vz * bodyi.vz ); - mut j = i + 1; + var j = i + 1; while (j < size) { let bodyj = bodies[j]; let dx = bodyi.x - bodyj.x; @@ -147,10 +147,10 @@ fn energy(bodies) { } let n = to_int(args[0]); -mut bodies = [ sun(), jupiter(), saturn(), uranus(), neptune() ]; +var bodies = [ sun(), jupiter(), saturn(), uranus(), neptune() ]; bodies = offset_momentum(bodies); println(energy(bodies)); -mut i = 0; +var i = 0; while (i < n) { bodies = advance(bodies, 0.01); i++; diff --git a/examples/num_to_words.hk b/examples/num_to_words.hk index b4a4e0e..6d9f904 100644 --- a/examples/num_to_words.hk +++ b/examples/num_to_words.hk @@ -11,7 +11,7 @@ let teen_places = ["tenth", "eleventh", "twelfth", "thirteenth", "fourteenth", " let tens_places = ["", "tenth", "twentieth", "thirtieth", "fortieth", "fifthieth", "sixthieth", "seventieth", "eightieth", "ninetieth"]; fn num_to_array(num) { - mut arr = []; + var arr = []; arr[] = to_int(num / 100000000 % 10); arr[] = to_int(num / 10000000 % 10); arr[] = to_int(num / 1000000 % 10); @@ -35,7 +35,7 @@ fn has_trailing_zeros(arr) { fn num_to_words(num) { let arr = num_to_array(num); - mut word = ""; + var word = ""; if (num == 0) word = "zero"; if (num >= 1 && num <= 9) @@ -67,7 +67,7 @@ fn num_to_words(num) { fn num_to_place(num) { let arr = num_to_array(num); - mut place = ""; + var place = ""; if (num == 0) place = "zeroth"; if (num >= 1 && num <= 9) diff --git a/examples/pi.hk b/examples/pi.hk index 21057ef..14c05bd 100644 --- a/examples/pi.hk +++ b/examples/pi.hk @@ -4,9 +4,9 @@ fn pi() { let n = 1000000; - mut d = 1; - mut sum = 0; - for (mut i = 0; i < n; i++) { + var d = 1; + var sum = 0; + for (var i = 0; i < n; i++) { if (i % 2 == 0) sum += 4 / d; else diff --git a/examples/pig_latin.hk b/examples/pig_latin.hk index 175b6be..4106848 100644 --- a/examples/pig_latin.hk +++ b/examples/pig_latin.hk @@ -7,11 +7,11 @@ import { lower } from strings; let vowels = ['a', 'e', 'i', 'o', 'u']; let num_vowels = len(vowels); -fn pig_latin(mut word) { +fn pig_latin(word) { word = lower(word); let first = word[0]; - for (mut i = 0; i < num_vowels; i++) { + for (var i = 0; i < num_vowels; i++) { if (first != vowels[i]) continue; return word + "way"; diff --git a/examples/quick_sort.hk b/examples/quick_sort.hk index c079990..12632c6 100644 --- a/examples/quick_sort.hk +++ b/examples/quick_sort.hk @@ -2,14 +2,14 @@ // quick_sort.hk // -fn sort(mut arr) { +fn sort(arr) { let n = len(arr); if (n <= 1) return arr; let pivot = arr[0]; - mut left = []; - mut right = []; - for (mut i = 1; i < n; i++) { + var left = []; + var right = []; + for (var i = 1; i < n; i++) { if (arr[i] < pivot) left[] = arr[i]; else diff --git a/examples/rule110.hk b/examples/rule110.hk index 7fcd1cf..a1506b3 100644 --- a/examples/rule110.hk +++ b/examples/rule110.hk @@ -3,8 +3,8 @@ // let size = 100; -mut prev = []; -mut i; +var prev = []; +var i; i = 0; while (i < size - 1) { @@ -43,15 +43,15 @@ fn calc(p, i) { i = 0; while (i < size) { - mut line = [false]; - mut j; + var line = [false]; + var j; j = 1; while (j < size - 1) { line[] = calc(prev, j); j++; } line[] = false; - mut output = ""; + var output = ""; j = 0; while (j < size) { output += if (line[j]) "*" else " "; diff --git a/examples/sieve_of_eratosthenes.hk b/examples/sieve_of_eratosthenes.hk index 5648d50..fcba0eb 100644 --- a/examples/sieve_of_eratosthenes.hk +++ b/examples/sieve_of_eratosthenes.hk @@ -5,8 +5,8 @@ import { new_array } from arrays; fn sieve_of_eratosthenes(n) { - mut prime = new_array(n + 1); - mut i; + var prime = new_array(n + 1); + var i; i = 0; while (i < n + 1) { prime[] = true; @@ -15,7 +15,7 @@ fn sieve_of_eratosthenes(n) { i = 2; while (i * i <= n) { if (prime[i]) { - mut j = i * 2; + var j = i * 2; while (j <= n) { prime[j] = false; j += i; diff --git a/examples/tic_tac_toe.hk b/examples/tic_tac_toe.hk index a1e1352..1b241f1 100644 --- a/examples/tic_tac_toe.hk +++ b/examples/tic_tac_toe.hk @@ -31,7 +31,7 @@ fn win(board) { [0, 4, 8], [2, 4, 6] ]; - for (mut i = 0; i < 8; i++) { + for (var i = 0; i < 8; i++) { if (board[wins[i][0]] != 0 && board[wins[i][0]] == board[wins[i][1]] && board[wins[i][0]] == board[wins[i][2]]) return board[wins[i][2]]; @@ -39,13 +39,13 @@ fn win(board) { return 0; } -fn minimax(mut board, player) { - mut winner = win(board); +fn minimax(board, player) { + var winner = win(board); if (winner != 0) return winner * player; - mut move = -1; - mut score = -2; - for (mut i = 0; i < 9; i++) { + var move = -1; + var score = -2; + for (var i = 0; i < 9; i++) { if (board[i] == 0) { board[i] = player; let this_score = - minimax(board, player * -1); @@ -61,11 +61,11 @@ fn minimax(mut board, player) { return score; } -fn cpu_move(mut board) { +fn cpu_move(board) { println("Thinking..."); - mut move = -1; - mut score = -2; - for (mut i = 0; i < 9; i++) { + var move = -1; + var score = -2; + for (var i = 0; i < 9; i++) { if (board[i] == 0) { board[i] = 1; let temp_score = - minimax(board, -1); @@ -80,8 +80,8 @@ fn cpu_move(mut board) { return board; } -fn player_move(mut board) { - mut move; +fn player_move(board) { + var move; do { print("Input move ([0..8]): "); move = to_int(readln(stdin)); @@ -90,14 +90,14 @@ fn player_move(mut board) { return board; } -mut board = [0, 0, 0, 0, 0, 0, 0, 0, 0]; +var board = [0, 0, 0, 0, 0, 0, 0, 0, 0]; println("CPU: O, You: X"); println("Play (1)st or (2)nd? "); let player = to_int(readln(stdin)); -for (mut turn = 0; turn < 9 && win(board) == 0; turn++) { +for (var turn = 0; turn < 9 && win(board) == 0; turn++) { if ((turn + player) % 2 == 0) { board = cpu_move(board); continue; diff --git a/include/hook/value.h b/include/hook/value.h index 1934593..f8d619c 100644 --- a/include/hook/value.h +++ b/include/hook/value.h @@ -84,8 +84,8 @@ typedef enum #define hk_decr_ref(o) --(o)->refCount #define hk_is_unreachable(o) (!(o)->refCount) -#define hk_value_incr_ref(v) if (hk_is_object(v)) hk_incr_ref(hk_as_object(v)) -#define hk_value_decr_ref(v) if (hk_is_object(v)) hk_decr_ref(hk_as_object(v)) +#define hk_value_incr_ref(v) if (hk_is_object(v)) hk_incr_ref(hk_as_object(v)) +#define hk_value_decr_ref(v) if (hk_is_object(v)) hk_decr_ref(hk_as_object(v)) typedef struct { diff --git a/src/compiler.c b/src/compiler.c index 5acb654..9bf99db 100644 --- a/src/compiler.c +++ b/src/compiler.c @@ -404,7 +404,7 @@ static void compile_statement(Compiler *comp) consume(comp, TOKEN_KIND_SEMICOLON); return; } - if (match(scan, TOKEN_KIND_MUT_KW)) + if (match(scan, TOKEN_KIND_VAR_KW)) { compile_variable_declaration(comp); consume(comp, TOKEN_KIND_SEMICOLON); @@ -1057,29 +1057,17 @@ static void compile_function_declaration(Compiler *comp) hk_chunk_emit_opcode(childChunk, HK_OP_RETURN_NIL); goto end; } - bool isMutable = false; - if (match(scan, TOKEN_KIND_MUT_KW)) - { - scanner_next_token(scan); - isMutable = true; - } if (!match(scan, TOKEN_KIND_NAME)) syntax_error_unexpected(comp); - define_local(&childComp, &scan->token, isMutable); + define_local(&childComp, &scan->token, true); scanner_next_token(scan); int arity = 1; while (match(scan, TOKEN_KIND_COMMA)) { scanner_next_token(scan); - bool isMutable = false; - if (match(scan, TOKEN_KIND_MUT_KW)) - { - scanner_next_token(scan); - isMutable = true; - } if (!match(scan, TOKEN_KIND_NAME)) syntax_error_unexpected(comp); - define_local(&childComp, &scan->token, isMutable); + define_local(&childComp, &scan->token, true); scanner_next_token(scan); ++arity; } @@ -1130,29 +1118,17 @@ static void compile_anonymous_function(Compiler *comp) hk_chunk_emit_opcode(childChunk, HK_OP_RETURN_NIL); goto end; } - bool isMutable = false; - if (match(scan, TOKEN_KIND_MUT_KW)) - { - scanner_next_token(scan); - isMutable = true; - } if (!match(scan, TOKEN_KIND_NAME)) syntax_error_unexpected(comp); - define_local(&childComp, &scan->token, isMutable); + define_local(&childComp, &scan->token, true); scanner_next_token(scan); int arity = 1; while (match(scan, TOKEN_KIND_COMMA)) { scanner_next_token(scan); - bool isMutable = false; - if (match(scan, TOKEN_KIND_MUT_KW)) - { - scanner_next_token(scan); - isMutable = true; - } if (!match(scan, TOKEN_KIND_NAME)) syntax_error_unexpected(comp); - define_local(&childComp, &scan->token, isMutable); + define_local(&childComp, &scan->token, true); scanner_next_token(scan); ++arity; } @@ -1275,7 +1251,7 @@ static void compile_if_statement(Compiler *comp, bool not) compile_constant_declaration(comp); consume(comp, TOKEN_KIND_SEMICOLON); } - else if (match(scan, TOKEN_KIND_MUT_KW)) + else if (match(scan, TOKEN_KIND_VAR_KW)) { compile_variable_declaration(comp); consume(comp, TOKEN_KIND_SEMICOLON); @@ -1308,7 +1284,7 @@ static void compile_match_statement(Compiler *comp) compile_constant_declaration(comp); consume(comp, TOKEN_KIND_SEMICOLON); } - else if (match(scan, TOKEN_KIND_MUT_KW)) + else if (match(scan, TOKEN_KIND_VAR_KW)) { compile_variable_declaration(comp); consume(comp, TOKEN_KIND_SEMICOLON); @@ -1433,7 +1409,7 @@ static void compile_for_statement(Compiler *comp) compile_constant_declaration(comp); consume(comp, TOKEN_KIND_SEMICOLON); } - else if (match(scan, TOKEN_KIND_MUT_KW)) + else if (match(scan, TOKEN_KIND_VAR_KW)) { compile_variable_declaration(comp); consume(comp, TOKEN_KIND_SEMICOLON); diff --git a/src/scanner.c b/src/scanner.c index 177646f..9baa9b6 100644 --- a/src/scanner.c +++ b/src/scanner.c @@ -586,11 +586,6 @@ void scanner_next_token(Scanner *scan) scan->token.kind = TOKEN_KIND_MATCH_KW; return; } - if (match_keyword(scan, "mut")) - { - scan->token.kind = TOKEN_KIND_MUT_KW; - return; - } if (match_keyword(scan, "nil")) { scan->token.kind = TOKEN_KIND_NIL_KW; @@ -611,6 +606,12 @@ void scanner_next_token(Scanner *scan) scan->token.kind = TOKEN_KIND_TRUE_KW; return; } + if (match_keyword(scan, "var")) + { + scan->token.kind = TOKEN_KIND_VAR_KW; + return; + } + if (match_keyword(scan, "while!")) { scan->token.kind = TOKEN_KIND_WHILEBANG_KW; diff --git a/src/scanner.h b/src/scanner.h index 7623b90..d86665b 100644 --- a/src/scanner.h +++ b/src/scanner.h @@ -20,7 +20,7 @@ typedef enum TOKEN_KIND_FLOAT, TOKEN_KIND_STRING, TOKEN_KIND_UNDERSCORE_KW, TOKEN_KIND_AS_KW, TOKEN_KIND_BREAK_KW, TOKEN_KIND_CONTINUE_KW, TOKEN_KIND_DEL_KW, TOKEN_KIND_DO_KW, TOKEN_KIND_ELSE_KW, TOKEN_KIND_FALSE_KW, TOKEN_KIND_FN_KW, TOKEN_KIND_FOR_KW, TOKEN_KIND_FOREACH_KW, TOKEN_KIND_FROM_KW, TOKEN_KIND_IF_KW, TOKEN_KIND_IFBANG_KW, TOKEN_KIND_IMPORT_KW, TOKEN_KIND_IN_KW, TOKEN_KIND_LET_KW, TOKEN_KIND_LOOP_KW, TOKEN_KIND_MATCH_KW, - TOKEN_KIND_MUT_KW, TOKEN_KIND_NIL_KW, TOKEN_KIND_RETURN_KW, TOKEN_KIND_STRUCT_KW, TOKEN_KIND_TRUE_KW, TOKEN_KIND_WHILE_KW, TOKEN_KIND_WHILEBANG_KW, + TOKEN_KIND_NIL_KW, TOKEN_KIND_RETURN_KW, TOKEN_KIND_STRUCT_KW, TOKEN_KIND_TRUE_KW, TOKEN_KIND_VAR_KW, TOKEN_KIND_WHILE_KW, TOKEN_KIND_WHILEBANG_KW, TOKEN_KIND_NAME } TokenKind; diff --git a/tests/arithmetic_assignment_test.hk b/tests/arithmetic_assignment_test.hk index de45db7..ddc0cd6 100644 --- a/tests/arithmetic_assignment_test.hk +++ b/tests/arithmetic_assignment_test.hk @@ -1,5 +1,5 @@ -mut a; +var a; a = 1; a += 1; a -= 1; @@ -10,7 +10,7 @@ a %= 1; a++; a--; -mut b = []; +var b = []; b[] = 1; b[0] += 1; b[0] -= 1; @@ -21,7 +21,7 @@ b[0] %= 1; b[0]++; b[0]--; -mut c = [[]]; +var c = [[]]; c[0][] = 1; c[0][0] += 1; c[0][0] -= 1; diff --git a/tests/array_add_element_test.hk b/tests/array_add_element_test.hk index 2808192..d8af207 100644 --- a/tests/array_add_element_test.hk +++ b/tests/array_add_element_test.hk @@ -1,16 +1,16 @@ -mut arr1 = []; +var arr1 = []; arr1[] = "foo"; println(arr1); -mut arr2 = [[]]; +var arr2 = [[]]; arr2[0][] = "foo"; println(arr2); -mut arr3 = [[[]]]; +var arr3 = [[[]]]; arr3[0][0][] = "foo"; println(arr3); -mut arr4 = [[1, 2, 3]]; +var arr4 = [[1, 2, 3]]; arr4[0][] = 4; println(arr4); diff --git a/tests/array_delete_element_test.hk b/tests/array_delete_element_test.hk index 0c7eff1..69b228e 100644 --- a/tests/array_delete_element_test.hk +++ b/tests/array_delete_element_test.hk @@ -1,5 +1,5 @@ -mut arr = [1, 2, 3, ["foo", "bar", "baz"]]; +var arr = [1, 2, 3, ["foo", "bar", "baz"]]; del arr[1]; println(arr); diff --git a/tests/array_resize_test.hk b/tests/array_resize_test.hk index da9c27f..2333ecb 100644 --- a/tests/array_resize_test.hk +++ b/tests/array_resize_test.hk @@ -1,6 +1,6 @@ -mut arr = []; -for (mut i = 1; i <= 100; i++) { +var arr = []; +for (var i = 1; i <= 100; i++) { arr[] = i; } println(arr[99]); diff --git a/tests/array_set_element_test.hk b/tests/array_set_element_test.hk index 256d48c..c0d94e8 100644 --- a/tests/array_set_element_test.hk +++ b/tests/array_set_element_test.hk @@ -1,16 +1,16 @@ -mut arr1 = ["foo"]; +var arr1 = ["foo"]; arr1[0] = "bar"; println(arr1); -mut arr2 = [["foo"]]; +var arr2 = [["foo"]]; arr2[0][0] = "bar"; println(arr2); -mut arr3 = [[["foo"]]]; +var arr3 = [[["foo"]]]; arr3[0][0][0] = "bar"; println(arr3); -mut arr4 = [["foo", "bar", "baz"]]; +var arr4 = [["foo", "bar", "baz"]]; arr4[0][1] = "qux"; println(arr4); diff --git a/tests/bitwise_shift_assignment_test.hk b/tests/bitwise_shift_assignment_test.hk index 1d8f8a7..69a18ec 100644 --- a/tests/bitwise_shift_assignment_test.hk +++ b/tests/bitwise_shift_assignment_test.hk @@ -1,19 +1,19 @@ -mut a = 0; +var a = 0; a |= 1; a ^= 1; a &= 1; a <<= 1; a >>= 1; -mut b = [0]; +var b = [0]; b[0] |= 1; b[0] ^= 1; b[0] &= 1; b[0] <<= 1; b[0] >>= 1; -mut c = [[0]]; +var c = [[0]]; c[0][0] |= 1; c[0][0] ^= 1; c[0][0] &= 1; diff --git a/tests/if_statement_var_declaration_test.hk b/tests/if_statement_var_declaration_test.hk index 210344c..26ed70a 100644 --- a/tests/if_statement_var_declaration_test.hk +++ b/tests/if_statement_var_declaration_test.hk @@ -23,13 +23,13 @@ if (let [ok, err] = bar(); err) { println(ok); } -if (mut { ok, err } = baz(); err) { +if (var { ok, err } = baz(); err) { println(err); } else { println(ok); } -mut result; +var result; if (result = baz(); result.err) { println(result.err); } diff --git a/tests/if_with_var_declaration_test.hk b/tests/if_with_var_declaration_test.hk index fc01905..0a25e5d 100644 --- a/tests/if_with_var_declaration_test.hk +++ b/tests/if_with_var_declaration_test.hk @@ -23,7 +23,7 @@ if (let [ok, err] = bar(); err) { println(ok); } -if (mut { ok, err } = baz(); err) { +if (var { ok, err } = baz(); err) { println(err); } else { println(ok); diff --git a/tests/iterator_test.hk b/tests/iterator_test.hk index 52507f9..3b19737 100644 --- a/tests/iterator_test.hk +++ b/tests/iterator_test.hk @@ -1,6 +1,6 @@ -mut it1; -mut it2; +var it1; +var it2; let range = 1 .. 3; it1 = iter(range); diff --git a/tests/looping_statements_test.hk b/tests/looping_statements_test.hk index efba46f..e50eedf 100644 --- a/tests/looping_statements_test.hk +++ b/tests/looping_statements_test.hk @@ -1,5 +1,5 @@ -mut i; +var i; i = 0; loop { diff --git a/tests/main_function_args_test.hk b/tests/main_function_args_test.hk index 402c947..4c10d33 100644 --- a/tests/main_function_args_test.hk +++ b/tests/main_function_args_test.hk @@ -1,3 +1,3 @@ -for (mut i = 0; i < len(args); i++) +for (var i = 0; i < len(args); i++) println(args[i]); diff --git a/tests/match_statement_var_declaration_test.hk b/tests/match_statement_var_declaration_test.hk index 362de82..79c22b2 100644 --- a/tests/match_statement_var_declaration_test.hk +++ b/tests/match_statement_var_declaration_test.hk @@ -37,7 +37,7 @@ match (let { lvl, msg } = error("error message"); lvl) { _ => println("unknown log level"); } -mut result; +var result; match (result = info("info message"); result.lvl) { "info" => println(result.msg); "warn" => println(result.msg); diff --git a/tests/module_lists_pop_back_test.hk b/tests/module_lists_pop_back_test.hk index 1c59814..2555917 100644 --- a/tests/module_lists_pop_back_test.hk +++ b/tests/module_lists_pop_back_test.hk @@ -1,6 +1,6 @@ import lists; -mut list = lists.new_linked_list(); +var list = lists.new_linked_list(); list = lists.push_back(list, 1); list = lists.push_back(list, 2); list = lists.push_back(list, 3); diff --git a/tests/module_lists_pop_front_test.hk b/tests/module_lists_pop_front_test.hk index d05b8bf..40e23fa 100644 --- a/tests/module_lists_pop_front_test.hk +++ b/tests/module_lists_pop_front_test.hk @@ -1,6 +1,6 @@ import lists; -mut list = lists.new_linked_list(); +var list = lists.new_linked_list(); list = lists.push_back(list, 1); list = lists.push_back(list, 2); list = lists.push_back(list, 3); diff --git a/tests/module_lists_push_back_test.hk b/tests/module_lists_push_back_test.hk index e3bdcbb..54f04c5 100644 --- a/tests/module_lists_push_back_test.hk +++ b/tests/module_lists_push_back_test.hk @@ -1,6 +1,6 @@ import lists; -mut list = lists.new_linked_list(); +var list = lists.new_linked_list(); list = lists.push_back(list, 1); list = lists.push_back(list, 2); println(lists.back(list)); diff --git a/tests/module_lists_push_front_test.hk b/tests/module_lists_push_front_test.hk index 7e4a253..58abb7a 100644 --- a/tests/module_lists_push_front_test.hk +++ b/tests/module_lists_push_front_test.hk @@ -1,6 +1,6 @@ import lists; -mut list = lists.new_linked_list(); +var list = lists.new_linked_list(); list = lists.push_front(list, 1); list = lists.push_front(list, 2); println(lists.front(list)); diff --git a/tests/module_socket_new_close_test.hk b/tests/module_socket_new_close_test.hk index fb7ddc2..8b07528 100644 --- a/tests/module_socket_new_close_test.hk +++ b/tests/module_socket_new_close_test.hk @@ -1,6 +1,6 @@ import socket; -mut sock; +var sock; sock = socket.new(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP); socket.close(sock); sock = socket.new(socket.AF_INET6, socket.SOCK_DGRAM, socket.IPPROTO_UDP); diff --git a/tests/variable_declaration_test.hk b/tests/variable_declaration_test.hk index d67557b..4732094 100644 --- a/tests/variable_declaration_test.hk +++ b/tests/variable_declaration_test.hk @@ -1,18 +1,18 @@ let a = 1; let [b, c] = [2, 3]; -mut d; -mut e = 4; +var d; +var e = 4; let [f, g] = ["foo", "bar"]; -mut [h] = ["baz"]; -mut [i, j] = ["qux", "quux"]; +var [h] = ["baz"]; +var [i, j] = ["qux", "quux"]; let {k, l} = {k: "foo", l: "bar"}; -mut {m} = {m: "baz"}; -mut {n, o, p} = {n: "qux", p: "quux"}; +var {m} = {m: "baz"}; +var {n, o, p} = {n: "qux", p: "quux"}; let [_, q, _] = [1, 2, 3]; -mut [r, _, s] = [4, 5, 6]; +var [r, _, s] = [4, 5, 6]; println(a); println(b);