diff --git a/lang-parser b/lang-parser index 3ffcfa2..62c8b61 160000 --- a/lang-parser +++ b/lang-parser @@ -1 +1 @@ -Subproject commit 3ffcfa276c80724af4910c8c310b1945c995dc4b +Subproject commit 62c8b6193437e0a10d5b605dc002c7db5e3fc256 diff --git a/tests/arrays.lang b/tests/arrays.lang index c7d7689..734d713 100644 --- a/tests/arrays.lang +++ b/tests/arrays.lang @@ -1,21 +1,21 @@ -decl test_arrays : Unit -> Unit +decl test_arrays : -> Unit def test_arrays = { var arr1 = ,1 ,2 ,3 const arr2 = Int._array: 32 var arr3 = String._array: 11 const arr4 = 'a'--'z' const n = 100 - var @arr5 <- Int.@_new_array: 10 + var arr5 <- Int._new_array: 10 - var @arr6 <- String.@_new_array: 10 - var ~arr6_reference = ~arr6 + var arr6 <- String._new_array: 10 + var arr6_reference = ^arr6 const elem1 = arr1`0 var elem2 = arr1`2 - const ~ref1 = ~arr1`1 - var ~ref2 = ~arr1`3 + const ref1 = ^arr1`1 + var ref2 = ^arr1`3 ; arr1`1 = 123 - ; ref1 = arr1`2 // set value - ; ~ref1 = ~ref2 // set reference + ; ~ref1 = arr1`2 // set value + ; ref1 = ref2 // set pointer / reference } diff --git a/tests/flow_control.lang b/tests/flow_control.lang index 4424be7..aaea061 100644 --- a/tests/flow_control.lang +++ b/tests/flow_control.lang @@ -1,4 +1,4 @@ -decl flow_control_test : Unit -> Unit +decl flow_control_test : -> Unit def flow_control_test = { if (a < b ||. a == b) && (b < c) then IO.print: x elif x < 0 then { @@ -19,7 +19,7 @@ def flow_control_test = { ; IO.print: i } - for & i & j in & 0--y & 0--k do { // ?? + for & i & j in (& 0--y & 0--k) do { // ?? ; IO.print: 1 ; IO.print: 2 ; IO.print: 128 diff --git a/tests/functions.lang b/tests/functions.lang index e4f4acb..080f30e 100644 --- a/tests/functions.lang +++ b/tests/functions.lang @@ -48,10 +48,10 @@ def find_substring : str substr = { return result } -decl is_empty : Unit -> Bool +decl is_empty : -> Bool def is_empty = 0 -decl do_something : Unit -> Unit +decl do_something : -> Unit def do_something = IO.print: "Hello World!" diff --git a/tests/lambdas.lang b/tests/lambdas.lang index e58bd96..3a9998f 100644 --- a/tests/lambdas.lang +++ b/tests/lambdas.lang @@ -1,4 +1,4 @@ -decl test_lambdas : Unit -> Unit +decl test_lambdas : -> Unit def test_lambdas = { const lambda1 = \x -> x * x const lambda2 = \x -> x.hash: diff --git a/tests/match.lang b/tests/match.lang index 1d7ef33..a882ef3 100644 --- a/tests/match.lang +++ b/tests/match.lang @@ -1,7 +1,3 @@ -================================================================================ -Match -================================================================================ - decl fruit_cost : Fruit -> Int def fruit_cost : fruit = { return (match fruit with @@ -19,248 +15,3 @@ def amount_to_string : x is_zero_separated = { | _ -> "Lots" return ans } - --------------------------------------------------------------------------------- - -(source_file - (source_statement - (namespace_statement - (function_declaration - (extended_name - (name_identifier)) - (function_type - (scoped_any_type - (type_expression - (parametrized_type - (type_identifier)))) - (scoped_any_type - (type_expression - (parametrized_type - (type_identifier)))))))) - (source_statement - (namespace_statement - (function_definition_statement - (function_definition - (extended_name - (name_identifier)) - (extended_name - (name_identifier))) - (superexpression - (expression - (prefixed_expression - (block - (block_statement - (prefixed_expression - (return_expression - (expression - (subexpression - (subexpression_token - (scoped_statement - (superexpression - (flow_control - (match - (expression - (subexpression - (subexpression_token - (name_expression - (extended_name - (name_identifier)))))) - (match_case - (pattern - (type_constructor_pattern - (type_expression - (parametrized_type - (type_identifier))))) - (expression - (subexpression - (subexpression_token - (literal - (number_literal)))))) - (match_case - (pattern - (type_constructor_pattern - (type_expression - (parametrized_type - (type_identifier)))))) - (match_case - (pattern - (type_constructor_pattern - (type_expression - (parametrized_type - (type_identifier))))) - (expression - (subexpression - (subexpression_token - (literal - (number_literal))))))))))))))))))))))) - (source_statement - (namespace_statement - (function_declaration - (extended_name - (name_identifier)) - (function_type - (scoped_any_type - (type_expression - (parametrized_type - (type_identifier)))) - (scoped_any_type - (type_expression - (parametrized_type - (type_identifier)))) - (scoped_any_type - (type_expression - (parametrized_type - (type_identifier)))))))) - (source_statement - (namespace_statement - (function_definition_statement - (function_definition - (extended_name - (name_identifier)) - (extended_name - (name_identifier)) - (extended_name - (name_identifier))) - (superexpression - (expression - (prefixed_expression - (block - (block_statement - (variable_definition_statement - (any_name - (annotated_name - (extended_name - (name_identifier)))) - (superexpression - (flow_control - (match - (expression - (subexpression - (subexpression_token - (name_expression - (extended_name - (name_identifier)))))) - (match_case - (pattern - (literal - (number_literal))) - (expression - (subexpression - (subexpression_token - (name_expression - (extended_name - (name_identifier)))))) - (expression - (subexpression - (subexpression_token - (literal - (string_literal)))))) - (match_case - (pattern - (literal - (number_literal)))) - (match_case - (pattern - (literal - (number_literal)))) - (match_case - (pattern - (literal - (number_literal)))) - (match_case - (pattern - (literal - (number_literal)))) - (match_case - (pattern - (literal - (number_literal))) - (expression - (subexpression - (subexpression_token - (literal - (string_literal)))))) - (match_case - (pattern - (extended_name - (name_identifier))) - (expression - (subexpression - (function_call_expression - (subexpression_token - (scoped_statement - (superexpression - (expression - (subexpression - (binary_operator_expression - (subexpression - (subexpression_token - (literal - (number_literal)))) - (operator) - (subexpression - (subexpression_token - (literal - (number_literal)))))))))) - (extended_name - (name_identifier)) - (subexpression_token - (name_expression - (extended_name - (name_identifier))))))) - (expression - (subexpression - (subexpression_token - (literal - (string_literal)))))) - (match_case - (pattern - (extended_name - (name_identifier))) - (expression - (subexpression - (function_call_expression - (subexpression_token - (scoped_statement - (superexpression - (expression - (subexpression - (binary_operator_expression - (subexpression - (subexpression_token - (literal - (number_literal)))) - (operator) - (subexpression - (subexpression_token - (literal - (number_literal)))))))))) - (extended_name - (name_identifier)) - (subexpression_token - (name_expression - (extended_name - (name_identifier))))))) - (expression - (subexpression - (subexpression_token - (literal - (string_literal)))))) - (match_case - (pattern - (extended_name - (name_identifier))) - (expression - (subexpression - (subexpression_token - (literal - (string_literal))))))))))) - (block_statement - (prefixed_expression - (return_expression - (expression - (subexpression - (subexpression_token - (name_expression - (extended_name - (name_identifier))))))))))))))))) diff --git a/tests/memory.lang b/tests/memory.lang index 087dad3..0092566 100644 --- a/tests/memory.lang +++ b/tests/memory.lang @@ -1,8 +1,8 @@ struct StructWithRef = & @Int_0 -decl test_memory : Unit -> Unit +decl test_memory : -> Unit def test_memory = { - const @unique_ref1 <- Int.@_new: 5 - var @unique_ref2 <- Array.@of: 1 2 3 + const unique_ref1 <- Int._new: 5 + var unique_ref2 <- Array.of: 1 2 3 } diff --git a/tests/namespaces.lang b/tests/namespaces.lang index 2a16bb6..57f3580 100644 --- a/tests/namespaces.lang +++ b/tests/namespaces.lang @@ -1,19 +1,19 @@ namespace Namespace { - decl something : Unit -> Unit + decl something : -> Unit } namespace Array { - decl something : Unit -> Unit + decl something : -> Unit } namespace Array { - decl something : Unit -> Unit + decl something : -> Unit } namespace var Array { - decl something : Unit -> Unit + decl something : -> Unit } namespace const Array { - decl something : Unit -> Unit + decl something : -> Unit } diff --git a/tests/tuples.lang b/tests/tuples.lang index 1bca00c..73692e8 100644 --- a/tests/tuples.lang +++ b/tests/tuples.lang @@ -1,4 +1,4 @@ -decl test_tuples : Unit -> Unit +decl test_tuples : -> Unit def test_tuples = { var tuple1 = & "a" & 2 & "hello" const & t1 & t2 & t3 = f: x diff --git a/tests/type_casting.lang b/tests/type_casting.lang index afd22ff..9d9c255 100644 --- a/tests/type_casting.lang +++ b/tests/type_casting.lang @@ -1,4 +1,4 @@ -decl test_type_casting : Unit -> Unit +decl test_type_casting : -> Unit def test_type_casting = { var x = y.as Int: var k = (f: y x).as Float: diff --git a/tests/typeclasses.lang b/tests/typeclasses.lang index e82bdaa..34b419d 100644 --- a/tests/typeclasses.lang +++ b/tests/typeclasses.lang @@ -5,14 +5,17 @@ typeclass (Ord : #Eq) = & is_less_then : Ord -> Bool typeclass (D : #A #B #C) 'A 'B = - & do_something : Unit -> (& 'A & 'B) + & do_something : -> (& 'A & 'B) typeclass E 'A = - & do_something : Unit -> 'A + & do_something : -> 'A decl ( == ) ('A : #Ord) : 'A -> 'A -> Bool def ( == ) : a b = a.is_equal_to: b +decl ( != ) ('A : #Ord) : 'A -> 'A -> Bool +def ( != ) : a b = not: (a == b) + decl ( < ) ('A : #Ord) : 'A -> 'A -> Bool def ( < ) : a b = a.is_less_then: b diff --git a/tests/types.lang b/tests/types.lang index 757362c..f6ce429 100644 --- a/tests/types.lang +++ b/tests/types.lang @@ -1,7 +1,3 @@ -================================================================================ -Types -================================================================================ - alias T1 = Int abstract (T2 : #A #B #C) @@ -10,45 +6,3 @@ abstract (T2 : #A #B #C) let T2 = Int let T2 = Float let T2 = Complex - --------------------------------------------------------------------------------- - -(source_file - (source_statement - (namespace_statement - (alias_definition_statement - (type_identifier) - (type_expression - (parametrized_type - (type_identifier)))))) - (source_statement - (abstract_type_definition_statement - (annotated_type - (type_identifier) - (parametrized_typeclass - (typeclass_identifier)) - (parametrized_typeclass - (typeclass_identifier)) - (parametrized_typeclass - (typeclass_identifier))))) - (source_statement - (namespace_statement - (alias_definition_statement - (type_identifier) - (type_expression - (parametrized_type - (type_identifier)))))) - (source_statement - (namespace_statement - (alias_definition_statement - (type_identifier) - (type_expression - (parametrized_type - (type_identifier)))))) - (source_statement - (namespace_statement - (alias_definition_statement - (type_identifier) - (type_expression - (parametrized_type - (type_identifier))))))) diff --git a/tests/variants.lang b/tests/variants.lang index 5fc3f59..9b747b7 100644 --- a/tests/variants.lang +++ b/tests/variants.lang @@ -1,4 +1,4 @@ -decl test_variants : Unit -> Unit +decl test_variants : -> Unit def test_variants = { var variant1 = | 'a' | 2 | "hello" var | val | err = f: x