improvements for proper printing, etc.

This commit is contained in:
ProgramSnail 2023-07-31 22:06:30 +03:00
parent b71b732797
commit 8e0cea277e
4 changed files with 231 additions and 119 deletions

View file

@ -62,17 +62,21 @@ test_k 'n 'k : Int Int -> Bool = {
--------------------------------------------------------------------------------
(source_file
(empty_lines)
(import
(simple_name_identifier))
(empty_lines)
(import
(simple_name_identifier)
(simple_type_identifier))
(empty_lines)
(import
(simple_name_identifier))
(empty_lines)
(function_definition
(simple_name_identifier)
(block
(empty_lines)
(match
(name_definition
(simple_name_identifier))
@ -90,6 +94,7 @@ test_k 'n 'k : Int Int -> Bool = {
(number_literal)))
(simple_name_identifier))
(number_literal))))
(empty_lines)
(match
(name_definition
(simple_name_identifier))
@ -97,6 +102,7 @@ test_k 'n 'k : Int Int -> Bool = {
(name_expression
(simple_name_identifier)
(number_literal))))
(empty_lines)
(match
(operator_expression
(name_definition
@ -113,12 +119,14 @@ test_k 'n 'k : Int Int -> Bool = {
(simple_name_identifier))
(operator)
(number_literal)))))
(empty_lines)
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(name_expression
(simple_name_identifier)))
(empty_lines)
(match
(name_definition
(simple_name_identifier))
@ -135,6 +143,7 @@ test_k 'n 'k : Int Int -> Bool = {
(simple_name_identifier))
(operator)
(number_literal)))))
(empty_lines)
(match
(name_definition
(simple_name_identifier))
@ -149,12 +158,14 @@ test_k 'n 'k : Int Int -> Bool = {
(operator_tail1)
(name_expression
(simple_name_identifier)))))
(empty_lines)
(match
(name_definition
(simple_name_identifier))
(case
(name_expression
(simple_name_identifier))))
(empty_lines)
(loop
(name_definition
(simple_name_identifier))
@ -178,6 +189,7 @@ test_k 'n 'k : Int Int -> Bool = {
(operator)
(number_literal)))
(block
(empty_lines)
(condition
(operator_expression
(operator_expression
@ -237,7 +249,9 @@ test_k 'n 'k : Int Int -> Bool = {
(string_literal))
(operator)
(name_expression
(simple_name_identifier)))))))))
(simple_name_identifier)))))
(empty_lines)))
(empty_lines)))
(empty_lines)
(function_definition
(simple_name_identifier)
@ -252,6 +266,7 @@ test_k 'n 'k : Int Int -> Bool = {
(type
(simple_type_identifier))
(block
(empty_lines)
(condition
(operator_expression
(name_expression
@ -289,6 +304,7 @@ test_k 'n 'k : Int Int -> Bool = {
(argument_name_identifier)))
(operator_tail1)
(number_literal))))
(empty_lines)
(match
(operator_expression
(name_definition
@ -301,6 +317,7 @@ test_k 'n 'k : Int Int -> Bool = {
(simple_name_identifier)
(argument_name_identifier)
(simple_name_identifier))))
(empty_lines)
(match
(operator_expression
(name_definition
@ -332,7 +349,8 @@ test_k 'n 'k : Int Int -> Bool = {
(simple_name_identifier))
(operator)
(name_expression
(simple_name_identifier)))))))
(simple_name_identifier)))))
(empty_lines)))
(empty_lines)
(function_definition
(simple_name_identifier)
@ -342,16 +360,19 @@ test_k 'n 'k : Int Int -> Bool = {
(type
(simple_type_identifier))
(block
(empty_lines)
(match
(name_definition
(simple_name_identifier))
(case
(number_literal)))
(empty_lines)
(match
(name_definition
(simple_name_identifier))
(case
(number_literal)))
(empty_lines)
(loop
(name_expression
(simple_name_identifier)
@ -360,17 +381,21 @@ test_k 'n 'k : Int Int -> Bool = {
(argument_name_identifier)
(simple_name_identifier)))
(block
(empty_lines)
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(name_expression
(simple_name_identifier)))
(empty_lines)
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(number_literal))))
(number_literal))
(empty_lines)))
(empty_lines)
(loop
(operator_expression
(operator_expression
@ -382,6 +407,7 @@ test_k 'n 'k : Int Int -> Bool = {
(operator_tail1)
(number_literal))
(block
(empty_lines)
(match
(name_definition
(simple_name_identifier))
@ -395,6 +421,7 @@ test_k 'n 'k : Int Int -> Bool = {
(simple_name_identifier)))
(operator_tail1)
(number_literal))))
(empty_lines)
(condition
(name_expression
(simple_name_identifier)
@ -411,10 +438,13 @@ test_k 'n 'k : Int Int -> Bool = {
(simple_name_identifier))
(operator)
(name_expression
(simple_name_identifier))))))
(simple_name_identifier))))
(empty_lines)))
(empty_lines)
(return
(name_expression
(simple_name_identifier)))))
(simple_name_identifier)))
(empty_lines)))
(empty_lines)
(function_definition
(simple_name_identifier)
@ -427,6 +457,7 @@ test_k 'n 'k : Int Int -> Bool = {
(type
(simple_type_identifier))
(block
(empty_lines)
(condition
(operator_expression
(name_expression
@ -458,6 +489,7 @@ test_k 'n 'k : Int Int -> Bool = {
(name_expression
(simple_name_identifier)
(simple_name_identifier))))))
(empty_lines)
(match
(name_definition
(simple_name_identifier))
@ -478,4 +510,6 @@ test_k 'n 'k : Int Int -> Bool = {
(name_expression
(simple_name_identifier))
(operator)
(number_literal)))))))
(number_literal))))
(empty_lines)))
(empty_lines))

View file

@ -155,15 +155,16 @@ bubble_sort_2 'arr : ref Array['A] = {
& @key Key
& @value Value
& @left ^TreeNode['Key 'Value]
& @right ^TreeNode['Key 'Value] {
new = do_something; // static methods
& @right ^TreeNode['Key 'Value];
$insert 'key = do_something; // const methods
.new = do_something; // static methods
%find 'key = do_something;
.insert <> 'this 'key = do_something; // const methods
.find 'this 'key = do_something;
.delete <> 'this 'key = do_something; // var methods
$delete 'key = do_something; // var methods
}
generic_type_name_expressions = {
$x := TreeNode[Int Int].new;
@ -203,9 +204,8 @@ move_construct_task 'name 'duration : <- String <- Float -> Task = Task @name 'n
arg_deduction_example 'name 'duration : <- String <- Float -> Task = Task 'name 'duration;
: ord is fundamental typeclass
#Ord : #Eq {
$is_less_then : Ord -> Bool;
}
#Ord[#Eq];
.is_less_then : Ord -> Bool;
: function, that takes result argument
result_example 'a! = 'a =: _? => print "value inside"
@ -229,19 +229,24 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
--------------------------------------------------------------------------------
(source_file
(empty_lines)
(extra)
(empty_lines)
(import
(simple_name_identifier))
(extra)
(empty_lines)
(import
(placeholder)
(simple_name_identifier))
(extra)
(empty_lines)
(import
(simple_name_identifier)
(simple_name_identifier)
(simple_name_identifier)
(simple_name_identifier))
(empty_lines)
(import
(simple_name_identifier)
(simple_name_identifier))
@ -252,19 +257,22 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(empty_lines)
(loop
(block
(empty_lines)
(match
(name_definition
(simple_name_identifier))
(case
(name_expression
(simple_name_identifier))))
(empty_lines)
(condition
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(char_literal))
(loop_control))))
(loop_control))
(empty_lines)))
(empty_lines)
(loop
(operator_expression
@ -273,9 +281,11 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(operator)
(number_literal))
(block
(empty_lines)
(name_expression
(simple_name_identifier)
(simple_name_identifier))))
(simple_name_identifier))
(empty_lines)))
(empty_lines)
(loop
(name_definition
@ -285,9 +295,11 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(operator)
(number_literal))
(block
(empty_lines)
(name_expression
(simple_name_identifier)
(string_literal))))
(string_literal))
(empty_lines)))
(empty_lines)
(condition
(operator_expression
@ -325,16 +337,20 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(operator)
(number_literal))
(block
(empty_lines)
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(number_literal))
(empty_lines)
(name_expression
(simple_name_identifier)
(simple_name_identifier)))
(simple_name_identifier))
(empty_lines))
(return
(unit_literal)))))
(unit_literal)))
(empty_lines)))
(empty_lines)
(function_definition
(definition_info
@ -436,6 +452,7 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(function_definition
(simple_name_identifier)
(block
(empty_lines)
(match
(name_definition
(simple_name_identifier))
@ -510,6 +527,8 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(placeholder)
(string_literal)))
(empty_lines)
(extra)
(empty_lines)
(match
(name_definition
(simple_name_identifier))
@ -518,6 +537,7 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(simple_name_identifier)
(simple_name_identifier)
(simple_name_identifier))))
(empty_lines)
(name_expression
(simple_name_identifier)
(simple_name_identifier))
@ -547,6 +567,8 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(annotation_identifier)
(float_number_literal))))
(empty_lines)
(extra)
(empty_lines)
(match
(suffix_expression
(name_definition
@ -557,13 +579,7 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(name_expression
(simple_name_identifier))))
(empty_lines)
(match
(suffix_expression
(name_definition
(simple_name_identifier)))
(case
(name_expression
(simple_name_identifier))))
(extra)
(empty_lines)
(match
(suffix_expression
@ -573,12 +589,28 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(name_expression
(simple_name_identifier))))
(empty_lines)
(suffix_expression
(simple_name_identifier))
(extra)
(empty_lines)
(match
(suffix_expression
(name_definition
(simple_name_identifier)))
(case
(name_expression
(simple_name_identifier))))
(empty_lines)
(extra)
(empty_lines)
(suffix_expression
(simple_name_identifier))
(empty_lines)
(extra)
(empty_lines)
(suffix_expression
(simple_name_identifier))
(empty_lines)
(extra)
(empty_lines)
(match
(name_definition
(simple_name_identifier))
@ -634,6 +666,8 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(number_literal)
(number_literal))))
(empty_lines)
(extra)
(empty_lines)
(match
(name_definition
(simple_name_identifier))
@ -645,11 +679,13 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(number_literal))
(operator)
(number_literal))))
(empty_lines)
(name_expression
(simple_name_identifier)
(tuple_access
(simple_name_identifier)
(number_literal)))))
(number_literal)))
(empty_lines)))
(empty_lines)
(function_definition
(definition_info
@ -668,29 +704,35 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(function_definition
(simple_name_identifier)
(block
(empty_lines)
(name_expression
(simple_name_identifier)
(simple_name_identifier)
(simple_name_identifier)
(simple_name_identifier))))
(simple_name_identifier))
(empty_lines)))
(empty_lines)
(function_definition
(simple_name_identifier)
(block
(empty_lines)
(name_expression
(simple_name_identifier)
(simple_name_identifier)
(simple_name_identifier)
(simple_name_identifier))))
(simple_name_identifier))
(empty_lines)))
(empty_lines)
(function_definition
(simple_name_identifier)
(block
(empty_lines)
(name_expression
(simple_name_identifier)
(simple_name_identifier)
(simple_name_identifier)
(simple_name_identifier))))
(simple_name_identifier))
(empty_lines)))
(empty_lines)
(type_definition
(simple_type_identifier)
@ -729,20 +771,24 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(type
(argument_type_identifier)))
(block
(empty_lines)
(match
(name_expression
(simple_name_identifier))
(case
(bool_literal)))
(empty_lines)
(loop
(name_expression
(simple_name_identifier))
(block
(empty_lines)
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(bool_literal))
(empty_lines)
(loop
(name_definition
(simple_name_identifier))
@ -784,7 +830,9 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(name_expression
(simple_name_identifier))
(operator)
(bool_literal))))))))
(bool_literal))))
(empty_lines)))
(empty_lines)))
(empty_lines)
(function_definition
(definition_info
@ -796,20 +844,24 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(type
(argument_type_identifier)))
(block
(empty_lines)
(match
(name_definition
(simple_name_identifier))
(case
(bool_literal)))
(empty_lines)
(loop
(name_expression
(simple_name_identifier))
(block
(empty_lines)
(operator_expression
(name_expression
(simple_name_identifier))
(operator)
(bool_literal))
(empty_lines)
(loop
(name_definition
(simple_name_identifier))
@ -851,7 +903,9 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(name_expression
(simple_name_identifier))
(operator)
(bool_literal))))))))
(bool_literal))))
(empty_lines)))
(empty_lines)))
(empty_lines)
(type_definition
(definition_info
@ -881,30 +935,41 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(type
(argument_type_identifier))
(type
(argument_type_identifier)))))
(function_definition
(simple_name_identifier)
(name_expression
(simple_name_identifier)))
(function_definition
(simple_name_identifier)
(argument_name_identifier)
(name_expression
(simple_name_identifier)))
(function_definition
(simple_name_identifier)
(argument_name_identifier)
(name_expression
(simple_name_identifier)))
(function_definition
(simple_name_identifier)
(argument_name_identifier)
(name_expression
(simple_name_identifier))))
(argument_type_identifier))))))
(empty_lines)
(function_definition
(simple_name_identifier)
(name_expression
(simple_name_identifier)))
(extra)
(empty_lines)
(function_definition
(simple_name_identifier)
(argument_name_identifier)
(argument_name_identifier)
(name_expression
(simple_name_identifier)))
(extra)
(empty_lines)
(function_definition
(simple_name_identifier)
(argument_name_identifier)
(argument_name_identifier)
(name_expression
(simple_name_identifier)))
(empty_lines)
(function_definition
(simple_name_identifier)
(argument_name_identifier)
(argument_name_identifier)
(name_expression
(simple_name_identifier)))
(extra)
(empty_lines)
(function_definition
(simple_name_identifier)
(block
(empty_lines)
(match
(name_definition
(simple_name_identifier))
@ -917,6 +982,7 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(type
(simple_type_identifier)))
(simple_name_identifier))))
(empty_lines)
(match
(name_definition
(simple_name_identifier))
@ -926,11 +992,13 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(simple_type_identifier)
(type
(simple_type_identifier)))
(simple_name_identifier))))))
(simple_name_identifier))))
(empty_lines)))
(empty_lines)
(function_definition
(simple_name_identifier)
(block
(empty_lines)
(operator_expression
(operator_expression
(operator_expression
@ -949,6 +1017,8 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(operator)
(name_expression
(simple_name_identifier)))
(extra)
(empty_lines)
(operator_expression
(operator_expression
(operator_expression
@ -966,11 +1036,14 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(simple_name_identifier)))
(operator)
(name_expression
(simple_name_identifier)))))
(simple_name_identifier)))
(extra)
(empty_lines)))
(empty_lines)
(function_definition
(simple_name_identifier)
(block
(empty_lines)
(match
(name_definition
(simple_name_identifier))
@ -978,8 +1051,10 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(reference_expression
(array_access
(simple_name_identifier)
(number_literal)))))))
(number_literal)))))
(empty_lines)))
(empty_lines)
(extra)
(empty_lines)
(function_definition
(definition_info
@ -1126,17 +1201,18 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(argument_name_identifier)
(argument_name_identifier)))
(empty_lines)
(typeclass_definition
(type_definition
(definition_info
(info))
(typeclass_identifier)
(typeclass_identifier)
(function_definition
(simple_name_identifier)
(type
(simple_type_identifier))
(type
(simple_type_identifier))))
(typeclass_identifier))
(empty_lines)
(function_definition
(simple_name_identifier)
(type
(simple_type_identifier))
(type
(simple_type_identifier)))
(empty_lines)
(function_definition
(definition_info
@ -1165,6 +1241,7 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(type
(simple_type_identifier))
(block
(empty_lines)
(match
(name_definition
(simple_name_identifier))
@ -1173,6 +1250,7 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(type
(simple_type_identifier))
(simple_name_identifier))))
(empty_lines)
(match
(suffix_expression
(name_definition
@ -1183,10 +1261,13 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(simple_type_identifier))
(simple_name_identifier)
(simple_name_identifier))))
(empty_lines)
(name_expression
(simple_name_identifier))
(empty_lines)
(return
(unit_literal))))
(unit_literal))
(empty_lines)))
(empty_lines)
(function_definition
(definition_info
@ -1243,4 +1324,5 @@ result_func! 'a 'b -> 'c -> 'd = ?? 'a == 0 => error "some error" !!=> ('c := 'a
(case
(name_expression
(argument_name_identifier)))))
(unit_literal)))))
(unit_literal))))
(empty_lines))